Oscar_W
本帖最后由 Oscar_W 于 2021-12-27 10:34 编辑


技能系统



写在前面


粒子效果做得比较糟糕,打算抽出这部分另写一个粒子效果插件,尽量做的友好一些



特性介绍

  · 完全自定义的技能
  · 十余种条件判定,击杀、血量、奔跑跳跃等等
  · 四种目标选择,自己、范围生物、指向生物等
  · 十余种技能效果,伤害、射箭、药水、粒子等等
  · 可与VexView实现按键触发技能
  · 可使用物品或指令触发技能
  · 与Residence联动领地未开pvp不能使用技能


技能创建

  技能创建需要在Skills文件夹下的任意一个yml文件中进行,若没有这个文件夹插件会自行创建并附带有一个例子,这里先给出一个例子
  1. skillone:         #技能的名字
  2.   cooldown: 5          #冷却时间(秒)
  3.   description:           #技能介绍,会在技能绑定界面显示
  4.     - '一些介绍'
  5.   packet: 2               #共有几个技能包,需要与下面的你写的技能包数量一致
  6.   executionPacket1:                  #第一个技能包
  7.     - 'HasRaduisEntity:3#Self#Shoot:Arrow:10:1.1#0#Goto:2:1'
  8.     - 'None#Self#Message:成功#0'
  9.   executionPacket2:                     #第二个技能包,后面以此类推
  10.     - 'None#Self#Message:失败#0'
  11.   needPermission: false            #是否需要权限
  12.   cankeyBoard: true                 #是否可以用键盘触发
  13.   message: no!             #冷却未完成的提示语,可用变量%cooldown%表示剩下的冷却时间
  14.   banWorlds:                #此项可选,如果填写则所填的世界中不能使用该技能,不填(这一项全部删掉)则无限制
  15.     - 'banWorld'
复制代码

  按照上面的格式可以创建的一个基本的技能


技能包的介绍

  这是在1.5.1版本中新加入的概念,为了配合制作更加复杂的技能。
  你可以写若干的技能包,每个技能包中可以包含若干的技能条,技能开始执行时会从第一个技能包的第一个技能条开始执行,直至执行完一个技能包整个技能完成
  配合Goto你可以使你的技能跳转到某个技能包的某个技能条,但是注意,千万不要写成循环,这会使得你的服务器崩溃
  具体的写法参照上面给出的例子


技能条的介绍

  技能条是技能的主要组成部分,按顺序执行。它分成五个部分,中括号中的内容可省略,基本格式: 条件#目标#效果#持续时间[#条件不满足时执行效果]
  例子:None#PointEntity#Lightning:3#0     无条件使指向的生物被雷电劈造成3点伤害(持续时间无效,写上0)
  注意这里将使用#进行分割,技能条中凡是有数字的地方均可以使用PlaceHolderAPI的变量,且可以填写算式,算式可包括基本的数学函数:
    如:sin()  cos() tan() log()  请注意添加括号
    但是粒子效果处的数字和延迟中的数字不能使用变量和算式
  例子:None#RaduisEntity:3#Damage:%player_level%/2#0

  下面详细介绍各个部分
  条件

  目标

  效果

  持续时间(单位秒)

  条件不满足时执行效果
    当条件没有被满足时,这一项中写的效果将会被执行。这一项可以省略不写,若写按照效果的介绍来写即可
  延迟效果
    这个为特殊的技能条,只需要这样写 Delay:40 (单位Ticks)(无需写条件,目标,持续时间)


粒子效果

粒子效果的设置在Particle文件夹下,可以绘画出空间曲线和曲面,均采用参数方程的形式进行描述
  1. example:
  2.   x: (t)       #参数方程x=t
  3.   y: 1         #y=1
  4.   z: 0         #z=0
  5.   parameter:
  6.   - t:0:6.28:0.2:0        #参数字符:起始:终止:步长:延迟
  7.   adjustX: 0
  8.   type: REDSTONE
  9.   color: 0,0,255                #RGB颜色
复制代码

为了能更好的使用该功能,需要自行了解空间曲线与曲面的参数方程知识。
上面的例子中绘画了一条直线,参数t从0到6.28,每次变化0.2,这样就绘画出大量的点,连成一条直线,如果想让直线看起来更稀疏可增加步长,反之则减小步长。上面的例子在实际释放时,就会向准心朝向的方向发射一条直线,因为这里的坐标会随着当前玩家朝向进行变化。
在写参数方程时,参数需要使用小括号括起来。还提供有大量的基本数学函数,如"cos", "sin", "tan", "atan", "asin", "acos", "log", "random", "sqrt", "pow", "abs", "max", "min"
如果需要绘制曲面,则需要两个参数,在文末给出粒子效果文件里,还包含了一个绘画一个球面效果的例子,可做参考。
(其中的延迟与adjustX暂未完成,无效果)


技能的释放

  权限

  释放方法



物品创建

    物品创建需要在items.yml文件中完成,下面给出一个示例
  1. kk:                    #物品的引用名(在技能中使用)
  2.   name: yeah               #物品的展示名(若本项与lore同时全部删除则为原版物品)
  3.   type: DIAMOND         #物品的类型(大写英文)
  4.   lore:
  5.     - '这是一个示例物品'
复制代码



配置文件

    基本属性点需要在config.yml文件中完成,基本属性点是玩家开始便具有的,且会随时间逐渐恢复
    属性点相当于玩家身上的一个标签,可以用来做魔法值、体力值等等,配合技能效果里的操作使用
    每一个属性值会注册一个PlaceHolder的变量,为%skillsystem_属性点名字%
  1. Attribute:
  2.   List:         #所有的基本属性点,可自由添加
  3.   - Mana
  4.   Mana:
  5.     Timer: 1000        #每1000毫秒增加一点
  6.     Max: 100            #最大数值
复制代码



指令

      /skillsystem give 玩家名 物品引用名       将可以给予items.yml中设置好的物品 (需要op才可执行)

      /skillsystem             打开技能绑定页面
      
      /skillsystem [技能名]          使用技能

      /skillsystem reload             重载技能系统(需要op才可执行)


技能截图





相关资料

  有一些效果尚未翻译,期待更新,希望大家批评指正或者帮助我翻译
  粒子效果名字:  

  药水效果名字:  

  生物群落名字:  

  抛射物名字:  

  音效名字:  



下载与开源地址

  下载地址: https://pan.baidu.com/s/162Ez6iT-SwbB6gP3FRFitg 提取码: u72i
  这里是开源地址  https://github.com/oscarab/SkillSystem
  我深知这个插件仍有很多不足之处,接下来我会尽力进行不断更新,请大家及时更新到最新版本,也希望大家能给出建议!


更新记录与更新计划

建议在每次更新时都看一下更新记录,当前版本v1.6.1。喜欢的话评分支持一下作者啦

  更新记录:

  更新计划:

  已知BUG:



本插件所用所有代码均为原创,不存在借用/抄袭等行为


牧木目
老哥 这个字体 看不清楚啊!!

阿威23333
字体或者底板能换个颜色吗= =每次都要选中了文字才能勉强看清

Azitate
你这是直接复制了谁的排版吗....底色都乱了

Oscar_W
本帖最后由 oscarab 于 2019-7-26 13:19 编辑

不好意思!!!!各位,我第一次来用表格排版,出现乱码了,我马上去修改 (划掉,修改完了)

我也觉得奇怪了,在编辑区看是没有问题的,只好重新输入了一下颜色代码,现在是正常了

猿汐
很方便的插件吖,不错。

梅子酒呀
希望支持能像SkillAPI一样的热键功能,切换工具栏就能释放技能 :D

第一页 上一页 下一页 最后一页