| 本帖最后由 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 
 |