Project1

标题: 同样的技能,伤害加入了变量,怎样区分谁用的技能 [打印本页]

作者: 根五    时间: 2023-10-13 11:16
标题: 同样的技能,伤害加入了变量,怎样区分谁用的技能
一个火焰技能,谁都能学的那种,伤害公式里加了一个变量(相当于人物火焰亲和吧),但是不同的人物变量ID是不一样的,请问这个伤害公式里的变量我该怎样去添加?
我能想到的笨办法是给每个人都做个火焰技能,但是人物大概有30~40个,那我得做多少呀!
而且还有冰亲和,土亲和,风,光,暗,每个都做的话就太多了!

请问这个问题改怎么解决呢!

作者: shiroin    时间: 2023-10-13 13:36
如果你是觉得每个角色都要创建一个变量还要分情景去调用很麻烦,可以考虑创建一些自变量属性,和ATK、MAT这些基本属性一样,变量名统一,但在不同角色下,数值是不一样的
作者: 根五    时间: 2023-10-13 14:04
shiroin 发表于 2023-10-13 13:36
如果你是觉得每个角色都要创建一个变量还要分情景去调用很麻烦,可以考虑创建一些自变量属性,和ATK、MAT这 ...

你说的就是我想要的效果,但是我不会
作者: shiroin    时间: 2023-10-13 14:14
根五 发表于 2023-10-13 14:04
你说的就是我想要的效果,但是我不会

google上搜索RPG maker Custom param,能找到很多支持定制自定义属性的插件
如果你也在用YEP系列插件我可以教你怎么用YEP插件做出自定义属性并显示出来
如果没有用YEP插件,那出于兼容性考虑,最好是自己去翻各种Custom param插件测试效果
作者: 根五    时间: 2023-10-13 15:15
shiroin 发表于 2023-10-13 14:14
google上搜索RPG maker Custom param,能找到很多支持定制自定义属性的插件
如果你也在用YEP系列插件我可 ...

我用的是YEP和Drill大佬的插件。
用YEP插件做的话是不是得会点代码才行?我是一点都不懂
作者: shiroin    时间: 2023-10-13 15:52
根五 发表于 2023-10-13 15:15
我用的是YEP和Drill大佬的插件。
用YEP插件做的话是不是得会点代码才行?我是一点都不懂 ...

那确实,起码你得知道怎么用YEP_AutoPassiveStates写被动技能
因为你说自己有几十个角色都需要做元素亲和的属性,所以我想法是做一个公共被动效果,给每一个人赋予一个Elemental Affinities自变量,计算魔法伤害时使用自定义伤害公式,根据对应元素调用角色的对应Elemental Affinities数值进行乘算,这样也就模拟出了你要的效果
你会用YEP_AutoPassiveStates就应该理解我是怎么操作的
作者: shiroin    时间: 2023-10-13 16:07
我随手写了个模板给你参考下
给公共被动池加入这个状态,全员就拥有了火元素亲和力这个属性,你可以通过装备、技能去额外强化这个亲和力
只要给火元素魔法的伤害公式里补充这个火元素亲和力的系数去修正伤害,就能起效
我给的参考是20,也就意味着这个火魔法的基础伤害会被提升20倍,百分比提升就改写成小数

photo_2023-10-13_16-03-33.jpg (109.18 KB, 下载次数: 68)

火元素亲和的被动技能模板

火元素亲和的被动技能模板

photo_2023-10-13_16-03-36.jpg (139.98 KB, 下载次数: 71)

火魔法的伤害公式中附加了亲和力系数

火魔法的伤害公式中附加了亲和力系数

作者: 2669483303    时间: 2023-10-13 20:51
a.atk取的不就是释放技能的目标吗,怎么还需要自己加目标属性
作者: Cansor    时间: 2023-10-13 21:42
BOB_CustomStats 插件可以添加自定义属性,这个属性可以在MV的技能伤害公式中直接调用(就像 a.atk 一样)。
另外我还给这个插件写了个显示自定义属性的插件。
这俩插件都在这里:https://rpg.blue/thread-484649-1-1.html
作者: 根五    时间: 2023-10-14 17:14
感谢 shiroin和Cansor二位的帮助,我需要去研究一下二位的方法,看看哪种适合我!
作者: 根五    时间: 2023-10-16 11:51
shiroin 发表于 2023-10-13 16:07
我随手写了个模板给你参考下
给公共被动池加入这个状态,全员就拥有了火元素亲和力这个属性,你可以通过装 ...

大佬,你给的模板我明白了,你继续往下说说,我现在有几个问题
1.技能和装备怎样附加这个值。我希望的效果是遗忘技能和卸下装备后,这个值会被减去。
2.全员都有这个状态(包括敌人),是怎么样分别计算这个值的,user._fireAffinity +=20这里,好像每个人都是20。还有敌人怎么样附加这个值。
3.就是你上面说的怎么显示这个数值。
作者: shiroin    时间: 2023-10-16 15:33
根五 发表于 2023-10-16 11:51
大佬,你给的模板我明白了,你继续往下说说,我现在有几个问题
1.技能和装备怎样附加这个值。我希望的效 ...

1. 因为已经定制了自变量,所以学正常变量调节一样去增减这个值就行,难点则是如何只在学习技能和装备某件物品时生效(反之也是遗忘技能和脱下装备会失去效果),这里有两个方法:一是继续制作被动技能,让技能或装备去捆绑这个被动技能,二是额外使用WAY_CustomOnEquipEval插件,它可以使装备物品、脱下物品两个操作都进行自定义的代码运算,你可以利用这个机制去增减一些自定义属性

2.被动状态会自动识别捆绑的对象,所以你无需担心对象问题,user._fireAffinity的user前缀就是捆绑了状态的持有者,以及也是因为这个原因我建议全员被动只负责初始化这个值(改写成user._fireAffinity = user._fireAffinity || 0),附加值交由其他工具去增减,至于敌人怎么增加,敌人也可以绑定被动技能的

3.显示的问题需要你去增添draw代码捆绑变量,你显示状态的窗口是默认的还是也用了YEP_StatusMenuCore,后者的话有扩展插件去额外定制显示的属性,如果你是期望在战斗中显示这个值供玩家参考,也有其他方法
作者: 根五    时间: 2023-10-17 16:14
shiroin 发表于 2023-10-16 15:33
1. 因为已经定制了自变量,所以学正常变量调节一样去增减这个值就行,难点则是如何只在学习技能和装备某 ...

WAY_CustomOnEquipEval这个插件我没有,我在站内和百度都没搜索到,不过对于我这种不懂代码,只能简单的修改一下数字的人来说,不知道能不能用的了
我尝试多制作一些被动,但是突然发现不知道怎么把状态加入到装备和技能里
至于显示的问题,我确实是用的YEP_StatusMenuCore,请问怎么显示

作者: shiroin    时间: 2023-10-17 17:37
根五 发表于 2023-10-17 16:14
WAY_CustomOnEquipEval这个插件我没有,我在站内和百度都没搜索到,不过对于我这种不懂代码,只能简单的 ...

用google搜,很多插件国内没有的,还有这插件和YEP插件基本一个用法,你会用YEP插件就很好上手

被动技能加入进装备和技能里的书写格式也一样都是<Passive State: X>,但要注意技能只有习得时才能获得被动效果,通过装备、状态的特性得到的技能不会获取对应的被动效果,这是插件故意的限制

把自定义变量显示在YEP_StatusMenuCore里则确实需要一点改代码能力,但也有CaeX_YEPStatusMenuExt扩展插件提供了更加便捷的添加自定义显示的工具,估计一样只能靠google搜到
有空我搬运汉化下丢论坛里好了,也应该有不少人需要
作者: Rose_shadows    时间: 2023-10-17 18:43
本帖最后由 Rose_shadows 于 2023-10-18 12:29 编辑

自定义属性的话……我最近刚好鼓捣了个插件,功能挺全面的,可以绑定到8种数据库对象,支持属性值动态变化,可用于伤害公式,而且使用方法也不难,粗略测试了一下没什么问题,你可以试一试:

自定义隐藏属性v1.0.2.zip (4.8 KB, 下载次数: 2)
作者: 根五    时间: 2023-10-17 21:37
shiroin 发表于 2023-10-17 17:37
用google搜,很多插件国内没有的,还有这插件和YEP插件基本一个用法,你会用YEP插件就很好上手

被动技能 ...

感谢大佬,WAY_CustomOnEquipEval我已经下载了,研究实验了下,也能简单的使用了。
下一步我研究下怎么显示出来!

作者: Rose_shadows    时间: 2023-10-18 12:23
本帖最后由 Rose_shadows 于 2023-10-18 12:27 编辑

如果是在使用YEP_StatusMenuCore.js 的话,可以搭配使用我修改过的 CaeX_YEPStatusMenuExt.js 来显示自定义属性。
测试了一下,没有什么问题。

如果用了我的插件,配置好相应的属性后,可以这样添加属性到状态界面:

1. 将所有插件按照如下顺序安装:
RSSD_HiddenParams.js
YEP_StatusMenuCore.js
CaeX_YEPStatusMenuExt.js

2. 打开 CaeX_YEPStatusMenuExt.js,点击唯一的插件参数,注册新的属性对象。
假设在隐藏属性插件中设置了一个短名为“np”的自定义属性,则属性对象可以按照如下格式书写:
Key: np          (建议是属性短名)
Label: TextManager.cusparamName('np')          (通过短名获取属性名)
Value: this._actor._np



3. 设置好 CaeX_YEPStatusMenuExt.js 参数后,打开 YEP_StatusMenuCore.js,找到 Attributes 一栏设置,将刚才设置的 Key 写入到任一列参数中就可以了。



最后显示的结果是这样的:



不过这个方法只能用于显示浮点数/百分比数,例如 0.4 就会显示 40%。

以下是插件:
plugins.zip (6.66 KB, 下载次数: 1)
作者: shiroin    时间: 2023-10-18 14:19
Rose_shadows 发表于 2023-10-18 12:23
如果是在使用YEP_StatusMenuCore.js 的话,可以搭配使用我修改过的 CaeX_YEPStatusMenuExt.js 来显示自定义 ...

只能显示百分比数是因为它只使用了drawAttributeRate函数,这是原代码,看得出效果就是把固定数转化成百分比:

Window_StatusInfo.prototype.drawAttributeRate = function(rate, dx, dy, dw) {
    var value = (rate * 100).toFixed(Yanfly.Param.StatusAttrDec) + '%';
    this.setRateColor(rate);
    this.drawAttributeValue(value, dx, dy, dw);
};

但插件里原本也有drawAttributeValue函数给你调用,所以把Rate改成Value就能显示固定数了
作者: pmhz    时间: 2024-7-25 19:07
一个简单的方法是在伤害公式中使用isSkillSealed(),用于判断目标是否被封印了技能
例如:a.isSkillSealed(1) ? a.atk * v[1] : a.atk * v[2];
判断使用者是否被封印了技能ID为1的技能,是的话就使用 a.atk * v[1],否则使用a.atk * v[2]作为伤害公式
你可以做几个没有任何用的技能,在人物特性中封印这个技能,就能区分开来了




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