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

Project1

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

[已经解决] 如何用变量做出一个血越少,攻击越高的效果?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2552
在线时间
211 小时
注册时间
2018-8-8
帖子
105
跳转到指定楼层
1
发表于 2020-1-26 11:26:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在下打算做一个狂战士人物,奈何无法做出血越少,攻击越高的效果,求各位大佬帮个忙,计划只用变量做出该效果




头像被屏蔽

Lv4.逐梦者 (禁止发言)

梦石
0
星屑
5706
在线时间
922 小时
注册时间
2013-8-29
帖子
1468
2
发表于 2020-1-26 11:49:28 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2552
在线时间
211 小时
注册时间
2018-8-8
帖子
105
3
 楼主| 发表于 2020-1-26 13:19:09 | 只看该作者
本帖最后由 zsqylmmdll 于 2020-1-26 13:21 编辑
chanszeman1018 发表于 2020-1-26 11:49
人物當前血a.hp
人物血上限a.mhp
v/(a.hp/a.mhp)


大佬这个具体怎么用?是用在一个技能上吗?
我在想能不能用变量之类的。做出一个被动技能
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

4
发表于 2020-1-26 20:49:07 | 只看该作者


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 之上
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22953
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
5
发表于 2020-1-26 22:12:53 | 只看该作者
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
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2604
在线时间
462 小时
注册时间
2019-6-22
帖子
74
6
发表于 2020-1-27 02:18:10 | 只看该作者
本帖最后由 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编辑】

把升级这茬给忘了……把“狂战士”的攻击力设置成不随等级增长吧。
一介凡人。对大多数事情都有心无力的凡人。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1254
在线时间
70 小时
注册时间
2019-2-12
帖子
98
7
发表于 2020-4-22 15:27:42 | 只看该作者
KB.Driver 发表于 2020-1-26 20:49
class RPG::UsableItem::Damage

  MAX_DMG_RATE = 1 # 最大攻击增幅

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 10:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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