Project1
标题:
关于限制物品数量的问题
[打印本页]
作者:
wyw838
时间:
2019-5-5 13:48
标题:
关于限制物品数量的问题
在xp默认的脚本中...物品的数量上限是99个...而在游戏的实际制作中,不同的物品当然应该有不同的上限数量...所以在实际制作中当然得对物品数量上限进行修改...然而对一个个物品的数量上限进行定义是很麻烦的事...需要对game party中的物品部分进行ID判定...这样就会很麻烦...在参考完其他脚本之后...发现可以采用在描述里进行特殊描述然后用脚本读取的方式来处理这个问题...但是对于刚接触脚本不久的我来说我只是能知道它的原理但是不知道具体应该怎么写...所以想请问一下应该如何处理这个问题...谢谢QWQ
作者:
芯☆淡茹水
时间:
2019-5-6 08:11
这个是以前写的,在物品说明里任意位置嵌入 <Max:数量> 就行了。没写的默认 99
#==============================================================================
module RPG
#--------------------------------------------------------------------------
class Item
def description
return @description.gsub(/<Max:(\d+)>/, "")
end
def max_num
return @description.match(/<Max:(\d+)>/) ? $1.to_i : 99
end
end
#--------------------------------------------------------------------------
class Weapon
def description
return @description.gsub(/<Max:(\d+)>/, "")
end
def max_num
return @description.match(/<Max:(\d+)>/) ? $1.to_i : 99
end
end
#--------------------------------------------------------------------------
class Armor
def description
return @description.gsub(/<Max:(\d+)>/, "")
end
def max_num
return @description.match(/<Max:(\d+)>/) ? $1.to_i : 99
end
end
end
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
def max_num(item_id, type)
data = case type
when :item : $data_items
when :weapon : $data_weapons
when :armor : $data_armors
end
return data[item_id] ? data[item_id].max_num : 0
end
#--------------------------------------------------------------------------
def gain_item(item_id, n)
if item_id > 0
max = max_num(item_id, :item)
@items[item_id] = [[item_number(item_id) + n, 0].max, max].min
end
end
#--------------------------------------------------------------------------
def gain_weapon(weapon_id, n)
if weapon_id > 0
max = max_num(weapon_id, :weapon)
@weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, max].min
end
end
#--------------------------------------------------------------------------
def gain_armor(armor_id, n)
if armor_id > 0
max = max_num(armor_id, :armor)
@armors[armor_id] = [[armor_number(armor_id) + n, 0].max, max].min
end
end
end
#==============================================================================
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1