设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1432|回复: 2
打印 上一主题 下一主题

[已经过期] 每次运用脚本都会提示各种错误

[复制链接]

Lv1.梦旅人

梦石
0
星屑
745
在线时间
6 小时
注册时间
2014-8-20
帖子
2
跳转到指定楼层
1
发表于 2014-8-21 00:04:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 RyanBern 于 2014-8-21 14:33 编辑

本人第一次用rmxp制作游戏,想出现吸血技能,在论坛找了好几种代码都会出现各种各样的问题。我是小菜鸟,有没有大神有空指点一二呀~
下面是我用的脚本:
  1. $吸血技能id数组 = [105]


  2. class Scene_Battle
  3.   alias old_main main
  4.   def main
  5.     @drink_blood = 999
  6.     old_main
  7.   end
  8.   alias msar make_skill_action_result
  9.   def make_skill_action_result
  10.     msar
  11.     if $吸血技能id数组.include?(@skill.id)
  12.       temp_hp = 0
  13.       for target in @target_battlers
  14.         temp_hp += target.damage if target.damage.is_a?(Fixnum)
  15.       end
  16.       @active_battler.damage = -temp_hp
  17.       @active_battler.hp += temp_hp
  18.       @target_battlers.push(@active_battler)
  19.       @drink_blood = @target_battlers.index(@active_battler)
  20.     end
  21.   end
  22.   alias ups4 update_phase4_step4
  23.   def update_phase4_step4
  24.     ups4
  25.     @target_battlers[@drink_blood].animation_id = 0 if @target_battlers[@drink_blood] != nil
  26.     @target_battlers[@drink_blood].animation_hit = false if @target_battlers[@drink_blood] != nil
  27.   end
  28. end
  29.     还有另外一个
  30. #==============================================================================
  31. #★【攻击效果】★    《魔法盾,吸血,吸蓝》
  32. #------------------------------------------------------------------------------
  33. #   by  芯☆淡茹水
  34. #------------------------------------------------------------------------------
  35. #(该脚本为简易版,不显示角色因吸血;吸蓝等HP,SP改变而显示的数字。)
  36. #(角色具体的HP;SP改变的值,请看角色的HP;SP血槽。)
  37. #==============================================================================
  38. #◆ 使用方法:
  39. #              复制该脚本,插入到 main 前。
  40. #==============================================================================
  41. #◆ 说明:
  42. #------------------------------------------------------------------------------
  43. #Ⅰ魔法盾:     使用“魔法盾”特技,附加一个“魔法盾”的状态。当角色处于该状态
  44. #        时,受到的总伤害 = hp伤害 + sp伤害。hp,sp的具体伤害百分比,下面有设置。
  45. #
  46. #              当角色 sp = 0 时,自动解除该“魔法盾”状态,受到的伤害全部恢复为
  47. #        hp 伤害。也可在数据库设置该“魔法盾”状态解除的条件。(比如持续几回合)
  48. #------------------------------------------------------------------------------
  49. #Ⅱ吸血:这个不用多介绍,下面有吸血量是总伤害的百分比设置。
  50. #  (百分比的设置:比如设置为 50  也就是 50% 。 攻击敌人的伤害是 100 的话,
  51. #    自身回复 HP 50 ;攻击敌人的伤害是 150 的话,自身回复 HP 75 ;,,,,)
  52. #------------------------------------------------------------------------------
  53. #Ⅲ吸蓝:使用吸蓝特技,被攻击者只减少 SP 。如果被攻击者 SP = 0 。使用吸蓝特技
  54. #        的伤害为 0 ,吸蓝无效。下面有吸蓝量百分比设置。
  55. #==============================================================================
  56. #◆ 设置项:
  57. #------------------------------------------------------------------------------
  58. INT_STATE_ID = 10          #“魔法盾”状态 ID 。
  59. INT_HP = 20                #“魔法盾”状态下 HP 减少的百分比。
  60. INT_SP = 80                #“魔法盾”状态下 SP 减少的百分比。
  61. SKILLRECOVER_HP_ID = 10    # 吸血特技 ID 。
  62. RECOVER_HP = 50            # 吸的 HP 量为总伤害的百分比。
  63. SKILLRECOVER_SP_ID = 11    # 吸蓝特技 ID 。
  64. RECOVER_SP = 50            # 吸收的 SP 量为对方失去 SP 的百分比。
  65. #==============================================================================
  66. class Game_Battler
  67.   #---------------------------------------------------------------------------
  68.   def attack_effect(attacker)
  69.     self.critical = false
  70.     hit_result = (rand(100) < attacker.hit)
  71.     if hit_result == true
  72.       atk = [attacker.atk - self.pdef / 2, 0].max
  73.       self.damage = atk * (20 + attacker.str) / 20
  74.       self.damage *= elements_correct(attacker.element_set)
  75.       self.damage /= 100
  76.       if self.damage > 0
  77.         if rand(100) < 4 * attacker.dex / self.agi
  78.           self.damage *= 2
  79.           self.critical = true
  80.         end
  81.         if self.guarding?
  82.           self.damage /= 2
  83.         end
  84.       end
  85.       if self.damage.abs > 0
  86.         amp = [self.damage.abs * 15 / 100, 1].max
  87.         self.damage += rand(amp+1) + rand(amp+1) - amp
  88.       end
  89.       eva = 8 * self.agi / attacker.dex + self.eva
  90.       hit = self.damage < 0 ? 100 : 100 - eva
  91.       hit = self.cant_evade? ? 100 : hit
  92.       hit_result = (rand(100) < hit)
  93.     end
  94.     if hit_result == true
  95.       remove_states_shock
  96.       if states.include?(INT_STATE_ID)
  97.         if self.sp == 0
  98.           self.hp -= self.damage
  99.           remove_state(INT_STATE_ID)
  100.         else
  101.           self.hp -= self.damage * INT_HP / 100
  102.           self.sp -= self.damage * INT_SP / 100
  103.         end
  104.       else
  105.        self.hp -= self.damage
  106.       end
  107.       @state_changed = false
  108.       states_plus(attacker.plus_state_set)
  109.       states_minus(attacker.minus_state_set)
  110.     else
  111.       self.damage = "Miss"
  112.       self.critical = false
  113.     end
  114.     return true
  115.   end
  116.   #----------------------------------------------------------------------------
  117.   def skill_effect(user, skill)
  118.     self.critical = false
  119.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  120.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  121.       return false
  122.     end
  123.     effective = false
  124.     effective |= skill.common_event_id > 0
  125.     hit = skill.hit
  126.     if skill.atk_f > 0
  127.       hit *= user.hit / 100
  128.     end
  129.     hit_result = (rand(100) < hit)
  130.     effective |= hit < 100
  131.     if hit_result == true
  132.       power = skill.power + user.atk * skill.atk_f / 100
  133.       if power > 0
  134.         power -= self.pdef * skill.pdef_f / 200
  135.         power -= self.mdef * skill.mdef_f / 200
  136.         power = [power, 0].max
  137.       end
  138.       rate = 20
  139.       rate += (user.str * skill.str_f / 100)
  140.       rate += (user.dex * skill.dex_f / 100)
  141.       rate += (user.agi * skill.agi_f / 100)
  142.       rate += (user.int * skill.int_f / 100)
  143.       self.damage = power * rate / 20
  144.       self.damage *= elements_correct(skill.element_set)
  145.       self.damage /= 100
  146.       if self.damage > 0
  147.         if self.guarding?
  148.           self.damage /= 2
  149.         end
  150.       end
  151.       if skill.variance > 0 and self.damage.abs > 0
  152.         amp = [self.damage.abs * skill.variance / 100, 1].max
  153.         self.damage += rand(amp+1) + rand(amp+1) - amp
  154.       end
  155.       eva = 8 * self.agi / user.dex + self.eva
  156.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  157.       hit = self.cant_evade? ? 100 : hit
  158.       hit_result = (rand(100) < hit)
  159.       effective |= hit < 100
  160.     end
  161.     if hit_result == true
  162.       if skill.power != 0 and skill.atk_f > 0
  163.         remove_states_shock
  164.         effective = true
  165.       end
  166.       last_hp = self.hp
  167.       if skill.id == SKILLRECOVER_SP_ID
  168.         if self.sp == 0
  169.           self.damage = 0
  170.           self.hp -= self.damage
  171.         else
  172.           self.sp -= self.damage
  173.           user.sp += self.damage * RECOVER_SP / 100
  174.         end
  175.       else
  176.         if states.include?(INT_STATE_ID)
  177.           if self.sp == 0
  178.             self.hp -= self.damage
  179.             remove_state(INT_STATE_ID)
  180.           else
  181.             self.hp -= self.damage * INT_HP / 100
  182.             self.sp -= self.damage * INT_SP / 100
  183.           end
  184.         else
  185.           self.hp -= self.damage
  186.         end
  187.       end
  188.       effective |= self.hp != last_hp
  189.       @state_changed = false
  190.       effective |= states_plus(skill.plus_state_set)
  191.       effective |= states_minus(skill.minus_state_set)
  192.       if skill.id == SKILLRECOVER_HP_ID
  193.         user.hp += self.damage * RECOVER_HP / 100
  194.       end
  195.       if skill.power == 0
  196.         self.damage = ""
  197.         unless @state_changed
  198.           self.damage = "Miss"
  199.         end
  200.       end
  201.     else
  202.       self.damage = "Miss"
  203.     end
  204.     unless $game_temp.in_battle
  205.       self.damage = nil
  206.     end
  207.     return effective
  208.   end
  209. end
  210. #==============================================================================
复制代码
但是我第一次解除脚本 可能是使用有错误,应该怎么用啊?会报错的

点评

下次发脚本记得用代码框哦~  发表于 2014-8-21 14:33

Lv1.梦旅人

梦石
0
星屑
49
在线时间
200 小时
注册时间
2014-7-17
帖子
410
2
发表于 2014-8-21 07:10:46 | 只看该作者
恩,请问你有105号技能吗?
如果有不如试试这个:
https://rpg.blue/thread-347967-1-1.html
虽然只能有一个吸血技能而且只能恢复一半的血……
不过楼主如果需要我就可以帮你改……

知其然,而不欲知其所以然,耻也!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1743
在线时间
485 小时
注册时间
2006-1-7
帖子
1073
3
发表于 2014-8-21 11:21:50 | 只看该作者
楼主找到的脚本不是完整的。在其他脚本里面有定义 xixue 这个自定义的量
但是你的脚本里没有。所以就出问题了。
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-21 22:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表