查看: 2985|回复: 4

[RMVA发布] 物品自定义分类

[复制链接]
梦石
0
星屑
50
在线时间
256 小时
注册时间
2013-5-27
回帖
187
发表于 2013-8-11 10:13:56 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 scottyfan 于 2013-8-13 19:42 编辑

修改自图书馆后知后觉装备分类
想要分类竖列的朋友,请到4L
  1. #==============================================================================
  2. #  功能:[RMVA]增加物品栏类别
  3. #  作者:ScottyFan
  4. #  版本:v1.0 2013.8.8
  5. #  使用说明:
  6. #         在数据库-物品(包括装备)-备注 里写入 @itype[位置编号]
  7. #         新的物品分类编号是从 1 开始。比如 @itype[1]或者@itype[2]
  8. #==============================================================================
  9. module SFS
  10.   CATEGORY = [   #格式["显示名称", :标识],  标识随便写,不重复即可
  11.     ["",     :default], #注意,不要更改此行
  12.     ["药剂", :potion],  #此处为编号1
  13.     ["食物", :food],
  14.     ["宝石", :gem],
  15.     ]
  16. end
  17.   
  18. class RPG::BaseItem
  19.   attr_reader   :category_id
  20.   def category_id
  21.     return if self.is_a?(RPG::Skill)
  22.     if @category_id.nil?
  23.       /@itype\[(.+?)\]/ =~ @note
  24.       @category_id = $1.to_i
  25.     end
  26.     @category_id
  27.   end
  28. end


  29. class Window_ItemCategory
  30.   #--------------------------------------------------------------------------
  31.   # ● 生成指令列表
  32.   #--------------------------------------------------------------------------
  33.   def make_command_list
  34.     SFS::CATEGORY.each do |itype|
  35.       next if itype[1] == :default
  36.       add_command(itype[0],  itype[1])
  37.     end
  38.     add_command("普通物品",     :item)
  39.     add_command(Vocab::weapon,   :weapon)
  40.     add_command(Vocab::armor,    :armor)
  41.     add_command(Vocab::key_item, :key_item)
  42.   end
  43. end


  44. class Window_ItemList
  45.   #--------------------------------------------------------------------------
  46.   # ● 查询列表中是否含有此物品
  47.   #--------------------------------------------------------------------------
  48.   def include?(item)
  49.     if item && item.category_id > 0 #如果是特殊类别
  50.       return @category == SFS::CATEGORY[item.category_id][1]
  51.     end
  52.     case @category   
  53.     when :item
  54.       item.is_a?(RPG::Item) && !item.key_item?
  55.     when :weapon
  56.       item.is_a?(RPG::Weapon)
  57.     when :armor
  58.       item.is_a?(RPG::Armor)
  59.     when :key_item
  60.       item.is_a?(RPG::Item) && item.key_item?
  61.     else
  62.       false
  63.     end
  64.   end
  65. end
复制代码

评分

参与人数 2星屑 +110 收起 理由
weixun + 30 塞糖
feizhaodan + 80 鼓励

查看全部评分

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
回帖
1111
发表于 2013-8-12 10:04:43 | 显示全部楼层
我来顶下  希望 可以换行   放到第2排里

点评

看4L,竖列的分类,我个人觉得是挺好的。  发表于 2013-8-13 19:03
我自己是配合纵列命令窗口使用的,我不太喜欢默认的样式。  发表于 2013-8-12 16:11
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
回复

使用道具 举报

梦石
0
星屑
239
在线时间
2399 小时
注册时间
2008-4-11
回帖
11727

贵宾第6届短篇游戏比赛季军

发表于 2013-8-13 14:14:13 来自手机 | 显示全部楼层
手机看不到、、下班再来看
回复

使用道具 举报

梦石
0
星屑
50
在线时间
256 小时
注册时间
2013-5-27
回帖
187
 楼主| 发表于 2013-8-13 19:02:28 | 显示全部楼层
本帖最后由 scottyfan 于 2013-8-13 19:40 编辑

下面这个脚本带有物品分类,并将分类改成了竖列。
[pre lang="ruby" line="1"]#==============================================================================
#  功能:[RMVA]增加物品栏类别
#  作者:ScottyFan
#  版本:v1.0 2013.8.8
#  使用说明:
#         在数据库-物品(包括装备)-备注 里写入 @itype[位置编号]
#         新的物品分类编号是从 1 开始。比如 @itype[1]或者@itype[2]
#==============================================================================
module SFS
  CATEGORY = [   #格式["显示名称", :标识],  标识随便写,不重复即可
    ["",     :default], #注意,不要更改此行
    ["药剂", :potion],  #此处为编号1
    ["食物", :food],
    ["光碟", :disc],
    ["宝石", :gem],
    ]
end
  
class RPG::BaseItem
  attr_reader   :category_id
  def category_id
    return if self.is_a?(RPG::Skill)
    if @category_id.nil?
      /@itype\[(.+?)\]/ =~ @note
      @category_id = $1.to_i
    end
    @category_id
  end
end


class Window_ItemList
  #--------------------------------------------------------------------------
  # ● 查询列表中是否含有此物品
  #--------------------------------------------------------------------------
  def include?(item)
    if item && item.category_id > 0 #如果是特殊类别
      return @category == SFS::CATEGORY[item.category_id][1]
    end
    case @category   
    when :item
      item.is_a?(RPG::Item) && !item.key_item?
    when :weapon
      item.is_a?(RPG::Weapon)
    when :armor
      item.is_a?(RPG::Armor)
    when :key_item
      item.is_a?(RPG::Item) && item.key_item?
    else
      false
    end
  end
end

class Window_ItemCategoryNew < Window_Command
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :item_window
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    @item_window.category = current_symbol if @item_window
  end
  #--------------------------------------------------------------------------
  # ● 生成指令列表
  #--------------------------------------------------------------------------
  def make_command_list
    SFS::CATEGORY.each do |itype|
      next if itype[1] == :default
      add_command(itype[0],  itype[1])
    end
    add_command("普通物品",     :item)
    add_command(Vocab::weapon,   :weapon)
    add_command(Vocab::armor,    :armor)
    add_command(Vocab::key_item, :key_item)
  end
  #--------------------------------------------------------------------------
  # ● 设置物品窗口
  #--------------------------------------------------------------------------
  def item_window=(item_window)
    @item_window = item_window
    update
  end
end

class Scene_Item < Scene_ItemBase
  #--------------------------------------------------------------------------
  # ● 生成分类窗口
  #--------------------------------------------------------------------------
  def create_category_window
    @category_window = Window_ItemCategoryNew.new(0, @help_window.height)
    @category_window.viewport = @viewport
    @category_window.help_window = @help_window
    @category_window.height = Graphics.height - @help_window.height
    @category_window.set_handler(:ok,     method(:on_category_ok))
    @category_window.set_handler(:cancel, method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # ● 生成物品窗口
  #--------------------------------------------------------------------------
  def create_item_window
    wx = @category_window.width
    wh = Graphics.height - @help_window.height
    @item_window = Window_ItemList.new(wx, @help_window.height, Graphics.width - wx, 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(:on_item_cancel))
    @category_window.item_window = @item_window
  end
end[/pre]

点评

前辈,请问物品分类之后。商店无法出售了,这个问题怎么解决?  发表于 2015-7-9 23:09
回复

使用道具 举报

梦石
0
星屑
803
在线时间
2068 小时
注册时间
2011-10-3
回帖
1620
发表于 2013-8-14 10:43:09 | 显示全部楼层
有办法让某类物品(装备)只在装备栏里确认装备时显示,而不在物品栏里显示么

点评

办法肯定有,但是具体问题需要具体对待。  发表于 2013-8-14 16:05
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部