| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2020-5-5 |
| 在线时间 | 705 小时 |
- 梦石
- 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一栏改成对应的即可。 |
评分
-
查看全部评分
|