Project1

标题: 如何制作会吸血的武器 [打印本页]

作者: 934421082    时间: 2013-2-26 22:52
标题: 如何制作会吸血的武器
有谁知道RPG Maker XP吸血剑怎么制作?按伤害的百分比回血的武器。
作者: 晴兰    时间: 2013-2-26 23:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小和尚    时间: 2013-2-26 23:20
吸血:当角色或敌人使用该吸血特技时,吸血量 = 总伤害 乘以 吸血 百分比/100

用用下面这个脚本吧
http://rpg.blue/forum.php?mod=viewthread&tid=285921
作者: 934421082    时间: 2013-2-26 23:22
晴兰 发表于 2013-2-26 23:12
技能的效果是公共事件,然后在公共事件里面用另一个技能来强制攻击,同时自己回复HP ...

不知道是我理解错了还是怎样。。我是要做1个吸血的武器而不是吸血的技能。
作者: 小和尚    时间: 2013-2-27 13:26
934421082 发表于 2013-2-26 23:22
不知道是我理解错了还是怎样。。我是要做1个吸血的武器而不是吸血的技能。 ...

我发的那个里面是通过状态达到吸血效果 所以你可以把武器上附加该状态 试一试= = 如果不行的话再问....
作者: 芯☆淡茹水    时间: 2013-2-27 13:59
    把脚本修改过,具体设置看脚本里
  1. #==============================================================================
  2. #★【吸血】★   
  3. #------------------------------------------------------------------------------
  4. #   by  芯☆淡茹水
  5. #------------------------------------------------------------------------------
  6. #    复制脚本,插入到 main 前。
  7. #------------------------------------------------------------------------------
  8. #        把想要有吸血功能的武器附加上以下设置的状态 ID 即可 。
  9. #     状态设置为 不可抵抗  。
  10. #     技能同上。
  11. #==============================================================================
  12. #◆ 设置项:
  13. #------------------------------------------------------------------------------
  14. STATE_ID = 10         # 吸血状态 ID 。
  15. RECOVER_HP = 50        # 吸的 HP 量为总伤害的百分比。
  16. #==============================================================================
  17. class Game_Battler
  18.   #---------------------------------------------------------------------------
  19.   def attack_effect(attacker)
  20.     self.critical = false
  21.     hit_result = (rand(100) < attacker.hit)
  22.     if hit_result == true
  23.       atk = [attacker.atk - self.pdef / 2, 0].max
  24.       self.damage = atk * (20 + attacker.str) / 20
  25.       self.damage *= elements_correct(attacker.element_set)
  26.       self.damage /= 100
  27.       if self.damage > 0
  28.         if rand(100) < 4 * attacker.dex / self.agi
  29.           self.damage *= 2
  30.           self.critical = true
  31.         end
  32.         if self.guarding?
  33.           self.damage /= 2
  34.         end
  35.       end
  36.       if self.damage.abs > 0
  37.         amp = [self.damage.abs * 15 / 100, 1].max
  38.         self.damage += rand(amp+1) + rand(amp+1) - amp
  39.       end
  40.       eva = 8 * self.agi / attacker.dex + self.eva
  41.       hit = self.damage < 0 ? 100 : 100 - eva
  42.       hit = self.cant_evade? ? 100 : hit
  43.       hit_result = (rand(100) < hit)
  44.     end
  45.     if hit_result == true
  46.       remove_states_shock
  47.       if states.include?(STATE_ID)
  48.         attacker.hp += self.damage * RECOVER_HP / 100
  49.         self.hp -= self.damage
  50.         remove_state(STATE_ID)
  51.       else
  52.        self.hp -= self.damage
  53.       end
  54.       @state_changed = false
  55.       states_plus(attacker.plus_state_set)
  56.       states_minus(attacker.minus_state_set)
  57.     else
  58.       self.damage = "Miss"
  59.       self.critical = false
  60.     end
  61.     return true
  62.   end
  63.   #----------------------------------------------------------------------------
  64.   def skill_effect(user, skill)
  65.     self.critical = false
  66.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  67.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  68.       return false
  69.     end
  70.     effective = false
  71.     effective |= skill.common_event_id > 0
  72.     hit = skill.hit
  73.     if skill.atk_f > 0
  74.       hit *= user.hit / 100
  75.     end
  76.     hit_result = (rand(100) < hit)
  77.     effective |= hit < 100
  78.     if hit_result == true
  79.       power = skill.power + user.atk * skill.atk_f / 100
  80.       if power > 0
  81.         power -= self.pdef * skill.pdef_f / 200
  82.         power -= self.mdef * skill.mdef_f / 200
  83.         power = [power, 0].max
  84.       end
  85.       rate = 20
  86.       rate += (user.str * skill.str_f / 100)
  87.       rate += (user.dex * skill.dex_f / 100)
  88.       rate += (user.agi * skill.agi_f / 100)
  89.       rate += (user.int * skill.int_f / 100)
  90.       self.damage = power * rate / 20
  91.       self.damage *= elements_correct(skill.element_set)
  92.       self.damage /= 100
  93.       if self.damage > 0
  94.         if self.guarding?
  95.           self.damage /= 2
  96.         end
  97.       end
  98.       if skill.variance > 0 and self.damage.abs > 0
  99.         amp = [self.damage.abs * skill.variance / 100, 1].max
  100.         self.damage += rand(amp+1) + rand(amp+1) - amp
  101.       end
  102.       eva = 8 * self.agi / user.dex + self.eva
  103.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  104.       hit = self.cant_evade? ? 100 : hit
  105.       hit_result = (rand(100) < hit)
  106.       effective |= hit < 100
  107.     end
  108.     if hit_result == true
  109.       if skill.power != 0 and skill.atk_f > 0
  110.         remove_states_shock
  111.         effective = true
  112.       end
  113.       last_hp = self.hp
  114.       if states.include?(STATE_ID)
  115.         user.hp += self.damage * RECOVER_HP / 100
  116.         self.hp -= self.damage
  117.         remove_state(STATE_ID)
  118.       else
  119.        self.hp -= self.damage
  120.       end
  121.       effective |= self.hp != last_hp
  122.       @state_changed = false
  123.       effective |= states_plus(skill.plus_state_set)
  124.       effective |= states_minus(skill.minus_state_set)
  125.       if skill.id == SKILLRECOVER_HP_ID
  126.         user.hp += self.damage * RECOVER_HP / 100
  127.       end
  128.       if skill.power == 0
  129.         self.damage = ""
  130.         unless @state_changed
  131.           self.damage = "Miss"
  132.         end
  133.       end
  134.     else
  135.       self.damage = "Miss"
  136.     end
  137.     unless $game_temp.in_battle
  138.       self.damage = nil
  139.     end
  140.     return effective
  141.   end
  142. end
  143. #==============================================================================
复制代码

作者: 934421082    时间: 2013-2-27 14:05
小和尚 发表于 2013-2-27 13:26
我发的那个里面是通过状态达到吸血效果 所以你可以把武器上附加该状态 试一试= = 如果不行的话再问.... ...

怎么给武器上状态。。
作者: 934421082    时间: 2013-2-27 18:07
芯☆淡茹水 发表于 2013-2-27 13:59
把脚本修改过,具体设置看脚本里

{:2_275:}  3Q




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