#==============================================================================
# 「メニュー項目の直接起動」(ACE) Ver.1.0
# 製作者:奈々(なな)
# へぷたなすくろーる http://heptanas.mamagoto.com/
#
# ◇使用規約
# 使用される場合はスクリプト作成者として「奈々」を明記して下さい。
# スクリプトの改変は自由に行って頂いて構いませんが
# その場合も元のスクリプトの作成者として名前を載せて下さい。
# また配布前に必ず、ブログにある利用規約を確認して下さい。
#
#------------------------------------------------------------------------------
#
# メニュー画面を介さずに、イベントコマンドから直接各画面を表示します。
# 自作イベントや、パーティメンバー以外の操作などにどうぞ。
#
# 使い方は、イベントコマンドのスクリプトで以下を入力します。
# (アクター指定が必要なものはidを数値で入力します)
#
# n7_direct_item :アイテム画面
# n7_direct_skill(id) :スキル画面
# n7_direct_equip(id) :装備画面
# n7_direct_status(id) :ステータス画面
# n7_direct_save :セーブ画面
# n7_direct_load :ロード画面
#
#==============================================================================
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
# イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ● メニュー項目の直接起動
#--------------------------------------------------------------------------
#アイテム画面
def n7_direct_item
SceneManager.call(Scene_Item)
end
#スキル画面
def n7_direct_skill(actor_id = 1)
$game_temp.direct_menu_actor_id = actor_id
SceneManager.call(Scene_Direct_Skill)
end
#装備画面
def n7_direct_equip(actor_id = 1)
$game_temp.direct_menu_actor_id = actor_id
SceneManager.call(Scene_Direct_Equip)
end
#ステータス画面
def n7_direct_status(actor_id = 1)
$game_temp.direct_menu_actor_id = actor_id
SceneManager.call(Scene_Direct_Status)
end
#セーブ画面
def n7_direct_save
SceneManager.call(Scene_Save)
end
#ロード画面
def n7_direct_load
SceneManager.call(Scene_Load)
end
end
#==============================================================================
# ■ Game_Temp
#------------------------------------------------------------------------------
# セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン
# スタンスは $game_temp で参照されます。
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :direct_menu_actor_id # アクターIDの指定
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias direct_menu_initialize initialize
def initialize
direct_menu_initialize
direct_menu_actor_id = 1
end
end
#以下やっていること。@actorの書き換え。pagedown,upのハンドラ削除。以上。
#競合対策するならsuperしてpagedown,upのハンドラを書き換えても良い。
#==============================================================================
# ■ Scene_Direct_Skill
#------------------------------------------------------------------------------
# 直接起動型スキル画面の処理を行うクラスです。
#==============================================================================
class Scene_Direct_Skill < Scene_Skill
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
@actor = $game_actors[($game_temp.direct_menu_actor_id)]
on_actor_change
end
#--------------------------------------------------------------------------
# ● コマンドウィンドウの作成
#--------------------------------------------------------------------------
def create_command_window
p @actor.id
wy = @help_window.height
@command_window = Window_SkillCommand.new(0, wy)
@command_window.viewport = @viewport
@command_window.help_window = @help_window
@command_window.actor = @actor
@command_window.set_handler(:skill, method(:command_skill))
@command_window.set_handler(:cancel, method(:return_scene))
end
end
#==============================================================================
# ■ Scene_Direct_Equip
#------------------------------------------------------------------------------
# 直接起動型装備画面の処理を行うクラスです。
#==============================================================================
class Scene_Direct_Equip < Scene_Equip
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
@actor = $game_actors[($game_temp.direct_menu_actor_id)]
on_actor_change
end
#--------------------------------------------------------------------------
# ● コマンドウィンドウの作成
#--------------------------------------------------------------------------
def create_command_window
wx = @status_window.width
wy = @help_window.height
ww = Graphics.width - @status_window.width
@command_window = Window_EquipCommand.new(wx, wy, ww)
@command_window.viewport = @viewport
@command_window.help_window = @help_window
@command_window.set_handler(:equip, method(:command_equip))
@command_window.set_handler(:optimize, method(:command_optimize))
@command_window.set_handler(:clear, method(:command_clear))
@command_window.set_handler(:cancel, method(:return_scene))
end
end
#==============================================================================
# ■ Scene_Direct_Status
#------------------------------------------------------------------------------
# 直接起動型ステータス画面の処理を行うクラスです。
#==============================================================================
class Scene_Direct_Status < Scene_Status
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
@actor = $game_actors[($game_temp.direct_menu_actor_id)]
@status_window = Window_Status.new(@actor)
@status_window.set_handler(:cancel, method(:return_scene))
end
end