Project1

标题: 请问该如何删去菜单装备栏中的三个更装选项? [打印本页]

作者: 应答    时间: 2021-5-28 03:12
标题: 请问该如何删去菜单装备栏中的三个更装选项?
如图上的「更换装备」等三个选项,如何删去呢?
我尝试在Window_EquipStatus、Window_Command、Window_Slot与Scene_Equip中删去了这三个选项本身与形成它们的窗口,然后手动调整了装备栏窗口及其内部文字的大小,效果如附件图片所示。
但是,这么做以后,一旦打开装备就无法进行任何操作,包括光标选中,返回。
之后,我在Scene_Equip中找到了
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 指令“更换装备”
  3.   #--------------------------------------------------------------------------
  4.   def command_equip
  5.     @slot_window.activate
  6.     @slot_window.select(0)
  7.   end

然后,我又打开了Scene_Menu,写了一个def command_equipped,然后把command_personal的四个@复制到了我的equipped里。
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 指令“技能”“装备”“状态”
  3.   #--------------------------------------------------------------------------
  4.   def command_personal
  5.     @status_window.select_last
  6.     @status_window.activate
  7.     @status_window.set_handler(:ok,     method(:on_personal_ok))
  8.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  9.   end

接着调整了同样在Scene_Menu里的内容,就是上面的
RUBY 代码复制
  1. @command_window.set_handler(:equip,     method(:command_personal))

我把它改成了method(:command_equipped)。
接下来,command_equip里面的两个@被我复制到了我的command_equipped里面。
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 指令“装备”
  3.   #--------------------------------------------------------------------------
  4.   def command_equipped
  5.     @status_window.select_last
  6.     @status_window.activate
  7.     @status_window.set_handler(:ok,     method(:on_personal_ok))
  8.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  9.     @slot_window.activate
  10.     @slot_window.select(0)
  11.   end

然后进入游戏,点开装备选项后就报错了。
我的描述不是很好,如果有dalao能直接解决问题的话可以忽略上述文字,直接解决问题本身就好,我也没有脚本基础,就只能自己乱来了TAT

QQ截图20210528025744.png (242.79 KB, 下载次数: 27)

QQ截图20210528025744.png

QQ截图20210528030018.png (210.26 KB, 下载次数: 28)

QQ截图20210528030018.png

作者: alexncf125    时间: 2021-5-28 08:07
本帖最后由 alexncf125 于 2021-5-28 08:09 编辑

所以为什么你认为可以在Scene_Menu调用@slot_window

class Scene_Equip < Scene_MenuBase
  alias date_20210528_start start
  def start
    date_20210528_start
    @command_window.hide.deactivate
    command_equip
  end
  alias date_20210528_create_slot_window create_slot_window
  def create_slot_window
    date_20210528_create_slot_window
    @slot_window.y -= @command_window.height
    @slot_window.height += @command_window.height
    @slot_window.set_handler(:cancel,   method(:return_scene))
  end
end
作者: 应答    时间: 2021-5-31 00:37
alexncf125 发表于 2021-5-28 08:07
所以为什么你认为可以在Scene_Menu调用@slot_window

class Scene_Equip < Scene_MenuBase

因为脚本才刚学一点点,改这个基本上靠连蒙带猜
作者: 应答    时间: 2021-5-31 01:21
alexncf125 发表于 2021-5-28 08:07
所以为什么你认为可以在Scene_Menu调用@slot_window

class Scene_Equip < Scene_MenuBase

嗯……遇到一个新问题,方便的话可以再解答一下么。
我把你的
  1. @slot_window.height += @command_window.height
复制代码

改成了
  1. @slot_window.height == @status_window.height
复制代码

然后在Window_EquipSlot中修改了draw_item方法的一些参数,改变了装备栏文字与图标的位置,看起来更加美观。但是光标选择并没有和文字一起改变位置。
我尝试寻找装备界面中有关光标选择的语句,但翻遍window的Equip相关和Scene_Equip也只找到了
RUBY 代码复制
  1. def command_equip
  2.     @slot_window.activate
  3.     @slot_window.select(0)
  4.   end

这种。
我点开Window_Selectable,看到了有关「项目高度」「高度」和「光标位置」的方法,但是他们的语句让我毫无头绪,不知道从何改起。
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取项目的高度
  3.   #--------------------------------------------------------------------------
  4.   def item_height
  5.     line_height
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 设置高度
  9.   #--------------------------------------------------------------------------
  10.   def height=(height)
  11.     super
  12.     update_padding
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 设置光标位置
  16.   #--------------------------------------------------------------------------
  17.   def index=(index)
  18.     @index = index
  19.     update_cursor
  20.     call_update_help
  21.   end

所以,该如何实现光标位置的下移呢?

QQ截图20210531011416.png (268.61 KB, 下载次数: 28)

QQ截图20210531011416.png

作者: alexncf125    时间: 2021-5-31 08:42
本帖最后由 alexncf125 于 2021-5-31 08:44 编辑

你说你把...改成了@slot_window.height == @status_window.height
正确应该是改成@slot_window.height = @status_window.height
不知是这儿打多了个=号, 还是真的误改成了==

至于排版的话, 我只知道这样改, 可能与你想要的效果不同
class Window_EquipSlot < Window_Selectable
  alias add_standard_padding standard_padding
  def standard_padding
    r = add_standard_padding
    r += 12
    return r
  end
end
p.s.要测试这段脚本, 请先把之前"在Window_EquipSlot中修改了draw_item方法的一些参数"移走
作者: 应答    时间: 2021-5-31 20:35
alexncf125 发表于 2021-5-31 08:42
你说你把...改成了@slot_window.height == @status_window.height
正确应该是改成@slot_window.height = @s ...

是我误改了,神奇的是,我改回来后发现二者的效果一样……不知道怎么回事。

你的改法完全符合我的构想。大感谢。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1