Project1

标题: 如何限制人物所持有的物品个数? [打印本页]

作者: 落雪鸦杀    时间: 2015-8-23 13:26
标题: 如何限制人物所持有的物品个数?
如题。
假设说我所能持有的所有物品有上限.(比如上限为20,A物品15个,B物品1个,C物品4个就达到上限了)。
而物品可以有多种方式获得,比如购买,打怪掉落,开宝箱。
这样的话用变量就不好用了。。
求解。
作者: 墨凌羽    时间: 2015-8-23 14:09
本帖最后由 墨凌羽 于 2015-8-23 08:13 编辑

  Game_Party219行,把return 99改成
  1. return item.note != "" ? item.note.to_i : 99
复制代码
使用方法:在物品备注栏里进行备注。无备注的最大限制数仍为99。限制数是多少,就直接备注为多少。
噗 仔细看了下,貌似和楼主想要的有差别。。。嗯 其实和那种负重脚本差不多。原理大概就是在增加物品时遍历整个物品列表计算总的持有数(负重脚本使计算总的负重),如果超出就不能获得。
要出个门,回来再说吧。
作者: 墨凌羽    时间: 2015-8-27 13:14
本帖最后由 墨凌羽 于 2015-8-27 07:19 编辑

补脚本来了
Game_Party的gain_item替换成下边这个。然后在该类初始化的时候执行变量初始化操作(@max_item = 40 @item_sum = 0)其中@max_item是总的最大物品持有数。
说明:
1.物品超出没提示。想要提示自己写【大概改改map和shop就行
2.和上边限制单个物品数量上限的不冲突
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 增加/减少物品
  3.   #     include_equip : 是否包括装备
  4.   #--------------------------------------------------------------------------
  5.   def gain_item(item, amount, include_equip = false)
  6.     container = item_container(item.class)
  7.     return unless container
  8.     if max_item_number(item) - item_number(item) < amount then
  9.       amount = max_item_number(item) - item_number(item)
  10.     end
  11.     if @max_item - @item_sum < amount then
  12.       amount = @max_item - @item_sum
  13.     end
  14.     @item_sum = @item_sum + amount
  15.     last_number = item_number(item)
  16.     new_number = last_number + amount
  17.     container[item.id] = [[new_number, 0].max, max_item_number(item)].min
  18.     container.delete(item.id) if container[item.id] == 0
  19.     if include_equip && new_number < 0
  20.       discard_members_equip(item, -new_number)
  21.     end
  22.     $game_map.need_refresh = true
  23.   end





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