扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 97|回复: 0

[转载发布] 伤害公式以及其他符号意思等(新手必看)

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2025-2-4 02:05
  • 签到天数: 110 天

    连续签到: 2 天

    [LV.6]常住居民II

    2327

    主题

    395

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10465
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13215

    灌水之王

    发表于 2024-12-13 17:17:20 | 显示全部楼层 |阅读模式
    原网址: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
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-3-10 13:16 , Processed in 0.133207 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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