设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1708|回复: 7
打印 上一主题 下一主题

[已经解决] 如何将菜单中许多选项整合在一个里面

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2013-8-23
帖子
69
跳转到指定楼层
1
发表于 2015-8-1 18:05:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
例如,菜单里有一个“打造”选项,打造选项里又包含“武器”、“防具”、“饰品”,这三个子选项。

Lv2.观梦者

梦石
0
星屑
898
在线时间
421 小时
注册时间
2015-7-5
帖子
131
2
发表于 2015-8-1 19:00:54 | 只看该作者
首先你要新建一个command_window,例如
  1. def create_command_window2
  2.     @command_window2 = Window_Command.new(160,["武器","防具","饰品"])
  3. end
复制代码
然后基于菜单的命令:
  1. case @command_window.index
  2.    when 0
  3.     $scene = Scene_Item.new
  4.    when 1
  5.    ...
  6.    when xx  #你的打造选项
  7.      @command_window.active = false
  8.      @command_window2.visible = true
  9.      @command_window2.active = true
  10.    ....
  11. end
复制代码
然后你慢慢照着@command_window的样式来写吧,这个并不难。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2013-8-23
帖子
69
3
 楼主| 发表于 2015-8-1 21:09:51 | 只看该作者
梦无笙 发表于 2015-8-1 19:00
首先你要新建一个command_window,例如然后基于菜单的命令:然后你慢慢照着@command_window的样式来写吧, ...

大致的意思明白了……可是会弹出这样的错误



代码如下,:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 生成命令窗口
  3.   #--------------------------------------------------------------------------
  4.   def create_command_window
  5.     s1 = Vocab::item
  6.     s2 = Vocab::skill
  7.     s3 = Vocab::equip
  8.     s4 = Vocab::status
  9.     s5 = Vocab::save
  10.     s6 = Vocab::game_end
  11.     s7 = "打造"
  12.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,s7])
  13.     @command_window.index = @menu_index
  14.     if $game_party.members.size == 0          # 如果队伍为空
  15.       @command_window.draw_item(0, false)     # 无效化物品选项
  16.       @command_window.draw_item(1, false)     # 无效化技能选项
  17.       @command_window.draw_item(2, false)     # 无效化装备选项
  18.       @command_window.draw_item(3, false)     # 无效化状态选项
  19.     end
  20.     if $game_system.save_disabled             # 如果禁止存档
  21.       @command_window.draw_item(4, false)     # 无效化存档选项
  22.     end
  23.   end
  24.  
  25.   #--------------------------------------------------------------------------
  26.   # ● 原创部分
  27.   #--------------------------------------------------------------------------
  28.  
  29. def create_command_window2
  30.     @command_window2 = Window_Command.new(160,["武器","防具","饰品"])
  31. end
  32.  
  33.   #--------------------------------------------------------------------------
  34.   # ● 更新命令窗口
  35.   #--------------------------------------------------------------------------
  36.   def update_command_selection
  37.     if Input.trigger?(Input::B)
  38.       Sound.play_cancel
  39.       $scene = Scene_Map.new
  40.     elsif Input.trigger?(Input::C)
  41.       if $game_party.members.size == 0 and @command_window.index < 4
  42.         Sound.play_buzzer
  43.         return
  44.       elsif $game_system.save_disabled and @command_window.index == 4
  45.         Sound.play_buzzer
  46.         return
  47.       end
  48.       Sound.play_decision
  49.  
  50.  
  51.     case @command_window.index
  52.       when 0      # 物品
  53.         $scene = Scene_Item.new
  54.       when 1,2,3  # 技能、装备、状态
  55.         start_actor_selection
  56.       when 4      # 存档
  57.         $scene = Scene_File.new(true, false, false)
  58.       when 5      # 结束游戏
  59.        $scene = Scene_End.new
  60.       when 6      # 打造
  61.       @command_window.active = false
  62.       @command_window2.active = true
  63.       @command_window2.visible = true
  64.     end
  65.   end
  66. end
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
898
在线时间
421 小时
注册时间
2015-7-5
帖子
131
4
发表于 2015-8-1 21:27:20 | 只看该作者
请调用方法
脚本开始的部分:
  1. def start
  2.    super
  3.    create_command_window
  4.    create_command_window2
  5.    ......
  6. end
复制代码

点评

可以了 3Q  发表于 2015-8-2 11:08
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2013-8-23
帖子
69
5
 楼主| 发表于 2015-8-2 15:56:39 | 只看该作者
本帖最后由 火烧兔子的马甲 于 2015-8-2 16:44 编辑
梦无笙 发表于 2015-8-1 21:27
请调用方法
脚本开始的部分:


还有一个小小的问题,弹出来的窗口会被挡住



# 感觉好难
# 再问下去太麻烦你了
# 直接修改Scene_End也能实现一样的效果(只是丑了一点)
# 虽然预期的效果没能实现,但还是学到了一些脚本知识,非常感谢
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
898
在线时间
421 小时
注册时间
2015-7-5
帖子
131
6
发表于 2015-8-2 18:36:20 | 只看该作者
@command_window2.z = 10
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2013-8-23
帖子
69
7
 楼主| 发表于 2015-8-2 20:05:30 | 只看该作者
梦无笙 发表于 2015-8-2 18:36
@command_window2.z = 10


z = 101时问题解决,但还是存在问题,“打造”选项按确定会直接跳到子菜单when 0 的地方。

# Scene_End临时替代其他脚本





回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
898
在线时间
421 小时
注册时间
2015-7-5
帖子
131
8
发表于 2015-8-2 23:12:39 | 只看该作者
本帖最后由 梦无笙 于 2015-8-2 23:28 编辑

你这样写是不对的,你等着。
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================
  6.  
  7. class Scene_Menu < Scene_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #     menu_index : 命令窗口光标初始位置
  11.   #--------------------------------------------------------------------------
  12.   def initialize(menu_index = 0)
  13.     @menu_index = menu_index
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 开始处理
  17.   #--------------------------------------------------------------------------
  18.   def start
  19.     super
  20.     create_menu_background
  21.     #-------------------------------------------
  22.     create_command_window2
  23.     @command_window2.x = 160
  24.     @command_window2.y = 150
  25.     @command_window2.z = 101
  26.     @command_window2.active = false
  27.     @command_window2.visible = false
  28.     #-------------------------------------------
  29.     create_command_window
  30.     @gold_window = Window_Gold.new(0, 360)
  31.     @status_window = Window_MenuStatus.new(160, 0)
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 结束处理
  35.   #--------------------------------------------------------------------------
  36.   def terminate
  37.     super
  38.     dispose_menu_background
  39.     @command_window.dispose
  40.     #-------------------------------------------
  41.     @command_window2.dispose
  42.     #-------------------------------------------
  43.     @gold_window.dispose
  44.     @status_window.dispose
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 更新画面
  48.   #--------------------------------------------------------------------------
  49.   def update
  50.     super
  51.     update_menu_background
  52.     @command_window.update
  53.     #-------------------------------------------
  54.     @command_window2.update
  55.     #-------------------------------------------
  56.     @gold_window.update
  57.     @status_window.update
  58.     if @command_window.active
  59.       update_command_selection
  60.     #-------------------------------------------
  61.     elsif @command_window2.active
  62.       update_command_selection2
  63.     #-------------------------------------------
  64.     elsif @status_window.active
  65.       update_actor_selection
  66.     end
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 生成命令窗口
  70.   #--------------------------------------------------------------------------
  71.   def create_command_window
  72.     s1 = Vocab::item
  73.     s2 = Vocab::skill
  74.     s3 = Vocab::equip
  75.     s4 = Vocab::status
  76.     s5 = Vocab::save
  77.     #-------------------------------------------
  78.     s6 = "打造"
  79.     #-------------------------------------------
  80.     s7 = Vocab::game_end
  81.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
  82.     @command_window.index = @menu_index
  83.     if $game_party.members.size == 0          # 如果队伍为空
  84.       @command_window.draw_item(0, false)     # 无效化物品选项
  85.       @command_window.draw_item(1, false)     # 无效化技能选项
  86.       @command_window.draw_item(2, false)     # 无效化装备选项
  87.       @command_window.draw_item(3, false)     # 无效化状态选项
  88.     end
  89.     if $game_system.save_disabled             # 如果禁止存档
  90.       @command_window.draw_item(4, false)     # 无效化存档选项
  91.     end
  92.   end
  93.   #-------------------------------------------
  94.   def create_command_window2
  95.     @command_window2 = Window_Command.new(160,["武器","防具","饰品"])
  96.   end
  97.   #-------------------------------------------
  98.   #--------------------------------------------------------------------------
  99.   # ● 更新命令窗口
  100.   #--------------------------------------------------------------------------
  101.   def update_command_selection
  102.     if Input.trigger?(Input::B)
  103.       Sound.play_cancel
  104.       $scene = Scene_Map.new
  105.     elsif Input.trigger?(Input::C)
  106.       if $game_party.members.size == 0 and @command_window.index < 4
  107.         Sound.play_buzzer
  108.         return
  109.       elsif $game_system.save_disabled and @command_window.index == 4
  110.         Sound.play_buzzer
  111.         return
  112.       end
  113.       Sound.play_decision
  114.       case @command_window.index
  115.       when 0      # 物品
  116.         $scene = Scene_Item.new
  117.       when 1,2,3  # 技能、装备、状态
  118.         start_actor_selection
  119.       when 4      # 存档
  120.         $scene = Scene_File.new(true, false, false)
  121.       when 5      # 打造
  122.         @command_window.active = false
  123.         @command_window2.active = true
  124.         @command_window2.visible = true
  125.       when 6      # 结束游戏
  126.         $scene = Scene_End.new
  127.       end
  128.     end
  129.   end
  130.   #-------------------------------------------
  131.   def update_command_selection2
  132.     if Input.trigger?(Input::B)
  133.       Sound.play_cancel
  134.       @command_window2.active = false
  135.       @command_window2.visible = false
  136.       @command_window.active = true
  137.     elsif Input.trigger?(Input::C)
  138.       Sound.play_decision
  139.       case @command_window2.index
  140.       when 0
  141.     #    $scene = 调用武器打造的代码行
  142.       when 1
  143.     #    $scene = 调用防具打造的代码行
  144.       when 2
  145.     #    $scene = 调用饰品打造的代码行
  146.       end         
  147.     end
  148.   end
  149.   #-------------------------------------------
  150.   #--------------------------------------------------------------------------
  151.   # ● 角色选择开始
  152.   #--------------------------------------------------------------------------
  153.   def start_actor_selection
  154.     @command_window.active = false
  155.     @status_window.active = true
  156.     if $game_party.last_actor_index < @status_window.item_max
  157.       @status_window.index = $game_party.last_actor_index
  158.     else
  159.       @status_window.index = 0
  160.     end
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● 角色选择结束
  164.   #--------------------------------------------------------------------------
  165.   def end_actor_selection
  166.     @command_window.active = true
  167.     @status_window.active = false
  168.     @status_window.index = -1
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● 角色选择更新
  172.   #--------------------------------------------------------------------------
  173.   def update_actor_selection
  174.     if Input.trigger?(Input::B)
  175.       Sound.play_cancel
  176.       end_actor_selection
  177.     elsif Input.trigger?(Input::C)
  178.       $game_party.last_actor_index = @status_window.index
  179.       Sound.play_decision
  180.       case @command_window.index
  181.       when 1  # 技能
  182.         $scene = Scene_Skill.new(@status_window.index)
  183.       when 2  # 装备
  184.         $scene = Scene_Equip.new(@status_window.index)
  185.       when 3  # 状态
  186.         $scene = Scene_Status.new(@status_window.index)
  187.       end
  188.     end
  189.   end
  190. end

点评

多谢了!!  发表于 2015-8-3 10:16

评分

参与人数 1梦石 +1 收起 理由
丿梁丶小柒 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-7 14:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表