Project1

标题: 请教技能开启条件的写法 [打印本页]

作者: zhujunjie988788    时间: 2017-5-31 14:33
标题: 请教技能开启条件的写法
我想做一个技能,当角色等级达到50级,并且开关1打开时,技能(可能是主动也可能是被动)生效并在技能栏中显示

请问该怎么写?
YEP上有一段等级限时的,但貌似只是限时显示
Skill Notetag:
<Custom Show Eval>
if (user.level > 50) {
visible = true;
} else {
visible = false;
}
</Custom Show Eval>

请教大神帮忙看看该如何写,谢谢了!
作者: zhujunjie988788    时间: 2017-5-31 14:34
需求是如果玩家等级没达到要求,且开关没有打开时,技能即不显示,也不会生效(这样就能有效阻止被动性质的技能增加属性了)
作者: Ajucaqiu    时间: 2017-5-31 15:43
zhujunjie988788 发表于 2017-5-31 14:34
需求是如果玩家等级没达到要求,且开关没有打开时,技能即不显示,也不会生效(这样就能有效阻止被动性质的 ...

我的理解是你需要同时满足两个要求,所以你要用 或 “开关没有打开时”,
if (!$gameSwitches.value(1) && user.level<50){},我不知道你说的被动是什么意思,如果是个状态,你可以加上同样的条件,或者达到条件才会有,或者你可以设计成开关的形式:<Custom Requirement>判断使用条件控制能否使用
作者: zhujunjie988788    时间: 2017-5-31 15:58
Ajucaqiu 发表于 2017-5-31 15:43
我的理解是你需要同时满足两个要求,所以你要用 或 “开关没有打开时”,
if (!$gameSwitches.value(1) & ...

感谢大神,我发现技能的判断生效与否对被动技能并没有效果,但状态的判断却可以对被动技能生效

所以想补充问一个问题
如何写这样一个状态生效条件:当某技能被学会时,该状态生效
作者: soulsaga    时间: 2017-5-31 16:00
if (user.level > 50)  && $gameSwitches.value(1) == true{
作者: Ajucaqiu    时间: 2017-5-31 16:09
<Custom Apply Effect>if (!target.isLearnedSkill(1)){target.removeState(1);}</Custom Apply Effect>
你问过类似问题,我不知道你的被动是怎么设定的,如果是yep自动被动是无效的,只能让目标移除被动的技能或者绑定的装备
作者: Ajucaqiu    时间: 2017-5-31 16:15
我才想起来,yep自动被动不是有<Custom Passive Condition>吗,本来就可以判断被动技能的条件啊。。。
作者: zhujunjie988788    时间: 2017-5-31 16:22
Ajucaqiu 发表于 2017-5-31 16:15
我才想起来,yep自动被动不是有吗,本来就可以判断被动技能的条件啊。。。 ...

对,因为我现在YEP的被动可以通过条件来判断是否生效,所以技能里的只是一个显示,告诉学习的玩家这个技能已经学会并生效

刚才写了一下,发现貌似不对,求大神帮忙看看
<Custom Requirement>
if (!user.isLearnedSkill(15) && user._classId != 1) {
visible = false;
}
</Custom Requirement>

<params>
ATK: 200
</params>


效果是:如果技能15被学会,且职业为1,则这个状态生效,否则不生效
作者: Ajucaqiu    时间: 2017-5-31 16:30
<Custom Passive Condition>
if (user.isLearnedSkill(15) && user._classId == 1){condition = true;}
</Custom Passive Condition>
!是不的意思,<Custom Requirement>是判断技能的使用条件,而且值是value,visible是可视情况的值
作者: zhujunjie988788    时间: 2017-5-31 16:36
Ajucaqiu 发表于 2017-5-31 16:30
if (user.isLearnedSkill(15) && user._classId == 1){condition = true;}

!是不的意思,是判断技能的使 ...

谢谢大神,但实测下来,只有职业要求起作用了,技能要求并没有起作用

依然可以不学习技能15就能生效

- -头晕。。。
作者: Ajucaqiu    时间: 2017-5-31 17:00
zhujunjie988788 发表于 2017-5-31 16:36
谢谢大神,但实测下来,只有职业要求起作用了,技能要求并没有起作用

依然可以不学习技能15就能生效

没有吧,没道理没效的,不行的话你可以试试换个说法:
if (!user.isLearnedSkill(15) || user._classId !== 1){condition = false;}
作者: zhujunjie988788    时间: 2017-5-31 17:09
Ajucaqiu 发表于 2017-5-31 17:00
没有吧,没道理没效的,不行的话你可以试试换个说法:
if (!user.isLearnedSkill(15) || user._classId ! ...

这个生效了。。。奇怪了。。。是啥道理啊
作者: zhujunjie988788    时间: 2017-5-31 17:43
Ajucaqiu 发表于 2017-5-31 17:00
没有吧,没道理没效的,不行的话你可以试试换个说法:
if (!user.isLearnedSkill(15) || user._classId ! ...

if (!user.isLearnedSkill(15) || user._classId !== 1){condition = false;}

这个里面的class指的是主职业,YEP里有副职业系统,如何改成副职业作为条件?

<Custom Passive Condition>
if (!user.isLearnedSkill(16) || user._SubclassId !== 1){condition = false;}
</Custom Passive Condition>

这样写没生效。。。
作者: raketenfaust02    时间: 2017-6-1 00:40
本帖最后由 raketenfaust02 于 2017-6-1 00:41 编辑
zhujunjie988788 发表于 2017-5-31 17:43
if (!user.isLearnedSkill(15) || user._classId !== 1){condition = false;}

这个里面的class指的是主 ...


反过来写试试

<Custom Passive Condition>
if (user.isLearnedSkill(16) && user._subClassId == 2) {
condition = true;
} else {
condition = false;
}
</Custom Passive Condition>

在我这是生效的
作者: zhujunjie988788    时间: 2017-6-1 10:10
raketenfaust02 发表于 2017-6-1 00:40
反过来写试试

不是吧,我这边完全没任何效果。。。取不到副职
作者: raketenfaust02    时间: 2017-6-1 16:03
zhujunjie988788 发表于 2017-6-1 10:10
不是吧,我这边完全没任何效果。。。取不到副职

仔细看看,应该是大小写的问题。

<Custom Passive Condition>
if (user.isLearnedSkill(16) && user._subclassId == 2) {
condition = true;
} else {
condition = false;
}
</Custom Passive Condition>

再试试
作者: raketenfaust02    时间: 2017-6-1 16:04
仔细看看,应该是大小写的问题。

<Custom Passive Condition>
if (user.isLearnedSkill(16) && user._subclassId == 2) {
condition = true;
} else {
condition = false;
}
</Custom Passive Condition>

再试试
作者: zhujunjie988788    时间: 2017-6-1 17:03
raketenfaust02 发表于 2017-6-1 16:04
仔细看看,应该是大小写的问题。

谢谢大神,我反复试验过了,确实是有效的,无效的原因是因为同时有2个技能调用一个职业时,副职的那个判断就会失效

例如:我设计了某个状态只有当角色主职业为A,并且学会技能15才会生效时,当主职为A且学会15技能时,状态会生效

但如果我又设计了一个状态只有当角色的副职业为A,并且学会技能16才会生效时,就无效了

这个原因是啥原因。。。
作者: raketenfaust02    时间: 2017-6-1 19:11
zhujunjie988788 发表于 2017-6-1 17:03
谢谢大神,我反复试验过了,确实是有效的,无效的原因是因为同时有2个技能调用一个职业时,副职的那个判 ...

先用排除法试试。把那个需要主职业为A的状态删除掉之后,需要副职业A的状态可以正常生效吗?
作者: zhujunjie988788    时间: 2017-6-1 19:14
raketenfaust02 发表于 2017-6-1 19:11
先用排除法试试。把那个需要主职业为A的状态删除掉之后,需要副职业A的状态可以正常生效吗? ...

可以生效呀,我说了,已经反复测试过了,只要不共存,都能生效,但无法共存
作者: raketenfaust02    时间: 2017-6-1 19:15
zhujunjie988788 发表于 2017-6-1 19:14
可以生效呀,我说了,已经反复测试过了,只要不共存,都能生效,但无法共存 ...

好奇怪

你把两个状态的code贴出来,我试试




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