#--------------------------------------------------------------------------
# 更新画面
#--------------------------------------------------------------------------
def update
# 更新窗口内容
@help_window.update
@action_window.update
@title_window.update
# 更新动作窗口
if @action_window.active
update_action_window
return
end
# 更新分类窗口
if @sorting_window.active
update_sorting_window
end
# 更新物品窗口
if @item_window.active
update_item_window
return
end
# 更新数量输入窗口
if @number_window.active
update_number_window
end
end
#--------------------------------------------------------------------------
# 更新动作窗口
#--------------------------------------------------------------------------
def update_action_window
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到地图画面
$scene = Scene_Map.new
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 命令窗口光标位置分支
case @action_window.index
when 0 # 存入
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
@action_window.active = false
@sorting_window.active = true
@sorting_window.index = 0
when 1 # 取出
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
@action_window.active = false
@sorting_window.active = true
@sorting_window.index = 0
@sorting_window.refresh(1)
when 2 # 取消
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到地图画面
$scene = Scene_Map.new
end
return
end
@sorting_window.refresh(@action_window.index)
end
def update_sorting_window
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到地图画面
@sorting_window.index = -1
@sorting_window.update
@action_window.active = true
@sorting_window.active = false
@item_window.set_item("")
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
if @action_window.index == 0
if @sorting_window.have_item(@sorting_window.index) != @sorting_window.disabled_color
$game_system.se_play($data_system.decision_se)
@sorting_window.active = false
@item_window.active = true
@item_window.index = 0
else
$game_system.se_play($data_system.buzzer_se)
end
else
if @sorting_window.have_item_w(@sorting_window.index) != @sorting_window.disabled_color
$game_system.se_play($data_system.decision_se)
@sorting_window.active = false
@item_window.active = true
@item_window.index = 0
else
$game_system.se_play($data_system.buzzer_se)
end
end
end
# 更新物品窗口
if @action_window.index == 0
@item_window.set_item(@sorting_window.commands[@sorting_window.index])
elsif @action_window.index ==1
@item_window.set_item_w(@sorting_window.commands[@sorting_window.index])
end
@sorting_window.update
end
#--------------------------------------------------------------------------
# 更新物品窗口
#--------------------------------------------------------------------------
def update_item_window
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
@sorting_window.active = true
@item_window.active = false
@item_window.index = -1
@help_window.set_text("")
return
end
# 按下确定键
if Input.trigger?(Input::C)
# 获取物品数量
$game_system.se_play($data_system.decision_se)
if @item_window.item.is_a?(RPG::Item)
if @action_window.index == 0
i = $game_party.item_number(@item_window.item.id)
else
i = $game_party.get_warehouse(@item_window.item.id,"I")
end
elsif @item_window.item.is_a?(RPG::Weapon)
if @action_window.index == 0
i = $game_party.weapon_number(@item_window.item.id)
else
i = $game_party.get_warehouse(@item_window.item.id,"W")
end
else
if @action_window.index == 0
i = $game_party.armor_number(@item_window.item.id)
else
i = $game_party.get_warehouse(@item_window.item.id,"A")
end
end
@number_window.set(@item_window.item, i)
@number_window.active = true
@number_window.visible = true
@item_window.active = false
end
@item_window.update
if @action_window.index == 0
@item_window.set_item(@sorting_window.commands[@sorting_window.index])
elsif @action_window.index ==1
@item_window.set_item_w(@sorting_window.commands[@sorting_window.index])
end
end
#--------------------------------------------------------------------------
# 更新输入窗口
#--------------------------------------------------------------------------
def update_number_window
@number_window.update
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
@number_window.active = false
@number_window.visible = false
@item_window.active = true
return
end
if Input.trigger?(Input::C)
#处理存储操作
if @action_window.index == 0
$game_system.se_play($data_system.decision_se)
@number_window.active = false
@number_window.visible = false
@item_window.active = true
if @number_window.get_item.is_a?(RPG::Item)
$game_party.add_warehouse(@number_window.get_item.id,@number_window.number,"I")
$game_party.lose_item(@number_window.get_item.id, @number_window.number)
elsif @number_window.get_item.is_a?(RPG::Weapon)
$game_party.add_warehouse(@number_window.get_item.id,@number_window.number,"W")
$game_party.lose_weapon(@number_window.get_item.id, @number_window.number)
else
$game_party.add_warehouse(@number_window.get_item.id,@number_window.number,"A")
$game_party.lose_armor(@number_window.get_item.id, @number_window.number)
end
#判读储存后状态
if @sorting_window.have_item(@sorting_window.index) == @sorting_window.disabled_color
@item_window.index = -1
@item_window.active = false
@sorting_window.active = true
@sorting_window.refresh
@help_window.set_text("")
end
elsif @action_window.index == 1
@item = @number_window.get_item
type = @item.is_a?(RPG::Item) ? 0 : (@item.is_a?(RPG::Weapon) ? 1 : 2)
if $game_party.full_judge?(@item.id, @number_window.number, type)
$game_party.full_top
return
end
@number_window.active = false
@number_window.visible = false
@item_window.active = true
if @number_window.get_item.is_a?(RPG::Item)
i = $game_party.item_number(@item_window.item.id) + @number_window.number
elsif @number_window.get_item.is_a?(RPG::Weapon)
i = $game_party.weapon_number(@item_window.item.id) + @number_window.number
else
i = $game_party.armor_number(@item_window.item.id) + @number_window.number
end
if i <= 99
$game_system.se_play($data_system.decision_se)
if @number_window.get_item.is_a?(RPG::Item)
$game_party.gain_item(@number_window.get_item.id, @number_window.number)
$game_party.del_warehouse(@number_window.get_item.id,@number_window.number,"I") if $judges.nil?
$judge=nil
elsif @number_window.get_item.is_a?(RPG::Weapon)
$game_party.gain_weapon(@number_window.get_item.id, @number_window.number)
$game_party.del_warehouse(@number_window.get_item.id,@number_window.number,"W") if $judges.nil?
$judge=nil
else
$game_party.gain_armor(@number_window.get_item.id, @number_window.number)
$game_party.del_warehouse(@number_window.get_item.id,@number_window.number,"A") if $judges.nil?
$judge=nil
end
else
$game_system.se_play($data_system.buzzer_se)
end
#判读储存后状态
if @sorting_window.have_item_w(@sorting_window.index) == @sorting_window.disabled_color
@item_window.index = -1
@item_window.active = false
@sorting_window.active = true
@sorting_window.refresh(1)
@help_window.set_text("")
end
end
end
end
end
[/pre]
卸下装备的问题解决代码:
[pre lang="ruby"]class Game_Actor
def tests(id)
case id
when 0
$game_party.gain_weapon($data_actors[@actor_id].weapon_id,1)
when 1
$game_party.gain_weapon($data_actors[@actor_id].armor1_id,1)
when 2
$game_party.gain_weapon($data_actors[@actor_id].armor2_id,1)
when 3
$game_party.gain_weapon($data_actors[@actor_id].armor3_id,1)
when 4
$game_party.gain_weapon($data_actors[@actor_id].armor4_id,1)
end
if $judges.nil?
case id
when 0
$game_party.gain_weapon($data_actors[@actor_id].weapon_id,-1)
when 1
$game_party.gain_weapon($data_actors[@actor_id].armor1_id,-1)
when 2
$game_party.gain_weapon($data_actors[@actor_id].armor2_id,-1)
when 3
$game_party.gain_weapon($data_actors[@actor_id].armor3_id,-1)
when 4
$game_party.gain_weapon($data_actors[@actor_id].armor4_id,-1)
end
return false
else
$judges = nil
return true
end
end
end
class Scene_Equip
def update_right
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
$scene = Scene_Menu.new(2)
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 固定装备的情况下
if @actor.equip_fix?(@right_window.index) or @actor.tests(@right_window.index)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 激活物品窗口
@right_window.active = false
@item_window.active = true
@item_window.index = 0
return
end
# 按下 R 键的情况下
if Input.trigger?(Input::R)
# 演奏光标 SE
$game_system.se_play($data_system.cursor_se)
# 移至下一位角色
@actor_index += 1
@actor_index %= $game_party.actors.size
# 切换到别的装备画面
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
end
# 按下 L 键的情况下
if Input.trigger?(Input::L)
# 演奏光标 SE
$game_system.se_play($data_system.cursor_se)
# 移至上一位角色
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# 切换到别的装备画面
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
end
end
end[/pre]