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

Oscar_W
梅子酒呀 发表于 2019-7-26 22:33
希望支持能像SkillAPI一样的热键功能,切换工具栏就能释放技能 :D

这是个好主意!我会尽快添加上去的

Chaos_dream
很好的插件啊,刚好满足了我目前做rpg服务器的要求

QQ739562966
让攻击的伤害变成识别变量

目南殇
很好用,支持楼主

晨曦曦
插件很好用,最近在做服可以用到

Oscar_W
QQ739562966 发表于 2019-7-28 10:50
让攻击的伤害变成识别变量

具体一下?什么变量?手上的武器伤害?还是其他的一些

QQ739562966
oscarab 发表于 2019-7-28 11:46
具体一下?什么变量?手上的武器伤害?还是其他的一些

比如sx的伤害变量,直接识别这个变量变成攻击伤害

a2354668685
没有重置配置的指令吗

黑羽快斗´
1.8呢可不可以

qq1423143194
1.12.2报错

Oscar_W

请讲一下具体情况,包括报错信息和出现错误的情况

殇龙岩丶
这个插件有什么和其他插件冲突吗,为什么我用的时候给予物品会报错,输入任何关于这个插件的其他指令都没反应,技能也释放不出来

jiao1018000
技能显示非常棒

Oscar_W
龙岩是啊 发表于 2019-7-29 12:36
这个插件有什么和其他插件冲突吗,为什么我用的时候给予物品会报错,输入任何关于这个插件的其他指令都没反 ...

从你的描述来看,应该时填写物品的配置文件时出了些问题,你先对照一下例子里的格式,注意一下type这个项是要填写物品的英文名字的,你可以打开游戏按F3+H在物品下面会有显示,注意大写就可以了,如果我说的未能解决你的问题,希望你能给我看看报错信息

殇龙岩丶
oscarab 发表于 2019-7-29 18:30
从你的描述来看,应该时填写物品的配置文件时出了些问题,你先对照一下例子里的格式,注意一下type这个项 ...

如果我把例子直接复制过去还是弹出错误怎么办...

Oscar_W
龙岩是啊 发表于 2019-7-29 18:34
如果我把例子直接复制过去还是弹出错误怎么办...

刚刚发现个问题不好意思啊 直接复制会产生一些问题(尽管格式是对的),我现在上传一份写好的配置文件,你可以以此为基础编写,谢谢发现问题

殇龙岩丶
oscarab 发表于 2019-7-29 18:45
刚刚发现个问题不好意思啊 直接复制会产生一些问题(尽管格式是对的),我现在上传一份写好的配置 ...

嘻嘻..谢谢作者这么用心,点赞~

殇龙岩丶
oscarab 发表于 2019-7-29 18:45
刚刚发现个问题不好意思啊 直接复制会产生一些问题(尽管格式是对的),我现在上传一份写好的配置 ...

对了..输入/skillsystem reload也没任何反应,必须重启服务器才能重载插件,这个是插件冲突问题吗

殇龙岩丶
请您见谅..我是萌新辅助,问题有点多..skill触发的lore是必须写在item的物品上吧..但是您给出的技能范例只要导进skill.yml就报错,导致没法触发技能和给予物品,我试了一下,item和skill把您的范例复制进去,但是还是报错

Oscar_W
龙岩是啊 发表于 2019-7-29 20:08
请您见谅..我是萌新辅助,问题有点多..skill触发的lore是必须写在item的物品上吧..但是您给出的技能范例只 ...

那个reload的话是要op权限的,我这边测试是没有问题的,我需要看一下你的报错信息。那个技能范例里面有一个PlaceHolderAPI的变量,如果你没有装PlaceHolderAPI就会报错(听你这么说我觉得我应该完善一下报错的处理,变得友好一点,下一个版本吧),如果不需要就把那个变量删掉。还有触发问题,只要物品的lore中包含技能的名字就可以了,不一定要用我的物品配置,你用其他修改物品lore的插件也是可以的,例如论坛中的一些属性插件,很多都包含修改lore的。

XEarthlydust
支持原创,作者加油啊!

a2354668685
1.13.2使用重置指令没什么效果,什么都不显示也没报错

Oscar_W
a2354668685 发表于 2019-7-29 22:10
1.13.2使用重置指令没什么效果,什么都不显示也没报错

重置指令需要op权限,我这里测试是没有问题的,你可以再试试,比如在后台输入一下?

殇龙岩丶
oscarab 发表于 2019-7-29 20:56
那个reload的话是要op权限的,我这边测试是没有问题的,我需要看一下你的报错信息。那个技能范例里面有一 ...

的确是有op的,而且后台也试过了,没有任何反应,和楼下那个1.13.2的状况一样,报错信息是 An internal error occurred while attempting to perform this command ||PlaceHolderAPI我装了,but技能还是放不出来,只要把范例复制进skill.yml里面,就输入任何关于skillsystem插件的指令都会弹出上面的报错..

殇龙岩丶
oscarab 发表于 2019-7-29 23:03
重置指令需要op权限,我这里测试是没有问题的,你可以再试试,比如在后台输入一下? ...

后台输入会在后台报错,我把信息发给您,您看一下
> skillsystem reload
[08:50:53 WARN]: Unexpected exception while parsing console command "skillsystem
reload"
org.bukkit.command.CommandException: Cannot execute command 'skillsystem' in plu
gin SkillSystem v1.2 - plugin is disabled.
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:36) ~[Pap
erSpigot-1.12.2-b1562.jar:git-Paper-1562]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:15
1) ~[PaperSpigot-1.12.2-b1562.jar:git-Paper-1562]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServ
er.java:685) ~[PaperSpigot-1.12.2-b1562.jar:git-Paper-1562]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(Cra
ftServer.java:648) ~[PaperSpigot-1.12.2-b1562.jar:git-Paper-1562]
        at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java
:463) ~[PaperSpigot-1.12.2-b1562.jar:git-Paper-1562]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:
424) ~[PaperSpigot-1.12.2-b1562.jar:git-Paper-1562]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:
774) ~[PaperSpigot-1.12.2-b1562.jar:git-Paper-1562]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.jav
a:666) ~[PaperSpigot-1.12.2-b1562.jar:git-Paper-1562]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_91]
上面就是后台报错的全部信息了

殇龙岩丶
楼主,我发现了..是插件没更新...awsl 打扰了 对不起

殇龙岩丶
作者,every加持续时间之后会使所有技能冷却时间失效..比如我创建一个冷却为15秒的技能,里面写的是触发后8秒内每杀一个怪都加自己100生命和10攻击,但是8秒之后这个技能冷却时间就固定在7秒了,别的技能冷却时间失效无法释放,重载插件只能释放一次,之后冷却还是不走,只能重启服务器(求助)

隔叶听风
感觉很不错的插件 支持一下

殇龙岩丶
lz帮忙看看..我写的技能格式有错误吗...
为什么我分别绑定到3个不同的武器上
触发第三个技能,冷却会卡在17秒不动
然后就全部技能卡住cd
...
暗影突刺:
  cooldown: 10
  execution:
    - 'Run#Self#Message:§6我:§4暗影突刺!#0'
    - 'Run#Self#Charge:1#0'
    - 'Run#RaduisEntity:4#Damage:%sx_maxDamage%#0'
    - 'Run#RaduisEntity:4#ParticleEffect:DRAGON_BREATH:50#0'
  needPermission: false
  cankeyBoard: true
  message: §5暗影突刺§6距离冷却完成还有%cooldown%秒
血意之怒:
  cooldown: 15
  execution:
    - 'None#Self#Message:§6我:§c血意之怒!#0'
    - 'None#PointEntity#Lightning:1#0'
    - 'None#PointEntity#Damage:%sx_maxDamage%*2#0'
    - 'None#Self#ParticleEffect:FLAME:100#0'
    - 'None#PointEntity#ParticleEffect:FLAME:30#0'
  needPermission: false
  cankeyBoard: true
  message: §c血意之怒§6距离冷却完成还有%cooldown%秒
暗影七绝杀:
  cooldown: 30
  execution:
    - 'None#Self#Message:§6我:§6暗影七绝杀!#0'
    - 'None#PointEntity#Damage:%sx_maxDamage%*3.7+%sx_minDamage%*3.1#0'
    - 'None#PointEntity#ParticleEffect:ENCHANTMENT_TABLE:50#0'
    - 'None#Self#ParticleEffect:FLAME:50#0'
    - 'None#RaduisEntity:5#PotionEffect:SLOW:100:100#0'
  needPermission: false
  cankeyBoard: true
  message: §7暗影七绝杀§6距离冷却完成还有%cooldown%秒  

Oscar_W
龙岩是啊 发表于 2019-7-30 14:57
作者,every加持续时间之后会使所有技能冷却时间失效..比如我创建一个冷却为15秒的技能,里面写的是触发后8 ...

感谢反馈bug(很严重),我这边已经查找到一部分原因了,还有你下面反馈的技能的问题我也在测试着,我现在加紧修好,估计今天搞定,十分感谢你的测试和反馈!!!

殇龙岩丶
oscarab 发表于 2019-7-30 17:43
感谢反馈bug(很严重),我这边已经查找到一部分原因了,还有你下面反馈的技能的问题我也在测试着 ...

唔...感谢作者更新这么好的插件qwq..

殇龙岩丶
oscarab 发表于 2019-7-30 17:43
感谢反馈bug(很严重),我这边已经查找到一部分原因了,还有你下面反馈的技能的问题我也在测试着 ...

对了,作者,能建议一下么,加一个类似mm的 delay延迟释放一个技能中包含的动作组..一股脑全放可能会有点..
加了延迟之后比如击退啊,跳跃之类的和其他伤害衔接的更自然,而且radiosentity和pointentity都是按照位移(charge)之前的目标算的,另外发现一个小问题(可能不算是问题)pointentity只能攻击到较近的怪物,5-6格之后就摸不到了(游戏体验有点..)赞这个插件,支持原创

315366301
希望能够加一个指令释放的方式,可以配合部分识别LORE执行指令的插件。还有那个爆炸效果是真的会破坏方块,希望能够加一个关闭爆炸对方块伤害的配置。

千秋夏
刚好需要! 支持lz

Alpha-∞
a.a然而SkillAPI是不可逾越的

千秋夏
目标瞄准准信生物有时候失灵

Gtgns
好插件顶DDDD

qq1423143194
建议加个禁止某某世界释放技能
因为这样可以防止熊孩纸一直在不能PVP的区域释放技能
乱杀人

Oscar_W
qq1423143194 发表于 2019-7-31 15:39
建议加个禁止某某世界释放技能
因为这样可以防止熊孩纸一直在不能PVP的区域释放技能
乱杀人 ...

确实应该加上,很好的提议!

SoilFarmers
支持原创,给大佬递茶喝:)

殇龙岩丶
lightning会把掉落物打没..

殇龙岩丶
作者,我的技能是这么写的
紧急包扎:
  cooldown: 6
  execution:
    - 'SelfHealth<%sx_health%*0.7#Self#Message:§6我:§a快速包扎!#0'
    - 'SelfHealth<%sx_health%*0.7#Self#ParticleEffect:VILLAGER_HAPPY:50#0'
    - 'SelfHealth<%sx_health%*0.7#Self#HealthSet:%sx_health%*0.15+%sx_maxDamage%*0.7#0'
    - 'SelfHealth<%sx_health%*0.7#Self#PotionEffect:SLOW:60:2#0'
  needPermission: true
  cankeyBoard: true
  message: §5紧急包扎§6距离冷却完成还有%cooldown%秒
但是一使用后台就会报错
在处理包含算式的技能条遭遇了错误,具体位置
SelfHealth<5000.5*0.7
请问是技能格式问题吗.还是算式的变量问题

殇龙岩丶
(默默的说一句,打开skillsystem之后,已绑定的技能可以随便拖,随便挪位置)

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