查看: 1044|回复: 8

能不能定义个别物品的上限?

  [复制链接]

魔王 ⑨

梦石
0
星屑
90
在线时间
379 小时
注册时间
2006-10-16
回帖
3980

贵宾

发表于 2009-1-25 02:12:25 | 显示全部楼层 |阅读模式

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

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

×
比如说我有种用于合成的物品(好像耀晶片那样)上限是9999
然后普通物品的上限是99
版务信息:本贴由楼主自主结贴~

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
回帖
336
发表于 2009-1-25 03:39:31 | 显示全部楼层
判断 if item_id > 0 && item_id!=1
物品ID是否大于0并且不等于你限制的那个物品的ID
如果成立就让所有物品都显示为上限99
否则物品ID等于1的话就让那个物品上限为9999

  1. #--------------------------------------------------------------------------
  2.   # ● 增加物品 (减少)
  3.   #     item_id : 物品 ID
  4.   #     n       : 个数
  5.   #--------------------------------------------------------------------------
  6.   def gain_item(item_id, n)
  7.     # 更新 hash 的个数数据
  8.     if item_id > 0 && item_id!=1
  9.       @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  10.     else
  11.       @items[item_id] = [[item_number(item_id) + n, 0].max, 9999].min
  12.     end
  13.   end
复制代码

修改物品上限
还有商店的,



  1.      # 如果已经拥有了 99 个情况下
  2.      if number == 99
  3.        # 演奏冻结 SE
  4.        $game_system.se_play($data_system.buzzer_se)
  5.        return
  6.      end
  7.      # 演奏确定 SE
  8.      $game_system.se_play($data_system.decision_se)
  9.      # 计算可以最多购买的数量
  10.      max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  11.      max = [max, 99 - number].min
复制代码

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
↓这是啥-- [IMG][/IMG]
回复

使用道具 举报

魔王 ⑨

梦石
0
星屑
90
在线时间
379 小时
注册时间
2006-10-16
回帖
3980

贵宾

 楼主| 发表于 2009-1-25 03:41:50 | 显示全部楼层
可以么…………我以前记得还要塞一个很长的外挂脚本。
回复

使用道具 举报

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
回帖
336
发表于 2009-1-25 03:45:59 | 显示全部楼层
要截图吗--
这是显示上的处理把hash的大小改成9999就可以了
你给他9999个就一定是9999个
↓这是啥-- [IMG][/IMG]
回复

使用道具 举报

魔王 ⑨

梦石
0
星屑
90
在线时间
379 小时
注册时间
2006-10-16
回帖
3980

贵宾

 楼主| 发表于 2009-1-25 03:46:48 | 显示全部楼层
hash是虾米~?
回复

使用道具 举报

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
回帖
336
发表于 2009-1-25 03:52:11 | 显示全部楼层
刚才试了一下 不用改hash的最大值了 hash本来就是自动连接的一种特殊集合

这个范例给你吧--
你看了我事件上的脚本就会明白了
我事件上的脚本是给2种物品一次添加9999个给玩家
http://rpg.blue/upload_program/d ... ¡€槽_113255489.rar
↓这是啥-- [IMG][/IMG]
回复

使用道具 举报

魔王 ⑨

梦石
0
星屑
90
在线时间
379 小时
注册时间
2006-10-16
回帖
3980

贵宾

 楼主| 发表于 2009-1-25 03:54:07 | 显示全部楼层
刚刚解决了。。。
  def gain_item(item_id, n)
    # 更新 hash 的个数数据
    if item_id >= 34 && item_id <= 39
      @items[item_id] = [[item_number(item_id) + n, 0].max, 9999].min
    else
      @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
    end
  end
这样写的。。
话说hash是什么?
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2009-1-25 03:56:04 | 显示全部楼层
以下引用玄月于2009-1-24 19:54:07的发言:

刚刚解决了。。。
def gain_item(item_id, n)
   # 更新 hash 的个数数据
   if item_id >= 34 && item_id <= 39
     @items[item_id] = [[item_number(item_id) + n, 0].max, 9999].min
   else
     @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
   end
end
这样写的。。

这次路子走对了
Hash是哈希表,是个很好用的东西,比如你这段代码里的 @items 就是个hash,具体的还是要问F1了。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
回帖
336
发表于 2009-1-25 04:00:03 | 显示全部楼层
我的天-- 有5个物品是可以拿9999个的么....

HASH 就是哈希表
哈希表是有 键和值来标识的一种特殊集合
这种集合不用担心他的下标种会有空值 是非常有用的东西

例如在哈希种 {[Money,99999999]} Money是键 99999999是值

怎么星辰大哥跟我用的词都一样捏--
"这是个有用的东西"

如果是数组的话 某个下标的数据被清空了 系统就会抛出空值异常中断游戏
而哈希不会发生这样的事情 如果该值被清空会被后面的数值代替他的位置
↓这是啥-- [IMG][/IMG]
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部