查看: 2989|回复: 1

[已经解决] 物品排序

[复制链接]
梦石
0
星屑
84
在线时间
130 小时
注册时间
2014-9-1
回帖
69
发表于 2015-8-24 05:45:46 | 显示全部楼层 |阅读模式

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

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

×
不好意思,请问一下有没有物品排序的脚本啊?
最好是能够依据物品稀有度排序
物品稀有度原帖:https://rpg.blue/forum.php?mod=viewthread&tid=332526
如果不行,普通的脚本也可以。
谢谢
halo大家好,欢迎支持我的部落格
http://dedarknightstudio.blogspot.com
梦石
0
星屑
60
在线时间
705 小时
注册时间
2007-12-23
回帖
809
发表于 2015-8-24 22:38:22 | 显示全部楼层
本帖最后由 gonglinyuan 于 2015-8-24 22:44 编辑

物品本身就是按照在数据库中的ID号来排序的,最简单的实现方式是把稀有度大的物品排在数据库的前面。

如果真的要改变默认排序方式的话可以这样:

[pre lang="ruby"]
#--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # 添加报务
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items)
      end
    end
    # 在战斗中以外添加武器、防具
    unless $game_temp.in_battle
      for i in 1...$data_weapons.size
        if $game_party.weapon_number(i) > 0
          @data.push($data_weapons)
        end
      end
      for i in 1...$data_armors.size
        if $game_party.armor_number(i) > 0
          @data.push($data_armors)
        end
      end
    end
   
 # 按照价格排序开始
    @data.sort! do |a, b|
      if a.price > b.price
        -1
      elsif a.price < b.price
        +1
      else
        a <=> b
      end
    end
    # 按照价格排序结束

    # 如果项目数不是 0 就生成位图、重新描绘全部项目
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
[/pre]

用这段代码替换Window_Item的Refresh方法(应该在29行附近)。这是按照价格从大到小排序(price),如果要按照别的排序(比如你说的稀有度),将price一栏改成对应的即可。

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

买了正版RMMV的同学进来看一下,谢谢~
https://rpg.blue/thread-393237-1-1.html
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部