Usunięcie jednej z opcji skryptu.
Aktualny czas: 28-04-26, 20:46 Witaj! Przejdź do zakładki Logowanie lub Rejestracja


Wątek zamknięty 
[VX] Usunięcie jednej z opcji skryptu.
Revlis Offline
*


Liczba postów: 266
Dołączył: 04-03-15

Pomógł: 80



Post: #1
Usunięcie jednej z opcji skryptu.

Witam. Używam w swoim projekcie tego skryptu:
################################################################################​
#                               VX Icon Passwords
#                                  By: Ixfuru
################################################################################​
# The idea of the script was introduced to me by 'new' of RPGMakerVX.net and is
# an RGSS2 version of the Icon Passwords script written in RGSS3 by efeberk.
# Therefor, above all else, if you use this script, you must credit both the
# aforementioned people as well as me.  I took the scripts idea from them,
# but I just sort of implemented it in my own way.  
#===============================================================================​
# The script creates 'passwords' that you set by entering the id icons from the
# Graphics/System/Iconset image.  When the scene is called with:
#
#                 $scene = Scene_IconPassword.new(password_id)
#
# The player is shown selectable windows, each containing selectable icons (which
# you provide of course.  The object of the scene is to input the correct the
# icons (via their ids) with the correct icons of the password.  If there is a
# match, a switch (which you provide) will be turned on, allowing the creator
# to make something happen immediately when the password is correct.
#
# To set up the passwords, use this formula:
#
#        password_id => {:all_icons => [icon_ids],
#                        :correct_icons => [icons_ids],
#                        :switch_id => game_switch_id,
#                        :header_string => display_string,
#                        :transfer => [map_id, x, y, direction],
#                        :self_switch => [map_id, event_id, switch_id]},
#
# all_icons : This is an array of icon_ids from the Iconset that contain the ids
#            of all the icons the player can choose from.  I recommend keeping
#            it to about 8-10 icon ids, that way the player isn't having to
#            come up with a seemingly impossible mission of figuring out a code
#            out of hundreds of possible icons.
#
# correct_icons : This is the array of the order in which the icons must be input
#                in the scene to trigger the switch.  This IS the password.
#                If you place [7, 21, 18, 19] as the :correct_icons array, the
#                player will have to input those icons in that order to
#                trigger the switch.  Since the scene creates a separate window
#                for each correct icon and centers it on the screen, you shouldn't
#                use more than about 10 icons for the password, since the windows
#                will be created out of the screen if you do.  Also, it IS
#                okay to repeat icon_ids within the array.
#
#                            [6, 7, 7, 7 , 6]
#
#                That's perfectly legal!  
#
#                Just keep in mind that you can't place an id in the :correct_icons
#                array that doesn't appear in the :all_icons array, or you will
#                render the password impossible.
#
# switch_id : This is the ID of the database switch you want to trigger if the code
#            is correct.   The system automaticall turns the switch off when
#            called and if the password is correct, immediately exits the scene
#            and returns to the map scene where the player can 'make something
#            happen.
#
# header_string : This is the string, ( or words ), which will be displayed in the
#                window above the icon windows used for the code.  This should
#                be one line long and used as a hint, or a simple "enter the code"
#                message to the player.  You DO NOT HAVE TO have a header string.
#                You can omit the header string entry in the hash if you would
#                rather, and the header will display the DEFAULT_HEADER_STRING
#                you provide below instead.
#
#                 :header_string => "Code Entry",
#                 :header_string => "Enter the Right Code",
#                 :header_string => "Do you know the password?",
#
#              All of the above examples are fine.  As long as your string
#              has double-quotes and is about one line long, any message will
#              work.
#
# transfer : This is a four-element array [map_id, x, y, direction].  It's used
#           to call about an instant map transfer when the code is a match.
#           For 'direction' use 2 for down, 4 for left, 6 for right, 8 for up.
#           This will be the direction the player is facing once he/she is
#           transferred.
#
# self_switch : This allows you to set the Password to turn on a self switch
#              when it's entered correctly. Just place the map_id, the event's id and
#              the switch_id ("A", "B", "C" or "D") that you want to turn on
#              or you can leave it empty if you don't want to use it.
#
################################################################################​
#                        Calling the Scene
#
# All you have to do is place this in the 3rd page of event commands script call:
#
#             $scene = Scene_IconPassword.new(password_id)
#
# Just exchange 'password_id' with the ID you create in the PASSWORDS hash below.
################################################################################​
#                         CREDITS
#
# Again, you can use this script how you like, but you MUST credit both 'new' and
# 'efeberk' along with me if you use it.
################################################################################​
module Ixfuru
  module IconPasswords
    
    PASSWORDS = { # <<<Don't delete this!
    
          
    0 => {:all_icons => [99, 100, 101],
          :correct_icons => [100, 101, 99], #green, white, blue
          :switch_id => 25,
          :header_string => "Ustaw w odpowiedniej kolejności:",
          :transfer => [],
          :self_switch => [5, 1, "B"]},
    1 => {:all_icons => [99, 100, 101],
          :correct_icons => [99, 100, 99], #green, white, blue
          :switch_id => 25,
          :header_string => "Ustaw w odpowiedniej kolejności:",
          :transfer => [],
          :self_switch => [5, 1, "C"]},
    2 => {:all_icons => [99, 100, 101],
          :correct_icons => [101, 101, 100], #green, white, blue
          :switch_id => 25,
          :header_string => "Ustaw w odpowiedniej kolejności:",
          :transfer => [],
          :self_switch => [5, 1, "D"]},
          
          
    }
    
    NO_MATCH_SE = ["Buzzer2", 80, 100] # Sound played when code doesn't match
    MATCH_SE = ["Chime2", 80, 100] # Sound played when code matches
    WINDOW_CONTROL_SE = ["Switch1", 80, 100] # Sound played when moving from icon to icon
    DEFAULT_HEADER_STRING = "Ustaw dźwignie w kolejności:" # Default string to display over password
    
    
  end
end

#===============================================================================​
#                         ICON PASSWORD
#===============================================================================​
class IconPassword
  
  attr_accessor :icons
  attr_accessor :password_id
  attr_reader :all_icons
  attr_reader :code
  attr_accessor :header_string
  attr_reader :transfer
  
  def initialize(password_id)
    @password_id = password_id
    @all_icons = Ixfuru::IconPasswords::PASSWORDS[@password_id][:all_icons]
    @code = Ixfuru::IconPasswords::PASSWORDS[@password_id][:correct_icons]
    if Ixfuru::IconPasswords::PASSWORDS[@password_id].has_key?(:header_string)
      @header_string = Ixfuru::IconPasswords::PASSWORDS[@password_id][:header_string]
    else
      @header_string = Ixfuru::IconPasswords::DEFAULT_HEADER_STRING
    end
    @transfer = Ixfuru::IconPasswords::PASSWORDS[@password_id][:transfer]
    @icons = []
  end
  
  #-----------------------------------------------------------------------------
  # Get All Icons
  #-----------------------------------------------------------------------------
  def get_all_icons
    return @all_icons
  end
  
  #-----------------------------------------------------------------------------
  # Match?
  #-----------------------------------------------------------------------------
  def match?
    return true if @icons == @code
    return false
  end
  
end

#===============================================================================​
#                            WINDOW PASSWORD HEADER
#===============================================================================​
class Window_PasswordHeader < Window_Base
  
  attr_accessor :string
  
  def initialize(string)
    super(100, 108, 344, 56)
    @string = string
    refresh
  end
  
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0, 0, self.width - 32, WLH, @string, 1)
  end
  
end

#===============================================================================​
#                         WINDOW PASSWORD INSTRUCTIONS
#===============================================================================​
class Window_PasswordInstructions < Window_Base
  
  def initialize
    super(100, 220, 344, 56)
    @instructions = "Lewo/Prawo - Dalej, Spacja - Sprawdź"
    refresh
  end
  
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0, 0, self.width - 32, WLH, @instructions, 1)
  end
  
end


#===============================================================================​
#                            WINDOW ICON
#===============================================================================​
class Window_Icon < Window_Selectable
  
  attr_accessor :icons
  
  def initialize(password_id, x)
    super(x, 164, 56, 56)
    @icons = Ixfuru::IconPasswords::PASSWORDS[password_id][:all_icons]
    @item_max = @icons.size
    refresh
    self.active = false
    self.index = 0
  end
  
  def icon_id
    return @icons[self.index]
  end
  
  def refresh
    create_contents
    for i in 0...@item_max
      draw_each(i)
    end
  end
  
  def draw_each(index)
    rect = item_rect(index)
    draw_icon(@icons[index], rect.x, rect.y, activated?)
  end
  
  def activated?
    self.active
  end
  
end

#===============================================================================​
#                         SCENE ICON PASSWORD
#===============================================================================​
class Scene_IconPassword < Scene_Base
  
  def initialize(password_id)
    $game_switches[Ixfuru::IconPasswords::PASSWORDS[password_id][:switch_id]] = false
    @password_id = password_id
    @comparitor = IconPassword.new(@password_id)
    @win_index = 0
    @win_max = @comparitor.code.size
    @windows = []
  end
  
  #-----------------------------------------------------------------------------
  # Start
  #-----------------------------------------------------------------------------
  def start
    super
    create_menu_background
    @win_header = Window_PasswordHeader.new(@comparitor.header_string)
    @win_instructions = Window_PasswordInstructions.new
    start_x = window_start_x
    for i in 0...@win_max
      window = Window_Icon.new(@password_id, start_x + (i * 56))
      @windows.push(window)
    end
  end
  
  #-----------------------------------------------------------------------------
  # Window Start X
  #-----------------------------------------------------------------------------
  def window_start_x
    x = 272 - (@win_max * 28)
    return x
  end
  
  #-----------------------------------------------------------------------------
  # Return Scene
  #-----------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Map.new
  end
  
  #-----------------------------------------------------------------------------
  # Update Code
  #-----------------------------------------------------------------------------
  def update_code
    icons = []
    for window in @windows
      icons.push(window.icon_id)
    end
    @comparitor.icons = icons
  end
  
  #-----------------------------------------------------------------------------
  # Update
  #-----------------------------------------------------------------------------
  def update
    super
    update_code
    deactivate_windows
    update_comparitor
    update_window
  end
  
  #-----------------------------------------------------------------------------
  # DeActivate Windows
  #-----------------------------------------------------------------------------
  def deactivate_windows
    for window in @windows
      window.active = false
    end
    @windows[@win_index].active = true
    for window in @windows
      window.refresh
    end
  end
  
  #-----------------------------------------------------------------------------
  # Play Code Match
  #-----------------------------------------------------------------------------
  def play_code_match
    se = Ixfuru::IconPasswords::MATCH_SE
    RPG::SE.new(se[0], se[1], se[2]).play
  end
  
  #-----------------------------------------------------------------------------
  # Play No Match
  #-----------------------------------------------------------------------------
  def play_no_match
    se = Ixfuru::IconPasswords::NO_MATCH_SE
    RPG::SE.new(se[0], se[1], se[2]).play
  end
  
  #-----------------------------------------------------------------------------
  # Play New Window
  #-----------------------------------------------------------------------------
  def play_new_window
    se = Ixfuru::IconPasswords::WINDOW_CONTROL_SE
    RPG::SE.new(se[0], se[1], se[2]).play
  end
  
  
  #-----------------------------------------------------------------------------
  # Update Comparitor
  #-----------------------------------------------------------------------------
  def update_comparitor
    if Input.trigger?(Input::C)
      if @comparitor.match?
        play_code_match
        unless $game_switches[Ixfuru::IconPasswords::PASSWORDS[@password_id][:switch_id]] == 0
          $game_switches[Ixfuru::IconPasswords::PASSWORDS[@password_id][:switch_id]] = true
        end
        ss_base = Ixfuru::IconPasswords::PASSWORDS[@password_id][:self_switch]
        unless ss_base.empty?
          key = [ss_base[0], ss_base[1], ss_base[2]]
          $game_self_switches[key] = true
          $game_map.refresh
        end
        unless @comparitor.transfer.empty?
          m = @comparitor.transfer[0]
          x = @comparitor.transfer[1]
          y = @comparitor.transfer[2]
          dir = @comparitor.transfer[3]
          $game_player.reserve_transfer(m, x, y, dir)
        end
        return_scene
      else
        play_no_match
      end
    elsif Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    end
  end
  
  #-----------------------------------------------------------------------------
  # Update Window
  #-----------------------------------------------------------------------------
  def update_window
    @windows[@win_index].update
    if Input.trigger?(Input::LEFT)
      play_new_window
      if @win_index == 0
        @win_index = @win_max - 1
      else
        @win_index -= 1
      end
    elsif Input.trigger?(Input::RIGHT)
      play_new_window
      if @win_index == @win_max - 1
        @win_index = 0
      else
        @win_index += 1
      end
    end
  end
  
  #-----------------------------------------------------------------------------
  # Terminate
  #-----------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @win_header.dispose
    @win_instructions.dispose
    for window in @windows
      window.dispose
    end
  end
  
end
Dzięki temu skryptowi gracz może za pomocą ikon wybierać kombinację - prawidłowa kombinacja zmienia przełącznik własny. Można tego używać np. do otwierania skrzyń lub drzwi. Problem polega na tym, że skrypt posiada także opcję zakończenia minigry przyciskiem X (normalnie byłoby to przydatne, ale w moim przypadku chciałbym, aby gracz nie był w stanie wyłączyć raz rozpoczętej minigry aż do odkrycia prawidłowej kombinacji). Wie ktoś może jak można usunąć z tego skryptu opcję zakończenia minigry?
27-10-15 18:50
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Adrapnikram Offline
*


Liczba postów: 571
Dołączył: 04-10-13

Pomógł: 45



Post: #2
RE: Usunięcie jednej z opcji skryptu.

elsif Input.trigger?(Input::B)
Sound.play_cancel
return_scene

Ten kawałek trzeba wywalić.
Jeśli byłbyś ciekawy jak to działa to tak:
Ten kawałek sprawdza czy przycisk B (czyli X) został wciśnięty po czym "oddaje" return_scene czyli w praktyce przenosi cię do tego fragmentu kodu:
#-----------------------------------------------------------------------------
# Return Scene
#-----------------------------------------------------------------------------
def return_scene
$scene = Scene_Map.new
end

Który z kolei przenosi cię z powrotem na mapę. Wsio
Działa :D

Masz tutaj cały kod
Spoiler: (Otwórz)
(Ten post był ostatnio modyfikowany: 27-10-15 22:16 przez Adrapnikram.)
27-10-15 22:03
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a): Revlis
Revlis Offline
*


Liczba postów: 266
Dołączył: 04-03-15

Pomógł: 80



Post: #3
RE: Usunięcie jednej z opcji skryptu.

Dzięki, właśnie o to mi chodziło.
27-10-15 22:29
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Wątek zamknięty 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Kontakt | Ultima Forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS
Powered By MyBB. © 2013 MyBB Group. All Rights Reserved.
Skórka by Ayene.