Project1

标题: 如何在获得(状态/buff)的几率中加上参数 [打印本页]

作者: jgf1000    时间: 2018-4-18 21:20
标题: 如何在获得(状态/buff)的几率中加上参数
请教各位大佬,如何如何在获得(状态/buff)的几率中加上参数,比如状态流血,它在某个技能上的基础概率是10%,但我想让战斗中的实际概率变为 10%+a.mat/(1000+a.mat)-b.mat/(1000+b.mat)   (甚至更复杂的参数),我本来想在战斗时间里用变量做= =但是没找到判断xx技能使用的if语句,所以前来请教。
ps:a为攻击方,b为防守方,mat是我将魔攻自定义为肉体强度。
作者: 梦想家大魔王    时间: 2018-4-18 21:41
YEP里面有状态相关的插件,可以自定义状态生效的条件,你可以了解一下。
作者: jgf1000    时间: 2018-4-18 21:57
梦想家大魔王 发表于 2018-4-18 21:41
YEP里面有状态相关的插件,可以自定义状态生效的条件,你可以了解一下。

研究过= =但预设代码没有概率相关的难受,都是生效回合之类的QAQ
作者: 梦想家大魔王    时间: 2018-4-18 22:09
我想你可以在技能的备注里面做判断。不使用内置的某某Buff/状态来给技能附加状态攻击,而是在备注里用代码控制。用YEP_X_ActSeqPack系列扩展插件就能实现。
作者: jgf1000    时间: 2018-4-18 22:33
本帖最后由 jgf1000 于 2018-4-19 14:15 编辑

现在用了拓展包但是出bug
if语句无法用 ,一用就错,还是没法判断QAQ
作者: tseyik    时间: 2018-4-18 23:01
本帖最后由 tseyik 于 2018-4-18 23:11 编辑

Math.random() * N

(Math.random() * 3) + 1
給於傷1/2/3


x擁有状態ID成立傷害式m,不成立傷害式n
x.isStateAffected(ステートID) ? m : n

擁有状態ID3時傷害2倍
a.mat * (b.isStateAffected(3) ? 2 : 1)

其他請看
ダメージ計算式の小ネタ
https://tm.lucky-duet.com/viewtopic.php?f=56&t=647


作者: jgf1000    时间: 2018-4-19 00:17
梦想家大魔王 发表于 2018-4-18 22:09
我想你可以在技能的备注里面做判断。不使用内置的某某Buff/状态来给技能附加状态攻击,而是在备注里用代码 ...

还是不行QAQ.......无法判断攻击者和防御者,大大有没有方法能够判断呢
作者: jgf1000    时间: 2018-4-19 00:34
tseyik 发表于 2018-4-18 23:01
Math.random() * N

(Math.random() * 3) + 1

还是不行QAQ.......无法判断攻击者和防御者,大大有没有方法能够判断呢
作者: wxx45600    时间: 2018-4-19 02:44
同样很关注这样的问题
不过我关注的是给予自己buff的几率
(a.addState(68) == NaN)?(245 + a.mat * 2 - b.mdf * 1):(245 + a.mat * 2 - b.mdf * 1)
这样的公式就是使用这个技能造成(245 + a.mat * 2 - b.mdf * 1)的伤害并且给予使用者ID.68的buff
其实我在想能否在这里设置一个概率
作者: tseyik    时间: 2018-4-19 08:55
你那自定義的肉体强度是怎様做出來的?(用插件還是其他方法?)
作者: jgf1000    时间: 2018-4-19 09:15
tseyik 发表于 2018-4-19 08:55
你那自定義的肉体强度是怎様做出來的?(用插件還是其他方法?)

只是在用语里将魔攻改为肉体强度而已,再修改一下技能公式使其与实际意义相符 ,上次您不是给过我一个自定义属性的插件么,还没使用过,准备再以后增加更多的能量体系时使用.
作者: jgf1000    时间: 2018-4-19 09:21
tseyik 发表于 2018-4-19 08:55
你那自定義的肉体强度是怎様做出來的?(用插件還是其他方法?)

现在最后的问题就是有没有什么命令能在技能的标签里使用,能将技能使用者与目标的id与类型取出存到变量里,比如时几号角色 或是几号怪物
作者: jgf1000    时间: 2018-4-19 13:42
试图用动作序列里的命令做,但一用就报错.......

作者: jgf1000    时间: 2018-4-19 16:50
wxx45600 发表于 2018-4-19 02:44
同样很关注这样的问题
不过我关注的是给予自己buff的几率
(a.addState(68) == NaN)?(245 + a.mat * 2 - b.m ...

最后解决了,我是在通过YEP_X_ActSeqPack1插件在注释里写了一段
<target action>
action effect
if Math.random()<(0.1+user.mat/(1000+user.mat)-target.mat/(1000+target.mat))
add state 11: target
end
</target action>
实现了概率上buff
作者: wxx45600    时间: 2018-4-21 04:06
jgf1000 发表于 2018-4-19 16:50
最后解决了,我是在通过YEP_X_ActSeqPack1插件在注释里写了一段

action effect

非常感谢!
终于想通了这个效果~~~

作者: wxx45600    时间: 2018-4-21 04:08
jgf1000 发表于 2018-4-19 16:50
最后解决了,我是在通过YEP_X_ActSeqPack1插件在注释里写了一段

action effect

你这个是给目标加上吧?
如果我改为 Origin 是不是就是可以实现给原目标了?
(0.1+user.mat/(1000+user.mat)-target.mat/(1000+target.mat))
这个内部的公式是概率公式? 不是伤害公式吗?
作者: qq1065526265    时间: 2018-4-21 08:15
wxx45600 发表于 2018-4-21 04:08
你这个是给目标加上吧?
如果我改为 Origin 是不是就是可以实现给原目标了?
(0.1+user.mat/(1000+user.m ...

好像是对比属性然后给予buff
作者: jgf1000    时间: 2018-4-21 09:48
本帖最后由 jgf1000 于 2018-4-21 09:52 编辑
wxx45600 发表于 2018-4-21 04:08
你这个是给目标加上吧?
如果我改为 Origin 是不是就是可以实现给原目标了?
(0.1+user.mat/(1000+user.m ...


我昨天又研究了一下,这不是最佳解决方案,因为动作序列里面最好还是放置动作、动画的。
我后来发现用Yep_SkillCore 可以解决。
在技能注释里写:
<Post-Damage Eval>
if (Math.random()<(0.1+(user.luk-target.luk)/1000-target.mat/(1000+target.mat)))
target.addState(11);
<Post-Damage Eval>
这是我自己的概率公式,user->该技能的使用者,target->目标,你可以在if后的条件判断里自己修改公式,而且这种方式可以避免我之前那种即使技能miss,buff却依旧可能挂上的bug。(因为这一阶段是必须要技能命中才能触发的)
你给自己加的话就是 user.addState(x);吧




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