Project1
标题:
求帮助啊求帮助,自制的菜单出错了
[打印本页]
作者:
退屈£无聊
时间:
2010-11-14 15:29
标题:
求帮助啊求帮助,自制的菜单出错了
本帖最后由 退屈£无聊 于 2010-11-14 17:01 编辑
自己制作的一个轩辕剑四的菜单。
现在有很多问题:
1、物品菜单进到选人使用时无用。。。。
2、装备菜单会有DISPOSE错误 (喵的。不dispose又不行)
3、状态菜单。。也是有DISPOSE错误。。。
注:参照天之痕菜单的话,求具体步骤。
以下是冗长的脚本。范例已贴上。
轩辕剑肆1.rar
(1.74 MB, 下载次数: 61)
2010-11-14 15:36 上传
点击文件名下载附件
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# 处理菜单画面的类。
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# ● 初始化对像
# menu_index : 命令光标的初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@choose1 = 0
@choose1 = menu_index
@equip1 = false
@statu1 = false
end
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# ============ 菜单主体部分 ============== #
@oldindex = 0
@sprite = Sprite.new
@sprite.bitmap = Bitmap.new("Graphics/menu/0")
@choose = true
@item = Sprite.new
@item.bitmap = Bitmap.new("Graphics/menu/Item")
@equip = Sprite.new
@equip.bitmap = Bitmap.new("Graphics/menu/Equip")
@equip.y = 180
@skill = Sprite.new
@skill.bitmap = Bitmap.new("Graphics/menu/Skill")
@task = Sprite.new
@task.bitmap = Bitmap.new("Graphics/menu/Task")
@people = Sprite.new
@people.bitmap = Bitmap.new("Graphics/menu/People")
@sys = Sprite.new
@sys.bitmap = Bitmap.new("Graphics/menu/System")
@system = Window_Command.new(200, ["记录", "读取", "离开"])
@system.visible = false
@system.active = false
@system.y = 300
@system.x = 100
@item.y = 140
@skill.y = 220
@task.y = 260
@people.y = 300
@sys.y = 340
@item.x = 40
@equip.x= 5
@skill.x= 5
@task.x= 5
@people.x= 5
@sys.x= 5
# 生成金钱窗口
@gold_window = Window_Gold.new
@gold_window.x = 0
@gold_window.y = 0
# 生成状态窗口
@status_window = Window_MenuStatus.new
@status_window.x = 160
@status_window.y = 0
@status_window.opacity = 0
# ============ 物品
# 生成帮助窗口、物品窗口
@help_window = Window_Help.new
@help_window.visible = false
@item_window = Window_Item.new
@item_window.visible = false
@item_window.active = false
# 关联帮助窗口
@item_window.help_window = @help_window
# 生成目标窗口 (设置为不可见・不活动)
@target_window = Window_Target.new
@target_window.visible = false
@target_window.active = false
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果切换画面就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
@item.dispose
@equip.dispose
@skill.dispose
@task.dispose
@people.dispose
@sys.dispose
@sprite.dispose
@gold_window.dispose
@status_window.dispose
@help_window.dispose
@system.dispose
# 其它窗口
@item_window.dispose
@target_window.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 刷新窗口
@item.update
@equip.update
@skill.update
@task.update
@people.update
@sys.update
@gold_window.update
@item_window.update
@target_window.update
@help_window.update
@system.update
@sprite.update
@status_window.update
# 命令窗口被激活的情况下: 调用 update_command
if @choose == true
update_command
return
end
# 状态窗口被激活的情况下: 调用 update_status
if @status_window.active
update_status
return
end
if @item_window.active
update_items
return
end
if @skill_window != nil
update_skill
return
end
if @equip1 == true
#update_equip
#return
# 刷新窗口
@left_window.update
@right_window.update
@item_window.update
# 设置物品窗口的可视状态
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
# 获取当前装备中的物品
item1 = @right_window.item
# 设置当前的物品窗口到 @item_window
case @right_window.index
when 0
@item_window = @item_window1
when 1
@item_window = @item_window2
when 2
@item_window = @item_window3
when 3
@item_window = @item_window4
when 4
@item_window = @item_window5
end
# 右窗口被激活的情况下
if @right_window.active
# 删除变更装备后的能力
@left_window.set_new_parameters(nil, nil, nil)
end
# 物品窗口被激活的情况下
if @item_window.active
# 获取现在选中的物品
item2 = @item_window.item
# 变更装备
last_hp = @actor.hp
last_sp = @actor.sp
@actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
# 获取变更装备后的能力值
new_atk = @actor.atk
new_pdef = @actor.pdef
new_mdef = @actor.mdef
# 返回到装备
@actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
@actor.hp = last_hp
@actor.sp = last_sp
# 描画左窗口
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
end
if @right_window.active
update_right
return
end
# 物品窗口被激活的情况下: 调用 update_item
if @item_window.active
update_left
return
end
end
if @statu1 == true
update_stat
return
end
if @system.active
update_sys
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (命令窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_command
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换的地图画面
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::UP)
if @choose1 == 0
else
@choose1 -= 1
end
end
if Input.trigger?(Input::DOWN)
if @choose1 == 5
else
@choose1 += 1
end
end
if @oldindex != @choose1
stah
@oldindex = @choose1
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 同伴人数为 0、存档、游戏结束以外的场合
if $game_party.actors.size == 0 #and @command_window.index < 4
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 命令窗口的光标位置分支
case @choose1
when 0 # 物品
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到物品画面
@item_window.visible = true
@item_window.active = true
@help_window.visible = true
@status_window.visible = false
@choose = false
when 2 # 特技
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 激活状态窗口
@choose = false
@status_window.active = true
@status_window.index = 0
when 1 # 装备
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 激活状态窗口
@choose = false
@status_window.active = true
@status_window.index = 0
when 4 # 状态
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 激活状态窗口
@choose = false
@status_window.active = true
@status_window.index = 0
when 5 # 存档
# 禁止存档的情况下
#if $game_system.save_disabled
# 演奏冻结 SE
# $game_system.se_play($data_system.buzzer_se)
# return
#end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
@system.visible = true
@system.active = true
@choose = false
@system.index = 0
# 切换到存档画面
#$scene = Scene_Save.new
end
return
end
end
#======================= 刷新而已啦 ====================== #
def stah
@sprite.bitmap = Bitmap.new("Graphics/menu/" + @choose1.to_s)
case @choose1
when 0
if @oldindex == 1
loop do
@item.x += 5
@equip.x -= 5
Graphics.update
if @item.x >= 40
break
end
end
end
when 1
if @oldindex == 0
loop do
@equip.x += 5
@item.x -= 5
Graphics.update
if @equip.x >= 40
break
end
end
end
if @oldindex == 2
loop do
@equip.x += 5
@skill.x -= 5
Graphics.update
if @equip.x >= 40
break
end
end
end
when 2
if @oldindex == 1
loop do
@skill.x += 5
@equip.x -= 5
Graphics.update
if @skill.x >= 40
break
end
end
end
if @oldindex == 3
loop do
@skill.x += 5
@task.x -= 5
Graphics.update
if @skill.x >= 40
break
end
end
end
when 3
if @oldindex == 2
loop do
@task.x += 5
@skill.x -= 5
Graphics.update
if @task.x >= 40
break
end
end
end
if @oldindex == 4
loop do
@task.x += 5
@people.x -= 5
Graphics.update
if @task.x >= 40
break
end
end
end
when 4
if @oldindex == 3
loop do
@people.x += 5
@task.x -= 5
Graphics.update
if @people.x >= 40
break
end
end
end
if @oldindex == 5
loop do
@people.x += 5
@sys.x -= 5
Graphics.update
if @people.x >= 40
break
end
end
end
when 5
if @oldindex == 4
loop do
@sys.x += 5
@people.x -= 5
Graphics.update
if @sys.x >= 40
break
end
end
end
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (状态窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_status
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 激活命令窗口
@choose = true
@status_window.active = false
@status_window.index = -1
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 命令窗口的光标位置分支
case @choose1
when 2 # 特技
# 本角色的行动限制在 2 以上的情况下
if $game_party.actors[@status_window.index].restriction >= 2
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到特技画面
# ============= 技能
# 获取角色
@actor = $game_party.actors[@status_window.index]
# 生成帮助窗口、状态窗口、特技窗口
@statu_window = Window_SkillStatus.new(@actor)
@skill_window = Window_Skill.new(@actor)
# 关联帮助窗口
@skill_window.help_window = @help_window
@skill_window.visible = true
@statu_window.visible = true
@status_window.visible = false
@status_window.active = false
#@skill_window.dispose
#@statu_window.dispose
when 1 # 装备
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换的装备画面
# 获取角色
@actor = $game_party.actors[@status_window.index]
# 生成窗口
@left_window = Window_EquipLeft.new(@actor)
@right_window = Window_EquipRight.new(@actor)
@item_window1 = Window_EquipItem.new(@actor, 0)
@item_window2 = Window_EquipItem.new(@actor, 1)
@item_window3 = Window_EquipItem.new(@actor, 2)
@item_window4 = Window_EquipItem.new(@actor, 3)
@item_window5 = Window_EquipItem.new(@actor, 4)
# 关联帮助窗口
@right_window.help_window = @help_window
@item_window1.help_window = @help_window
@item_window2.help_window = @help_window
@item_window3.help_window = @help_window
@item_window4.help_window = @help_window
@item_window5.help_window = @help_window
@right_window.active = true
@equip1 = true
@status_window.active = false
@status_window.visible = false
# 设置光标位置
@right_window.index = 0
when 4 # 状态
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到状态画面
@stat_window = Window_Status.new($game_party.actors[@status_window.index])
@status_window.visible = false
@status_window.active = false
@statu1 = true
end
return
end
end
#--------------------------------------------------------------------------
# stat
#--------------------------------------------------------------------------
def update_stat
@stat_window.update
if Input.trigger?(Input::B) or Input.trigger?(Input::C)
@stat_window.visible = false
#@choose = true
@statu1 = false
@status_window.dispose
end
end
#--------------------------------------------------------------------------
# 物品部分
#--------------------------------------------------------------------------
def update_items
# 物品窗口被激活的情况下: 调用 update_item
if @item_window.active
update_item1
return
end
# 目标窗口被激活的情况下: 调用 update_target
if @target_window.active
update_item2
return
end
end
def update_item1
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
@item_window.active = false
@target_window.active = false
@item_window.visible = false
@target_window.visible = false
@help_window.visible = false
@status_window.visible = true
@choose = true
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 获取物品窗口当前选中的物品数据
@itemm = @item_window.item
# 不使用物品的情况下
unless @itemm.is_a?(RPG::Item)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 不能使用的情况下
unless $game_party.item_can_use?(@itemm.id)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 效果范围是我方的情况下
if @itemm.scope >= 3
# 激活目标窗口
@item_window.active = false
@target_window.x = (@item_window.index + 1) % 2 * 304
@target_window.visible = true
@target_window.active = true
# 设置效果范围 (单体/全体) 的对应光标位置
if @itemm.scope == 4 || @itemm.scope == 6
@target_window.index = -1
else
@target_window.index = 0
end
# 效果在我方以外的情况下
else
# 公共事件 ID 有效的情况下
if @itemm.common_event_id > 0
# 预约调用公共事件
$game_temp.common_event_id = @itemm.common_event_id
# 演奏物品使用时的 SE
$game_system.se_play(@itemm.menu_se)
# 消耗品的情况下
if @itemm.consumable
# 使用的物品数减 1
$game_party.lose_item(@itemm.id, 1)
# 再描绘物品窗口的项目
@item_window.draw_item(@item_window.index)
end
# 切换到地图画面
$scene = Scene_Menu.new
return
end
end
return
end
def update_item2
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 由于物品用完而不能使用的场合
unless $game_party.item_can_use?(@itemm.id)
# 再次生成物品窗口的内容
@item_window.refresh
end
# 删除目标窗口
@item_window.active = true
@target_window.visible = false
@target_window.active = false
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 如果物品用完的情况下
if $game_party.item_number(@itemm.id) == 0
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 目标是全体的情况下
if @target_window.index == -1
# 对同伴全体应用物品使用效果
used = false
for i in $game_party.actors
used |= i.item_effect(@itemm)
end
end
# 目标是单体的情况下
if @target_window.index >= 0
# 对目标角色应用物品的使用效果
target = $game_party.actors[@target_window.index]
used = target.item_effect(@itemm)
end
# 使用物品的情况下
if used
# 演奏物品使用时的 SE
$game_system.se_play(@itemm.menu_se)
# 消耗品的情况下
if @itemm.consumable
# 使用的物品数减 1
$game_party.lose_item(@itemm.id, 1)
# 再描绘物品窗口的项目
@item_window.draw_item(@item_window.index)
end
# 再生成目标窗口的内容
@target_window.refresh
# 全灭的情况下
if $game_party.all_dead?
# 切换到游戏结束画面
$scene = Scene_Gameover.new
return
end
# 公共事件 ID 有效的情况下
if @itemm.common_event_id > 0
# 预约调用公共事件
$game_temp.common_event_id = @itemm.common_event_id
# 切换到地图画面
$scene = Scene_Map.new
return
end
end
# 无法使用物品的情况下
unless used
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end
# 技能部分
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update_skill
# 刷新窗口
@help_window.update
@statu_window.update
@skill_window.update
@target_window.update
# 特技窗口被激活的情况下: 调用 update_skill
if @skill_window.active
update_skill1
return
end
# 目标窗口被激活的情况下: 调用 update_target
if @target_window.active
update_skill2
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (特技窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_skill1
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
#@choose = false
@statu_window.visible = false
@skill_window.visible = false
@target_window.visible = false
@skill_window.active = false
@help_window.visible = false
@status_window.visible = true
@status_window.active = true
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 获取特技窗口现在选择的特技的数据
@skilll = @skill_window.skill
# 不能使用的情况下
if @skilll == nil or not @actor.skill_can_use?(@skilll.id)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 效果范围是我方的情况下
if @skilll.scope >= 3
# 激活目标窗口
@skill_window.active = false
@target_window.x = (@skill_window.index + 1) % 2 * 304
@target_window.visible = true
@target_window.active = true
# 设置效果范围 (单体/全体) 的对应光标位置
if @skilll.scope == 4 || @skilll.scope == 6
@target_window.index = -1
elsif @skilll.scope == 7
@target_window.index = @actor_index - 10
else
@target_window.index = 0
end
# 效果在我方以外的情况下
else
# 公共事件 ID 有效的情况下
if @skilll.common_event_id > 0
# 预约调用公共事件
$game_temp.common_event_id = @skilll.common_event_id
# 演奏特技使用时的 SE
$game_system.se_play(@skilll.menu_se)
# 消耗 SP
@actor.sp -= @skilll.sp_cost
# 再生成各窗口的内容
@status_window.refresh
@skill_window.refresh
@target_window.refresh
# 切换到地图画面
$scene = Scene_Map.new
return
end
end
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_Skill.new(@actor_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_Skill.new(@actor_index)
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (目标窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_skill2
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 删除目标窗口
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 因为 SP 不足而无法使用的情况下
unless @actor.skill_can_use?(@skilll.id)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 目标是全体的情况下
if @target_window.index == -1
# 对同伴全体应用特技使用效果
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skilll)
end
end
# 目标是使用者的情况下
if @target_window.index <= -2
# 对目标角色应用特技的使用效果
target = $game_party.actors[@target_window.index + 10]
used = target.skill_effect(@actor, @skilll)
end
# 目标是单体的情况下
if @target_window.index >= 0
# 对目标角色应用特技的使用效果
target = $game_party.actors[@target_window.index]
used = target.skill_effect(@actor, @skilll)
end
# 使用特技的情况下
if used
# 演奏特技使用时的 SE
$game_system.se_play(@skilll.menu_se)
# 消耗 SP
@actor.sp -= @skilll.sp_cost
# 再生成各窗口内容
@status_window.refresh
@skill_window.refresh
@target_window.refresh
# 全灭的情况下
if $game_party.all_dead?
# 切换到游戏结束画面
$scene = Scene_Gameover.new
return
end
# 公共事件 ID 有效的情况下
if @skilll.common_event_id > 0
# 预约调用公共事件
$game_temp.common_event_id = @skilll.common_event_id
# 切换到地图画面
$scene = Scene_Map.new
return
end
end
# 无法使用特技的情况下
unless used
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
#================= 装备部分
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
# def update_equip
# end
#--------------------------------------------------------------------------
# ● 刷新画面 (右侧窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_right
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
@equip1 = false
@status_window.visible = true
@status_window.active = true
@help_window.visible = false
@right_window.visible = false
@left_window.visible = false
@right_window.dispose
@left_window.dispose
@item_window1.dispose
@item_window2.dispose
@item_window3.dispose
@item_window4.dispose
@item_window5.dispose
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 固定装备的情况下
if @actor.equip_fix?(@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
#--------------------------------------------------------------------------
# ● 刷新画面 (物品窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_left
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 激活右侧窗口
@right_window.active = true
@item_window.active = false
@item_window.index = -1
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 演奏装备 SE
$game_system.se_play($data_system.equip_se)
# 获取物品窗口现在选择的装备数据
item = @item_window.item
# 变更装备
@actor.equip(@right_window.index, item == nil ? 0 : item.id)
# 激活右侧窗口
@right_window.active = true
@item_window.active = false
@item_window.index = -1
# 再生成右侧窗口、物品窗口的内容
@right_window.refresh
@item_window.refresh
return
end
end
#==========================================================================
# SYS
#==========================================================================
def update_sys
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
@system.active = false
@system.visible = false
@choose = true
end
if Input.trigger?(Input::C)
case @system.index
when 0
# 禁止存档的情况下
if $game_system.save_disabled
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
$scene = Scene_Save.new
when 1
$game_system.se_play($data_system.decision_se)
$scene = Scene_Load.new(1)
when 2
$scene = Scene_End.new
end
end
end
end
复制代码
作者:
后知后觉
时间:
2010-11-14 18:21
这是在 def update 里的一部分
if @item_window.active
update_items
return
end
这是在 def update_items 里的内容
def update_items
# 物品窗口被激活的情况下: 调用 update_item
if @item_window.active
update_item1
return
end
# 目标窗口被激活的情况下: 调用 update_target
if @target_window.active
update_item2
return
end
end
使用物品没有效果.是因为 update_item2 没有被执行
你自己看看上下2段是个什么样的关系.
至于退出的时候发生的 错误
是因为在按下B键的时候那些窗口就被dispose掉了
然后又调用了 update 所以报错了.
这些东西的dispose建议放在退出Scene_Menu的时候再dispose
要不就在那些 xxxx.update 后面都加上 if not disposed?
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1