Project1
标题:
如何装备护甲或者武器,让该人物在战斗中有指定的状态
[打印本页]
作者:
qqqq6118
时间:
2018-2-28 21:09
标题:
如何装备护甲或者武器,让该人物在战斗中有指定的状态
目前游戏中都是装备或者武器有属性值,直接计算
怎么才能让装备某件护甲,进入战斗的人物带有设定的状态
比如,
一个装备是加速鞋,装备后进入战斗,初始就会获得一个加速的状态,
或者装备是荆棘头盔,装备后进入战斗,初始就会获得一个流血状态。
作者:
刹那铃音
时间:
2018-2-28 22:59
你需要用到这个
#===============================================================================
# ■ 战斗中自动附加被动状态
# By :VIPArcher [email:
[email protected]
]
# -- 本脚本来自 http://rm.66rpg.com 使用或转载请保留以上信息。
#==============================================================================
# ■ 在战斗开始时自动为每一位战斗者附加上设置好的状态,战斗结束时移除
# 使用说明:
# 在角色|职业|装备|敌人的备注栏备注<被动状态:状态ID> 例如 <被动状态:18>
# 同时备注多个被动状态亦可叠加,都会为其附加上对应的状态。只有战斗开始时附加一次状态
# 的备注栏应该也可以用,只要战斗开始前有某状态亦可附加上该状态备注栏里指定对的状态
#==============================================================================
$VIPArcherScript ||= {};$VIPArcherScript[:battle_state] = 20141102
#--------------------------------------------------------------------------------
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 战斗开始处理
#--------------------------------------------------------------------------
alias state_battle_start on_battle_start
def on_battle_start
state_battle_start
self.feature_objects.each {|obj| obj.note.split(/[\r\n]+/).each{ |line|
self.add_state($1.to_i) if line =~ /<被动状态:\s*(\d+)>/}}
end
#--------------------------------------------------------------------------
# ● 战斗结束处理
#--------------------------------------------------------------------------
alias state_on_battle_end on_battle_end
def on_battle_end
state_on_battle_end
self.feature_objects.each {|obj| obj.note.split(/[\r\n]+/).each{ |line|
self.remove_state($1.to_i) if line =~ /<被动状态:\s*(\d+)>/}}
end
end
复制代码
作者:
qqqq6118
时间:
2018-3-1 13:38
纯萌新,有错误请包涵。
我新建脚本页,代码粘进去了。
然后在database中,把比如皮帽,这件装备的备注加上了<被动状态:2> 这个2就是状态毒的id
然后保存,进入游戏。战斗。
没有任何变化……
我应该怎么做才能生效呢。
作者:
qqqq6118
时间:
2018-3-2 10:29
脚本页不是有标准库么,在标准库下边新建了一个脚本页,然后在正文粘了你发的脚本,
运行游戏没有提示错误,
现在我怀疑2点,
1、这个状态ID是不是数据库状态页签的值。
2、是不是有什么脚本会进入战斗时候自动清空状态和这个脚本冲突。
作者:
刹那铃音
时间:
2018-3-4 00:01
那你看看这个可以用吗,老鹰的,亲测可用
#==============================================================================
# ■ 装备/敌人战斗中自动附加状态 by 老鹰
#------------------------------------------------------------------------------
# - 新增在战斗中指定时刻,装备携带者/敌人的自动附加指定状态
# - 在装备/敌人栏备注内填入下式(可用空格或逗号分隔内部各项)(可重复填入多行)
# <状态附加时机: 状态id, 附加概率分子, 附加概率分母, 出现条件>
# 状态附加时机(替换为下列英语):
# Battle Start State - 战斗开始时
# Turn Start State - 回合开始时 *需碧轨战斗顺序,默认战斗者无该时刻
# Action End State - 行动结束时
# Turn End State - 回合结束时
# 状态id: 填入需要自动附加的状态id号
# 附加概率分子、附加概率分母(可选): 状态附加的概率为 分子/分母,不填则为 1
# 出现条件(可选):被eval后如果返回真,才能进行附加,不填则默认为 真
# 注: 可用 s 代表 $game_switches, v 代表 $game_variables
# - 举例:
# 在 1 号护甲备注里填入 <Battle Start State: 1>, 1号角色装备中
# 作用:在战斗开始时,1号角色自动附加一次1号状态
# 在 2 号护甲备注里填入 <Turn End State: 2, 1,2>,2号角色装备中
# 作用:在每次回合结束时,2号角色有 1/2 的概率附加2号状态
# 在 1 号敌人备注里填入 <Action End State: 3, 1,5, $game_switches[1]>
# 作用:1号敌人每次技能使用结束、且1号开关开启时,有 1/5 的概率附加3号状态
# - 实质:在战斗各个时机,角色自身的处理中追加状态的附加
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 获取需要提取附加状态的对象的数组
#--------------------------------------------------------------------------
def get_battler_auto_states_notes_array
return equips if actor?
return [self] if enemy?
return []
end
#--------------------------------------------------------------------------
# ● 处理自动状态的附加
#--------------------------------------------------------------------------
def eagle_check_auto_add_states(type)
array = get_battler_auto_states_notes_array
case type
when :on_battle_start
exp = /<Battle Start State:[ ,]*(\d+)[ ,]*(\d*)[ ,]*(\d*)[ ,]*(.*)>/
when :on_turn_start
exp = /<Turn Start State:[ ,]*(\d+)[ ,]*(\d*)[ ,]*(\d*)[ ,]*(.*)>/
when :on_action_end
exp = /<Action End State:[ ,]*(\d+)[ ,]*(\d*)[ ,]*(\d*)[ ,]*(.*)>/
when :on_turn_end
exp = /<Turn End State:[ ,]*(\d+)[ ,]*(\d*)[ ,]*(\d*)[ ,]*(.*)>/
end
s = $game_switches
v = $game_variables
array.each do |a|
next if a == nil
a.note.split(/[\r\n]+/).each do |line|
line =~ exp
# $1 - 状态id $2$3 - 概率 $4 - eval条件
next if $1 == nil
next if $4 != "" && eval($4) == false
p1 = $2 == "" ? 1 : $2.to_i
p2 = $3 == "" ? 1 : $3.to_i
next if rand > (p1 * 1.0 / p2)
add_state($1.to_i)
end
end
end
#--------------------------------------------------------------------------
# ● 战斗开始处理
#--------------------------------------------------------------------------
alias eagle_battler_auto_states_on_battle_start on_battle_start
def on_battle_start
eagle_check_auto_add_states(:on_battle_start)
eagle_battler_auto_states_on_battle_start
end
#--------------------------------------------------------------------------
# ○ 回合开始
# 需要 碧轨战斗行动顺序系统
#--------------------------------------------------------------------------
if Scene_Battle.include?(Saba::Kiseki)
alias eagle_battler_auto_states_on_turn_start on_turn_start
def on_turn_start
eagle_check_auto_add_states(:on_turn_start)
eagle_battler_auto_states_on_turn_start
end
end
#--------------------------------------------------------------------------
# ● 战斗行动结束时的处理
#--------------------------------------------------------------------------
alias eagle_battler_auto_states_on_action_end on_action_end
def on_action_end
eagle_check_auto_add_states(:on_action_end)
eagle_battler_auto_states_on_action_end
end
#--------------------------------------------------------------------------
# ● 回合结束处理
#--------------------------------------------------------------------------
alias eagle_battler_auto_states_on_turn_end on_turn_end
def on_turn_end
eagle_check_auto_add_states(:on_turn_end)
eagle_battler_auto_states_on_turn_end
end
end
复制代码
作者:
qqqq6118
时间:
2018-3-4 12:16
如果 # 需要 碧轨战斗行动顺序系统
这个方法在,就会报错。
uninitialized constant Game_Battler::Saba
如果上边的注释掉,战斗时就会报错
54行
undefined method 'note' for # <Game_Enemy:0xd5946a8>
作者:
qqqq6118
时间:
2018-3-4 12:52
本帖最后由 qqqq6118 于 2018-3-4 12:57 编辑
而且,第一给我的方法,其中
self.add_state($1.to_i) if line =~ /<被动状态:\s*(\d+)>/}}
改成
self.add_state(2) }}
就变成敌人中这个状态。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1