Project1

标题: 怎么设定特定编号范围内的物品种类携带上限 [打印本页]

作者: 幻耶    时间: 2012-6-18 21:10
标题: 怎么设定特定编号范围内的物品种类携带上限
本帖最后由 幻耶 于 2012-6-18 21:35 编辑

比如,数据库编号为301~500的物品,当携带这个编号范围内物品的种类超过100种的时候,就不允许再获得此范围编号内的物品了,提示为:此类型的物品已满。但是编号范围外的物品不受影响可以继续获得

如果只在脚本编辑器里设定,不需要在事件里判断,应该怎么做?dsu_plus_rewardpost_czw
作者: hys111111    时间: 2012-6-18 21:52
本帖最后由 hys111111 于 2012-6-18 21:53 编辑
  1. class Game_Party
  2.   def gain_item(item_id, n)
  3.     # 更新 hash 的个数数据
  4.     if item_id > 0
  5.       if item_id >= 301 and item_id <= 500
  6.         if item_number == 100
  7.             p "物品已满"
  8.         end
  9.         @items[item_id] = [[item_number(item_id) + n, 0].max, 100].min
  10.       else
  11.         @items[item_id] = [[item_number(item_id) + n, 0].max, 99999999].min
  12.       end
  13.     end
  14.   end
  15. end
复制代码
写完
作者: 幻耶    时间: 2012-6-18 22:34
本帖最后由 幻耶 于 2012-6-18 22:43 编辑
hys111111 发表于 2012-6-18 21:52
写完


我新建一工程插入脚本,为了简化改了一下编号,通过事件得到3号和4号物品,结果执行事件出错了ArgumentError

另外我的意思是:假设数据库编号3~5的物品,假设携带这个编号范围内物品的上限种类是2,那么,角色持有3号和4号物品就不能再得到5号物品。或者角色持有4号和5号物品就不能再得到3号物品。。。和同一种物品的数量没关系
  1. class Game_Party
  2.   def gain_item(item_id, n)
  3.     # 更新 hash 的个数数据
  4.     if item_id > 0
  5.       if item_id >= 3 and item_id <= 5
  6.         if item_number == 2
  7.             p "物品已满"
  8.         end
  9.         @items[item_id] = [[item_number(item_id) + n, 0].max, 100].min
  10.       else
  11.         @items[item_id] = [[item_number(item_id) + n, 0].max, 99999999].min
  12.       end
  13.     end
  14.   end
  15. end
复制代码

作者: hys111111    时间: 2012-6-19 12:37
  1. class Game_Party
  2.   def gain_item(item_id, n)
  3.     # 更新 hash 的个数数据
  4.     if item_id > 0
  5.       if item_id >= 301 and item_id <= 500
  6.         iii = 0
  7.         for ii in 301..500
  8.           iii += item_number(ii)
  9.         end
  10.         if iii >= 100
  11.           return
  12.         end
  13.       end
  14.       @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  15.     end
  16.   end
  17. end
复制代码

作者: 幻耶    时间: 2012-6-19 13:01
hys111111 发表于 2012-6-19 12:37

我改成下面这样:假设数据库物品编号3~5这个范围内可携带的上限种类是2,设置1号事件给3、4号物品,2号事件给5号物品,结果我先执行2号事件得到5号物品,再执行1号事件,就提示物品已满了,但是角色物品栏里还是只有5号物品一种,并没有达到2种的上限啊?
  1. class Game_Party
  2.   def gain_item(item_id, n)
  3.     # 更新 hash 的个数数据
  4.     if item_id > 0
  5.       if item_id >= 3 and item_id <= 5
  6.         iii = 0
  7.         for ii in 3..5
  8.           iii += item_number(ii)
  9.         end
  10.         if iii >= 2
  11.           p "物品已满"
  12.           return
  13.         end
  14.       end
  15.       @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  16.     end
  17.   end
  18. end
复制代码

作者: 幻耶    时间: 2012-6-19 13:30
还是老样子啊,第8行改过以后同类的物品不能再增加了,我希望同类物品的数量不受影响




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