本帖最后由 hj7332337 于 2018-3-26 22:01 编辑

一、前言

SkillAPI最近更新越来越不频繁了,可以这么说,SKillAPI的功能也逐渐趋于完善,因此我又萌生了更新这个几年前写的帖子的想法
现在的SkillAPI是1.7-1.12通用的,尽管低版本不支持一部分的功能,但总体来说使用是没问题的,所以各位可以放心使用插件以及本教程
本教程不会着重于免费版或者付费版的SkillAPI,通常不标注的时候是免费版的通用功能,付费版功能会有专门注释
本教程全程使用官方编辑器

在我们开始之前我先贴几个链接,同样是联机教程版块的SkillAPI其他教程我就不一一列举,请见谅


好了,废话少说,我们开始我们的正片

二、正文
1、SkillAPI的功能
     对于这部分,是介绍给那些想了解SkillAPI的新人的,如果是插件老手就完全可以跳过本部分了。
     总的来说,SkillAPI包含了以下几种功能:
  • 职业
       这里的职业包含了职业的名字,称号,血量,法力值等基本属性,也包含了前后职业、拥有的技能、技能树的类型以及属性要求等设定内容
  • 技能
       技能是整个SkillAPI最核心的部分,它包含了各种各样的被动技能以及主动技能,能让你按照自己的意愿制作出自定义的技能
  • 属性
       SkillAPI内置了属性系统,比如力量、耐力、智力等,你可以按照自己的意愿来增删改属性
  • 记分牌
       SkillAPI内置了一个功能简单但有效显示主体内容的记分牌,你可以修改上面显示的文字
  • 自定义命令
       SkillAPI里面的命令全都是可以修改的,你可以在command.yml里面更改前缀甚至是参数
  • 物品控制
       SkillAPI内置了极其简单的物品控制,能够规定哪种职业、多少级才能使用某样物品,同时可以通过lore的修改达到增加属性的效果(该功能有BUG)
  • 技能释放
       SkillAPI自带了多种技能释放方法,这个只能从里面自带的几个选择
  • GUI控制(付费功能)
       在付费版中,你可以通过游戏内的菜单快速地修改技能界面、属性界面、转职界面的图标排列顺序
  • 粒子效果
       通过使用本功能,你能在升级、转职、释放技能都能发出很Cooooool 的粒子效果,相较于免费版,付费版在粒子效果制作的时候更加方便以及效果更好
  • PlaceHolderAPI支持
       作者提供了完全不够用的PAPI变量给你用……

2、职业的制作方法
首先必须要说的是,一个职业转到另外一个更高的职业后,属性点、技能点、技能等都是保留的,但最大生命和最大法力值不会继承

图1-1

                                 
①职业总览列表:在这里你能够选择、新建职业

②职业基本设定:在这里你能够修改职业的基本设定,包括了名字、称号、组别、最高等级等。前面的都挺好理解,但要注意的是这里的职业名称和称号都是直接显示在头上的,而不是使用ESS的聊天格式,像这样:

    如果需要设定转职相关内容,你必须要在下一个职业的parent里面,选定前一个职业,像这样


图1-2

                                            

③职业进阶设定:这里能够设定当前职业最低所需要的属性,比如我们可以设置一个职业至少需要15点力量才能转到这个职业来,如果你自定义了属性,你可以直接把attribute.yml拖到网页上来读取属性名字
     mana-regen 即每秒恢复多少点法力值

④职业技能相关设定:在这里你能选择技能树样式以及当前职业拥有些什么技能,子职业(即转职后的职业)会默认继承父职业的技能
                                   注意!你必须要往里面添加了技能,该职业才能使用你添加的技能
    技能树的解释:
  • Requirement:相当于智能排序,如果你不想花功夫设置的话就选这个,他是按照技能的相关性自动排序的
  • Level开头的两个技能树:以技能所需角色等级为标准,进行水平(垂直)方向的排序
  • Basic开头的两个技能树:以技能链为标准进行排序,需要你设计的技能拥有一个完整且逻辑严谨的技能链,否则你会发现同一技能会多次出现在不同的行里面

⑤职业选择图标设定:在这里你可以选择你的职业在选择界面出现的图标,图标的data值以及鼠标移到图标的时候上面显示的提示性文字

图1-3

                                          
职业的其他设定:⑥当前职业禁用的物品;⑦ActionBar(就是血量条上面不时出现的小标题文字)的显示格式

3、技能的基本制作方法

技能制作是SkillAPI最核心的部分,同时它也是最复杂,最难的一部分,如果我要在这里把我的经验全部介绍出来,可能会超过一万字,因此我在这里将只会介绍制作技能的基本步骤以及一些常规功能和主要选项,而对于子选项内的详细功能将不会介绍以及解析,value-attribute具体是怎么工作的,当然我会在帖子最后展示出一些技能模板供大家参考,日后可能会对这些技能模板开一个新帖进行详细解析,不过那都是后话了。


因为技能制作面板总共有三大模块,因此在这一章的介绍里面,我会从这三个模块出现时间顺序进行介绍

图2-1&图2-2


图2-1和图2-2同属技能信息模块,在这里你能够设置一些技能相关信息,比如技能的名字,冷却时间、技能点消耗、耗蓝等。技能信息模板总体和职业设置界面相似,因此这里就不一一展开介绍。需要注意的是,min spend 是指开启该技能需要先行使用过多少技能点;incompatible 是指该技能不能和下列技能同时被学习

在完成了技能信息设置以后,点击edit effect,即可进入技能制作的核心部分——效果编辑
刚进入效果编辑时,界面如图2-3显示

图2-3


①功能条:你能够从这里进行一些界面的跳转以及进行保存删除等操作
②操作区:该区域的每个标签都能自由拖动和编辑,是你在编辑修改技能的好帮手,在你第一次进入这个界面的时候,操作区理所当然是空的

进入这个界面以后,你第一件事要做的就是选择技能的触发方式,点击功能条的Triggers,进入触发方式界面

图2-4:触发方式界面


通常来说,如果你要做一个主动技能,你需要选择的只是cast;而当你想要做被动技能的时候,你可以按照你的需要选择其他的触发方式。触发方式决定了你的技能,将会以如何的方式发动,是一个技能必选内容。

选好了触发方式以后,你就会再次跳转到操作区,这时候你就发现操作区多出了一个标签,点一下标签上面的add child(添加子标签),你会进入到标签选择界面,


图2-5:标签选择界面


标签选择界面的内容繁多(其中蓝色的为付费版功能),这也就是为什么我不可能对每一个内容进行介绍的原因。但你可以发现标签选择界面有三个大标题:

  • targets(目标):目标规定了技能的目标对象,这里分为了指向性以及非指向性的目标,指向性包括了single(单体)、self(施法者自身)、remember(标记的目标),而其他的都是非指向性的目标
  • conditions(条件):条件的作用是限制技能的使用范围,比如说你可以通过条件标签来规定一个技能只能在血量低于50%的时候才能使用
  • mechanics(操作、效果):操作用于定义技能拥有哪些实质性的功能,比如技能的伤害

在这三个大选项里面,targets和mechanics是必须,conditions是可选的,因此,只有当你的技能拥有了两个必须条件时,你的技能才能真正开始工作。图2-3显示了一个最简单的技能

当你选择了标签的时候,你将会跳转到以下界面:        

图2-6:标签编辑界面


标签编辑界面是用于进行标签的进一步设置的,我们这里以图中的damage标签来进行介绍:
①通用属性:通用属性是每一个标签都拥有的,它是用来设置该标签如何被调用的,如果你想不懂的话,你完全可以不理他
②标签独立属性:这些属性都是当前标签独有的,你必须要对其进行细致的修改才能制作出个性化的技能


当你完成了这一系列职业技能的制作,你就可以点击最右上角的save,编辑器会自动帮你生成两个文件:classes.yml和skills.yml,将他们放到\plugins\SkillAPI\dynamic\           这个目录里面去,然后重启服务器或者重载插件,插件会自动帮你拆分成单个的技能和职业文件。

4、属性的制作方法

在RPG的游戏中,最不可缺少的自然还有属性。SkillAPI虽然自带了一个做好的属性列表,但我如果是你,我就会多做点属性来玩。
具体的格式可以到attribute.yml了解,当你需要一个新的属性,请复制粘贴然后修改,我这里就不在冗述格式了
在文件中,我们可以看到,除了基本的名字、最高等级(max)等修改以外,还有global、stat两个标签
global是规定该属性只能在哪一种技能里面起作用,而stat则是这个技能主要起作用的部分

那么stat里面可以填些什么东西呢?

点击打开列表,其中P代表付费版功能,1.9+代表需要1.9以上的版本才能使用


属性点提供的属性则有两种格式:

  • 加法型:a*<num>+v     <num>改成你想要加上的点数。比如说我想要每一点属性加上两点攻击,我可以这么写:a*2+v
  • 倍数型:v(a*<num>+1) <num>改成你要乘上的倍数。 比如说我想要每一点属性提高0.1%的伤害,我可以这么写:v(a*0.1+1)


不行,要死了……写到了早上5点钟,今天就先到这里,先去休息了,说好的技能模板以后再说