Project1

标题: 请教灵魂锁链和魔法盾的制作方法? [打印本页]

作者: Tabris_Air    时间: 2009-4-14 01:17
标题: 请教灵魂锁链和魔法盾的制作方法?
灵魂锁链:持有该状态时,伤害为50%,另外50%由其他队员共同分担。…
魔法盾:该状态下受到的伤害由HP和SP共同分担…
不用考虑多人具有该状态时的伤害分配。请教高手… [LINE]1,#dddddd[/LINE]此贴于 2009-4-14 19:17:58 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]本贴由论坛斑竹redant结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^
作者: jhlv0650    时间: 2009-4-14 01:36
自制魔法盾,状态id为1,但是sp伤害显示还不会做。
这是普通攻击部分
Game_Battler 3下面的 应用通常攻击效果
# 第二命中判定
      eva = 8 * self.agi / attacker.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
    end
下面添加
if self.state?(1)
self.damage /= 2
self.sp-=self.damage
end

应用特技效果
   # 第二命中判定
      eva = 8 * self.agi / user.dex + self.eva
      hit = self.damage[user] < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
下面
if self.state?(1)
self.damage /= 2
self.sp-=self.damage
end [LINE]1,#dddddd[/LINE]版主对此帖的认可:『正确解答,补上悬赏积分,感激你的热情帮助...』,积分『+350』。
作者: Tabris_Air    时间: 2009-4-15 03:24
继续求灵魂锁链……
作者: hitlerson    时间: 2009-4-15 05:39
$game_party.actors.each do |actor|
  actor.damage = damage/(2*($game_party.actors.size-1))
  actor.hp -= actor.damage
end

记得显示下伤害
      $game_party.actors.each do |actor|
        if actor.damage != nil
          actor.damage_pop = true
        end
      end



怪兽方同理
作者: 鲔鱼吐司    时间: 2009-4-15 15:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: hitlerson    时间: 2009-4-15 16:32
因为以上东西写的不仔细啊,循环去血的时候又扣了一次被打角色的血了,要去掉。
全体技能就判断下技能类别。
你都能用我上面写的那个东西呢,很厉害哦,自己改改了,应该是没问题的吧
作者: 鲔鱼吐司    时间: 2009-4-15 16:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: 鲔鱼吐司    时间: 2009-4-15 18:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: 君迁子    时间: 2009-4-16 00:04
试了一下魔法盾,也是扣了双倍血……不知是在哪里又多扣了一次?=v=b
作者: hitlerson    时间: 2009-4-16 07:46
next if actor == self

unless skill.scope == 2
作者: 鲔鱼吐司    时间: 2009-4-16 08:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 鲔鱼吐司    时间: 2009-4-16 22:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: hitlerson    时间: 2009-4-16 22:42
if self.state?(4) and skill.scope != 2 #鎖鏈狀態
  $game_party.actors.each do |actor|
    next if actor = self
    actor.damage = damage/(2*($game_party.actors.size-1))
    actor.hp -= actor.damage
  end
end

大概就是这样了
作者: 鲔鱼吐司    时间: 2009-4-16 23:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 紫苏    时间: 2009-4-20 20:41
灵魂链锁可以参考:
http://rpg.blue/viewthread.php?tid=123174

魔法盾做法大体同上,只不过更为简单~
二楼的解法思路是正确的,但个人认为应该追加在 sp 不够的情况下,hp 伤害仅减少被 sp 抵销的部分,而不是永远减半:

  def mana_shield_effect
    damage = self.damage >> 1
    sp_minus = [damage, self.sp].min
    self.damage -= sp_minus
    self.sp -= sp_minus
  end
把这个函数的定义放到 Game_Battler 中,然后在上面给出的链接中调用灵魂链接的相同位置处调用魔法盾:
mana_shield_effect if self.state?(魔法盾状态 ID)





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1