Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Deity Lockpick

Czy skrypt jest przydatny?
Tak
78%
 78%  [ 15 ]
Nie
21%
 21%  [ 4 ]
Głosowań: 19
Wszystkich Głosów: 19

Autor Wiadomość
aragorn7015 




Preferowany:
RPG Maker VXAce

Pomógł: 15 razy
Dołączył: 20 Kwi 2012
Posty: 186
Skąd: się biorą dzieci?
Wysłany: Sob 19 Maj, 2012 09:36
Deity Lockpick
~ Lockpick System ~


Krótki opis:
Jest to całkiem fajny skrypt, który pozwala za pomocą wytrychów otwierać skrzynie.

Autor:
Deity (email nieznany)

Kompatybilność:
RPG Maker VX

Skrypt:
Spoiler:

Kod:
##
# Script:  Lockpick System                                               #
# by Deity     [translated to English by modern algebra (rmrk.net)] #
##
#  Description:                                                     #
#    This script simulates a lockpicking system similar to that  #
#   in Oblivion which allows you to set certain chests to only   #
#   open once successfully picking the lock. Essentially, the    #
#   system requires the player to successfully push all of the   #
#   "sticks" into the up position - a failure results in a       #
#   destroyed lockpick. Once all sticks are up, self-switch A of #
#   the particular event is turned on and you can put in the     #
#   success results                                              #
##
#  Instructions:                                                 #
#    First, you must look at all of the constants under the      #
#   Settings heading and configure the script to your liking.    #
#   Read all the descriptions before using the script.           #
#                                                                #
#    Now, to create a lock on an event, you must create a        #
#   comment somewhere in the event. The first line in this       #
#   comment must be what you have set as SP_WORD at line 70. You #
#   must then go down to the second line of the comment and      #
#   write the positions of the five "sticks". for ones that you  #
#   want the player to have to unlock, put "down" and for the    #
#   ones you already want to be unlocked, put "up". Be sure to   #
#   put spaces between each word                                 #
#                                                                #
#    EXAMPLE:                                                    #
#      @>Comment:SP_WORD                                         #
#       :       :up down up down down                            #
#                                                                #
#    This would create a lock where the player would have to     #
#   push up the 2nd, 4th, and 5th sticks, while the other two    #
#   are already up.                                              #
#                                                                #
#    Once the player is successful, Self-Switch A for that event #
#   is turned on.                                                #
# Settings #
#                   true = yes / false = no                      #
module Lockpicking
  # Picture Resources (Graphics/Pictures) #
  # Name of the background image (appears behind sticks and lockpick)
  BACKGROUND_IAMGE_NAME = "LockBack"
  # Name of the image used for each "stick"
  STICK_IMAGE_NAME = "LockStick"
  # Name of the image used for the lockpick
  LOCKPICK_IMAGE_NAME = "Lockpick"
  # Name of the foreground image (appears above sticks and lockpick)
  FORGROUND_IMAGE_NAME = "LockFor"
  # System Settings #
  # Opacity of info and help window (0-255)
  OPACITY = 200
  # default amount of time stick waits in up position for player to press ENTER
  # It is in frames (60 frames = 1 second)
  WAIT_TIME = 20
  # ID of the variable to add or subtract time from the wait period. This can
  #  be used to make some locks harder or easier - the value of the variable
  #  will be added to the WAIT_TIME.
  WAIT_MOD_VARIABLE_ID = 1
  # ID of the lockpick item.
  LOCKPICK_ID = 1
  # Lockpicks destroyed upon failure? true => breakable; false => unbreakable
  LOCKPICK_BREAKABLE = true
  # Text to show in information window
  INFO_TEXT = "ESC: Exit | ARROW KEYS: Control | ENTER: Attempt | SHIFT: Info"
  # Plural name for lockpicks
  LOCKPICK_NAME = "Lockpicks:"
  # This is the key word which you have to preface you comment with
  SP_WORD = "Treasure"
  # Sound Effects #
  # Sound Effect when succeed in opening lock
  SOUND_OPEN = "Close1"
  # Sound Effect when attempt fails
  SOUND_FAIL = "Bite"
  # Sound Effect when the
  SOUND_STICK = "Stare"
  # Sound Effect when toggling the visibility of the Info Window
  SOUND_INFOSWITCH = "Switch2"
#  Do not edit past this point unless you are a scripter and    #
# know what you are doing.
##
end
include Lockpicking
class Scene_Lockpick < Scene_Base
  def initialize(switches,event_id = 0)
    @switches = switches
    @controll = switches
    @images = []
    @sticks = []
    @lockpick_index = 1
    @animation = 0
    @press = false
    @sekunde = 0
    @event_id = event_id
    @normal_stick_y = 0
    @wait_for_press = false
  end
  def start
    @help = Window_Help.new
    @help.opacity = OPACITY
    @help.y = 416 - 56
    @help.set_text(INFO_TEXT,1)
    @info = Window_Base.new(0,0,544,56)
    @info.opacity = OPACITY
    @info.contents.draw_text(0,0,512,24,LOCKPICK_NAME,0)
    @info.contents.draw_text(0,0,512,24,$game_party.item_number($data_items[LOCKPICK_ID]).to_s,2)
    create_menu_background
    @menuback_sprite.z -= 1
    draw_scene
  end
  def draw_scene
    @background = Sprite.new
    @background.bitmap = Cache.picture(BACKGROUND_IAMGE_NAME)
    @background.x = (544 - @background.width) / 2
    @background.y = (416 - @background.height) / 2
    @images.push(@background)
    for i in 0...5
      stick = Sprite.new
      stick.bitmap = Cache.picture (STICK_IMAGE_NAME)
      stick.x = ((544 - (stick.width*9)) / 2) + (2 * i * stick.width)
      stick.y = (416 - stick.height) / 2
      stick.y -= 20 if @switches[i].include? ("up")
      @images.push (stick)
      @sticks.push (stick)
    end
    @normal_stick_y = (416 - @sticks[0].height) / 2
    @lockpick = Sprite.new
    if $game_party.item_number($data_items[LOCKPICK_ID]) > 0
      @lockpick.bitmap = Cache.picture(LOCKPICK_IMAGE_NAME)
      @lockpick.x = @sticks[0].x - @lockpick.width + (@sticks[0].width / 2)
      @lockpick.y = @normal_stick_y + @sticks[0].height + 5
      @lockpicky = @lockpick.y
      @images.push(@lockpick)
    end
    @forground = Sprite.new
    @forground.bitmap = Cache.picture(FORGROUND_IMAGE_NAME)
    @forground.x = (544 - @forground.width) / 2
    @forground.y = (416 - @forground.height) / 2
    @forground.z = @lockpick.z + 1
    @images.push(@forground)
  end
  def dispose_all
    for i in @images
      i.dispose if i != nil
    end
    @help.dispose
    @info.dispose
    dispose_menu_background
  end
  def update_lockpick
    @lockpick.x = @sticks[0].x - @lockpick.width + (@sticks[0].width * (2*@lockpick_index - 1.5))
  end
  def start_lockpick_animation
    if @press == true && @switches[@lockpick_index - 1] == "down"
      if @animation <= 5
        @lockpick.y -= 1
        @animation += 1
      end
      if @animation > 5 && @animation <= 10
        @sticks[@lockpick_index - 1].y -= 1
        @lockpick.y -= 1 if @animation <= 10
        @animation += 1
      end
      wait_time = WAIT_TIME
      wait_time += $game_variables[WAIT_MOD_VARIABLE_ID] unless WAIT_MOD_VARIABLE_ID < 1
      wait_time = 1 if wait_time < 1
      if @animation > 10 && @animation <= 25
        @lockpick.y += 1 if @animation <= 21
        if @switches[@lockpick_index - 1].include?("down")
          @sticks[@lockpick_index - 1].y -= 1
        end
        @animation += 1
      elsif @animation > 25 && @sekunde == 0
        @wait_for_press = true
      elsif @sekunde >= wait_time
        @animation = 0
        @sekunde = 0
        @press = false
        @wait_for_press = false
        return_to_normal
      end
    else
      @press = false
    end       
  end
  def set_variables_standart
    @animation = 0
    @sekunde = 0
    @press = false
    @wait_for_press = false
  end
  def return_to_normal
    set_variables_standart
    @sticks[@lockpick_index - 1].y = @normal_stick_y
    @lockpick.y = @normal_stick_y + @sticks[0].height + 5
  end
  def stick_is_at_top
    return true if @sticks[@lockpick_index - 1].y == @normal_stick_y - 20
  end
  def check_chest
    for i in @controll
      if i == "down"
        return false
      end
    end
    return true
  end
  def update
    if $game_party.item_number($data_items[LOCKPICK_ID]) < 1
      @lockpick.visible = false
    end
    if Input.trigger?(Input::A)
      Audio.se_play("Audio/SE/"+SOUND_INFOSWITCH, 100, 150)
      @info.visible = !@info.visible
      @help.visible = !@help.visible
    end
    if @info.visible == true
      @info.contents.clear
      @info.contents.draw_text(0,0,512,24,LOCKPICK_NAME,0)
      @info.contents.draw_text(0,0,512,24,$game_party.item_number($data_items[LOCKPICK_ID]),2)
    end
    if check_chest
      Audio.se_play("Audio/SE/"+SOUND_OPEN, 100, 150)
      $game_map.events[@event_id].open=(true)
      key = [$game_map.events[@event_id].map_id, @event_id, "A"]
      $game_self_switches[key] = true
      $scene = Scene_Map.new
      dispose_all
    end
    @sekunde += 1 if @wait_for_press == true   
    if Input.trigger?(Input::LEFT) && @press == false && $game_party.item_number($data_items[LOCKPICK_ID]) > 0
      @lockpick_index -= 1
      if @lockpick_index < 1
        @lockpick_index = 1
      end
      update_lockpick
    end
    if Input.trigger?(Input::RIGHT) && @press == false && $game_party.item_number($data_items[LOCKPICK_ID]) > 0
      @lockpick_index += 1
      if @lockpick_index > 5
        @lockpick_index = 5
      end
      update_lockpick
    end
    if Input.trigger?(Input::UP) && @press == false && $game_party.item_number($data_items[LOCKPICK_ID]) > 0
      @press = true
      Audio.se_play("Audio/SE/"+SOUND_STICK, 100, 100) if @switches[@lockpick_index - 1] != "up"
    end
    start_lockpick_animation if @press == true && $game_party.item_number($data_items[LOCKPICK_ID]) > 0
    if Input.trigger?(Input::C) && $game_party.item_number($data_items[LOCKPICK_ID]) > 0
      if stick_is_at_top && @wait_for_press == true
        set_variables_standart
        @switches[@lockpick_index - 1] = "up"
        @controll[@lockpick_index - 1] = "up" if @controll[@lockpick_index - 1].include?("down")
      else
        @sticks[@lockpick_index - 1].y = @normal_stick_y if @switches[@lockpick_index - 1] == "down"
        Audio.se_play("Audio/SE/"+SOUND_FAIL, 100, 100) if @switches[@lockpick_index - 1] == "down"
        return_to_normal if @switches[@lockpick_index - 1] == "down"
        $game_party.lose_item($data_items[LOCKPICK_ID], 1, true) if LOCKPICK_BREAKABLE == true
      end
      @animation = 0
      @press = false
      @wait_for_press = false
    end
    if Input.trigger?(Input::B)
      Sound.play_cancel
      dispose_all
      return_scene
    end
  end
  def return_scene
    $scene = Scene_Map.new
  end
end
class Game_Event
  attr_accessor :open
  attr_reader   :map_id
  alias initialize_lockpick initialize
  def initialize(map_id, event)
    initialize_lockpick(map_id, event)
    @open = false if $game_self_switches[[map_id, event.id, "A"]] == false
  end
  alias refresh_lockpick refresh
  def refresh
    refresh_lockpick
    if @open == true
      key = [@map_id, @event.id, "A"]
      $game_self_switches[key] = true
    end
  end
end
class Game_Interpreter
  alias execute_command_lockpick execute_command
  def execute_command (*args)
    if @index < @list.size-1 && @list[@index].code == 108 && @list[@index].parameters[0].include?(SP_WORD)
      sticks = @list[@index + 1].parameters[0].split
      $scene = Scene_Lockpick.new (sticks, @event_id)
      @index += 1
      return false
    end
    return execute_command_lockpick (*args)
  end
end


Screeny:
Spoiler:



Demo:


Dodatkowe informacje:
Demo nie jest moje...

Żeby demo działało trzeba skopiować z folderu z demem w Pictures 4 grafiki czyli:
LockBack LockStick LockFor Lockpik

Dodać do folderu Pictures.
________________________
Jeśli pomogłem, daj
Spoiler:

POMÓGŁ



Uwielbiam się bawić na zdarzeniach w VX-ie... Więc jeśli masz jakieś pytanie jak coś zrobić na zdarzeniach to napisz. Jeśli będę wiedział to odpowiem
 
 
 
sled 




Preferowany:
RPG Maker VXAce

Pomógł: 7 razy
Dołączył: 23 Kwi 2010
Posty: 93
Skąd: Inowrocław
Wysłany: Sob 19 Maj, 2012 11:35
Fajny skrypcik, ale... no właśnie zawsze jest to jedno "ale"-mianowicie spodziewałem się czegoś chociaż troszeczkę bardziej skomplikowanego, a przejście całego dema tym czasem jest niewiele trudniejsze od przejścia gry "Alf" z twierdzy...
Ogólnie fajny pomysł tylko z wykonaniem mogli się bardziej przyłożyć iż aktualnie nie zmienia to nic oprócz wciśnięcia parę razy więcej spacji tzw 0 trudności itp choć może coś jest w konfiguracji gdyż prawdę mówiąc jeszcze nie badałem go "od środka" dlatego do krytyki nie będę się przykładał^^
Mimo to zaznaczam "przydatny" gdyż urozmaiceń wg mnie nigdy za wiele ;-)
 
 
Diablo 




Preferowany:
RPG Maker VX

Pomógł: 5 razy
Dołączył: 25 Lip 2010
Posty: 155
Wysłany: Sob 19 Maj, 2012 16:37
Już jest ten skrypt na forum, sam go wrzuciłem. Ale fajnie, bo ja miałem opis niezrozumiały z translatora. W każdym razie kłania się szukanie.
________________________



 
 
aragorn7015 




Preferowany:
RPG Maker VXAce

Pomógł: 15 razy
Dołączył: 20 Kwi 2012
Posty: 186
Skąd: się biorą dzieci?
Wysłany: Nie 20 Maj, 2012 10:28
Nie żeby coś ale w szukaniu w skryptach VX NIE MA twojego tematu, jest tylko jeden ten post napisany wyżej... Ale temat do zamknięcia ponieważ znalazłem podobny temat tylko że od użytkownika "darkengrand" Twojego nie znalazłem...
________________________
Jeśli pomogłem, daj
Spoiler:

POMÓGŁ



Uwielbiam się bawić na zdarzeniach w VX-ie... Więc jeśli masz jakieś pytanie jak coś zrobić na zdarzeniach to napisz. Jeśli będę wiedział to odpowiem
 
 
 
pw1602 



Preferowany:
RPG Maker VX

Pomógł: 11 razy
Dołączył: 09 Paź 2011
Posty: 119
Wysłany: Nie 20 Maj, 2012 19:37
aragorn7015 napisał/a:
Nie żeby coś ale w szukaniu w skryptach VX NIE MA twojego tematu, jest tylko jeden ten post napisany wyżej... Ale temat do zamknięcia ponieważ znalazłem podobny temat tylko że od użytkownika "darkengrand" Twojego nie znalazłem...


A mógłbyś podać link? Bo mi się wydaje, że takiego skryptu jeszcze nie było ;)


@Topic

Skrypt bardzo użyteczny, no ale zawsze można zrobić trochę trudniejszy. Przetestuję go dokładniej to się przekonam co można dzięki nie mu zrobić ^^
________________________



 
 
aragorn7015 




Preferowany:
RPG Maker VXAce

Pomógł: 15 razy
Dołączył: 20 Kwi 2012
Posty: 186
Skąd: się biorą dzieci?
Wysłany: Czw 24 Maj, 2012 08:48
http://www.ultimateam.pl/viewtopic.php?t=5078

Proszę tu masz link...

Do Dooma...

Czy tamten link to ty wrzuciłeś bo twój opis skryptu który ponoć zamieściłeś się zgadza z tym od Darkengranda...
A jeżeli tak to czy czytałeś regulamin?
________________________
Jeśli pomogłem, daj
Spoiler:

POMÓGŁ



Uwielbiam się bawić na zdarzeniach w VX-ie... Więc jeśli masz jakieś pytanie jak coś zrobić na zdarzeniach to napisz. Jeśli będę wiedział to odpowiem
Ostatnio zmieniony przez Nhadala Wto 10 Lip, 2012 21:48, w całości zmieniany 1 raz  
 
 
 
Klaus 



Dołączył: 09 Kwi 2013
Posty: 1
Wysłany: Wto 09 Kwi, 2013 21:59
@ Offtop
Sorry za odkopanie ; _ ;

@ Topic

Skrypt miodzio, tylko mam problem. Nie potrafię stworzyć ów "zdarzenia" (nie wiedziałem jak to powiedzieć), blokuje się na tworzeniu skrzyni i dodaniu skryptu do bazy danych -.-
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene