本帖最后由 iisnow 于 2012-3-24 14:50 编辑
分为步解决:
1.消除分类窗口
只需要注释掉create_category_window和@category_window.item_window = @item_window即可
2.物品窗口的调整,坐标的调整,handler的重新设置
包括,初始的激活,初始的光标;
3.显示全部物品
需要增加分类标记,详见脚本,并设置物品窗口的标记
4.其他(窗口的设置、语句的排布)
这样深入研究一下,物品窗口的start方法并没有refresh的内容,即开始的时候并不会描绘
但是category=方法中有描绘的内容,即@category设置时会描绘,不需要考虑(因为上面调用 category=方法)
最后注意,由于Window_ItemList继承的是Window_Selectable,只有在index改变时(调用index=方法时)才会更新帮助
于是要先描绘item_window的项目(设置@category)以及激活(激活才会更新帮助),于是设置index必须在最后面,
而前两句顺序无所谓(当然你可以加强制刷新帮助的语句,即update_help)
最后的脚本:
class Scene_Item def start super create_help_window #create_category_window # create_item_window force_thing(@item_window) end def force_thing(window) window.active = true # 激活 window.category = :all # 自定义显示全部物品的符号 window.index = 0 # 显示选框 end def create_item_window wy = @help_window.height # 位置修改 wh = Graphics.height - wy @item_window = Window_ItemList.new(0, wy, Graphics.width, wh) @item_window.viewport = @viewport @item_window.help_window = @help_window @item_window.set_handler(:ok, method(:on_item_ok)) @item_window.set_handler(:cancel, method(:return_scene)) # 取消回主菜单 #@category_window.item_window = @item_window end end class Window_ItemList alias :iisnow_include? :include? def include?(item) if @category == :all # 添加全体判定 return true else return iisnow_include?(item) end end end
class Scene_Item
def start
super
create_help_window
#create_category_window #
create_item_window
force_thing(@item_window)
end
def force_thing(window)
window.active = true # 激活
window.category = :all # 自定义显示全部物品的符号
window.index = 0 # 显示选框
end
def create_item_window
wy = @help_window.height # 位置修改
wh = Graphics.height - wy
@item_window = Window_ItemList.new(0, wy, Graphics.width, wh)
@item_window.viewport = @viewport
@item_window.help_window = @help_window
@item_window.set_handler(:ok, method(:on_item_ok))
@item_window.set_handler(:cancel, method(:return_scene)) # 取消回主菜单
#@category_window.item_window = @item_window
end
end
class Window_ItemList
alias :iisnow_include? :include?
def include?(item)
if @category == :all # 添加全体判定
return true
else
return iisnow_include?(item)
end
end
end
|