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

Project1

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

[有事请教] 做了一个mp不够时用hp代偿的技能,但是遇到了一些问题

[复制链接]

Lv2.观梦者

梦石
0
星屑
507
在线时间
65 小时
注册时间
2022-5-12
帖子
5
跳转到指定楼层
1
发表于 2024-7-3 17:59:44 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
用的YEP技能核心插件,做了个mp不够就用hp代偿的技能,但是当mp不够的时候会先扣掉剩余mp,然后再判定mp为0后扣除多余的hp,比如现在我还剩3mp,技能释放应该也是只扣3mp然后mp归0,但是它会扣了3mp后判定mp为0,再扣30%最大hp,咋办呢

<Custom Requirement>
if (user.hp > (user.mhp*0.3)) {
value = true;
} else {
value = false;
}
</Custom Requirement>

<Custom HP Cost>
  if (user.mp >= 3) {
  cost = 0;
  } else {
  cost = (3 - user.mp) * (user.mhp * 0.1);
  }
</Custom HP Cost>

<Custom MP Cost>
  if (user.mp >= 3) {
  cost = 3;
  } else {
  cost = user.mp;
  }
</Custom MP Cost>

Lv2.观梦者

梦石
0
星屑
507
在线时间
65 小时
注册时间
2022-5-12
帖子
5
7
 楼主| 发表于 2024-7-3 19:23:06 | 只看该作者
shiroin 发表于 2024-7-3 19:16
嘿呀,又忘记了user指向的是对象,直接用加减法是不行的
你试试改成user.gainMp(-mpCost)和user.gainHp(- ...

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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5274
在线时间
1212 小时
注册时间
2016-12-6
帖子
389
6
发表于 2024-7-3 19:16:58 | 只看该作者
1927802274 发表于 2024-7-3 19:08
刚吃完,回来试了下上面的但是还是不行(啥也不扣),但是看起来好像没问题,我也不知道哪里出了问题,好 ...

嘿呀,又忘记了user指向的是对象,直接用加减法是不行的
你试试改成user.gainMp(-mpCost)和user.gainHp(-hpCost)
user.mp = 0则是改成user.setMp(0)
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
507
在线时间
65 小时
注册时间
2022-5-12
帖子
5
5
 楼主| 发表于 2024-7-3 19:08:56 | 只看该作者
shiroin 发表于 2024-7-3 18:27
哦不好意思,一开始理解错你需求了,你可以试试直接用Before Eval语句来统合HP和MP的消耗计算,这个脚本会 ...

刚吃完,回来试了下上面的但是还是不行(啥也不扣),但是看起来好像没问题,我也不知道哪里出了问题,好神秘,还是谢谢大佬了
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5274
在线时间
1212 小时
注册时间
2016-12-6
帖子
389
4
发表于 2024-7-3 18:27:37 | 只看该作者
哦不好意思,一开始理解错你需求了,你可以试试直接用Before Eval语句来统合HP和MP的消耗计算,这个脚本会在技能使用奏效前先发动:
JAVASCRIPT 代码复制
  1. <Before Eval>
  2. var mpCost = 3;  // 技能需要的MP
  3. var hpCost = 0;  // 初始化HP消耗
  4.  
  5. if (user.mp >= mpCost) {
  6.     // 如果MP足够,正常扣除MP
  7.     user.mp -= mpCost;
  8. } else {
  9.     // MP不足,先扣除所有MP
  10.     var remainingMPCost = mpCost - user.mp;  // 计算剩余需要的MP
  11.     user.mp = 0;  // 扣除所有MP
  12.  
  13.     // 计算转化为HP的消耗
  14.     hpCost = remainingMPCost * (user.mhp * 0.1);  // 剩余MP转化为HP消耗
  15.     user.hp -= hpCost;  // 扣除HP
  16. }
  17.  
  18.   </Before Eval>

技能注释只要加上面这一句,Custom HP Cost和Custom MP Cost都可以删掉了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
507
在线时间
65 小时
注册时间
2022-5-12
帖子
5
3
 楼主| 发表于 2024-7-3 18:16:43 | 只看该作者
shiroin 发表于 2024-7-3 18:11
因为你两个条件句都是if (user.mp >= 3),写法不严谨,当玩家MP刚好只有3时,这两个消耗就会同时生效

最简 ...

其实一开始写的条件是if (user.mp < 3),但是还是扣了,而且如果是剩2mp使用技能依然会扣掉30%hp……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5274
在线时间
1212 小时
注册时间
2016-12-6
帖子
389
2
发表于 2024-7-3 18:11:12 | 只看该作者
本帖最后由 shiroin 于 2024-7-3 18:12 编辑

因为你两个条件句都是if (user.mp >= 3),写法不严谨,当玩家MP刚好只有3时,这两个消耗就会同时生效

最简单的改法就是把Custom HP Cost里的条件句改掉:

<Custom HP Cost>
  if (user.mp < 3) {
   cost = (3 - user.mp) * (user.mhp * 0.1);
  } else {
  cost = 0;
  }
</Custom HP Cost>
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 19:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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