Project1

标题: 关于限制物品数量的问题 [打印本页]

作者: wyw838    时间: 2019-5-5 13:48
标题: 关于限制物品数量的问题
在xp默认的脚本中...物品的数量上限是99个...而在游戏的实际制作中,不同的物品当然应该有不同的上限数量...所以在实际制作中当然得对物品数量上限进行修改...然而对一个个物品的数量上限进行定义是很麻烦的事...需要对game party中的物品部分进行ID判定...这样就会很麻烦...在参考完其他脚本之后...发现可以采用在描述里进行特殊描述然后用脚本读取的方式来处理这个问题...但是对于刚接触脚本不久的我来说我只是能知道它的原理但是不知道具体应该怎么写...所以想请问一下应该如何处理这个问题...谢谢QWQ
作者: 芯☆淡茹水    时间: 2019-5-6 08:11
这个是以前写的,在物品说明里任意位置嵌入 <Max:数量>  就行了。没写的默认 99
  1. #==============================================================================
  2. module RPG
  3.   #--------------------------------------------------------------------------
  4.   class Item
  5.     def description
  6.       return @description.gsub(/<Max:(\d+)>/, "")
  7.     end
  8.     def max_num
  9.       return @description.match(/<Max:(\d+)>/) ? $1.to_i : 99
  10.     end
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   class Weapon
  14.     def description
  15.       return @description.gsub(/<Max:(\d+)>/, "")
  16.     end
  17.    
  18.     def max_num
  19.       return @description.match(/<Max:(\d+)>/) ? $1.to_i : 99
  20.     end
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   class Armor
  24.     def description
  25.       return @description.gsub(/<Max:(\d+)>/, "")
  26.     end
  27.     def max_num
  28.       return @description.match(/<Max:(\d+)>/) ? $1.to_i : 99
  29.     end
  30.   end
  31. end
  32. #==============================================================================
  33. class Game_Party
  34.   #--------------------------------------------------------------------------
  35.   def max_num(item_id, type)
  36.     data = case type
  37.     when :item   : $data_items
  38.     when :weapon : $data_weapons
  39.     when :armor  : $data_armors
  40.     end
  41.     return data[item_id] ? data[item_id].max_num : 0
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   def gain_item(item_id, n)
  45.     if item_id > 0
  46.       max = max_num(item_id, :item)
  47.       @items[item_id] = [[item_number(item_id) + n, 0].max, max].min
  48.     end
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   def gain_weapon(weapon_id, n)
  52.     if weapon_id > 0
  53.       max = max_num(weapon_id, :weapon)
  54.       @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, max].min
  55.     end
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   def gain_armor(armor_id, n)
  59.     if armor_id > 0
  60.       max = max_num(armor_id, :armor)
  61.       @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, max].min
  62.     end
  63.   end
  64. end
  65. #==============================================================================
复制代码





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