Project1

标题: 怎么设置护甲值?用脚本 [打印本页]

作者: 小姐姐一个    时间: 2019-7-21 16:36
标题: 怎么设置护甲值?用脚本
看到这个,可能有些人想错了,我说的护甲值是第二层血量,打个比方,知道王者的吕布吧,他的二技能不是给自己加一些护甲值?没错,说的就是这个!
有大佬会吗,我是萌新
作者: 真の玛娜君    时间: 2019-7-21 18:39
本帖最后由 真の玛娜君 于 2019-7-27 19:33 编辑

我在其他帖子找到的,用法里面有,不过我也不太会用,其中一个用法:状态的备注栏里写:   <护盾>s[1] ? v[1] : 2500</护盾> 就会获得能抵消2500点伤害的护盾值,不同状态应该是可以叠加的,同一状态不会叠加或刷新。另外这个是1号开关未开启时赋予一号变量2500的值。写:<barrier>v[1]</barrier>   是护盾值等于一号变量的值,可以技能附带公共事件更改变量,然后赋予状态,赋予状态一定要在公共事件里做。
  1. #==============================================================================
  2. # ■ 状态附加护盾值 by Calendar99
  3. #------------------------------------------------------------------------------
  4. #  使用方法
  5. #  状态备注中写<barrier>xxx</barrier> xxx为表达式,支持多行
  6. #  barrier也可以换成护盾
  7. #  用battler代表中状态者,s[n]和v[n]分别代表n号开关和变量
  8. #
  9. #  例 <barrier>battler.level * 100</barrier>   # 使用者等级*100
  10. #     <护盾>s[1] ? v[1] : 0</护盾>             # 1号开关开启则1号变量,否则0
  11. #     其他用法参考伤害公式
  12. #==============================================================================
  13. class RPG::State
  14.   TAG = "(?:barrier|护盾)"
  15.   #--------------------------------------------------------------------------
  16.   # ● [追加]护盾的值
  17.   #--------------------------------------------------------------------------
  18.   def barrier_value(user)
  19.     s = $game_switches
  20.     v = $game_variables
  21.     self.note =~ /<#{TAG}>((?:.\s?)+)<\/#{TAG}>/mi ? eval($1) : 0
  22.   end
  23. end

  24. class Game_Battler
  25.   attr_reader :barrier
  26.   #--------------------------------------------------------------------------
  27.   # ● [别名修改]初始化对象
  28.   #--------------------------------------------------------------------------
  29.   alias initialize_for_barrier initialize
  30.   def initialize
  31.     @barrier = 0
  32.     initialize_for_barrier
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● [追加]护盾属性写入
  36.   #--------------------------------------------------------------------------
  37.   def barrier=(x)
  38.     @barrier = (x > 0 ? x : 0)
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● [别名修改]附加新的状态
  42.   #--------------------------------------------------------------------------
  43.   alias add_new_state_for_barrier add_new_state
  44.   def add_new_state(state_id)
  45.     @barrier += $data_states[state_id].barrier_value(self)
  46.     add_new_state_for_barrier(state_id)
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● [别名修改]解除状态
  50.   #--------------------------------------------------------------------------
  51.   alias remove_state_for_barrier remove_state
  52.   def remove_state(state_id)
  53.     @barrier -= $data_states[state_id].barrier_value(self)
  54.     remove_state_for_barrier(state_id)
  55.   end
  56. end

  57. class Game_ActionResult
  58.   attr_reader :barrier_value
  59.   #--------------------------------------------------------------------------
  60.   # ● [别名修改]初始化对象
  61.   #--------------------------------------------------------------------------
  62.   alias initialize_for_barrier initialize
  63.   def initialize(battler)
  64.     @barrier_value = 0
  65.     initialize_for_barrier(battler)
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● [追加]受到护盾影响?
  69.   #--------------------------------------------------------------------------
  70.   def barrier?
  71.     @barrier_value > 0
  72.   end  
  73.   #--------------------------------------------------------------------------
  74.   # ● [别名修改]生成伤害
  75.   #--------------------------------------------------------------------------
  76.   alias make_damage_for_barrier make_damage
  77.   def make_damage(value, item)
  78.     if item.damage.to_hp? && value > 0
  79.       if @battler.barrier >= value
  80.         @battler.barrier -= value
  81.         @barrier_value = value
  82.         value = 0
  83.       else
  84.         value -= @battler.barrier
  85.         @barrier_value = @battler.barrier
  86.         @battler.barrier = 0
  87.       end
  88.     end
  89.     make_damage_for_barrier(value, item)
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● [别名修改]清除伤害值
  93.   #--------------------------------------------------------------------------
  94.   alias clear_damage_values_for_barrier clear_damage_values
  95.   def clear_damage_values
  96.     clear_damage_values_for_barrier
  97.     @barrier_value = 0
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● [追加]获取 HP 护盾的文字
  101.   #--------------------------------------------------------------------------
  102.   def hp_barrier_text
  103.     fmt = "%s吸收了%d点伤害,还剩%s点护盾值"
  104.     sprintf(fmt, @battler.name, @barrier_value, @battler.barrier)
  105.   end
  106. end

  107. class Window_BattleLog
  108.   #--------------------------------------------------------------------------
  109.   # ● [别名修改]显示伤害
  110.   #--------------------------------------------------------------------------
  111.   alias display_damage_for_barrier display_damage
  112.   def display_damage(target, item)
  113.     display_hp_barrier(target, item) if target.result.barrier?
  114.     display_damage_for_barrier(target, item)
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● [追加]显示护盾
  118.   #--------------------------------------------------------------------------
  119.   def display_hp_barrier(target, item)
  120.     add_text(target.result.hp_barrier_text)
  121.     wait
  122.   end
  123. end
复制代码

作者: sdgn    时间: 2019-7-22 17:11
可以參考HP的腳本去增加或改造腳本...不過VA會比XP麻煩一點
作者: 小姐姐一个    时间: 2019-7-27 10:05
谢谢咯

作者: 小姐姐一个    时间: 2019-7-27 10:28
真の玛娜君 发表于 2019-7-21 18:39
我在其他帖子找到的,用法里面有,不过我也不太会用,其中一个用法:状态的备注栏里写:   s[1] ? v[1] : 2500  ...

开始怀疑能不能用到ARPG系统上。。。
作者: 真の玛娜君    时间: 2019-7-27 19:26
小姐姐一个 发表于 2019-7-27 10:28
开始怀疑能不能用到ARPG系统上。。。

有不小的可能性不行
作者: 真の玛娜君    时间: 2019-7-27 19:29
小姐姐一个 发表于 2019-7-27 10:28
开始怀疑能不能用到ARPG系统上。。。

主要看你的ARPG系统匹不匹配了




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