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

Project1

 找回密码
 注册会员
搜索

脚本新手试写失败 想请教错在哪里 关於增设选单

查看数: 2216 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-3-4 05:43

正文摘要:

本帖最后由 真紅樂章 于 2018-3-4 05:45 编辑 其实想要在选单里再制作一个自制选单来查看一些自制数值的说 但是教程看了又看还是不太懂呢 尝试着用默认脚本里的Window_MenuCommand和Scene_Menu勉强改出来了以下 ...

回复

真紅樂章 发表于 2018-3-11 19:48:38
请问大家为甚麽不再回答小紅了呢
是不是小紅做错了甚麽让大家都不想要回答了呢
如果是不会有人回答了的话可不可以也告诉小紅一声让小紅改到别的地方去提问或者放弃提问可以吗

话说在唯一回答了小紅的chd114君的提示之下……小紅还是完全不懂
於是小紅又再次在自己能力范围乱改了一下
成果如下……
  1. class Scene_scommand < Scene_MenuBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 开始处理
  4.   #--------------------------------------------------------------------------
  5.   def start
  6.     super
  7.     create_scommand_window
  8.     create_status_window
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   # ● 生成指令窗口
  12.   #--------------------------------------------------------------------------
  13.   def create_scommand_window
  14.     @scommand_window = Window_SuCommand.new
  15.     @scommand_window.set_handler(:aaa,     method(:command_aaa))
  16.     @scommand_window.set_handler(:bbb,     method(:command_bbb))
  17.     @scommand_window.set_handler(:ccc,     method(:command_ccc))
  18.     @scommand_window.set_handler(:ddd,     method(:command_ddd))
  19.     @scommand_window.set_handler(:eee,     method(:command_eee))
  20.     @scommand_window.set_handler(:fff,     method(:command_fff))
  21.     @scommand_window.set_handler(:cancel,  method(:return_scene))
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 生成状态窗口
  25.   #--------------------------------------------------------------------------
  26.   def create_status_window
  27.     r = 1
  28.     r == 6 ? r = 1 : r += 1 if Input.repeat?(:RIGHT)
  29.     r == 1 ? r = 6 : r -= 1 if Input.repeat?(:LEFT)
  30.     case r
  31.     when 1
  32.       @status_window = Window_aaa.new(@actor)
  33.     when 2
  34.       @status_window = Window_bbb.new(@actor)
  35.     when 3
  36.       @status_window = Window_ccc.new(@actor)
  37.     when 4
  38.       @status_window = Window_ddd.new(@actor)
  39.     when 5
  40.       @status_window = Window_eee.new(@actor)
  41.     when 6
  42.       @status_window = Window_fff.new(@actor)
  43.     end
  44.   end

  45.   def command_aaa
  46.     SceneManager.call(Scene_aaa_window)
  47.   end
  48.   def command_bbb
  49.     SceneManager.call(Scene_bbb_window)
  50.   end
  51.   def command_ccc
  52.     SceneManager.call(Scene_ccc_window)
  53.   end
  54.   def command_ddd
  55.     SceneManager.call(Scene_ddd_window)
  56.   end
  57.   def command_eee
  58.     SceneManager.call(Scene_eee_window)
  59.   end
  60.   def command_fff
  61.     SceneManager.call(Scene_fff_window)
  62.   end
  63. end
复制代码


虽然小紅知道这东西已经乱成一团了不过在r = 1那行手动在脚本里改成r = 其他数字有能达成小紅想要的效果……
  1.     r = 2
复制代码
  1.     r = 3
复制代码
  1.     r = 4
复制代码


所以小紅想要问一下为甚麽下面利用按键来进行逻辑判断的两行不起效用
  1.     r == 6 ? r = 1 : r += 1 if Input.repeat?(:RIGHT)
  2.     r == 1 ? r = 6 : r -= 1 if Input.repeat?(:LEFT)
复制代码


小紅知道在大家看来这种问题应该是很愚蠢
但是如果是因为太愚蠢而不想回答的话可否也如实告知小紅就因为问题太蠢所以没有人会回答

点评

也欢迎加入推荐的QQ群,按“交流讨论”分类就能看到帖子了  发表于 2018-3-11 19:59
建议重开新的帖子,把目前已经更改到的部分和遇到问题的部分贴出来  发表于 2018-3-11 19:56
真紅樂章 发表于 2018-3-4 21:45:33
本帖最后由 真紅樂章 于 2018-3-4 21:46 编辑
chd114 发表于 2018-3-4 21:14
你删了什么···

删删改改弄成这样
● 生成物品窗口 ← 觉得这里应该是重点但是完全看不懂……

RUBY 代码复制
  1. class Window_SuCommand < Window_HorzCommand
  2.   #--------------------------------------------------------------------------
  3.   # ● 定义实例变量
  4.   #--------------------------------------------------------------------------
  5.   attr_reader   :scommand_window
  6.   #--------------------------------------------------------------------------
  7.   # ● 初始化对象
  8.   #--------------------------------------------------------------------------
  9.   def initialize
  10.     super(0, 0)
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   # ● 获取窗口的宽度
  14.   #--------------------------------------------------------------------------
  15.   def window_width
  16.     Graphics.width
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 获取列数
  20.   #--------------------------------------------------------------------------
  21.   def col_max
  22.     return 6
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 更新画面
  26.   #--------------------------------------------------------------------------
  27.   def update
  28.     super
  29.     @item_window.category = current_symbol if @item_window
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 生成指令列表
  33.   #--------------------------------------------------------------------------
  34.   def make_command_list
  35.     add_command("一", :aaa,)
  36.     add_command("二", :bbb,)
  37.     add_command("三", :ccc,)
  38.     add_command("四", :ddd,)
  39.     add_command("五", :eee,)
  40.     add_command("六", :fff,)
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 设置物品窗口
  44.   #--------------------------------------------------------------------------
  45.   def scommand_window=(scommand_window)
  46.     @scommand_window = scommand_window
  47.     update
  48.   end
  49. end
  50.  
  51. class Scene_scommand < Scene_MenuBase
  52.   #--------------------------------------------------------------------------
  53.   # ● 开始处理
  54.   #--------------------------------------------------------------------------
  55.   def start
  56.     super
  57. #    create_help_window
  58.     create_category_window
  59.     create_scommand_window
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 生成分类窗口
  63.   #--------------------------------------------------------------------------
  64.   def create_category_window
  65.     @category_window = Window_SuCommand.new
  66.     @category_window.viewport = @viewport
  67.     @category_window.help_window = @help_window
  68.     @category_window.y = 0
  69. #    @category_window.set_handler(:ok,     method(:on_category_ok))
  70.     @category_window.set_handler(:cancel, method(:return_scene))
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 生成物品窗口
  74.   #--------------------------------------------------------------------------
  75.   def create_scommand_window
  76. #    wh = Graphics.height - wy
  77. #    @scommand_window = Window_SuCommand.new(0, wy, Graphics.width, wh)
  78. #    @scommand_window.viewport = @viewport
  79. #    @scommand_window.help_window = @help_window
  80. #    @scommand_window.set_handler(:ok,     method(:on_scommand_ok))
  81. #    @scommand_window.set_handler(:cancel, method(:on_scommand_cancel))
  82. #    @category_window.scommand_window = @scommand_window
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 分类“确定”
  86.   #--------------------------------------------------------------------------
  87. #  def on_category_ok
  88. #    @scommand_window.activate
  89. #    @scommand_window.select_last
  90. #  end
  91.   #--------------------------------------------------------------------------
  92.   # ● 物品“确定”
  93.   #--------------------------------------------------------------------------
  94. #  def on_item_ok
  95. #    $game_party.last_item.object = item
  96. #    determine_item
  97. #  end
  98.   #--------------------------------------------------------------------------
  99.   # ● 物品“取消”
  100.   #--------------------------------------------------------------------------
  101. #  def on_item_cancel
  102. #    @item_window.unselect
  103. #    @category_window.activate
  104. #  end
  105.   #--------------------------------------------------------------------------
  106.   # ● 播放使用物品声效
  107.   #--------------------------------------------------------------------------
  108. #  def play_se_for_item
  109. #    Sound.play_use_item
  110. #  end
  111.   #--------------------------------------------------------------------------
  112.   # ● 使用物品
  113.   #--------------------------------------------------------------------------
  114. #  def use_item
  115. #    super
  116. #    @item_window.redraw_current_item
  117. #  end
  118. end
真紅樂章 发表于 2018-3-4 21:11:20
chd114 发表于 2018-3-4 18:48
如果你要做的是一个类似物品界面的窗口,那你的场景应该参考这个,而不是每个窗口都弄一个场景,这里面, ...

前面不堪
改到這裏就無法再繼續
完全想不出來要如何判斷光標在哪裏又要顯示哪個的說

RUBY 代码复制
  1. class Window_SuCommand < Window_HorzCommand
  2.   #--------------------------------------------------------------------------
  3.   # ● 定义实例变量
  4.   #--------------------------------------------------------------------------
  5.   attr_reader   :scommand_window
  6.   #--------------------------------------------------------------------------
  7.   # ● 初始化对象
  8.   #--------------------------------------------------------------------------
  9.   def initialize
  10.     super(0, 0)
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   # ● 获取窗口的宽度
  14.   #--------------------------------------------------------------------------
  15.   def window_width
  16.     Graphics.width
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 获取列数
  20.   #--------------------------------------------------------------------------
  21.   def col_max
  22.     return 6
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 更新画面
  26.   #--------------------------------------------------------------------------
  27.   def update
  28.     super
  29.     @item_window.category = current_symbol if @item_window
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 生成指令列表
  33.   #--------------------------------------------------------------------------
  34.   def make_command_list
  35.     add_command("一", :aaa,)
  36.     add_command("二", :bbb,)
  37.     add_command("三", :ccc,)
  38.     add_command("四", :ddd,)
  39.     add_command("五", :eee,)
  40.     add_command("六", :fff,)
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 设置物品窗口
  44.   #--------------------------------------------------------------------------
  45.   def scommand_window=(scommand_window)
  46.     @scommand_window = scommand_window
  47.     update
  48.   end
  49. end
  50.  
  51. class Scene_scommand < Scene_MenuBase
  52.   #--------------------------------------------------------------------------
  53.   # ● 开始处理
  54.   #--------------------------------------------------------------------------
  55.   def start
  56.     super
  57.     create_category_window
  58.     create_scommand_window
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 生成分类窗口
  62.   #--------------------------------------------------------------------------
  63.   def create_category_window
  64.     @category_window = Window_SuCommand.new
  65.     @category_window.viewport = @viewport
  66.     @category_window.help_window = @help_window
  67.     @category_window.y = 0
  68.     @category_window.set_handler(:cancel, method(:return_scene))
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 生成物品窗口
  72.   #--------------------------------------------------------------------------
  73.   def create_scommand_window
  74.     應該是卡死在這裏了吧?
  75.   end
  76. end

点评

你删了什么···  发表于 2018-3-4 21:14
chd114 发表于 2018-3-4 18:48:23
真紅樂章 发表于 2018-3-4 15:28
请问可以解说得详细一点吗
比如「@窗口变量名.index=x」要放在脚本的哪里甚麽的
又或 ...

如果你要做的是一个类似物品界面的窗口,那你的场景应该参考这个,而不是每个窗口都弄一个场景,这里面,当你的光标在物品背包内活动时,选择取消,回到的就是物品分类选项上你之前选着的分类

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Scene_Item
  4. #------------------------------------------------------------------------------
  5. #  物品画面
  6. #==============================================================================
  7.  
  8. class Scene_Item < Scene_ItemBase
  9.   #--------------------------------------------------------------------------
  10.   # ● 开始处理
  11.   #--------------------------------------------------------------------------
  12.   def start
  13.     super
  14.     create_help_window
  15.     create_category_window
  16.     create_item_window
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 生成分类窗口
  20.   #--------------------------------------------------------------------------
  21.   def create_category_window
  22.     @category_window = Window_ItemCategory.new
  23.     @category_window.viewport = @viewport
  24.     @category_window.help_window = @help_window
  25.     @category_window.y = @help_window.height
  26.     @category_window.set_handler(:ok,     method(:on_category_ok))
  27.     @category_window.set_handler(:cancel, method(:return_scene))
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 生成物品窗口
  31.   #--------------------------------------------------------------------------
  32.   def create_item_window
  33.     wy = @category_window.y + @category_window.height
  34.     wh = Graphics.height - wy
  35.     @item_window = Window_ItemList.new(0, wy, Graphics.width, wh)
  36.     @item_window.viewport = @viewport
  37.     @item_window.help_window = @help_window
  38.     @item_window.set_handler(:ok,     method(:on_item_ok))
  39.     @item_window.set_handler(:cancel, method(:on_item_cancel))
  40.     @category_window.item_window = @item_window
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 分类“确定”
  44.   #--------------------------------------------------------------------------
  45.   def on_category_ok
  46.     @item_window.activate
  47.     @item_window.select_last
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 物品“确定”
  51.   #--------------------------------------------------------------------------
  52.   def on_item_ok
  53.     $game_party.last_item.object = item
  54.     determine_item
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 物品“取消”
  58.   #--------------------------------------------------------------------------
  59.   def on_item_cancel
  60.     @item_window.unselect
  61.     @category_window.activate
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 播放使用物品声效
  65.   #--------------------------------------------------------------------------
  66.   def play_se_for_item
  67.     Sound.play_use_item
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 使用物品
  71.   #--------------------------------------------------------------------------
  72.   def use_item
  73.     super
  74.     @item_window.redraw_current_item
  75.   end
  76. end
真紅樂章 发表于 2018-3-4 15:28:11
chd114 发表于 2018-3-4 13:26
在退出去的方法里修改选框的位置


请问可以解说详细一点
比如「@窗口变量名.index=x」要放在脚本的哪里甚麽的
又或者「退出去的方法里修改选框的位置」的那个位置又在哪个脚本哪里那些可以提示一下吗……
chd114 发表于 2018-3-4 13:26:49
本帖最后由 chd114 于 2018-3-4 13:28 编辑
真紅樂章 发表于 2018-3-4 12:42
添加的选项也有效的说
按键进入後触发的画面也合符预期喔
问题是按键退出时的画面有点 ...


在退出去的方法里修改选框的位置


用@窗口变量名.index=x之类的就可以了(不过我记得不需要特意加这条)
chd114 发表于 2018-3-4 10:28:29
Window_选项窗口中添加选项的指令
add_command("选项名称",        :选项对应的键,         判断选项是否有效)

Scene_选项窗口对应的选项场景
@command_window = Window_MenuCommand.new
@command_window.set_handler(:选项对应的键,      method(:按下该按键后会触发的方法))

如果是单角色不考虑切换,搜索def prev_actor和def next_actor然后把里面的内容改掉就可以了
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-7-18 16:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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