设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 591|回复: 12
打印 上一主题 下一主题

[有事请教] YEP的技能核心插件,能帮我实现以下技能效果吗?

[复制链接]

Lv2.观梦者

梦石
0
星屑
400
在线时间
82 小时
注册时间
2022-10-2
帖子
17
跳转到指定楼层
发表于 2024-4-12 08:47:25 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
150星屑
效果是这样的。在技能被使用时(以下称为A技能),会消耗使用者(这个人可以是角色也可以是敌人)最大MP的50%,并将其存储进一个容器里(可以理解为存在一个变量里),变量存储的值为上一次MP值最大值的50%。
同时会为其赋予一个状态。第一次使用A技能,会赋予一个名为50%的状态,第二次会赋予100%的状态。用过两次后就不能使用,并会在游戏中用弹窗提示。

紧接上个技能,在用第一次A技能后,会为自身增加一个B技能,专门用于释放之前储存的MP。在使用B技能时,会检测使用者身上拥有的BUFF。
如拥有50%的话,就释放上次储存的50%的值,反之全部释放,然后删除B技能。

RM讨论技能的帖子比较少,如果是需要插件实现的话,能分享一点代码实现的思路吗?可以的话非常感谢。

Lv2.观梦者

梦石
0
星屑
507
在线时间
65 小时
注册时间
2022-5-12
帖子
5
11
发表于 2024-7-3 19:22:04 | 只看该作者
shiroin 发表于 2024-4-12 22:09
因为技能是有使用者和目标对象的判定,你完全可以把变量值存储在actor对象里,比如假设是2号角色使用了技 ...

啊,成了,之后我写个自定义消耗显示就行了,谢谢大佬,今天也学到新姿势了
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
400
在线时间
82 小时
注册时间
2022-10-2
帖子
17
10
 楼主| 发表于 2024-4-12 22:35:35 | 只看该作者
shiroin 发表于 2024-4-12 22:09
因为技能是有使用者和目标对象的判定,你完全可以把变量值存储在actor对象里,比如假设是2号角色使用了技 ...

哦,非常感谢。
其实我解决了,我是用RM的原型变量,然后用全局变量指令$gameVariables.value(n)和$gameVariables.setValue(n,value),配合我在储存阶段不同设计出来的技能,已经成功实现。
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5274
在线时间
1212 小时
注册时间
2016-12-6
帖子
389
9
发表于 2024-4-12 22:09:29 | 只看该作者
绯色之夜 发表于 2024-4-12 18:09
我的需求大致就是这样。技能效果可以理解为做一个装MP的容器,最多可以存储两次,一次存储当时使用者最 ...

因为技能是有使用者和目标对象的判定,你完全可以把变量值存储在actor对象里,比如假设是2号角色使用了技能A,这时候user._skillAmask其实就是$gameActors.actor(2)._skillAmask,你也可以通过$gameActors.actor(2)._skillAmask这个形式直接访问对应的值
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9321
在线时间
1023 小时
注册时间
2016-8-22
帖子
58

开拓者

8
发表于 2024-4-12 19:04:06 | 只看该作者
绯色之夜 发表于 2024-4-12 18:09
我的需求大致就是这样。技能效果可以理解为做一个装MP的容器,最多可以存储两次,一次存储当时使用者最 ...

应该可以
$gameVariables.value(n)    获取n号变量的值
$gameVariables.setValue(n,value)       设置n号变量的值为value
或者自己定义的变量:aaa、bbb、ccc
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
400
在线时间
82 小时
注册时间
2022-10-2
帖子
17
7
 楼主| 发表于 2024-4-12 18:09:32 | 只看该作者
本帖最后由 绯色之夜 于 2024-4-12 18:32 编辑
shiroin 发表于 2024-4-12 17:17
直接把技能效果写在eval里也能对技能效果做出分歧处理
但用技能成功率做判定会更方便点,这样还可以额外 ...

  1. var Umpx = Math.ceil(user.mhp * 0.5);
  2. <Before Eval>
  3. if (user.mpRate() >= 0.5) {
  4.     user.gainMp(-Umpx);
  5.     user.addState(15);
  6.     user.forgetSkill(11);
  7.     user.learnSkill(61);
  8.     user.learnSkill(16);
  9. }
  10. </Before Eval>
复制代码

我的需求大致就是这样。技能效果可以理解为做一个装MP的容器,最多可以存储两次,一次存储当时使用者最大MP值的50%,然后再做一个新技能,将存在变量里的MP释放出来。
但是我有个疑问,这种技能肯定是需要全局变量的,我不清楚YEP的插件是否可以跨技能访问变量......
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5274
在线时间
1212 小时
注册时间
2016-12-6
帖子
389
6
发表于 2024-4-12 17:17:58 | 只看该作者
绯色之夜 发表于 2024-4-12 14:09
this.item().successRate = 100;  这段代码是什么意思?我丢给GPT看了一下,它老人家说的,我完全看不懂 ...


直接把技能效果写在eval里也能对技能效果做出分歧处理
但用技能成功率做判定会更方便点,这样还可以额外定制技能失败时的效果
怎么选择还是要看你的系统打算堆多高的复杂度了
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
400
在线时间
82 小时
注册时间
2022-10-2
帖子
17
5
 楼主| 发表于 2024-4-12 14:20:32 | 只看该作者
505681468 发表于 2024-4-12 14:13
this.item() 应该是 Game_Action.item()
返回 Game_Action._item
_item 一般是 action 引用的 道具 item  ...

非常敢泄,泄了。
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1923
在线时间
586 小时
注册时间
2012-4-8
帖子
416
4
发表于 2024-4-12 14:13:33 | 只看该作者
本帖最后由 505681468 于 2024-4-12 14:14 编辑
绯色之夜 发表于 2024-4-12 14:09
this.item().successRate = 100;  这段代码是什么意思?我丢给GPT看了一下,它老人家说的,我完全看不懂 ...


this.item() 应该是 Game_Action.item()
返回 Game_Action._item
_item 一般是 action 引用的 道具 item 或者 技能 skill
skill.successRate 是技能成功率

pokemon 和 digimon 正在路上
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
400
在线时间
82 小时
注册时间
2022-10-2
帖子
17
3
 楼主| 发表于 2024-4-12 14:09:46 | 只看该作者
shiroin 发表于 2024-4-12 08:47
用YEP插件可以实现你的需求,不过有点绕,我尽量解释清楚……
首先你的技能A,技能效果就是为使用者赋予A状 ...

this.item().successRate = 100;  这段代码是什么意思?我丢给GPT看了一下,它老人家说的,我完全看不懂。。。。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
400
在线时间
82 小时
注册时间
2022-10-2
帖子
17
2
 楼主| 发表于 2024-4-12 12:27:59 | 只看该作者
shiroin 发表于 2024-4-12 12:25
用YEP插件可以实现你的需求,不过有点绕,我尽量解释清楚……
首先你的技能A,技能效果就是为使用者赋予A状 ...

非常感谢,主要是技能核心和状态核心才刚下载,教程也是P1到处搜刮而来。
很多地方还不懂,搞了一上午才发现技能和状态的时点后缀是不同的......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-21 20:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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