Project1

标题: 能力提升叠加效果 [打印本页]

作者: xiaoxiyp    时间: 2014-9-28 20:48
标题: 能力提升叠加效果
设置一个技能,使用后自己魔法攻击+60%这个状态,再次使用后此魔法攻击可继续增加至120%,上限叠加5次。是否可实现?
作者: 3106345123    时间: 2014-9-29 10:58
http://artificialprovidence.web. ... BUFF_DEBUFF_ENH.txt
然后自己设置
(乱码别找我)
作者: 上贺茂润    时间: 2014-9-29 12:27
连续设置五个状态 然后用公共事件
作者: 三途亚梦    时间: 2014-9-30 10:01
本帖最后由 三途亚梦 于 2014-9-30 10:04 编辑

2L给的链接是有墙的日站脚本,你需要翻墙才能看到。
它的效果估计就是把所有能力提升效果分为10个阶段等级,但是只能分为10个阶段,没法按照技能需要进行不同数值的叠加。

你需要的答案思路在3L

设置5个同名的状态,状态效果分别是:
+60%的魔法攻击
+120%的魔法攻击
以此类推设置5个状态。

如果是在技能中添加状态的话我建议在脚本中做,公共事件中要读取技能使用者的信息有些麻烦。
在Game_Battler中大概350行左右找到下面两句语句
  1.   def make_damage_value(user, item)
  2.     value = item.damage.eval(user, self, $game_variables)
复制代码
然后在value = item.damage.eval(user, self, $game_variables)后面添加下面这段内容
其中 "when" 后面的1对应的是你所设置的技能的ID
括号中的数字 26 - 30 就对应你所设置的5个等级的状态(它们是递增的)
  1.   #-------------------技能使用额外效果------------------
  2.      if item.is_a?(RPG::Skill)
  3.       case item.id
  4.        when 1
  5.            if user.state?(26)
  6.              user.add_state(27).to_i && user.remove_state(26).to_i
  7.            else if user.state?(27)
  8.                   user.add_state(28).to_i && user.remove_state(27).to_i
  9.            else if user.state?(28)
  10.                   user.add_state(29).to_i && user.remove_state(28).to_i
  11.            else if user.state?(29)
  12.                   user.add_state(30).to_i && user.remove_state(29).to_i
  13.            else if user.state?(30)
  14.              else user.add_state(26)
  15.            end
  16.            end
  17.            end
  18.            end
  19.          end
  20.        end
  21.      end
  22.   #-----------------------------------------------------
复制代码

作者: chd114    时间: 2014-10-3 11:24
  1. #==============================================================================
  2. # ■ 修改属性设置,允许属性吸收等效果
  3. #------------------------------------------------------------------------------
  4. #   RPG VX Ace默认不允许属性被吸收,最低的属性有效度为0,最高为10倍(可叠乘)
  5. #  本脚本的原理:将属性设置的叠乘计算改为叠加计算,从而允许属性吸收效果
  6. #   数据库设置:
  7. #     1.当只有1条属性抵抗起作用时,和原来的算法相同
  8. #     2.当有多条属性抵抗起作用时,其效果倍率各自减100%后叠加计算,
  9. #       如“[冰]*200”和“[冰]*250”叠加的效果为“[冰]*350”
  10. #       如“[冰]*150”和“[冰]*50”叠加的效果为“[冰]*100”
  11. #     3.现在“某属性*0”的效果为倍率-1,所以如果要实现属性100%吸收,可如下设置
  12. #       “[冰]*0”和“[冰]*0”叠加,效果即为倍率减2,即“[冰]*-100”
  13. #       类似的,若“[冰]*0”三重叠加,效果即为倍率减3,即“[冰]*-200”,双倍吸收
  14. #     4.如果要实现属性X%吸收(X<100),可如下设置
  15. #       “[冰]*0”和“[冰]*(100-x)”叠加
  16. #==============================================================================

  17. class Game_BattlerBase
  18.   #--------------------------------------------------------------------------
  19.   # ● 计算属性抵抗
  20.   #--------------------------------------------------------------------------
  21.   def features_elem(code, id)
  22.     features_with_id(code, id).inject(1.0) {|r, ft| r += ft.value - 1}
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 获取属性抗性
  26.   #--------------------------------------------------------------------------
  27.   def element_rate(element_id)
  28.     features_elem(FEATURE_ELEMENT_RATE, element_id)
  29.   end
  30. end

  31. class Game_Battler
  32.   #--------------------------------------------------------------------------
  33.   # ● 获取属性的最大修正值,返回所有属性中最有效的一个
  34.   #     elements : 属性 ID 数组
  35.   #--------------------------------------------------------------------------
  36.   def elements_max_rate(elements)
  37.     elements.inject([]) {|r, i| r.push(element_rate(i)) }.max
  38.   end  
  39. end

  40. module Vocab

  41.   ActorDrainRev = "%s逆向吸取了%s点%s!"
  42.   EnemyDrainRev = "%s逆向吸取了%s点%s!"

  43. end

  44. class Game_ActionResult
  45.   alias sailcat_hp_damage_text hp_damage_text
  46.   alias sailcat_mp_damage_text mp_damage_text
  47.   #--------------------------------------------------------------------------
  48.   # ● 获取 HP 伤害的文字
  49.   #--------------------------------------------------------------------------
  50.   def hp_damage_text
  51.     if @hp_drain < 0
  52.       fmt = @battler.actor? ? Vocab::ActorDrainRev : Vocab::EnemyDrainRev
  53.       sprintf(fmt, @battler.name, -@hp_drain, Vocab::hp)
  54.     else
  55.       sailcat_hp_damage_text
  56.     end
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 获取 MP 伤害的文字
  60.   #--------------------------------------------------------------------------
  61.   def mp_damage_text
  62.     if @mp_drain < 0
  63.       fmt = @battler.actor? ? Vocab::ActorDrainRev : Vocab::EnemyDrainRev
  64.       sprintf(fmt, @battler.name, -@mp_drain, Vocab::mp)
  65.     else
  66.       sailcat_mp_damage_text
  67.     end
  68.   end
  69. end
复制代码
我不确定这个是不是你要的那种···




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