Project1

标题: 如何用变量做出一个血越少,攻击越高的效果? [打印本页]

作者: zsqylmmdll    时间: 2020-1-26 11:26
标题: 如何用变量做出一个血越少,攻击越高的效果?
在下打算做一个狂战士人物,奈何无法做出血越少,攻击越高的效果,求各位大佬帮个忙,计划只用变量做出该效果





作者: chanszeman1018    时间: 2020-1-26 11:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: zsqylmmdll    时间: 2020-1-26 13:19
本帖最后由 zsqylmmdll 于 2020-1-26 13:21 编辑
chanszeman1018 发表于 2020-1-26 11:49
人物當前血a.hp
人物血上限a.mhp
v/(a.hp/a.mhp)


大佬这个具体怎么用?是用在一个技能上吗?
我在想能不能用变量之类的。做出一个被动技能
作者: KB.Driver    时间: 2020-1-26 20:49


RUBY 代码复制
  1. class RPG::UsableItem::Damage
  2.  
  3.   MAX_DMG_RATE = 1 # 最大攻击增幅
  4.  
  5.   BERSERKER_CLASS_ID = 1 # 狂战士职业id
  6.  
  7.   alias eval_for_berserker eval
  8.   def eval(a, b, v)
  9.     if a.actor? && a.class.id == BERSERKER_CLASS_ID
  10.       rate = 1 + MAX_DMG_RATE * (1 - (a.hp - 1) / a.mhp.to_f)
  11.       f = @formula.gsub("a.atk", "(a.atk * #{rate})")
  12.       yield_formula(f){ eval_for_berserker(a, b, v) }
  13.     else
  14.       eval_for_berserker(a, b, v)
  15.     end
  16.   end
  17.  
  18.   def yield_formula(formula)
  19.     original_formula = @formula
  20.     @formula = formula
  21.     result = yield
  22.     @formula = original_formula
  23.     result
  24.   end
  25.  
  26. end


插入 ▼ 插件脚本 之下、 Main 之上
作者: tseyik    时间: 2020-1-26 22:12
https://rpg.blue/thread-479521-1-1.html
用傷害式
MV的,可參考一下
用普通傷害計算式就可以了
瀕死威力上升
a.atk * 4 *(a.hp <= a.mhp / 5 ? 2 : 1) - b.def * 2
上記計算式是HP低於20%時、攻擊威力*2。

mhp         最大 HP
hp         現在的HP
你用一件計算式計算出現存的HP和MHP的比率替代()中的就可

如HP越高攻撃越高,
(a.atk * 4 - b.def * 2)*a.hp/a.mhp
()内為最高値
HP越小攻撃越高,
(a.atk * 4 - b.def * 2)*a.mhp/a.hp
()内為最低値;(MHP1000/HP1時為1000倍)
(a.atk * 4 - b.def * 2)*([100*a.mhp/a.hp,400].min)/100 ,這就限定在4倍内

參考
http://amamiya0401.blog.fc2.com/blog-entry-9.htmlVXACE
http://ktnhmv.jugem.jp/?eid=9
http://tm.lucky-duet.com/viewtopic.php?f=56&t=647
作者: kunikai    时间: 2020-1-27 02:18
本帖最后由 kunikai 于 2020-1-27 10:36 编辑

介绍两种原理相当简单,操作难度也不高的方法。

简单的方法一(推荐):

①用Taroxd大大的脚本“普通攻防技能的扩展”(需要前置 “Taroxd 基础设置”)(https://taroxd.github.io/rgss/rules/),
   将“狂战士”的普通攻击设定成某个“伪装成普通攻击的技能”。如下图,在“狂战士角色”或“狂战士职业”备注栏写上<attackskill 233>,
   并复制“攻击”至233号技能。


②改写233号技能的公式。

    假设“攻击”的计算公式为a.atk-b.def,
    那么至少就有下面几种改写的方法实现“血量越少伤害越高”。
  (是的,我在避重就轻。)

    为了方便说明,设“狂战士”血量为满时造成的伤害最低,取100;“狂战士”血量上限取600。
    设原伤害公式为(a.atk-b.def)。

  (1)  (a.atk-b.def)*(2-(10*a.hp*10/a.mhp/100))  “狂战士”的血量每减少1%,攻击就多造成1%的伤害。此条件下理论最高伤害为200。
         为了保险,这个公式里加了很多括号。将数值乘十是个人爱好,一般用来避免小数被约去。

  (2)  (a.atk+((a.mhp-a.hp)*0.2)-b.def)   “狂战士”的血量每少于其血量上限5点,攻击就多造成1点的伤害。此条件下理论最高伤害为220。
         同样加了很多括号。

  (3)  (a.atk-b.def)*(0.9+((1-(10*a.hp*10/a.mhp/100))*0.2)) “狂战士”的血量由100%→0%时,技能伤害由90%→110%。此条件下理论最高伤害为110。
        括号已经无法直视了。


……什么?你一定要变量?
那好吧。

简单的方法二:

这个公共事件,放在每一个可能会让“狂战士”的血量发生变化的技能里。


每个敌群里这样设置。(希望你的狂战士不会在战斗前就被附加伤害降低的状态)


每个战斗结束后,触发一次这个公共事件重置“狂战士”的攻击力。(希望你的狂战士不会将攻击加成状态保留到战斗结束)


……战斗结束后?

是的。暗雷战斗结束后也触发公共事件的话,需要脚本。需要脚本。(站内搜索“战斗结束 事件”)
但不管怎么说,你用变量做出了这个效果。大不了就不做暗雷了嘛。

穷其道者,归处亦同。


对了,做一个假的被动技能吧;)


(真的用方法二的话,如果你使用了战斗中更换装备的脚本,事情就麻烦了——但可以用条件分歧解决。)
(如果使用了装备强化脚本就更麻烦了——天呐。)


【1.27 10:34编辑】

把升级这茬给忘了……把“狂战士”的攻击力设置成不随等级增长吧。

作者: 小姐姐一个    时间: 2020-4-22 15:27
KB.Driver 发表于 2020-1-26 20:49
class RPG::UsableItem::Damage

  MAX_DMG_RATE = 1 # 最大攻击增幅

插个题外话,可以用这个脚本改个血越少,生命恢复越快吗=。=
https://rpg.blue/thread-481380-1-1.html




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