Project1

标题: 能不能定义个别物品的上限? [打印本页]

作者: 玄月    时间: 2009-1-25 02:12
标题: 能不能定义个别物品的上限?
比如说我有种用于合成的物品(好像耀晶片那样)上限是9999
然后普通物品的上限是99 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 缺牙de兔子    时间: 2009-1-25 03:39
判断 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
复制代码
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 玄月    时间: 2009-1-25 03:41
可以么…………我以前记得还要塞一个很长的外挂脚本。
作者: 缺牙de兔子    时间: 2009-1-25 03:45
要截图吗--
这是显示上的处理把hash的大小改成9999就可以了
你给他9999个就一定是9999个

作者: 玄月    时间: 2009-1-25 03:46
hash是虾米~?
作者: 缺牙de兔子    时间: 2009-1-25 03:52
刚才试了一下 不用改hash的最大值了 hash本来就是自动连接的一种特殊集合

这个范例给你吧--
你看了我事件上的脚本就会明白了
我事件上的脚本是给2种物品一次添加9999个给玩家
http://rpg.blue/upload_program/d ... ��槽_113255489.rar
作者: 玄月    时间: 2009-1-25 03:54
刚刚解决了。。。
  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是什么?
作者: 亿万星辰    时间: 2009-1-25 03:56
以下引用玄月于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了。
作者: 缺牙de兔子    时间: 2009-1-25 04:00
我的天-- 有5个物品是可以拿9999个的么....

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

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

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

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




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