Project1

标题: 如何整理物品栏物品,排序物品栏物品? [打印本页]

作者: R9560    时间: 2014-8-7 11:51
标题: 如何整理物品栏物品,排序物品栏物品?
本帖最后由 R9560 于 2014-8-7 11:56 编辑

类似勇者斗恶龙、重装机兵等等RPG游戏必有的那种整理物品功能,可以自己更换排序物品栏物品的栏位,也可以自动按某种分类排序,可以做到这样吗

PS:我觉得RMVA应该有这种最基本的功能啊,要不一大堆物品乱七八糟的了。

QQ截图20140807115529.png (460.02 KB, 下载次数: 21)

QQ截图20140807115529.png

作者: taroxd    时间: 2014-8-7 12:09
本帖最后由 taroxd 于 2014-8-7 12:10 编辑

默认的数据结构就可以基本让你死了这条心了

RUBY 代码复制
  1. def items
  2.     @items.keys.sort.collect {|id| $data_items[id] }
  3.   end


默认排序是这样的,你可以考虑再来一个列表储存排序什么的……总之烦死你
作者: 喵呜喵5    时间: 2014-8-7 13:46
本帖最后由 喵呜喵5 于 2014-8-7 13:59 编辑
  1. =begin
  2. ===============================================================================
  3.   物品排序 By喵呜喵5
  4. ===============================================================================

  5. 【说明】

  6.   修改对应变量的值时,在菜单中查看物品可以按照某种顺序排序
  7.   
  8.   唯一的问题是,除了数据库ID外……物品还真没啥好排序的 = =
  9.   
  10.   有时间的话加一个按照指定备注排序算了 = =
  11.    
  12. =end
  13. $m5script ||= {};$m5script["M5IS20140807"] = 20140807
  14. module M5IS20140807
  15. #==============================================================================
  16. # 设定部分
  17. #==============================================================================

  18.   VAR1 = 1
  19.   
  20.   # 决定物品、贵重物品排序的变量ID,不需要的话,填0就好了
  21.   
  22.   # 值为正数时:
  23.   # 值为 1 时:按照 入手顺序 排序
  24.   # 值为 2 时:按照 价格 排序
  25.   # 其他值 时:按照 数据库ID 排序
  26.   # 值为负数时,先按照其相反数进行排序,之后倒序排列
  27.   
  28.   VAR2 = 2
  29.   
  30.   # 决定武器排序的变量ID,不需要的话,填0就好了
  31.   
  32.   VAR3 = 3
  33.   
  34.   # 决定防具排序的变量ID,不需要的话,填0就好了
  35.   
  36.   # 对于武器与防具
  37.   # 值为正数时:
  38.   # 值为 1    时:按照 入手顺序 排序
  39.   # 值为 2    时:按照 价格 排序
  40.   # 值为 3    时:按照 装备类型 排序
  41.   # 值为 4    时:按照 武器、防具类型 排序
  42.   # 值为 5    时:按照 武器评价 排序
  43.   # 值为 6~13 时:按照 体力上限/魔力上限/物理攻击/物理防御/魔法攻击
  44.   #                    /魔法防御/敏捷值/幸运值 排序
  45.   # 其他值    时:按照 数据库ID 排序
  46.   # 值为负数时,先按照其相反数进行排序,之后倒序排列
  47.   
  48. #==============================================================================
  49. # 设定结束
  50. #==============================================================================
  51. end
  52. class Game_Party
  53.   alias m5_20140807_items items
  54.   alias m5_20140807_weapons weapons
  55.   alias m5_20140807_armors armors  
  56.   def m5_20140807_list_reverse(list,type)
  57.     list.reverse! if type < 0
  58.     return list
  59.   end
  60.   def items
  61.     type = $game_variables[M5IS20140807::VAR1]
  62.     case type
  63.     when 1,-1
  64.       m5_20140807_items
  65.       list = @items.keys.collect {|id| $data_items[id] }
  66.       return m5_20140807_list_reverse(list,type)
  67.     when 2,-2      
  68.       list = m5_20140807_items.sort_by {|item| [item.price, item.id] }
  69.       return m5_20140807_list_reverse(list,type)
  70.     else return m5_20140807_list_reverse(m5_20140807_items,type)
  71.     end
  72.   end
  73.   def m5_20140807_sort_equip(type,list,list_sort,data,armors = false)
  74.     case type
  75.     when 1
  76.       list = list.keys.collect {|id| data[id] }
  77.       return m5_20140807_list_reverse(list,type)
  78.     when 2
  79.       list = list_sort.sort_by {|euqip| [euqip.price, euqip.id] }
  80.       return m5_20140807_list_reverse(list,type)
  81.     when 3
  82.       list = list_sort.sort_by {|euqip| [euqip.etype_id, euqip.id] }
  83.       return m5_20140807_list_reverse(list,type)
  84.     when 4
  85.       list = list_sort.sort_by {|euqip|
  86.         [armors ? euqip.atype_id : euqip.wtype_id, euqip.id] }
  87.       return m5_20140807_list_reverse(list,type)
  88.     when 5
  89.       list = list_sort.sort_by {|euqip| [euqip.performance, euqip.id]}
  90.       return m5_20140807_list_reverse(list,type)
  91.     when 6,7,8,9,10,11,12,13
  92.       list = list_sort.sort_by {|euqip| [euqip.params[type - 6], euqip.id]}      
  93.       return m5_20140807_list_reverse(list,type)
  94.     else
  95.       return m5_20140807_list_reverse(list_sort,type)
  96.     end
  97.   end
  98.   def weapons
  99.     case $game_variables[M5IS20140807::VAR2]
  100.     when 0
  101.       return m5_20140807_weapons
  102.     else
  103.       m5_20140807_sort_equip($game_variables[M5IS20140807::VAR2],
  104.         @weapons,m5_20140807_weapons,$data_weapons)
  105.     end
  106.   end  
  107.   def armors
  108.     case $game_variables[M5IS20140807::VAR3]
  109.     when 0
  110.       return m5_20140807_armors
  111.     else
  112.       m5_20140807_sort_equip($game_variables[M5IS20140807::VAR3],
  113.         @armors,m5_20140807_armors,$data_armors,true)
  114.     end
  115.   end
  116. end
复制代码

作者: R9560    时间: 2014-8-7 14:15
喵呜喵5 发表于 2014-8-7 13:46

谢谢,这个好管用




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