Project1
标题: 转职道具 [打印本页]
作者: fjm 时间: 2019-2-10 22:06
标题: 转职道具
下面这个脚本是道具加上备注转职的,问下要是加些条件转职能实现吗,例如到一定等级才能使用这个道具转职
或者只有特定的角色使用才能转职,或者是某种职业的前提下用该道具才能转职
知道的告诉下,谢谢
class RPG::Item
def transfer_index
/<TRANSFER\s*(\d+)>/ =~ note ? $1.to_i : 0
end
end
class Scene_ItemBase
#--------------------------------------------------------------------------
# ● 对角色使用物品
#--------------------------------------------------------------------------
def use_item_to_actors
item_target_actors.each do |target|
item.repeats.times {
target.item_apply(user, item)
use_transfer_item(target, item.transfer_index) if item.transfer_index > 0
}
end
end
def use_transfer_item(user, index)
user.change_class(index, true)
end
end
class RPG::Item
def transfer_index
/<TRANSFER\s*(\d+)>/ =~ note ? $1.to_i : 0
end
end
class Scene_ItemBase
#--------------------------------------------------------------------------
# ● 对角色使用物品
#--------------------------------------------------------------------------
def use_item_to_actors
item_target_actors.each do |target|
item.repeats.times {
target.item_apply(user, item)
use_transfer_item(target, item.transfer_index) if item.transfer_index > 0
}
end
end
def use_transfer_item(user, index)
user.change_class(index, true)
end
end
作者: KB.Driver 时间: 2019-2-11 00:28
在原脚本下面插入这个脚本
# 使用方法
# 物品备注中写<condition>xxx</condition> 支持多行
# 用user代表使用者,s[n]和v[n]分别代表n号开关和变量
#
# 例 <condition>user.level > 9</condition> # 使用者等级大于9才能用
# <condition>s[1] && v[1] > 5</condition> # 1号开关开启且1号变量大于5才能用
# 其他用法参考伤害公式
class Game_Actor
#--------------------------------------------------------------------------
# ● 技能/物品的应用测试
# 如果使用目标的 HP 或者 MP 全满时,禁止使用恢复道具。
#--------------------------------------------------------------------------
alias item_test_for_class_transfer item_test
def item_test(user, item)
if item.transfer_index != 0
return false unless item.transfer_ok?(self)
end
item_test_for_class_transfer(user, item)
end
end
class RPG::Item
def transfer_ok?(user)
s = $game_switches
v = $game_variables
self.note =~ /<condition>((?:.\s?)+)<\/condition>/mi ? eval($1) : true
end
end
# 使用方法
# 物品备注中写<condition>xxx</condition> 支持多行
# 用user代表使用者,s[n]和v[n]分别代表n号开关和变量
#
# 例 <condition>user.level > 9</condition> # 使用者等级大于9才能用
# <condition>s[1] && v[1] > 5</condition> # 1号开关开启且1号变量大于5才能用
# 其他用法参考伤害公式
class Game_Actor
#--------------------------------------------------------------------------
# ● 技能/物品的应用测试
# 如果使用目标的 HP 或者 MP 全满时,禁止使用恢复道具。
#--------------------------------------------------------------------------
alias item_test_for_class_transfer item_test
def item_test(user, item)
if item.transfer_index != 0
return false unless item.transfer_ok?(self)
end
item_test_for_class_transfer(user, item)
end
end
class RPG::Item
def transfer_ok?(user)
s = $game_switches
v = $game_variables
self.note =~ /<condition>((?:.\s?)+)<\/condition>/mi ? eval($1) : true
end
end
具体用法见注释及范例。
Project1.zip
(1.43 MB, 下载次数: 73)
作者: fjm 时间: 2019-2-11 12:21
非常感谢,可以用了
作者: fjm 时间: 2019-2-11 13:56
刚才试了下战斗的时候,放全体回复技能会报错,这个可以解决吗
作者: KB.Driver 时间: 2019-2-11 14:12
本帖最后由 KB.Driver 于 2019-2-11 14:25 编辑
麻烦截图发一下报错的窗口,如果有完整工程最好。
不过我大致猜到了,应该是因为RPG::Skill没有定义transfer_index方法。
你把范例工程里的222脚本换成这个
# 使用方法
# 物品备注中写<condition>xxx</condition> 支持多行
# 用user代表使用者,s[n]和v[n]分别代表n号开关和变量
#
# 例 <condition>user.level > 9</condition> # 使用者等级大于9才能用
# <condition>s[1] && v[1] > 5</condition> # 1号开关开启且1号变量大于5才能用
# 其他用法参考伤害公式
class Game_Actor
#--------------------------------------------------------------------------
# ● 技能/物品的应用测试
# 如果使用目标的 HP 或者 MP 全满时,禁止使用恢复道具。
#--------------------------------------------------------------------------
alias item_test_for_class_transfer item_test
def item_test(user, item)
if item.is_a?(RPG::Item) && item.transfer_index != 0
return false unless item.transfer_ok?(self)
end
item_test_for_class_transfer(user, item)
end
end
class RPG::Item
def transfer_ok?(user)
s = $game_switches
v = $game_variables
self.note =~ /<condition>((?:.\s?)+)<\/condition>/mi ? eval($1) : true
end
end
# 使用方法
# 物品备注中写<condition>xxx</condition> 支持多行
# 用user代表使用者,s[n]和v[n]分别代表n号开关和变量
#
# 例 <condition>user.level > 9</condition> # 使用者等级大于9才能用
# <condition>s[1] && v[1] > 5</condition> # 1号开关开启且1号变量大于5才能用
# 其他用法参考伤害公式
class Game_Actor
#--------------------------------------------------------------------------
# ● 技能/物品的应用测试
# 如果使用目标的 HP 或者 MP 全满时,禁止使用恢复道具。
#--------------------------------------------------------------------------
alias item_test_for_class_transfer item_test
def item_test(user, item)
if item.is_a?(RPG::Item) && item.transfer_index != 0
return false unless item.transfer_ok?(self)
end
item_test_for_class_transfer(user, item)
end
end
class RPG::Item
def transfer_ok?(user)
s = $game_switches
v = $game_variables
self.note =~ /<condition>((?:.\s?)+)<\/condition>/mi ? eval($1) : true
end
end
另外,好像发现这个只对菜单中使用物品有效。
你把转职道具设置成只有菜单能用就没问题了。
作者: fjm 时间: 2019-2-11 14:31
非常感谢,现在战斗时没问题了
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |