if @active_battler.is_a?(Game_Actor) and @active_battler.hp > 0
if @active_battler.armor1_id != 0 and $data_armors[@active_battler.armor1_id].guard_element_set.include?(100)
回10%hp
end
if @active_battler.armor2_id != 0 and $data_armors[@active_battler.armor2_id].guard_element_set.include?(101)
回20%mp
end
if @active_battler.armor3_id != 0 and $data_armors[@active_battler.armor3_id].guard_element_set.include?(103)
回30%hp
end
end作者: 銀藍色的零 时间: 2011-12-18 22:13
兩個方法都測過
不行耶~~~^^|||作者: 羞射了 时间: 2011-12-19 04:11
用状态法实现,首先设置几个你需要的状态,设置好名字,都打钩连续伤害,不能抵抗,就类似默认的那个毒,将它们设置为装备的自动状态。这里你设计的三个状态分别是17,18,19号。
不会是脚本被覆盖了吧
完整版(直接粘在上面说的 # 连续伤害 从if 到 end的后面)(已经过测试,还出错的话,不是贴错位置,就是脚本冲突了)默认是以【1..3】分别回复HP10%20%30%【4..6】SP10%20%30%
if @active_battler.is_a?(Game_Actor)
@魔法回复 = 0
@生命回复 = 0
for i in 1..6 #回复效果对应的属性ID
if i < 4 #回复效果为HP的
case i
when 1
@生命的百分比 = 10
when 2
@生命的百分比 = 20
when 3
@生命的百分比 = 30
end
if @active_battler.armor1_id != 0
if $data_armors[@active_battler.armor1_id].guard_element_set.include?(i)
@生命回复 += @active_battler.maxhp* @生命的百分比 /100
end
end
if @active_battler.armor2_id != 0
if $data_armors[@active_battler.armor2_id].guard_element_set.include?(i)
@生命回复 += @active_battler.maxhp* @生命的百分比 /100
end
end
if @active_battler.armor3_id != 0
if $data_armors[@active_battler.armor3_id].guard_element_set.include?(i)
@生命回复 += @active_battler.maxhp* @生命的百分比 /100
end
end
if @active_battler.armor4_id != 0
if $data_armors[@active_battler.armor4_id].guard_element_set.include?(i)
@生命回复 += @active_battler.maxhp* @生命的百分比 /100
end
end
if @active_battler.weapon_id != 0
if $data_weapons[@active_battler.weapon_id].element_set.include?(i)
@生命回复 += @active_battler.maxhp* @生命的百分比 /100
end
end
elsif i <= 6 #回复效果为SP时
case i
when 4
@魔法的百分比 = 10
when 5
@魔法的百分比 = 20
when 6
@魔法的百分比 = 30
end
if @active_battler.armor1_id != 0
if $data_armors[@active_battler.armor1_id].guard_element_set.include?(i)
@魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
end
end
if @active_battler.armor2_id != 0
if $data_armors[@active_battler.armor2_id].guard_element_set.include?(i)
@魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
end
end
if @active_battler.armor3_id != 0
if $data_armors[@active_battler.armor3_id].guard_element_set.include?(i)
@魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
end
end
if @active_battler.armor4_id != 0
if $data_armors[@active_battler.armor4_id].guard_element_set.include?(i)
@魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
end
end
if @active_battler.weapon_id != 0
if $data_weapons[@active_battler.weapon_id].element_set.include?(i)
@魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
end
end
end
end
@active_battler.sp += @魔法回复
@active_battler.damage = -@生命回复
@active_battler.hp -= @active_battler.damage
@active_battler.damage_pop = true
end作者: 小白玩家 时间: 2011-12-20 19:34
范例,你自己研究下,按照6楼制作的,证实可行,增加17 18 19号状态 附加到 铜盾 铁盾 钢盾上
装备上铜盾 铁盾 钢盾 分别获得每回合10% 20% 30% 回血状态
#--------------------------------------------------------------------------
# ● 检查连续伤害 (地图用)
#--------------------------------------------------------------------------
def check_map_slip_damage
for actor in @actors
dot = [X]
actor_slip_damage = false
for i in 0..dot.size
if actor.states.include?(dot) actor_slip_damage = true
end
end
if actor.hp > 0 and actor_slip_damage == true
actor.hp -= [actor.maxhp / 100, 1].max
if actor.hp == 0
$game_system.se_play($data_system.actor_collapse_se)
end
$game_screen.start_flash(Color.new(255,0,0,128), 4)
$game_temp.gameover = $game_party.all_dead?
end
对照下之前的,你以后应该就能自己改了(多关注下¥¥标记的部分)
【51..70】分别回复HP10%20%30%……【71..90】SP10%20%30%……
if @active_battler.is_a?(Game_Actor)
@魔法回复 = 0
@生命回复 = 0
for i in 51..90 #回复效果对应的属性ID (¥¥这是总共的属性ID集合)
if i < 71 #回复效果为HP的(¥¥这是用来分割成2部分的属性ID)
case i #(¥¥这是开始处理具体的属性ID)
when 51
@生命的百分比 = 10
when 52
@生命的百分比 = 20
when 53
@生命的百分比 = 30
when 54
@生命的百分比 = 40 #(¥¥ 就这样一直写下去,我就不一一写了)
else #(¥¥ 新添的,看你ID弄那么多,如果有些ID你还不想填具体数值,那程序会按下面的处理)
@生命的百分比 = 0 #(¥¥ ID没有对应的具体数值时,回复率为0)
end #¥¥这下面的倒是不用管,原本就已经是优化过的写法,直接看魔法的吧
if @active_battler.armor1_id != 0
if $data_armors[@active_battler.armor1_id].guard_element_set.include?(i)
@生命回复 += @active_battler.maxhp* @生命的百分比 /100
end
end
if @active_battler.armor2_id != 0
if $data_armors[@active_battler.armor2_id].guard_element_set.include?(i)
@生命回复 += @active_battler.maxhp* @生命的百分比 /100
end
end
if @active_battler.armor3_id != 0
if $data_armors[@active_battler.armor3_id].guard_element_set.include?(i)
@生命回复 += @active_battler.maxhp* @生命的百分比 /100
end
end
if @active_battler.armor4_id != 0
if $data_armors[@active_battler.armor4_id].guard_element_set.include?(i)
@生命回复 += @active_battler.maxhp* @生命的百分比 /100
end
end
if @active_battler.weapon_id != 0
if $data_weapons[@active_battler.weapon_id].element_set.include?(i)
@生命回复 += @active_battler.maxhp* @生命的百分比 /100
end
end
elsif i <= 90 #回复效果为SP时 #(¥¥就是回复效果的属性ID到哪为止
case i
when 71
@魔法的百分比 = 10
when 72
@魔法的百分比 = 20
when 73
@魔法的百分比 = 30
when 74
@魔法的百分比 = 40 #(¥¥ 也是这样一直写下去,我也不一一写了,反正写了你也会改掉)
else #(¥¥新添的,看你ID弄那么多,如果有些ID你还不想填具体数值,那程序会按下面的处理)
@魔法的百分比 = 0 #(¥¥ID没有对应的具体数值时,回复率为0)OK,完事了
end
if @active_battler.armor1_id != 0
if $data_armors[@active_battler.armor1_id].guard_element_set.include?(i)
@魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
end
end
if @active_battler.armor2_id != 0
if $data_armors[@active_battler.armor2_id].guard_element_set.include?(i)
@魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
end
end
if @active_battler.armor3_id != 0
if $data_armors[@active_battler.armor3_id].guard_element_set.include?(i)
@魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
end
end
if @active_battler.armor4_id != 0
if $data_armors[@active_battler.armor4_id].guard_element_set.include?(i)
@魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
end
end
if @active_battler.weapon_id != 0
if $data_weapons[@active_battler.weapon_id].element_set.include?(i)
@魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
end
end
end
end
@active_battler.sp += @魔法回复
@active_battler.damage = -@生命回复
@active_battler.hp -= @active_battler.damage
@active_battler.damage_pop = true
end