![]()

Autor: Ayene [ Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript. ]

Kompatybilność:
RPG Maker XP

Krótki opis:
Skrypt pozwala dodać do menu własne polecenia. Przewidziano również wyłączenie okien ze złotem, czasem i liczbą kroków.

Instrukcja:
By dodać własną komendę w menu w Konfiguracji skryptu znajdź i edytuj sekcję:
# Lista poleceń w menu
MENU_COMMANDS = [
#["Nazwa" , "Scena", Wybór postaci
["Przedmioty", 'Scene_Item', false],
["Zdolności", 'Scene_Skill', true],
["Ekwipunek", 'Scene_Equip', true],
["Status", 'Scene_Status', true],
["Rozdaj", 'Scene_Points', false],
["Bestiariusz", 'Scene_MonsterBook', false],
["Zapisz", 'Scene_Save', false],
["Wyjście", 'Scene_End', false],
]

Skrypt:
#==============================================================================
# Własne komendy w menu [XP] / Custom Menu Commands [XP]
#==============================================================================
# Autor: Ayene
#==============================================================================
# Skrypt pozwala dodać do menu własne polecenia. Przewidziano również wyłączenie
# okien ze złotem, czasem i liczbą kroków.
# Instalacja: Umieść skrypt nad Main.
#==============================================================================
module Ayene
# Lista poleceń w menu
MENU_COMMANDS = [
#["Nazwa" , "Scena", Wybór postaci
["Przedmioty", 'Scene_Item', false],
["Zdolności", 'Scene_Skill', true],
["Ekwipunek", 'Scene_Equip', true],
["Status", 'Scene_Status', true],
["Rozdaj", 'Scene_Points', false],
["Bestiariusz", 'Scene_MonsterBook', false],
["Zapisz", 'Scene_Save', false],
["Wyjście", 'Scene_End', false],
]
# Wybór postaci, to opcja zaznaczenia okna statusu w menu, jak to ma miejsce
# w przypadku wyboru Umiejętności czy Ekwipunku - po ich wyborze bowiem można
# wybrać postać, której właściwości chcemy zobaczyć.
# Maksymalna liczba wierszy
ROW_MAX = 6
# Indeks poleceń (kolejność w MENU_COMMANDS), które mają być nieaktywne,
# gdy nie ma bohaterów w drużynie.
DISABLE_COMMANDS = [0, 1, 2, 3, 4]
# Okno ze złotem (tak - true / nie - false)
GOLD_WINDOW = true
# Okno z czasem gry (tak - true / nie - false)
PLAY_TIME_WINDOW = true
# Okno z liczbą kroków (tak - true / nie - false)
STEP_WINDOW = true
end
#==============================================================================
# ** Game_Temp
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :menu_command_index
#--------------------------------------------------------------------------
# * Object Initialization (alias)
#--------------------------------------------------------------------------
alias aye_gametemp_ini initialize
def initialize
aye_gametemp_ini
@menu_command_index = 0
end
end
#==============================================================================
# ** Scene_Map
#==============================================================================
class Scene_Map
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
alias aye_scmap_main main
def main
$game_temp.menu_command_index = 0
aye_scmap_main
end
end
#==============================================================================
# ** Scene_Menu
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
@command_window = Window_Command.new(160, commands[0])
@command_window.height = [@command_window.height, Ayene::ROW_MAX * 32 + 32].min
@command_window.index = $game_temp.menu_command_index
Ayene::DISABLE_COMMANDS.each{|i| @command_window.disable_item(i) if $game_party.actors.size == 0}
@windows = []
@windows.push(Window_PlayTime.new) if Ayene::PLAY_TIME_WINDOW
@windows.push(Window_Steps.new) if Ayene::STEP_WINDOW
@windows.push(Window_Gold.new) if Ayene::GOLD_WINDOW
y = @command_window.height
for window in @windows
window.x = 0
window.y = y
y += window.height
end
@status_window = Window_MenuStatus.new
@status_window.x = 160
@status_window.y = 0
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
for window in @windows
window.dispose
end
@status_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
@command_window.update
@status_window.update
for window in @windows
window.update
end
if @command_window.active
update_command
return
end
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when command window is active)
#--------------------------------------------------------------------------
def update_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
unless command_enabled?(@command_window.index)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_temp.menu_command_index = @command_window.index
$game_system.se_play($data_system.decision_se)
if commands[2][@command_window.index]
@command_window.active = false
@status_window.active = true
@status_window.index = 0
else
$scene = eval("#{commands[1][@command_window.index]}.new")
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when status window is active)
#--------------------------------------------------------------------------
def update_status
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$scene = eval("#{commands[1][@command_window.index]}.new(@status_window.index)")
return
end
end
#--------------------------------------------------------------------------
# * Check Commands
#--------------------------------------------------------------------------
def commands
commands = []
next_scene = []
select_window = []
for command in Ayene::MENU_COMMANDS
commands.push(command[0])
next_scene.push(command[1])
select_window.push(command[2])
end
return commands, next_scene, select_window
end
#--------------------------------------------------------------------------
# * Check Command Enabled
#--------------------------------------------------------------------------
def command_enabled?(index)
if Ayene::DISABLE_COMMANDS.include?(index) and $game_party.actors.size == 0
return false
end
return true
end
end
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.