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

Project1

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

[有事请教] 请问如何让玩家佩戴特定的装备时,敌人的某技能表现不同

[复制链接]

Lv2.观梦者

梦石
0
星屑
716
在线时间
6 小时
注册时间
2017-5-9
帖子
2
跳转到指定楼层
1
发表于 5 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问如何实现“敌人用某个技能攻击角色时,如果该角色身上正在穿戴某个装备,则不造成伤害改为播放一个事件。”
我想做的效果是:如果我身上穿着圣光铠甲,那么亡灵使用近身攻击的时候不会对我造成伤害,反而他们会受到5点光属性伤害并添加燃烧状态,如果我没穿圣光铠甲,则我正常受到a.atk - b.def伤害。

如果用开关和事件来模拟的话,我发现有三个难点。
1.无法在事件中指明敌人的目标是谁。
2.开关无法随时检测玩家当前是否装备了某个装备(战斗中可以换装备)
3.伤害公式是否能写在事件里?

另:我使用了BattleCore.js,但是仍然不知道如何使得技能中的使用者和目标与事件里的user、current target绑定

Lv4.逐梦者

梦石
0
星屑
9289
在线时间
1026 小时
注册时间
2016-8-22
帖子
60

开拓者

2
发表于 5 天前 | 只看该作者
1、安装插件:VisuMZ_1_BattleCore.js
2、在角色备注栏写:
JAVASCRIPT 代码复制
  1. <JS Pre-Damage As Target>
  2.   //角色受到伤害前
  3.   if (target.hasArmor($dataArmors[n]) && this.isHpEffect() && value > 0 && user.enemyId() == m) {
  4.       //角色持有护甲(n需要根据自己游戏情况填写),敌人为亡灵(m需根据游戏情况填写)
  5.       value = 0; //不会受到伤害
  6.       let fanshang = 5;
  7.       user.gainHp(-fanshang); //攻击者(亡灵受到5点伤害)
  8.       user.startDamagePopup();
  9.       user.addState(id); //亡灵附加燃烧状态,id根据自己游戏写
  10.   }
  11. </JS Pre-Damage As Target>

在自己工程中测试过没啥问题,更多的功能可以自行添加。

PS. 找脚本代码可以从这个网页里面搜索。非常好的脚本调用手册
虽然是MV的脚本,大部分MZ也可以使用
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8090
在线时间
1864 小时
注册时间
2017-10-23
帖子
356
3
发表于 4 天前 | 只看该作者
有意思嗎?沒意思
玩家能知道這個觸發點嗎?重複觸發會降低玩家體驗感;
要想做成游戲,放棄這些不切實際的做法,把時間和精力花在主要的地方。
要想達到劇情效果,又讓玩家有參與感,直接劇情描述就行。
你這個就跟戰鬥内劇情需要某個角色無敵幾回合一樣沒意思,幾十年前就問過了,這種游戲沒一個成事的。
回复 支持 0 反对 1

使用道具 举报

Lv2.观梦者

梦石
0
星屑
716
在线时间
6 小时
注册时间
2017-5-9
帖子
2
4
 楼主| 发表于 前天 04:53 | 只看该作者
dunklen.f 发表于 2025-3-26 19:24
1、安装插件:VisuMZ_1_BattleCore.js
2、在角色备注栏写:

十分感谢解答!在进行编码时又伴随如下问题:
1.如何保证:使用某个技能的时候才触发?
2.如何确保反伤是反火属性伤害?(比如有受到200%火属性伤害的不死生物会正常受到200%火属性伤害)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9289
在线时间
1026 小时
注册时间
2016-8-22
帖子
60

开拓者

5
发表于 1 小时前 | 只看该作者
1、你想表达的是特定技能触发反伤么?直接改备注栏标签即可
角色备注栏中<JS Pre-Damage As Target>改为技能备注栏<JS Pre-Damage>


2、特定属性--不会。
但是反伤翻倍--可以。

在技能备注栏中写:
<JS Pre-Damage>
    if (target.hasArmor($dataArmors[n]) && this.isHpEffect() && value > 0 && user.enemyId() == m) {
      let fanshang = value * 2; //备注自行定义
      value = 0;
      user.gainHp(-fanshang);
      user.startDamagePopup();
      user.addState(id);
  }
</JS Pre-Damage>

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-3-31 20:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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