原网址:
https://forums.rpgmakerweb.com/i ... formulas-101.81905/(点开这个评论也有帮助)
目前只是翻译品论去的暂未合集到里面可以的话直接去看 公式的
标点符号都是大写下面应为是机翻自动是小写但是有些我改回来了
但是不知道有没遗漏的如果你们复制使用要注意(妈耶眼睛瞎了)
下面是翻译内容
请注意:
关于这些公式可以执行的不同操作的讨论已经开始,因此请直接将那些评论和问题提交给相应的主题。
https://forums.rpgmakerweb.com/i ... eas-and-help.47099/
指向事件命令等效脚本列表的链接
https://forums.rpgmakerweb.com /index.php?threads/rpg-maker-mv-script-call-list.46456/
伤害公式101
MV版
您可能想知道如何使技能对处于状态的敌人造成更大的伤害,或者如果玩家拥有陈述,或恰好是敌方生命值的一半。等等。
所有这些以及更多操作都可以通过自定义损坏公式完成。
基础知识:
类型-设置公式会破坏或修复哪些内容。
无-不会,不会造成任何损坏。
HP伤害-HP将会受到伤害
MP伤害-MP将受到伤害
HP恢复-HP将被恢复
MP恢复-MP将被恢复
HP消耗-对敌人造成伤害HP并为攻击者恢复那么多的HP
MP消耗-对敌人造成伤害MP并为攻击者恢复那么多的MP
Element-设置要使用的元素。普通攻击-意味着将使用与武器相同的元素。
差异-损害如何波动。例如,如果技能公式说造成100点伤害,并且变异为20%,则该技能将造成80至120点伤害。
批判的-可以重击技能,造成的伤害提高300%。
现在,真正有趣的部分-公式!
它决定了对手会受到多少伤害或盟军可以治愈。
让我们剖析RPG Maker MV随附的基本公式之一
-Fire 100 + a.mat * 2-b.mdf * 2
像a和b这样的东西是什么意思?
a-攻击者
b-防御者
因此,如果“演员眼镜”向史莱姆身上施火。a是眼镜,b是史莱姆。
表示将“ Glass mat”(眼镜攻击)参数取两倍,然后减去“ Slime”的mdf(“ Magic Defense”)参数乘以两倍,然后在公式开头将其加到100。
例如,Glass具有100垫,而Slime具有20 mdf。如果我们使用这些数字转换公式,我们将得到-100 + 100 * 2-20 * 2,经过计算,我们看到,使用这些参数,如果没有方差,则火会造成260点伤害。
但是,公式中只有最后一个数字会造成伤害。如果您有2行公式。(分号;告诉该程序行在何处结束),
例如a.atk; a.atk * 2
仅会计算a.atk * 2的损坏。
公式中除了a和b之外还有更多字母吗?
是的。有变量。像这样使用:v [ID]。ID-变量的索引。
因此,您可以掌握一项技能,使变量越高越强。
例如v [10] * 2-b.def * 3
有没有办法使技巧更加复杂,例如,如果某个变量超过100,会造成额外的损失吗?
是的,在这种情况下,我们可以使用if else语句。
if else语句的外观:
代码:
代码(文本):
if(语句)
{
Formula1;
}
else
{
Formula2;
}
但是,如何将其写入伤害公式?
它只有一条线!
只需将所有内容一起编写即可!
代码(文本):
if(statement){Formula1; } else {Formula2; }
例如:
代码(文本):
if(v [10]> 100){a.atk * 4-b.def * 2} else {a.atk * 2-b.def * 2}
可以缩短为如果您仅使用1行公式。
代码(文字):
if(语句)
公式1;
其他
公式2;
例如:
代码(文字):
if (v [10]> 100){a.atk * 4-b.def * 2} else {a.atk * 2-b.def * 2}
而且您可以使用三元运算符(我最喜欢的一个)进一步缩短它:
statement?公式1:公式2;
例如:
代码(文字):
v [10]> 100?a.atk * 4-b.def * 2:a.atk * 2-b.def * 2;
语句的符号:
>大于
=大于或等于
100?1000:100;(如果变量10大于100,将造成1000伤害,否则只会造成100)
v [10] == 100?1000:100;(如果变量为100或更大,它将造成1000伤害,否则只会造成100)
v [10] 50 && v [11]> == 25?1000:100;(如果变量10大于50,变量11为25或更大,则会造成1000点伤害,否则只会造成100点伤害)
v [10]> 50 || v [11]> 50吗?1000:100;(如果变量10大于50或变量11大于50,那么它将造成1000伤害,只会造成100伤害)
v [10]!== 100?1000:100;(如果变量10不等于100,它将造成1000伤害,否则只会造成100)
对于a和b使用的参数呢?
以下是它们的完整列表:
当前:(所有整数,例如:900、999、11)
级别-当前级别(默认情况下仅是Actor)
hp-当前hp
mp-当前mp
tp-当前tp
参数:(所有平坦的数字,例如:1337,7331,156)
mhp-最大hp
mmp-最大MP
hp-当前生命值
mp-当前魔法值
atk-攻击
def-防御
mat-魔法攻击
mdf- 魔法防御
agi-敏捷度
luk-运气
XParams:
hit-命中率
eva-闪避率
cri -临界率
cev-临界逃逸率
mev-魔法逃逸率
mrf-魔法反射率
cnt-反击率
hrg-HP再生率
mrg-MP再生率
trg-TP再生率
SParams:(所有小数点均表示百分数,例如1.0、0.5,
0.75、2.44分别为100%,50%,75%,244%)
tgr-目标率
grd-防护作用率
rec-恢复作用率
pha-药理学
mcr-MP成本率
tcr-TP收费率
pdr-物理伤害率
mdr-魔法伤害率
fdr-地面伤害率
exr-经验率
如何更改HP / MP / TP?
gainHp(value) - 恢复HP-通过值(值:value)
gainMp(value) - 恢复MP-通过值
gainTp(value) - 恢复TP-通过值
setHp(hp) - 将HP设置为值
setMp(mp) - 将MP设置为值
setTp(tp) - 将TP设置为值
例如a.setHp(a.mhp)
例如,a.setHp(a.hp + 100)
clearTp()-将TP设置为0
那么,可以影响状态公式的高级内容呢?
我们得到了所有!
isStateAffected(stateId)-检查战斗人员是否对他们施加了状态。
b.isStateAffected(10) ? 10000 : 1;
isDeathStateAffected ()-检查战斗机是否有死亡状态。
b.isDeathStateAffected() ? 10000 : 1;
resetStateCounts(stateId)-刷新战斗状态将持续多久
if (b.isStateAffected(10)) b.resetStateCounts(10); 100
updateStateTurns()-缩短战场上所有状态1回合
b.updateStateTurns(); 100
addState(stateId)-为战斗者添加状态
if (!b.isStateAffected(10)) b.addState(10); 100
isStateAddable(stateId)-检查状态是否可以添加到战场
c=100; if (b.isStateAddable(10)) b.addState(10); else c=4000; c
removeState(stateId)-从战斗中移除状态
if (a.isStateAffected(10)) a.removeState(10); 0
迷们呢?我们可以buff和debuff战斗吗?buff(增益)Debuff(减益、负面)
是的!
addBuff(paramId,turns)-添加一个BUFF到参数
a.addBuff(0, 3); b.def*10
addDebuff(paramId, turns) - 添加一个DeBuff到参数
b.addDebuff(2, 10); 9999
removeBuff(paramId)-从战斗中移除一个buff或debuff
removeAllBuffs()-从战斗中移除所有的增益和减益
参数ID
0-最大HP
1-最大MP
2-攻击
3-防御
4-魔法攻击
5-魔法防御
6-敏捷
7-运气
一般的战斗机东西
die() -击杀战斗者
b.die(); 0
revive() -使战斗者复活
a.revive(); 1000
paramBase(paramId) -获取基本参数
a.paramBase(3)* 10-b.def * 2
paramPlus(paramId) -获取参数
a.paramPlus(3)* 2-b.def * 2
paramMax(paramId) -获取参数
b.paramMax(0)
elementRate(elementId) -检查战斗机的元素比率(比率为代表%的十进制数)
b.elementRate(10) >== 0.5 ? 10000 : a.mat*4;
isStateResist(stateId) -检查战斗机是否抵抗状态
c=0; b.isStateResist(10) ? c+=2000 : b.addState(10); c
isSkillTypeSealed(stypeId)-检查战士的技能类型是否被密封
isSkillSealed(skillId)-检查战士的技能类型是否被密封
isEquipTypeSealed(etypeId)-检查战斗机的装备类型是否被密封
isDualWield()-检查战斗机是否可以双重使用
isGuard()-检查战斗机是否在守卫
recoveryAll()-删除所有状态,将HP和MP恢复到最大
hpRate()-检查战斗机的HP率
mpRate()-检查战斗机的MP率
tpRate()-检查战斗机的TP率
b.hpRate() < 0.5 ? b.hp-1 : 100;
isActor()-检查战斗机是否为演员
isEnemy()-检查战斗机是否为敌人
escape() - 逃离战斗
b.escape()(使敌人逃跑)
consumeItem(item)-消耗物品
a.consumeItem($ dataItems [15]);100
仅对于演员:
currentExp()-当前EXP
currentLevelExp() - EXP需要的电流水平
nextLevelExp() - EXP需要一个新的水平
nextRequiredExp() - EXP留到下一级
maxLevel() -演员的最高水平
isMaxlevel() -是演员最高水平(真/假)
hasWeapon()演员是否持武器(true / false)
hasArmor()-演员是否戴着任何盔甲(true / false)
clearEquipments() -取消演员所穿的所有装备
isClass(gameClass)-检查演员是否属于某类(gameClass- $ dataClasses [ID])
hasNoWeapons()-检查演员是否没有任何武器
levelUp()-演员级别提升
levelDown()-演员级别降低
gainExp(exp)-给演员提供exp
learningSkill(skillId)-使演员学习技能
forgetSkill(skillId)(skillId)-使演员忘记技能
isLearnedSkill(skillId)-检查演员是否具有学习的技能演员
actorId() -返回演员的ID
仅针对敌人:
enemyId() -返回敌人的ID
数学怎么样?我们可以在公式中使用数学方法吗?
是的,您完全可以。
Math.random()-返回0到1之间的随机数(0