查看: 2274|回复: 4

[已经过期] 修改菜单的问题

[复制链接]
梦石
0
星屑
75
在线时间
139 小时
注册时间
2014-5-4
回帖
53
发表于 2015-12-12 11:49:18 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 invirgin 于 2015-12-12 22:10 编辑

各位大大 又来求助了
我在下了个菜单脚本,然后改了下。如图

Snap5.jpg

但是出现了两个有选项的框,按键盘向右,两个一起向右。

Snap6.jpg

我的理解是现在 有两个窗口是激活的,我想使最强装备那菜单 不激活,可是弄不了。

脚本如下

[pre lang="ruby"]class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # ● 打开菜单画面(修改为菜单直接进入物品界面)
  #--------------------------------------------------------------------------
  alias origin_call_menu call_menu
  def call_menu
    Sound.play_ok
    SceneManager.call(Scene_Equip)
    Window_MenuCommand::init_command_position
  end
end

#encoding:utf-8
#==============================================================================
# ■ Scene_Equip
#------------------------------------------------------------------------------
#  装备画面
#==============================================================================

class Scene_Equip < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def initialize(last_scene = :scene_map)
    super
    @last_scene = last_scene
  end
  def start
    super
    create_help_window
    create_status_window
    create_command_window
    create_slot_window
    create_item_window
    create_origin_command_window
  end
  #--------------------------------------------------------------------------
  # ● 生成状态窗口
  #--------------------------------------------------------------------------
  def create_status_window
    @status_window = Window_EquipStatus.new(0, @help_window.height)
    @status_window.viewport = @viewport
    @status_window.actor = @actor
  end
  #--------------------------------------------------------------------------
  # ● 生成指令窗口
  #--------------------------------------------------------------------------
  def create_command_window
    wx = @status_window.width
    wy = @help_window.height
    ww = Graphics.width - @status_window.width
    @equip_command_window = Window_EquipCommand.new(wx, wy, ww)
    @equip_command_window.viewport = @viewport
    @equip_command_window.help_window = @help_window
    @equip_command_window.set_handler(:equip,    method(:command_equip))
    @equip_command_window.set_handler(:optimize, method(:command_optimize))
    @equip_command_window.set_handler(:clear,    method(:command_clear))
    @equip_command_window.set_handler(:cancel,   method(:return_scene))
    @equip_command_window.set_handler(:pagedown, method(:next_actor))
    @equip_command_window.set_handler(:pageup,   method(:prev_actor))
  end
  #--------------------------------------------------------------------------
  # ● 生成装备栏窗口
  #--------------------------------------------------------------------------
  def create_slot_window
    wx = @status_window.width
#~     wy = @help_window.y + @help_window.height
    wy =@equip_command_window.y + @equip_command_window.height
    ww = Graphics.width - @status_window.width
    @slot_window = Window_EquipSlot.new(wx, wy, ww)
    @slot_window.viewport = @viewport
    @slot_window.help_window = @help_window
    @slot_window.status_window = @status_window
    @slot_window.actor = @actor
    @slot_window.set_handler(:ok,       method(:on_slot_ok))
    @slot_window.set_handler(:cancel,   method(:on_slot_cancel))
  end
  #--------------------------------------------------------------------------
  # ● 生成物品窗口
  #--------------------------------------------------------------------------
  def create_item_window
    wx = 0
    wy = @slot_window.y + @slot_window.height
    ww = Graphics.width
    wh = Graphics.height - wy
    @item_window = Window_EquipItem.new(wx, wy, ww, wh)
    @item_window.viewport = @viewport
    @item_window.help_window = @help_window
    @item_window.status_window = @status_window
    @item_window.actor = @actor
    @item_window.set_handler(:ok,     method(:on_item_ok))
    @item_window.set_handler(:cancel, method(:on_item_cancel))
    @slot_window.item_window = @item_window
  end
  #--------------------------------------------------------------------------
  # ● 指令“更换装备”
  #--------------------------------------------------------------------------
  def command_equip
    @slot_window.activate
    @slot_window.select(0)
  end
  #--------------------------------------------------------------------------
  # ● 指令“最强装备”
  #--------------------------------------------------------------------------
  def command_optimize
    Sound.play_equip
    @actor.optimize_equipments
    @status_window.refresh
    @slot_window.refresh
    @equip_command_window.activate
  end
  #--------------------------------------------------------------------------
  # ● 指令“全部卸下”
  #--------------------------------------------------------------------------
  def command_clear
    Sound.play_equip
    @actor.clear_equipments
    @status_window.refresh
    @slot_window.refresh
    @equip_command_window.activate
  end
  #--------------------------------------------------------------------------
  # ● 装备栏“确定”
  #--------------------------------------------------------------------------
  def on_slot_ok
    @item_window.activate
    @item_window.select(0)
  end
  #--------------------------------------------------------------------------
  # ● 装备栏“取消”
  #--------------------------------------------------------------------------
  def on_slot_cancel
    @slot_window.unselect
    @equip_command_window.activate
  end
  #--------------------------------------------------------------------------
  # ● 物品“确定”
  #--------------------------------------------------------------------------
  def on_item_ok
    Sound.play_equip
    @actor.change_equip(@slot_window.index, @item_window.item)
    @slot_window.activate
    @slot_window.refresh
    @item_window.unselect
    @item_window.refresh
  end
  #--------------------------------------------------------------------------
  # ● 物品“取消”
  #--------------------------------------------------------------------------
  def on_item_cancel
    @slot_window.activate
    @item_window.unselect
  end
  #--------------------------------------------------------------------------
  # ● 切换角色
  #--------------------------------------------------------------------------
  def on_actor_change
    @status_window.actor = @actor
    @slot_window.actor = @actor
    @item_window.actor = @actor
    @equip_command_window.activate
  end
  #--------------------------------------------------------------------------
  # ● 生成指令窗口■
  #--------------------------------------------------------------------------
  def create_origin_command_window
    @command_window = Window_MenuCommand.new
    @command_window.set_handler(:item,      method(:command_item))
    @command_window.set_handler(:skill,     method(:command_skill))
    @command_window.set_handler(:equip,     method(:command_equip))
    @command_window.set_handler(:cancel,    method(:return_scene))
    @command_window.select(0)
    @command_window.active = @last_scene == :scene_map
  end
  #--------------------------------------------------------------------------
  # ● 指令“物品”■
  #--------------------------------------------------------------------------
  def command_item
    SceneManager.call(Scene_Item)#, :Scene_Equip)
    @item_window.activate
    @item_window.select(0)
  end
  
  #--------------------------------------------------------------------------
  # ● 指令“技能”■
  #--------------------------------------------------------------------------
  def command_skill
    SceneManager.call_new(Scene_Skill, :Scene_Equip)
  end
end  

[/pre]


梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-12-12 21:38:57 | 显示全部楼层
先不提两个光标都有效的问题

楼主你没发现你定义了两个 command_equip 方法吗?

点评

是哈,我已经注销掉了。呵呵呵,哪两个框?  发表于 2015-12-12 22:09
回复

使用道具 举报

梦石
0
星屑
75
在线时间
139 小时
注册时间
2014-5-4
回帖
53
 楼主| 发表于 2015-12-12 23:06:43 | 显示全部楼层
Snap5.jpg

我本以为是此处的 @slot_window.activate 使窗口有效。但注释后无改变

是不是 导致 “最强装备”光标窗口有效的命令 不在我给出的脚本之内?
回复

使用道具 举报

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2015-12-12 23:10:55 | 显示全部楼层
LZ似乎已经注意到了同名变量,但是还要注意指令类窗口的同名指令的问题,还有就是各种窗口之间的激活和反激活操作。
大概这样:
点击展开/收起
  1. class Scene_Map < Scene_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 打开菜单画面(修改为菜单直接进入物品界面)
  4.   #--------------------------------------------------------------------------
  5.   alias origin_call_menu call_menu
  6.   def call_menu
  7.     Sound.play_ok
  8.     SceneManager.call(Scene_Equip)
  9.     Window_MenuCommand::init_command_position
  10.   end
  11. end

  12. #encoding:utf-8
  13. #==============================================================================
  14. # ■ Scene_Equip
  15. #------------------------------------------------------------------------------
  16. #  装备画面
  17. #==============================================================================

  18. class Scene_Equip < Scene_MenuBase
  19.   #--------------------------------------------------------------------------
  20.   # ● 开始处理
  21.   #--------------------------------------------------------------------------
  22.   def initialize(last_scene = :scene_map)
  23.     super
  24.     @last_scene = last_scene
  25.   end
  26.   def start
  27.     super
  28.     create_help_window
  29.     create_status_window
  30.     create_command_window
  31.     create_slot_window
  32.     create_item_window
  33.     create_origin_command_window
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 生成状态窗口
  37.   #--------------------------------------------------------------------------
  38.   def create_status_window
  39.     @status_window = Window_EquipStatus.new(0, @help_window.height)
  40.     @status_window.viewport = @viewport
  41.     @status_window.actor = @actor
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 生成指令窗口
  45.   #--------------------------------------------------------------------------
  46.   def create_command_window
  47.     wx = @status_window.width
  48.     wy = @help_window.height
  49.     ww = Graphics.width - @status_window.width
  50.     @equip_command_window = Window_EquipCommand.new(wx, wy, ww)
  51.     @equip_command_window.viewport = @viewport
  52.     @equip_command_window.help_window = @help_window
  53.     @equip_command_window.set_handler(:equip,    method(:equip_command_equip))
  54.     @equip_command_window.set_handler(:optimize, method(:equip_command_optimize))
  55.     @equip_command_window.set_handler(:clear,    method(:equip_command_clear))
  56.     @equip_command_window.set_handler(:cancel,   method(:equip_command_cancel))
  57.     @equip_command_window.set_handler(:pagedown, method(:next_actor))
  58.     @equip_command_window.set_handler(:pageup,   method(:prev_actor))
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 生成装备栏窗口
  62.   #--------------------------------------------------------------------------
  63.   def create_slot_window
  64.     wx = @status_window.width
  65. #~     wy = @help_window.y + @help_window.height
  66.     wy =@equip_command_window.y + @equip_command_window.height
  67.     ww = Graphics.width - @status_window.width
  68.     @slot_window = Window_EquipSlot.new(wx, wy, ww)
  69.     @slot_window.viewport = @viewport
  70.     @slot_window.help_window = @help_window
  71.     @slot_window.status_window = @status_window
  72.     @slot_window.actor = @actor
  73.     @slot_window.set_handler(:ok,       method(:on_slot_ok))
  74.     @slot_window.set_handler(:cancel,   method(:on_slot_cancel))
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 生成物品窗口
  78.   #--------------------------------------------------------------------------
  79.   def create_item_window
  80.     wx = 0
  81.     wy = @slot_window.y + @slot_window.height
  82.     ww = Graphics.width
  83.     wh = Graphics.height - wy
  84.     @item_window = Window_EquipItem.new(wx, wy, ww, wh)
  85.     @item_window.viewport = @viewport
  86.     @item_window.help_window = @help_window
  87.     @item_window.status_window = @status_window
  88.     @item_window.actor = @actor
  89.     @item_window.set_handler(:ok,     method(:on_item_ok))
  90.     @item_window.set_handler(:cancel, method(:on_item_cancel))
  91.     @slot_window.item_window = @item_window
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 指令“更换装备”
  95.   #--------------------------------------------------------------------------
  96.   def equip_command_equip
  97.     @slot_window.activate
  98.     @slot_window.select(0)
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 指令“最强装备”
  102.   #--------------------------------------------------------------------------
  103.   def equip_command_optimize
  104.     Sound.play_equip
  105.     @actor.optimize_equipments
  106.     @status_window.refresh
  107.     @slot_window.refresh
  108.     @equip_command_window.activate
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 指令“全部卸下”
  112.   #--------------------------------------------------------------------------
  113.   def equip_command_clear
  114.     Sound.play_equip
  115.     @actor.clear_equipments
  116.     @status_window.refresh
  117.     @slot_window.refresh
  118.     @equip_command_window.activate
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 指令“装备取消”
  122.   #--------------------------------------------------------------------------
  123.   def equip_command_equip
  124.     @command_window.activate
  125.     @equip_command_window.deactivate
  126.     @equip_command_window.unselect
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 装备栏“确定”
  130.   #--------------------------------------------------------------------------
  131.   def on_slot_ok
  132.     @item_window.activate
  133.     @item_window.select(0)
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● 装备栏“取消”
  137.   #--------------------------------------------------------------------------
  138.   def on_slot_cancel
  139.     @slot_window.unselect
  140.     @equip_command_window.activate
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 物品“确定”
  144.   #--------------------------------------------------------------------------
  145.   def on_item_ok
  146.     Sound.play_equip
  147.     @actor.change_equip(@slot_window.index, @item_window.item)
  148.     @slot_window.activate
  149.     @slot_window.refresh
  150.     @item_window.unselect
  151.     @item_window.refresh
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 物品“取消”
  155.   #--------------------------------------------------------------------------
  156.   def on_item_cancel
  157.     @slot_window.activate
  158.     @item_window.unselect
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 切换角色
  162.   #--------------------------------------------------------------------------
  163.   def on_actor_change
  164.     @status_window.actor = @actor
  165.     @slot_window.actor = @actor
  166.     @item_window.actor = @actor
  167.     @equip_command_window.activate
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● 生成指令窗口■
  171.   #--------------------------------------------------------------------------
  172.   def create_origin_command_window
  173.     @command_window = Window_MenuCommand.new
  174.     @command_window.set_handler(:item,      method(:command_item))
  175.     @command_window.set_handler(:skill,     method(:command_skill))
  176.     @command_window.set_handler(:equip,     method(:command_equip))
  177.     @command_window.set_handler(:cancel,    method(:return_scene))
  178.     @command_window.select(0)
  179.     @command_window.active = @last_scene == :scene_map
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ● 指令“装备”
  183.   #--------------------------------------------------------------------------
  184.   def equip_command_equip
  185.     @command_window.deactivate
  186.     @equip_command_window.activate
  187.     @equip_command_window.select(0)
  188.   end
  189.   #--------------------------------------------------------------------------
  190.   # ● 指令“物品”■
  191.   #--------------------------------------------------------------------------
  192.   def command_item
  193.     SceneManager.call(Scene_Item)#, :Scene_Equip)
  194.     @item_window.activate
  195.     @item_window.select(0)
  196.   end

  197.   #--------------------------------------------------------------------------
  198.   # ● 指令“技能”■
  199.   #--------------------------------------------------------------------------
  200.   def command_skill
  201.     SceneManager.call_new(Scene_Skill, :Scene_Equip)
  202.   end
  203. end
复制代码
回复

使用道具 举报

梦石
0
星屑
75
在线时间
139 小时
注册时间
2014-5-4
回帖
53
 楼主| 发表于 2015-12-13 09:24:53 | 显示全部楼层



感谢椎名大 我粘了你的脚本  只是还是 两个光标框呢




Snap5.jpg

呵呵 椎名大可能已经看出来了 这就是您上次 给我写的菜单脚本 我正仿照 着自己改 可是只改了一点就出问题了,记得当时得到大大的脚本,好的问题豁然开亮,但随着深入又有了新问题,呵呵 都一个月了,我还没弄明白。{:2_271:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部