我想到了这个脚本,可以转换为无限使用技能直到消耗完道具,水平有限只想到这些...
#-------------------------------------------------------------------- # ● require Taroxd基础设置 # 制作消耗物品的技能 #-------------------------------------------------------------------- # # 使用方法: # 技能备注 <itemcost item_id number> # item_id 为消耗的物品 id,number 为消耗的物品个数。 # number 可不填,默认为 1(即 <itemcost item_id>)。 # 技能备注 <itemneed item_id number> # item_id 为需要的物品 id(不消耗),number 为消耗的物品个数。 # number 可不填,默认为 1 # #-------------------------------------------------------------------- Taroxd::ItemCost = Struct.new(:item, :number, :cost) do RE = /<item\s*(cost|need)\s+(\d+)(\s+\d+)?>/i def self.parse_note(note) note.scan(RE).map do |cost, item_id, number| new($data_items[item_id.to_i], (number ? number.to_i : 1), cost == 'cost') end end def meet? $game_party.item_number(item) >= number end def pay $game_party.lose_item(item, number) if cost end end class RPG::Skill < RPG::UsableItem def item_costs @item_costs ||= Taroxd::ItemCost.parse_note(@note) end end class Game_BattlerBase def_and :skill_cost_payable? do |skill| skill.item_costs.all?(&:meet?) end def_after :pay_skill_cost do |skill| skill.item_costs.each(&:pay) end end
#--------------------------------------------------------------------
# ● require Taroxd基础设置
# 制作消耗物品的技能
#--------------------------------------------------------------------
#
# 使用方法:
# 技能备注 <itemcost item_id number>
# item_id 为消耗的物品 id,number 为消耗的物品个数。
# number 可不填,默认为 1(即 <itemcost item_id>)。
# 技能备注 <itemneed item_id number>
# item_id 为需要的物品 id(不消耗),number 为消耗的物品个数。
# number 可不填,默认为 1
#
#--------------------------------------------------------------------
Taroxd::ItemCost = Struct.new(:item, :number, :cost) do
RE = /<item\s*(cost|need)\s+(\d+)(\s+\d+)?>/i
def self.parse_note(note)
note.scan(RE).map do |cost, item_id, number|
new($data_items[item_id.to_i],
(number ? number.to_i : 1),
cost == 'cost')
end
end
def meet?
$game_party.item_number(item) >= number
end
def pay
$game_party.lose_item(item, number) if cost
end
end
class RPG::Skill < RPG::UsableItem
def item_costs
@item_costs ||= Taroxd::ItemCost.parse_note(@note)
end
end
class Game_BattlerBase
def_and :skill_cost_payable? do |skill|
skill.item_costs.all?(&:meet?)
end
def_after :pay_skill_cost do |skill|
skill.item_costs.each(&:pay)
end
end
|