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

Project1

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

[交流讨论] 基于YEP插件的一些技能设计与实现方法

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2362
在线时间
300 小时
注册时间
2022-3-24
帖子
115
跳转到指定楼层
1
发表于 2023-4-11 23:50:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 zhufeng233 于 2023-4-25 22:43 编辑

最近在学习YEP与战斗相关的几个核心插件,网络上对此的教程非常稀缺,学习没有门路,几乎只能靠自己摸索。
目前找到的比较有用的资源除了YEP自己的一百多个范例外,就只有P1上另一位老哥分享的一些状态范例,观看学习后受益匪浅。
尽管自己刚开始学习,但也尝试着记录并分享一些自己设计或基于已有范例修改的技能,也会有一些YEP的范例工程,我会尽可能把注释翻译成中文,供有需要的人参考学习并一起交流。
由于自己也是初学,或许有诸多错误,请各位斧正。

评分

参与人数 3+3 收起 理由
moonyoulove + 1 塞糖
woliebe + 1 精品文章
马铃薯条 + 1 认可答案

查看全部评分

Lv3.寻梦者

梦石
0
星屑
2362
在线时间
300 小时
注册时间
2022-3-24
帖子
115
2
 楼主| 发表于 2023-4-11 23:56:29 | 只看该作者
首先是说一下目前主要用到的几个插件分别是:YEP的状态核心,技能核心,伤害核心,装备核心。还有一些用的不多的别的插件,具体用到哪些在具体案例里都会提及。如果你觉得后面的范例对你有用,请确保有YEP的全套插件。
其次是,因为要用到“疯狂模式”,所以可能要对js的一些基本指令有了解,我虽然对js一窍不通,但有一些别的语言的基础,结合范例不难理解语句的作用,但如果完全是编程小白,可能会有些看不懂,最好先具备一点编程基础,如果完全不懂又没有精力去学编程的话,也可以试着结合注释来分析语句的作用。
最后是自己做出来一个,有时间就会发出来,而且尽可能会写详细的注释,如果没什么进展就会先搁置。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2362
在线时间
300 小时
注册时间
2022-3-24
帖子
115
3
 楼主| 发表于 2023-4-12 00:20:55 | 只看该作者
仿制 LOL安妮的被动
在累计进行三次行动后,下一次行动会使目标眩晕。
一共要用到5个状态,以及状态核心
五个状态听着吓人,但其实其中三个是用来代替计数功能的。由于MOG插件与YEP的状态计数显示有冲突故而选择了这种替代方式。
以下是代码,可以直接复制到状态的注释处:
状态1:安妮被动(累计进行三次行动后,下一次行动会使目标眩晕)
<Custom Apply Effect>
target._yun = target._yun || 0;   \\初始化变量,target._yun 可以自定义变量名称,yun代表晕的意思
</Custom Apply Effect>

<Custom Action Start Effect>
if (target._yun <= 0) {    \\如果变量为0,角色行动一次变量计数+1,并给使用者添加ID为177的状态 177号状态为计数状态,无任何实际作用。
  target._yun += 1;
  user.addState(177);
}
else{
  if (target._yun <= 1) {    \\如果变量为1,角色行动一次变量计数+1,并给使用者添加ID为178并移除177状态 178号状态为计数状态,无任何实际作用。
    target._yun += 1;
    user.addState(178);
    user.removeState(177);
  }
  else{
    if (target._yun <= 2) {    \\如果变量为2,角色行动一次变量计数+1,并给使用者添加ID为179并移除178状态 179号状态为计数状态,无任何实际作用。
      target._yun += 1;
      user.addState(179);
      user.removeState(178);
    }
    else{
      if (target._yun <= 3) {   \\如果变量为3,角色行动一次变量计数归零(此时角色行动了三次),并给使用者添加ID为180并移除179状态 180号状态的设置看后文
        target._yun = 0;
        user.addState(180);
        user.removeState(179);
      }
  }
}
}
</Custom Action Start Effect>

177 178 179号状态均为计数状态,如不需要可以忽略相关指令。180号为给予目标眩晕的状态:

<Custom Action Start Effect>  
user.removeState(180);    \\行动后移除本状态
</Custom Action Start Effect>
并在该状态的设置中设置:攻击时附带状态:眩晕

大致如上,目前该状态存在两个问题:一个是现在我还不知道怎么具体判断角色进行了何种行动,导致不论角色采取什么行动都会累计计数(如角色喝药也会让计数+1)。还有一个问题也是因为我无法判断角色具体的行动,导致给敌人附加眩晕只能用“普攻”的方式,而不能让角色的任意技能都享受到眩晕的效果。
或许要等深入学习后才能解决,如果有大神肯指点一下就更好了。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2362
在线时间
300 小时
注册时间
2022-3-24
帖子
115
4
 楼主| 发表于 2023-4-12 00:27:13 | 只看该作者
发完之后意识到安妮的被动如果用技能核心去做可能会更好的实现,明天试试,如果效果上有优化再发一个新的
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
331
在线时间
72 小时
注册时间
2022-12-4
帖子
190
5
发表于 2023-4-12 08:04:30 | 只看该作者
zhufeng233 发表于 2023-4-12 00:27
发完之后意识到安妮的被动如果用技能核心去做可能会更好的实现,明天试试,如果效果上有优化再发 ...

感觉分享,对我们这些刚学习制作技能的很有帮助。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3902
在线时间
514 小时
注册时间
2020-6-14
帖子
76
6
发表于 2023-4-12 10:22:28 | 只看该作者
zhufeng233 发表于 2023-4-12 00:20
仿制 LOL安妮的被动
在累计进行三次行动后,下一次行动会使目标眩晕。
一共要用到5个状态,以及状态核心

计数相关的话还是利用好状态核心中的state counter吧,做多个状态来标记次数还是太精神污染了。
与本次行动关联的判断在confirm阶段写,可以用上this.isHpEffect(),this.isMagic(),this.isSkill()这类
克系游戏《书典怪奇录》内部开发中https://www.bilibili.com/video/BV1zp4y1B7Ce
任何热心游戏作者都欢迎的互相分享测试群1049580832
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2362
在线时间
300 小时
注册时间
2022-3-24
帖子
115
7
 楼主| 发表于 2023-4-12 11:13:22 | 只看该作者
jie119168 发表于 2023-4-12 10:22
计数相关的话还是利用好状态核心中的state counter吧,做多个状态来标记次数还是太精神污染了。
与本次行 ...

statecounter在显示上会与mog的战斗UI冲突导致不显示,才出此下策。
判断行动关联的部分还不熟悉,感谢你的提醒,晚些琢磨优化一下
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2362
在线时间
300 小时
注册时间
2022-3-24
帖子
115
8
 楼主| 发表于 2023-4-12 12:54:57 | 只看该作者
中午时间有限,先更新一个简单的技能:
属性伤害增强
用过RM的人应该知道RM里很蠢的一个点,就是不能让角色提升某种属性的伤害。
例如我希望一个角色学会一个被动技能:所有雷属性伤害提升10%,这在RM原版的环境下无法实现或者实现起来非常麻烦。
因此借助YEP的元素核心来实现这一功能,使用方法非常简单,只需要在某个状态的备注里如下编写:

<Element Amplify 4: +300%>

其中“4”是技能类型的ID,在我的数据库中ID为4的技能类型是:雷。后面是伤害加成倍率,我填写的是300%也就是该角色在这个状态下所有雷属性伤害翻三倍。
具体的技能类型与倍率可自行修改,如果需要做成被动技能还需要结合一些被动技能的插件,这里就不赘述
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2362
在线时间
300 小时
注册时间
2022-3-24
帖子
115
9
 楼主| 发表于 2023-4-12 13:43:08 | 只看该作者
下午的课吹了,爽到,再更新一个新技能:狂龙症
取自Monster Hunter系列中的一个技能,是我非常喜欢的一个技能,具体效果表现为:
战斗开始时角色身上会附加一个名为“狂龙症”的buff,角色处于该状态时会持续掉血。如果在战斗中角色造成了一定量的伤害(或进行了一定次数的攻击)则视为克服狂龙症,角色将获得一个高额的加成buff。
但如果角色在造成足够的伤害前反而受到了更多的伤害(或受到了一定次数的攻击)则会视为狂龙病发作,角色将获得一个严重的debuff。
这个状态在YEP的一百多个范例中有演示,我对其进行了一点简单的修改,让其更贴近怪猎中原本的狂龙症,当角色克服狂龙症后将回血,狂龙症发作则扣血。并且添加和翻译了注释,让编程或英语不太好的小伙伴也能读懂每一段的作用。
需要用到三个状态状态核心
三个状态中,其中一个是开局附加给角色的狂龙病,另外两个分别是角色克服与发作给的buff和debuff。
具体实现如下:

<Reapply Ignore Turns>

<Custom Apply Effect>
// 设置两种情况的变量,A情况为角色狂龙病发作,B情况为角色克服狂龙病。后面的数字是角色要造成(受到)几次伤害,才能触发克服(发作)狂龙病的效果。我这里设置了5,即角色要造成(受到)5次伤害后才会触发后续效果。
user._frenzyA = 5;
user._frenzyB = 5;
</Custom Apply Effect>

<Custom Remove Effect>
// 当狂龙病状态移除后,清除两个变量。
user._frenzyA = undefined;
user._frenzyB = undefined;
</Custom Remove Effect>

<Custom Respond Effect>
// 定义两个变量并赋值
target._frenzyA = target._frenzyA || 5;
target._frenzyB = target._frenzyB || 5;
// 如果角色受到了伤害,判断这次伤害是否大于0,只有大于0的有效伤害才会让计数-1
if (target.result().hpDamage > 0) {
  // 计数-1
  target._frenzyA -= 1;
}
// 如果计数变为了0
if (target._frenzyA <= 0) {
  // 移除狂龙病状态(在我的数据库中狂龙病编号为181)
  target.removeState(181);
  // 定义角色要受到的伤害,我这里给的数值是角色最大生命值的20%,也就是说角色如果狂龙病发作,就会受到20%最大生命值的伤害。
  var frenzy_damage = Math.floor(-target.mhp / 5);
  target.gainHp(frenzy_damage);
  // 弹出伤害数字
  target.startDamagePopup();
  target.clearResult();
  // 给角色附加上狂龙病发作的debuff,我这里debuff的ID编号为183
  target.addState(183);
}
</Custom Respond Effect>

<Custom Establish Effect>
// B情况为克服狂龙病的情况,与狂龙病发作的情况几乎一样,只是更改了对象和具体的状态ID,就不多赘述了。
user._frenzyA = user._frenzyA || 1;
user._frenzyB = user._frenzyB || 1;

if (target.result().hpDamage > 0) {
  user._frenzyB -= 1;
}
if (user._frenzyB <= 0) {
  user.removeState(181);
  var frenzy_recover = Math.floor(user.mhp / 5);
  user.gainHp(frenzy_recover);
  user.startDamagePopup();
  user.clearResult();
  user.addState(182);
}
</Custom Establish Effect>

在狂龙病buff中,我还添加了角色每回合-5%HP的效果,这个相信大家都会,就不专门写了,至于狂龙病发作和克服的具体buff效果如何也就交给大家自己编辑了。
和怪猎中的狂龙病很相似,是一种鼓励玩家进攻,收益与风险都很高的被动技能,大家可以根据自己的需要进行具体的修改。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2362
在线时间
300 小时
注册时间
2022-3-24
帖子
115
10
 楼主| 发表于 2023-4-12 13:44:19 | 只看该作者
woliebe 发表于 2023-4-12 08:04
感觉分享,对我们这些刚学习制作技能的很有帮助。

我也是刚开始学习,有很多错误和不足的地方
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 01:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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