Project1

标题: 请问是否能用变量决定不同角色学不同技能? [打印本页]

作者: haohaoniu    时间: 2023-1-24 19:07
标题: 请问是否能用变量决定不同角色学不同技能?
比如我有主角A,主角B,主角C,分别给3个主角设置三个变量,叫潜力A,潜力B,潜力C。技能有火球术。

现在我希望使用物品技能书学习技能,一个物品叫技能书。使用物品就能学习这个技能。

是否能够达到,火球书需要潜力大于10才能学?

现在我想做到这个效果:我对主角A使用了技能书,会验证主角A潜力是否大于10,大于10能学会,否则提示潜力不足。然后同一个物品-技能书,对主角B和主角C使用,也会分别验证他们潜力是否大于10,是则学会,否则提示潜力不足。
请问能否做到这个效果?谢谢
作者: xiamumomo    时间: 2023-1-24 20:30
Yep-Item Requirements(物品使用限制就好了)  如果只想用脚本的话只需要物品效果添加公共事件然后公共事件的事件指令脚本复制粘贴我这个就好了

JAVASCRIPT 代码复制
  1. var a = $gameParty._targetActorId;
  2. if($gameActors.actor(a).skills().contains($dataSkills[技能ID])){
  3. $gameMessage.add("他已经学会了这个技能请不要再让他学")
  4. $gameParty.gainItem($dataItems[技能书ID], 1);}
  5. else{
  6. if([color=Red]$gameActors.actor(a).level >= 10[/color]){
  7. $gameActors.actor(a).learnSkill(技能ID);
  8. $gameMessage.add("成功学了了技能: 火球");
  9. }else{
  10. $gameMessage.add("你的潜力不足");
  11. $gameParty.gainItem($dataItems[技能书ID], 1);}
  12. };

如何修改:
将技能书ID替换成数据库对应的物品ID  技能ID也是替换成数据库那个技能的ID  我只是举个例子 这是判断使用技能书这个物品的角色的等级 $gameActors.actor(a).level >= 10
因为我不知道你的潜力指的是什么还有我这个写法是技能书是可以消耗的如果技能书是不可以消耗的那么就把两处的$gameParty.gainItem($dataItems[技能书ID], 1);删掉
还有技能书使用的是单体
作者: haohaoniu    时间: 2023-1-24 21:25
xiamumomo 发表于 2023-1-24 20:30
Yep-Item Requirements(物品使用限制就好了)  如果只想用脚本的话只需要物品效果添加公共事件然后公共事件 ...

谢谢大佬回答。
“潜力”是我设置的一个变量,3个角色分别有3个变量。现在的问题是,不同角色使用“技能书”物品之后,能因应不同角色的变量数值决定他是否能学会这个技能。比如同一个物品“技能书”。主角A的变量是11,使用该“技能书”能学会技能。而主角B的变量是5,使用该“技能书”便不能学会技能。能否做到这个效果?
作者: xiamumomo    时间: 2023-1-24 21:43
haohaoniu 发表于 2023-1-24 21:25
谢谢大佬回答。
“潜力”是我设置的一个变量,3个角色分别有3个变量。现在的问题是,不同角色使用“技能 ...

只有3个角色吗
作者: haohaoniu    时间: 2023-1-24 21:48
xiamumomo 发表于 2023-1-24 21:43
只有3个角色吗

是的,总共只有三个
作者: xiamumomo    时间: 2023-1-24 22:01
haohaoniu 发表于 2023-1-24 21:48
是的,总共只有三个

把这个
  1. [color=Red]$gameActors.actor(a).level >= 10[/color]
  2. 脚本中的[color=Red]和[/color]是论坛字体颜色的我不知道什么时候点进去了
复制代码
删掉改为$gameVariables.value(a);然后你讲变量1到3分别对应1到3号角色还有
作者: haohaoniu    时间: 2023-1-24 22:37
xiamumomo 发表于 2023-1-24 22:01
把这个删掉改为$gameVariables.value(a);然后你讲变量1到3分别对应1到3号角色还有 ...

请问改成$gameVariables.value(a)之后,变量应该写在什么地方
作者: xiamumomo    时间: 2023-1-24 22:48
haohaoniu 发表于 2023-1-24 22:37
请问改成$gameVariables.value(a)之后,变量应该写在什么地方
  1. var a = $gameParty._targetActorId;
  2. if($gameActors.actor(a).skills().contains($dataSkills[技能ID])){
  3. $gameMessage.add("他已经学会了这个技能请不要再让他学")
  4. $gameParty.gainItem($dataItems[技能书ID], 1);}
  5. else{var i =1;i <=3
  6. if($gameVariables.value(a) >= 10){
  7. $gameActors.actor(a).learnSkill(技能ID);
  8. $gameMessage.add("成功学了了技能: 火球");
  9. }else{
  10. $gameMessage.add("你的潜力不足");
  11. $gameParty.gainItem($dataItems[技能书ID], 1);}
  12. };
复制代码

作者: xiamumomo    时间: 2023-1-24 22:52
haohaoniu 发表于 2023-1-24 22:37
请问改成$gameVariables.value(a)之后,变量应该写在什么地方

你不是3个角色每个分配一个变量  这样写就等于你数据库角色1号选择的是变量1的值  给1号用就是判断变量1给二号角色用就是判断变量2
作者: haohaoniu    时间: 2023-1-24 23:08
xiamumomo 发表于 2023-1-24 22:52
你不是3个角色每个分配一个变量  这样写就等于你数据库角色1号选择的是变量1的值  给1号用就是判断变量1 ...

那怎么知道他判断的是几号变量呢
作者: xiamumomo    时间: 2023-1-24 23:22
haohaoniu 发表于 2023-1-24 23:08
那怎么知道他判断的是几号变量呢

第一句我将临时变量a = 目标角色的id(使用道具的这个人)
如果是1号角色那么a=1 如果是2号角色使用那么a=2
if($gameVariables.value(a) >= 10) 就意味着如果是1号角色那么就是判断1号变量是否大等于10
作者: xiamumomo    时间: 2023-1-24 23:25
if($gameActors.actor(a).skills().contains($dataSkills[技能ID])){这句是判断使用技能书的这个角色是否拥有了这个技能如果拥有提示他已经学会xxxxxx并且我们还要设置获得这个道具毕竟我写的是可以消耗的技能书使用后就会失去的
作者: haohaoniu    时间: 2023-1-25 00:05
xiamumomo 发表于 2023-1-24 23:22
第一句我将临时变量a = 目标角色的id(使用道具的这个人)
如果是1号角色那么a=1 如果是2号角色使用那么a= ...

原来如此,对于代码小白还是有点难懂,不过看着大佬的代码逻辑,给了我启发我想到了个更简单的方法,使用物品之后公共事件加选项,分别三个角色,选指定角色再判断各自变量就行了。就是多一步,还是谢谢大佬的启发




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