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

Project1

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

伤害美化脚本问题!

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-4-29
帖子
114
跳转到指定楼层
1
发表于 2008-5-21 16:05:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我是用的是横板战斗系统!为什么我所使用的伤害美化脚本都不可以用呢?插入脚本一运行就出错的!55555555555555哪位高手帮帮忙!

  1. RTAB战斗特效 Ver 1.00

  2. #==============================================================================
  3. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  4. #==============================================================================
  5. # 基础脚本▼▲▼ XRXS19. 特殊効果詰め合わせ DamageEX ver.2 ▼▲▼ built 220920
  6. # by 桜雅 在土 (基本) Tetra-Z   (修正)  http://scriptself.jpn.org/x/XRXS19.htm
  7. #==============================================================================
  8. # ▼▲▼ 战斗特殊效果属性 DamageEX - Plus × RTAB ▼▲▼
  9. #
  10. # 适用环境:RTAB Ver 1.15,其他版本未经测试。
  11. #
  12. # by SixRice  (Plus × RTAB改造)     Ver.1.02 2006/7/21
  13. #==============================================================================
  14. # 伤害计算流程:
  15. # 1  基础伤害计算                   (Game Battler)
  16. # 2  忽视躲闪判定                   (IGNORE_EVADE)
  17. # 3  修正基础伤害                   (HP_RATE,SP_RATE,CRITICAL_HIT,ADD_VARIANCE)
  18. # 4  固定伤害(取消基础)             (FIXDAMAGE)
  19. # 5  追加伤害计算                   (追加伤害效果类)
  20. # -> 基础伤害(或固定伤害)+追加伤害
  21. # =  总伤害
  22. # 6  修正总伤害                     (HP_DAMAGE,SP_DAMAGE)
  23. # -> 最终伤害
  24. # 7  根据最终伤害修正使用者的HP/SP  (HP_DRAIN,SP_DRAIN)
  25. #------------------------------------------------------------------------------
  26. module XRXS19
  27. #------------------------------------------------------------------------------
  28. # 一:特殊伤害效果类的属性名称设定
  29. #------------------------------------------------------------------------------  
  30. # 提示:本类属性名称后请添加自定义数值,然后才会生效。(数据库)
  31. #------------------------------------------------------------------------------  
  32. # 提示:本类属性请设为“不计算属性有效度”(XRXS38. 属性修正计算数限制)。
  33. #------------------------------------------------------------------------------  
  34.   HP_DAMAGE         = "HP伤害"         # 「将本次造成的总伤害的x%修正为HP伤害」
  35.   SP_DAMAGE         = "SP伤害"         # 「将本次造成的总伤害的x%修正为SP伤害」
  36.   HP_DRAIN          = "HP吸收"         # 「根据本次最终伤害的x%修正使用者的HP」
  37.   SP_DRAIN          = "SP吸收"         # 「根据本次最终伤害的x%修正使用者的SP」
  38.   HP_RATE           = "现HP威力"       # 「根据使用者HP/MAXHP修正本次基础伤害」
  39.   SP_RATE           = "现SP威力"       # 「根据使用者SP/MAXSP修正本次基础伤害」
  40.   CRITICAL_HIT      = "必杀"           # 「会心一击」   (武器效果通用化)
  41.   IGNORE_EVADE      = "忽视躲闪"       # 「忽视躲闪」   (特技效果武器化)
  42.   ADD_VARIANCE      = "分散度"         # 「追加分散度」 (特技效果武器化)
  43.   FIXDAMAGE         = "固定伤害"       # 「固定伤害值」 (特技效果武器化)
  44. #------------------------------------------------------------------------------  
  45.   AREA_EXTEND       = "敌方全体"      # 「敌方全体」属性名
  46.   AREA_ACTOR        = "己方单体"      # 「己方单体」属性名
  47.   AREA_ACTOR_ALL    = "己方全体"      # 「己方全体」属性名
  48.   AREA_SELF         = "使用者"        # 「 使用者 」属性名
  49.   AREA_WHOLE        = "全域化"        # 「 全域化 」属性名
  50.   AREA_ENEMY_RAND   = "敌方随机"      # 「敌方随机」属性名
  51.   AREA_ACTOR_RAND   = "己方随机"      # 「己方随机」属性名
  52.   AREA_ALL_RAND     = "对象随机"      # 「对象随机」属性名
  53.   SELF_INCLUSION    = "诸刃"          # 「  诸刃  」属性名
  54.   SELF_EXCLUSION    = "自身以外"      # 「自身以外」(与使用者,己方单体叠加无效)
  55. #------------------------------------------------------------------------------  
  56. # 提示:「诸刃」与「使用者」,「己方单体」,「己方随机」,「对象随机」叠加无效。
  57. #------------------------------------------------------------------------------
  58.   P_STATE           = "发动状态P"      # 「行动时附加自身状态」属性名
  59.   M_STATE           = "发动状态M"      # 「行动时解除自身状态」属性名
  60. #------------------------------------------------------------------------------
  61. # 提示:本类中“固定伤害值”不能和“会心一击”、“追加分散度”叠加;
  62. #       其余效果均可叠加。  
  63. #------------------------------------------------------------------------------
  64. # 提示:在这个版本的战斗特殊效果属性中,
  65. #       除了"会心一击" 、"忽视躲闪"、"追加分散度" 这三个效果以外,
  66. #       其他的效果都支持负数,也就是逆转效果。
  67. #
  68. # 举例:想设置一个“敌我皆伤”的特技,只要附带HP吸收属性,效果设为负数就OK了。
  69. #
  70. # 举例:如果把"HP伤害负数" + "作用范围己方"设置为武器属性,
  71. #       就可以设置出回复己方HP的BT武器来。
  72. #
  73. # 更多创意想法等你来发挥!!
  74. #------------------------------------------------------------------------------
  75. # 二:追加伤害效果类的属性名称设定
  76. #------------------------------------------------------------------------------
  77. # 本类采用的英文单词缩写
  78. # NOW(N) = 当前 ;MAX(M) = 最大;DIF(D) = 差值 ;
  79. # HP(H) = 生命 ;SP(S) = 精力 ;  
  80. # TA(T) = target = 目标方;US(U) = user = 使用者 。
  81. #------------------------------------------------------------------------------
  82.   FIXDAMAGE_NOWHPTA = "NHT"            # 「目标方当前HP比例」属性名
  83.   FIXDAMAGE_MAXHPTA = "MHT"            # 「目标方最大HP比例」属性名
  84.   FIXDAMAGE_DIFHPTA = "DHT"            # 「目标方HP差值比例」属性名
  85.   FIXDAMAGE_NOWHPUS = "NHU"            # 「使用者当前HP比例」属性名  
  86.   FIXDAMAGE_MAXHPUS = "MHU"            # 「使用者最大HP比例」属性名
  87.   FIXDAMAGE_DIFHPUS = "DHU"            # 「使用者HP差值比例」属性名
  88.   FIXDAMAGE_NOWSPTA = "NST"            # 「目标方当前SP比例」属性名
  89.   FIXDAMAGE_MAXSPTA = "MST"            # 「目标方最大SP比例」属性名
  90.   FIXDAMAGE_DIFSPTA = "DST"            # 「目标方SP差值比例」属性名
  91.   FIXDAMAGE_NOWSPUS = "NSU"            # 「使用者当前SP比例」属性名
  92.   FIXDAMAGE_MAXSPUS = "MSU"            # 「使用者最大SP比例」属性名
  93.   FIXDAMAGE_DIFSPUS = "DSU"            # 「使用者SP差值比例」属性名
  94. #------------------------------------------------------------------------------
  95. # 提示:本类所有效果均不能互相叠加,具有唯一性;
  96. #       若特技属性中存在多个本类效果,则取最前面一个效果。  
  97. #------------------------------------------------------------------------------
  98. # 提示:特技附加本类属性的情况下,设特技的威力(pow)为比例基数,
  99. #       武器附加本类属性的情况下,设武器攻击力(atk)为比例基数,
  100. #       因此比例基数请通过数据库来设定。
  101. #------------------------------------------------------------------------------
  102. # 提示:本类所有效果均为普通伤害计算之后的追加伤害;
  103. #       本类所有效果“独立计算属性有效度”,不与其他属性有效度进行混合运算。
  104. #------------------------------------------------------------------------------
  105. # 举例1:某特技属性附加"NHT" ,威力为20,其实际效果为:
  106. #        造成 [目标方][当前][HP][20%] 的等量伤害。
  107. #------------------------------------------------------------------------------
  108. # 举例2:由于威力(power)这个值可以设为负数,
  109. #        因此MHT这个属性也可用于制作比例回复HP的特技效果。
  110. #------------------------------------------------------------------------------
  111. end
  112. #==============================================================================
  113. # ■ Game_BattleAction
  114. #==============================================================================
  115. class Game_BattleAction
  116.   attr_accessor :hp_damage                # 「HP伤害率」    (Numeric)
  117.   attr_accessor :sp_damage                # 「SP伤害率」    (Numeric)
  118.   attr_accessor :hp_drain                 # 「HP吸收率」    (Numeric)
  119.   attr_accessor :sp_drain                 # 「SP吸收率」    (Numeric)
  120.   attr_accessor :hp_rate                  # 「现HP威力」    (true/false)
  121.   attr_accessor :sp_rate                  # 「现SP威力」    (true/false)
  122.   attr_accessor :critical_hit             # 「会心一击」    (Numeric)
  123.   attr_accessor :ignore_evade             # 「忽视躲闪」    (true/false)
  124.   attr_accessor :add_variance             # 「追加分散度」  (Numeric)
  125.   attr_accessor :fix_damage               # 「固定伤害值」 (Numeric)
  126.   attr_accessor :special_damage_kind      # 「追加伤害类」  (Numeric)
  127.   attr_accessor :scope_force              # 「对象强制值」  (Numeric)
  128.   attr_accessor :self_inclusion           # 「诸刃」        (true/false)
  129.   attr_accessor :self_exclusion           # 「自身以外」    (true/false)
  130.   attr_accessor :p_state                  # 「行动时附加自身状态」(Numeric)
  131.   attr_accessor :m_state                  # 「行动时解除自身状态」(Numeric)
  132. #--------------------------------------------------------------------------
  133. # ● clear
  134. #--------------------------------------------------------------------------
  135.   alias xrxs19_clear clear
  136.   def clear
  137.     # recall
  138.     xrxs19_clear
  139.     # 初始化特殊效果
  140.     initialize_xrxs19_special_effect
  141.   end
  142. #--------------------------------------------------------------------------
  143. # ○ 初始化特殊效果
  144. #--------------------------------------------------------------------------
  145.   def initialize_xrxs19_special_effect
  146.     self.hp_damage = 0
  147.     self.sp_damage = 0
  148.     self.hp_drain  = 0
  149.     self.sp_drain  = 0
  150.     self.hp_rate  = false
  151.     self.sp_rate  = false
  152.     self.critical_hit = 0
  153.     self.ignore_evade = false
  154.     self.add_variance = 0
  155.     self.fix_damage = 0
  156.     self.special_damage_kind = 0
  157.     self.p_state = 0
  158.     self.m_state = 0
  159.   end
  160. #--------------------------------------------------------------------------
  161. # ○ 特殊效果设置
  162. #--------------------------------------------------------------------------
  163.   def set_xrxs19_special_effect(set)
  164.     # HP/SP伤害率(数值%)
  165.     self.hp_damage = XRXS.element_percent(set, XRXS19::HP_DAMAGE)
  166.     self.sp_damage = XRXS.element_percent(set, XRXS19::SP_DAMAGE)
  167.     # HP/SP吸收率(数值%)
  168.     self.hp_drain  = XRXS.element_percent(set, XRXS19::HP_DRAIN)
  169.     self.sp_drain  = XRXS.element_percent(set, XRXS19::SP_DRAIN)
  170.     # 现HP/SP威力 (true/false)
  171.     self.hp_rate = XRXS.element_include?(set, XRXS19::HP_RATE)
  172.     self.sp_rate = XRXS.element_include?(set, XRXS19::SP_RATE)
  173.     # 会心一击率(数值%)
  174.     returnar = XRXS.element_check(set, XRXS19::CRITICAL_HIT)
  175.     percent = returnar[0] ? (returnar[2] == 0 ? 100 : returnar[2]) : 0
  176.     self.critical_hit = percent
  177.     # 忽视躲闪 (true/false)
  178.     self.ignore_evade = XRXS.element_include?(set, XRXS19::IGNORE_EVADE)
  179.     # 追加分散度
  180.     self.add_variance = XRXS.element_amount(set, XRXS19::ADD_VARIANCE)
  181.     # 固定伤害值
  182.     self.fix_damage = XRXS.element_amount(set, XRXS19::FIXDAMAGE)
  183.     # 追加伤害类
  184.     self.special_damage_kind =
  185.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_NOWHPTA) ? 1 :
  186.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_MAXHPTA) ? 2 :
  187.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_DIFHPTA) ? 3 :
  188.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_NOWHPUS) ? 4 :
  189.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_MAXHPUS) ? 5 :
  190.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_DIFHPUS) ? 6 :
  191.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_NOWSPTA) ? 7 :
  192.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_MAXSPTA) ? 8 :
  193.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_DIFSPTA) ? 9 :
  194.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_NOWSPUS) ? 10 :
  195.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_MAXSPUS) ? 11 :
  196.       XRXS.element_include?(set, XRXS19::FIXDAMAGE_DIFSPUS) ? 12 :      
  197.       0
  198.     # 行动时附加/解除自身状态(ID)
  199.     self.p_state = XRXS.element_amount(set, XRXS19::P_STATE)
  200.     self.m_state = XRXS.element_amount(set, XRXS19::M_STATE)
  201.   end
  202. #--------------------------------------------------------------------------
  203. # ○ 特殊效果clear
  204. #--------------------------------------------------------------------------
  205.   def clear_xrxs19_special_effect
  206.     self.hp_damage = nil
  207.     self.sp_damage = nil
  208.     self.hp_drain  = nil
  209.     self.sp_drain  = nil
  210.     self.hp_rate  = false
  211.     self.sp_rate  = false
  212.     self.critical_hit = nil
  213.     self.ignore_evade = false
  214.     self.add_variance = nil
  215.     self.fix_damage = nil
  216.     self.special_damage_kind = nil
  217.     self.scope_force = 0
  218.     self.self_exclusion = false
  219.     self.self_inclusion = false
  220.     self.p_state = nil
  221.     self.m_state = nil
  222.   end
  223. #--------------------------------------------------------------------------
  224. # ○ 无效化特殊效果
  225. #--------------------------------------------------------------------------
  226.   def nillize_xrxs19_special_effect
  227.     self.scope_force = nil
  228.     self.self_inclusion = nil
  229.     self.self_exclusion = nil
  230.   end
  231. end  
  232. #==============================================================================
  233. # □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
  234. #==============================================================================
  235. # ■ Game_Battler
  236. #==============================================================================
  237. class Game_Battler
  238. #--------------------------------------------------------------------------
  239. # ○ 公开实例变量
  240. #--------------------------------------------------------------------------
  241.   attr_writer :ignore_evade             #(True为忽视对方躲闪判定)
  242.   attr_writer :hp_rate                  #(True为基础伤害根据HP/MAXHP比例修正)
  243.   attr_writer :sp_rate                  #(True为基础伤害根据SP/MAXSP比例修正)
  244. #--------------------------------------------------------------------------
  245. # ○特殊范围效果设定
  246. #--------------------------------------------------------------------------  
  247.   def set_xrxs19_special_scope(set)
  248. # 范围强制值
  249. self.current_action.scope_force =
  250. XRXS.element_include?(set, XRXS19::AREA_EXTEND)     ? 2 :
  251. XRXS.element_include?(set, XRXS19::AREA_ACTOR)      ? 3 :
  252. XRXS.element_include?(set, XRXS19::AREA_ACTOR_ALL)  ? 4 :
  253. XRXS.element_include?(set, XRXS19::AREA_SELF)       ? 7 :
  254. XRXS.element_include?(set, XRXS19::AREA_WHOLE)      ? 8 :
  255. XRXS.element_include?(set, XRXS19::AREA_ENEMY_RAND) ? 9 :
  256. XRXS.element_include?(set, XRXS19::AREA_ACTOR_RAND) ? 10 :
  257. XRXS.element_include?(set, XRXS19::AREA_ALL_RAND)   ? 11 :
  258. 0
  259. # 诸刃
  260. self.current_action.self_inclusion = XRXS.element_include?(set, XRXS19::SELF_INCLUSION)
  261. # 自身以外
  262. self.current_action.self_exclusion = XRXS.element_include?(set, XRXS19::SELF_EXCLUSION)
  263. end
  264. #--------------------------------------------------------------------------
  265. # ● 新定义状态变化 (+) 发动状态适用
  266. #--------------------------------------------------------------------------
  267.   def pp_state(battler, i)
  268.     # 清除有效标志
  269.     effective = false
  270.       # 无法防御本状态的情况下
  271.       unless self.state_guard?(i)
  272.         # 这个状态如果不是 full 的话就设置有效标志
  273.         effective |= self.state_full?(i) == false
  274.         # 状态为 [不能抵抗] 的情况下
  275.         if $data_states[i].nonresistance
  276.           # 设置状态变化标志
  277.           @state_changed = true
  278.           # 附加状态
  279.           self.state_p[battler].push(i)
  280.         # 这个状态不是 full 的情况下
  281.         elsif self.state_full?(i) == false
  282.           # 将状态的有效度变换为概率、与随机数比较
  283.           if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
  284.             # 设置状态变化标志
  285.             @state_changed = true
  286.             # ステートを付加
  287.             self.add_state(i)
  288.         end
  289.       end
  290.     end
  291.     # 过程结束
  292.     return effective
  293.   end
  294. #--------------------------------------------------------------------------
  295. # ● 可以使用特技的判定
  296. #    skill_id : 特技 ID
  297. #--------------------------------------------------------------------------
  298.   alias xrxs19_skill_can_use? skill_can_use?
  299.   def skill_can_use?(skill_id)
  300.   # 获取特技
  301.   @skill = $data_skills[skill_id]
  302.   # 范围计算
  303.   set_xrxs19_special_scope(self.skill_element_set(@skill))
  304.   $data_skills[skill_id].scope = self.current_action.scope_force if self.current_action.scope_force > 0
  305.     # 范围是「自身以外」的情况
  306.     if self.current_action.self_exclusion
  307.       # 获取战斗者
  308.       battlers = (self.is_a?(Game_Actor) ? $game_party.actors : $game_troop.enemies)
  309.       # 范围的分歧
  310.       case $data_skills[skill_id].scope
  311.       when 3,4,10
  312.         # 获取生存的战斗者数量
  313.         n = 0
  314.         battlers.each {|battler| n += 1 unless battler.dead?}
  315.       when 5,6
  316.         # 获取战斗者总数
  317.         n = battlers.size
  318.       else
  319.         n = 2
  320.       end
  321.       # 对象不存在的情况
  322.       return false if n <= 1
  323.     end
  324.     # recall
  325.     return xrxs19_skill_can_use?(skill_id)
  326.   end   
  327. #--------------------------------------------------------------------------
  328. # ● 判断状态 [无法回避攻击]
  329. #--------------------------------------------------------------------------
  330. alias xrxs19_cant_evade? cant_evade?
  331. def cant_evade?
  332. return true if @ignore_evade
  333. return xrxs19_cant_evade?
  334. end
  335. #--------------------------------------------------------------------------
  336. # ○ 特殊效果设置
  337. #--------------------------------------------------------------------------
  338.   def set_xrxs19_special_effect(set)
  339.     self.current_action.set_xrxs19_special_effect(set)
  340.   end
  341. #--------------------------------------------------------------------------
  342. # ● 应用通常攻击效果
  343. #    attacker : 攻击者 (battler)
  344. #--------------------------------------------------------------------------
  345.   alias xrxs19_attack_effect attack_effect
  346.   def attack_effect(attacker)   
  347.     # 特殊效果:忽视躲闪
  348.       if  attacker.current_action.ignore_evade
  349.       self.ignore_evade = true
  350.     end
  351.     return xrxs19_attack_effect(attacker)
  352.   end
  353. #--------------------------------------------------------------------------
  354. # ● 应用特技效果
  355. #     user  : 特技的使用者 (battler)
  356. #     skill : 特技
  357. #--------------------------------------------------------------------------
  358.   alias xrxs19_skill_effect skill_effect
  359.   def skill_effect(user, skill)
  360.     # 特殊效果:忽视躲闪
  361.     if  user.current_action.ignore_evade
  362.     self.ignore_evade = true
  363.   end
  364.     return xrxs19_skill_effect(user, skill)
  365.   end
  366. #------------------------------------------------------------------------------
  367. # ○ 伤害计算(属于对基本伤害的再处理)
  368. #------------------------------------------------------------------------------
  369. # ● 基础伤害计算请在“应用通常攻击效果” 和“应用特技效果”部分定义  
  370. #------------------------------------------------------------------------------
  371.   alias xrxs19co_x1_damage_effect damage_effect
  372.   def damage_effect(battler, item, skill)
  373.     # recall
  374.     if item == 2 or self.damage[battler].class == String
  375.       return xrxs19co_x1_damage_effect(battler, item)
  376.     end
  377.     # 初始化
  378.     battler.current_action.hp_damage    = 0 if battler.current_action.hp_damage.nil?
  379.     battler.current_action.sp_damage    = 0 if battler.current_action.sp_damage.nil?
  380.     battler.current_action.hp_drain     = 0 if battler.current_action.hp_drain.nil?
  381.     battler.current_action.sp_drain     = 0 if battler.current_action.sp_drain.nil?
  382.     battler.current_action.critical_hit = 0 if battler.current_action.critical_hit.nil?
  383.     battler.current_action.add_variance = 0 if battler.current_action.add_variance.nil?
  384.     battler.current_action.fix_damage   = 0 if battler.current_action.fix_damage.nil?
  385.     battler.current_action.special_damage_kind = 0 if battler.current_action.special_damage_kind.nil?
  386.     battler.current_action.p_state = 0 if battler.current_action.p_state.nil?
  387.     battler.current_action.m_state = 0 if battler.current_action.m_state.nil?
  388.     # 解除忽视躲闪
  389.     self.ignore_evade = false         

  390.     # 基本伤害
  391.     self.damage[battler] = self.damage[battler].to_i

  392.    
  393.     # 特殊效果:追加分散度
  394.   if battler.current_action.add_variance > 0 and self.damage[battler].abs > 0
  395.   amp = [self.damage[battler].abs * battler.current_action.add_variance / 100, 1].max
  396.   self.damage[battler]  += rand(amp+1) + rand(amp+1) - amp
  397. end
  398.     # 特殊效果:现HP威力
  399.     if battler.current_action.hp_rate
  400. self.damage[battler] = self.damage[battler] * battler.hp / battler.maxhp
  401. end
  402.     # 特殊效果:现SP威力
  403.     if battler.current_action.sp_rate
  404. self.damage[battler] = self.damage[battler] * battler.sp / battler.maxsp
  405. end

  406.     # 特殊效果:会心一击
  407.     if battler.current_action.critical_hit > 0
  408.   if self.critical[battler]
  409. self.critical[battler] = false      
  410. self.damage[battler] /= 2           
  411. end
  412.     # critical重新判定
  413.     if rand(100) < battler.current_action.critical_hit
  414. self.critical[battler] = true
  415. self.damage[battler] *= 2
  416. end
  417. end
  418.     # 特殊效果:固定伤害
  419.     if battler.current_action.fix_damage != 0
  420. self.damage[battler] = battler.current_action.fix_damage
  421. self.critical[battler] = false
  422. end
  423. #------------------------------------------------------------------------------
  424. # 特殊效果:追加伤害效果类计算
  425. #------------------------------------------------------------------------------
  426. case battler.current_action.special_damage_kind
  427.     when 1# 「目标方当前HP比例」
  428.       if skill != nil
  429.       self.damage[battler] += self.hp * skill.power / 100
  430.     else
  431.       self.damage[battler] += self.hp * battler.atk / 10000
  432.     end
  433. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_NOWHPTA))/100
  434. when 2# 「目标方最大HP比例」
  435.       if skill != nil
  436.       self.damage[battler] += self.maxhp * skill.power / 100
  437.     else
  438.       self.damage[battler] += self.maxhp * battler.atk / 10000
  439.     end   
  440. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_MAXHPTA))/100
  441.     when 3# 「目标方HP差值比例」
  442.       if skill != nil
  443.       self.damage[battler] += (self.maxhp - self.hp) * skill.power / 100
  444.     else
  445.       self.damage[battler] += (self.maxhp - self.hp) * battler.atk / 10000
  446.     end      
  447. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_DIFHPTA))/100
  448.     when 4# 「使用者当前HP比例」
  449.       if skill != nil
  450.       self.damage[battler] += battler.hp * skill.power / 100
  451.     else
  452.       self.damage[battler] += battler.hp * battler.atk / 10000
  453.     end
  454. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_NOWHPUS))/100   
  455.     when 5# 「使用者最大HP比例」
  456.       if skill != nil
  457.       self.damage[battler] += battler.maxhp * skill.power / 100
  458.     else
  459.       self.damage[battler] += battler.maxhp * battler.atk / 10000
  460.     end
  461. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_MAXHPUS))/100
  462.     when 6# 「使用者HP差值比例」
  463.       if skill != nil
  464.       self.damage[battler] += (battler.maxhp - battler.hp) * skill.power / 100
  465.     else
  466.       self.damage[battler] += (battler.maxhp - battler.hp) * battler.atk / 10000
  467.     end      
  468. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_DIFHPUS))/100   
  469.     when 7# 「目标方当前SP比例」
  470.       if skill != nil
  471.       self.damage[battler] += self.sp * skill.power / 100
  472.     else
  473.       self.damage[battler] += self.sp * battler.atk / 10000
  474.     end
  475. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_NOWSPTA))/100
  476.     when 8# 「目标方最大SP比例」   
  477.       if skill != nil
  478.       self.damage[battler] += self.maxsp * skill.power / 100
  479.     else
  480.       self.damage[battler] += self.maxsp * battler.atk / 10000
  481.     end   
  482. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_MAXSPTA))/100
  483.     when 9# 「目标方SP差值比例」      
  484.       if skill != nil
  485.       self.damage[battler] += (self.maxsp - self.sp) * skill.power / 100
  486.     else
  487.       self.damage[battler] += (self.maxsp - self.sp) * battler.atk / 10000
  488.     end   
  489. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_DIFSPTA))/100
  490.     when 10# 「使用者当前SP比例」  
  491.       if skill != nil
  492.       self.damage[battler] += battler.sp * skill.power / 100
  493.     else
  494.       self.damage[battler] += battler.sp * battler.atk / 10000
  495.     end
  496. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_NOWSPUS))/100
  497.     when 11# 「使用者最大SP比例」     
  498.       if skill != nil
  499.       self.damage[battler] += battler.maxsp * skill.power / 100
  500.     else
  501.       self.damage[battler] += battler.maxsp * battler.atk / 10000
  502.     end
  503. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_MAXSPUS))/100
  504.     when 12# 「使用者SP差值比例」   
  505.       if skill != nil
  506.       self.damage[battler] += (battler.maxsp - battler.sp) * skill.power / 100
  507.     else
  508.       self.damage[battler] += (battler.maxsp - battler.sp) * battler.atk / 10000
  509.     end  
  510. self.damage[battler] *=self.element_rate(($data_system.elements).index(XRXS19::FIXDAMAGE_DIFSPUS))/100
  511. end
  512. #------------------------------------------------------------------------------
  513.     # 特殊效果:HP伤害率
  514.   if battler.current_action.hp_damage != 0 and battler.current_action.sp_damage == 0
  515. self.damage[battler] = self.damage[battler] * battler.current_action.hp_damage / 100
  516. end
  517.     # 特殊效果:SP伤害率
  518.   if battler.current_action.sp_damage != 0
  519. self.damage_sp[battler] = self.damage[battler] * battler.current_action.sp_damage / 100
  520. self.damage_sp[battler] = self.sp if self.damage_sp[battler] > self.sp
  521. self.damage_sp[battler] = "" if self.sp == 0
  522. self.sp      -= self.damage_sp[battler] if self.damage_sp[battler] != ""
  523.   if battler.current_action.hp_damage != 0 # 特殊效果:HP伤害率
  524. self.damage[battler] = self.damage[battler] * battler.current_action.hp_damage / 100
  525. else
  526. self.damage[battler] = ""
  527. end
  528. end   
  529. #------------------------------------------------------------------------------   
  530. # 特殊效果:HP吸收
  531. if battler.current_action.hp_drain != 0
  532.    battler.damage[battler] = 0 if battler.damage[battler] == nil
  533.    drain_point = -1 * self.damage[battler].to_i * battler.current_action.hp_drain / 100
  534.    battler.damage[battler] += drain_point
  535.    battler.hp -= drain_point
  536. if battler.damage[battler] == 0
  537.    battler.damage[battler] = nil
  538.   end
  539. end
  540. # 特殊效果:SP吸收
  541. if battler.current_action.sp_drain != 0
  542.    battler.damage_sp[battler] = 0 if battler.damage_sp[battler] == nil
  543.    drain_point = -1 * self.damage_sp[battler].to_i * battler.current_action.sp_drain / 100
  544.    battler.damage_sp[battler] += drain_point
  545.    battler.sp -= drain_point
  546.    battler.damage_sp[battler] = drain_point
  547. if battler.damage_sp[battler] == 0
  548.    battler.damage_sp[battler] = nil
  549.   end
  550. end
  551.     # recall
  552.     xrxs19co_x1_damage_effect(battler, item)
  553.   end
  554. end

  555. #==============================================================================
  556. # ■ Scene_Battle
  557. #==============================================================================
  558. class Scene_Battle
  559.   #--------------------------------------------------------------------------
  560.   # ● 主处理
  561.   #--------------------------------------------------------------------------
  562.   alias xrxs19_main main
  563.   def main
  564.     # 清空角色的伤害值
  565.     for actor in $game_party.actors
  566.       actor.damage = nil
  567.     end
  568.     # recall
  569.     xrxs19_main
  570.     # 清空角色的特殊效果设置
  571.     for actor in $game_party.actors
  572.       actor.current_action.clear_xrxs19_special_effect
  573.       actor.current_action.nillize_xrxs19_special_effect
  574.     end
  575.   end

  576. #--------------------------------------------------------------------------
  577. # ● 刷新画面 (主回合步骤 1 : 准备行动)
  578. #--------------------------------------------------------------------------
  579.   alias xrxs19co_x1_update_phase4_step1 update_phase4_step1
  580.   def update_phase4_step1(battler)
  581.     # 清空行动者的伤害值
  582.     battler.damage.clear
  583.     # recall
  584.     xrxs19co_x1_update_phase4_step1(battler)
  585.   end
  586.   
  587. #--------------------------------------------------------------------------
  588. # ● 刷新画面 (主回合步骤 2 : 开始行动)
  589. #--------------------------------------------------------------------------
  590.   alias xrxs19_update_phase4_step2 update_phase4_step2
  591.   def update_phase4_step2(battler)
  592.     # 清空行动者的伤害值
  593.     battler.damage.clear
  594.     # recall
  595.     xrxs19_update_phase4_step2(battler)   
  596.   end
  597.   
  598. #--------------------------------------------------------------------------
  599. # ● 生成基本行动结果
  600. #--------------------------------------------------------------------------
  601.   alias xrxs19_make_basic_action_result make_basic_action_result
  602.    def make_basic_action_result(battler)
  603.     # 攻击的情况
  604.     if battler.current_action.basic == 0
  605.       # 获取行动者武器附加的战斗特效
  606.       if battler.is_a?(Game_Actor)
  607.         battler.set_xrxs19_special_effect(battler.equip_element_set)
  608.       # 行动时附加自身状态
  609.         if battler.current_action.p_state > 0
  610.         battler.pp_state(battler,battler.current_action.p_state)
  611.       end
  612.       # 行动时解除自身状态
  613.       if battler.current_action.m_state > 0
  614.         battler.remove_state(battler.current_action.m_state)
  615.       end
  616.       end
  617. end
  618.     # recall
  619.     xrxs19_make_basic_action_result(battler)
  620.   end
  621.   
  622. #--------------------------------------------------------------------------
  623. # ● 生成特技行动结果
  624. #--------------------------------------------------------------------------
  625.   alias xrxs19_make_skill_action_result make_skill_action_result
  626.     def make_skill_action_result(battler, plus_id)
  627.     # 获取特技
  628.     @skill = $data_skills[battler.current_action.skill_id + plus_id]
  629.     # 获取行动者特技附加的战斗特效
  630.     battler.set_xrxs19_special_effect(battler.skill_element_set(@skill))
  631.     # 行动时附加自身状态
  632.           if battler.current_action.p_state > 0
  633.         battler.pp_state(battler,battler.current_action.p_state)
  634.       end
  635.     # 行动时解除自身状态  
  636.       if battler.current_action.m_state > 0
  637.         battler.remove_state(battler.current_action.m_state)
  638.       end
  639.     # recall
  640.     xrxs19_make_skill_action_result(battler, plus_id)
  641.   end
  642. #--------------------------------------------------------------------------
  643. # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  644. #--------------------------------------------------------------------------
  645.   alias xrxs19_update_phase4_step5 update_phase4_step5
  646.   def update_phase4_step5(battler)
  647.     # recall
  648.     xrxs19_update_phase4_step5(battler)
  649.     # 行动者伤害表示(HP/SP吸收的表示用)
  650.     if battler.damage[battler] != nil or
  651.        battler.damage_sp[battler] != nil
  652.        battler.damage_pop[battler] = true
  653.     # 行动者状态栏刷新
  654.       status_refresh(battler)
  655.     end
  656.   end
  657. end
  658. #==============================================================================
  659. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  660. #==============================================================================
复制代码


这个和下面回复的那个同时使用!

此贴于 2008-5-27 12:57:39 被版主禾西提醒,请楼主看到后对本贴做出回应。
版务信息:版主帮忙结贴~
遇到喜欢的东西就要去做!喜欢魔卡少女樱,所以喜欢她的所有,也喜欢自己为她做的游戏!喜欢的人一起来吧!(QQ:302157370)
头像被屏蔽

Lv1.梦旅人 (禁止发言)

【剑帝】

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-5-19
帖子
364
2
发表于 2008-5-21 20:04:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-4-29
帖子
114
3
 楼主| 发表于 2008-5-21 20:27:49 | 只看该作者
伤害美化脚本!用了就错误!
只要修改伤害数值美化就可以了!其他的慢慢来!
遇到喜欢的东西就要去做!喜欢魔卡少女樱,所以喜欢她的所有,也喜欢自己为她做的游戏!喜欢的人一起来吧!(QQ:302157370)
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

【剑帝】

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-5-19
帖子
364
4
发表于 2008-5-21 21:38:39 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
17 小时
注册时间
2007-8-10
帖子
170
5
发表于 2008-5-21 22:19:04 | 只看该作者
把伤害脚本放到所有脚本的顶部看看.
再不行就是你脚本与该脚本不相容,或该脚本可能有错.
……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-4-29
帖子
114
6
 楼主| 发表于 2008-5-22 01:43:10 | 只看该作者
RTAB伤害美化 Ver 1.02
# ダメージ表示改造(RTAB用) ver 1.02
# 配布元・サポートURL
# http://members.jcom.home.ne.jp/cogwheel/

class Scene_Battle
  alias :atb_setup_original :atb_setup
  def atb_setup
    for path in ["num", "critical", "miss", "levelup", "newskill", "learning"]
      RPG::Cache.numeric(path)
    end
    atb_setup_original
  end
end

module RPG
  class Sprite < ::Sprite
    WIDTH = 18                  # 文字幅
    HEIGHT = 20                 # クリティカルの文字・高さ
    def damage(value, critical, type = 0)
      if value.is_a?(Numeric)
        damage_string = value.abs.to_s
      else
        damage_string = value.to_s
      end
      if value.is_a?(Numeric) and value >= 0
        if type == 0
          if critical
            d_bitmap = draw_damage(value, 1)
          else
            d_bitmap = draw_damage(value, 0)
          end
        else
          d_bitmap = draw_damage(value, 2)
        end
      else
        if type == 0
          d_bitmap = draw_damage(value, 3)
        else
          d_bitmap = draw_damage(value, 4)
        end
      end
      if type == 2
        d_bitmap = draw_damage(value, 5)
      end
      num = @_damage.size
      if type != 2
        @_damage.push([::Sprite.new, 40, 0, rand(40) - 20, rand(30) + 50])
      else
        @_damage.push([::Sprite.new, 40, 0, rand(20) - 10, rand(20) + 60])
      end
      @_damage[num][0].bitmap = d_bitmap
      @_damage[num][0].ox = d_bitmap.width / 2
      @_damage[num][0].oy = d_bitmap.height / 2
      if self.battler.is_a?(Game_Actor)
        @_damage[num][0].ox = d_bitmap.width / 2 + 200
        @_damage[num][0].x = self.x + self.viewport.ox        
        @_damage[num][0].y = self.y - self.oy / 2
      else
        @_damage[num][0].x = self.x + self.viewport.rect.x -
                            self.ox + self.src_rect.width / 2
        @_damage[num][0].y = self.y - self.oy * self.zoom_y / 2 +
                            self.viewport.rect.y
        @_damage[num][0].zoom_x = self.zoom_x
        @_damage[num][0].zoom_y = self.zoom_y
        @_damage[num][0].z = 3000
      end
    end
    def draw_damage(value, element)
      width = 0
      if value.is_a?(Numeric)
        value = value.abs
        fig = value.to_s.size - 1
        file = RPG::Cache.numeric("num")
        d_width = WIDTH * fig + file.rect.width / 10
        if element == 1
          critical = RPG::Cache.numeric("critical")
          d_width = [d_width, critical.rect.width].max
          d_bitmap = Bitmap.new(d_width+36, HEIGHT + file.rect.height / 5)
          d_x = 0#(width - critical.rect.width / 10) / 2
          d_bitmap.blt(d_x+fig*(fig/1.6), 0, critical, critical.rect)
         # 会心一击表现效果强化
          Audio.se_play("Audio/SE/"+"Clip10",100,100)
      $game_screen.start_flash(Color.new(255,255,255),10)
       $game_screen.start_shake(3,9,10)
        else
          d_bitmap = Bitmap.new(d_width, HEIGHT + file.rect.height / 5)
        end
        d_x = ((d_width) - (WIDTH * fig + file.rect.width / 10)) / 2
        while fig >= 0
          d_bitmap.blt(d_x, HEIGHT, file, Rect.new((value / (10 ** fig)) *
            file.rect.width / 10, element * file.rect.height / 5,
            file.rect.width / 10, file.rect.height / 5))
          d_x += WIDTH
          value %= 10 ** fig
          fig -= 1
        end
      else
        case value
        when "Miss"
          file = RPG::Cache.numeric("miss")
        when "等级提升!"
          file = RPG::Cache.numeric("levelup")
        when "New Skill!"
          file = RPG::Cache.numeric("newskill")
        when "Learning!"
          file = RPG::Cache.numeric("learning")
        else
          return Bitmap.new(1, 1)
        end
        d_bitmap = file
      end
      return d_bitmap
    end
  end
  module Cache
    def self.numeric(filename)
      self.load_bitmap("Graphics/String/", filename)
    end
  end
end
遇到喜欢的东西就要去做!喜欢魔卡少女樱,所以喜欢她的所有,也喜欢自己为她做的游戏!喜欢的人一起来吧!(QQ:302157370)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-4-29
帖子
114
7
 楼主| 发表于 2008-5-22 01:50:27 | 只看该作者
彩虹神剑(伤害分段显示)
运行后

168条       quanzhong = animation_process_timing(timing, @_animation_hit,true)

这里有错
遇到喜欢的东西就要去做!喜欢魔卡少女樱,所以喜欢她的所有,也喜欢自己为她做的游戏!喜欢的人一起来吧!(QQ:302157370)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-31 06:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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