本贴由skillAPI教程改为skillAPI和Mythicmob案例分享
因为忙于学业很久没有更新了,回来发现skillAPI的教程已经很多了,而且都做得比我好。
但我这贴也不能就这样废了啊~~~~
课本不仅有知识点还要有例题,那么正好自己也在倒腾RPG服,所以分享些案例给大家,希望有帮助。
旧教程部分(推荐看其它大佬的教程)
skillAPI编辑器教程 前言 这是一个功能很强大的自定义插件,相信许多人已经见过。但是由于还没有一个完整的教程,很多服务器都没有选择这个插件。今天在下就写了一个小小的编辑器教程,方便大家使用好这个插件~ 注:编辑器只适用于1.8以上版本的skillapi,如果是1.7的还是老老实实学写例程吧。。。 先给两个前辈的地址,大家对这个插件有所了解再看编辑器的教程吧。 [编程|娱乐|机械|角色]SkillAPI—— 你的世界有无限可能[1.8.1-1.6.2][HAYO Stdio] http://www.mcbbs.net/thread-314419-1-1.html SkillAPI教程——懒人专用的教程[9月27日更新 http://www.mcbbs.net/thread-475632-1-1.html 索引 1.职业 2.技能 只有两个部分啦~~~~ 好,你们现在教程开始 先给出编辑器的地址,因为是网页编辑的,所以我不知道怎么汉化。。。 https://eniripsa96.github.io/SkillAPI/ (这是2017.8.30为止,最新的编辑器地址) 教程会持续更新,有什么地方不清楚的可以回复,我会尽快补上。 职业 首先打开编辑器,看到有两大分类[attach]851696[/attach] Skills是技能,classes是职业 1.创建职业 现在选择classes,点击new class添加一个新职业 2. 2.编辑职业基本属性 我先编辑好了几个职业作为例子 看到左边的板块,是职业的基本信息 下面我解释一些重要的参数 Name名字,这是这个职业的名字也是标签,可以使用中文 Prefix前缀,这个会显示在玩家聊天信息前面,支持颜色代码 Group组名,这个是职业的分组,目前看没有多大用处,可能是方便编辑吧。比如战士法师什么我设置为主职,皮匠铁匠我设置为副职,狂战元素我设置为二转等等。这里也可以用中文(好吧,这个插件全部支持中文,后面我就不声明了。) Mana name魔法的名字,这个一般全部职业设置成一样的就好了。不过有特殊需求的可以改为别的,比如战士可以叫怒气,牧师可以叫信仰。 Max level最大等级 Parent父系职业,这一项的意思是这个职业 上一个等级职业。比如我设定战士可以转职为狂战,我在战士的parent写none,在狂战的parent写战士,这样只有职业是战士的玩家才可以升级为狂战了。(注意,这里写的就是职业的name那一项) Permission权限,是否需要权限。这里用作VIP职业,或许吧。权限节点是skillapi.class.{classname},例如skillapi.class.战士 Exp soures经验来源,这里是设置可以获得职业经验的途径。要注意,玩家经验是物品栏上面绿绿那个,职业经验是另外分开的。 Mob怪物 Block Break破坏方块 Block Place放置方块 Craft 合成 Command 指令 Special 特殊(这个我也没搞懂是什么) Exp Bottle 经验瓶 Smelt 气味???(不清楚) Quest任务,这个是配合quest插件使用的。 Health生命值,前面是基础值后面是每级增加的量,比如health:30+2就是基础30滴血每级加2滴 Mana魔法值,同上。 Mana regen魔法恢复,每个周期恢复的魔法值。默认周期是一秒,可以在config里面设置。 Skill tree技能树 这里引用@ hj7332337的教程贴: 它包含了以下几个:BasicHorizontal BasicVertical LevelHorizontal LevelVertical Requirement,我这里只介绍官方配了图的两个样式,因为这除非是有特殊要求的人,很少要修改的,一般用Requirement就可以了 先来介绍Requirement,这个是经常用的了, 他分为连锁技能和非连锁技能,左边是非连锁的,中间空一列,然后右边就是连锁的技能,必须要先点最上面的基本技能,然后才能点Tier 1、Tier 2这样的技能 接下来就是Basic Horizontal,自己看图吧,到这里写的有点累了 Skill职业拥有的技能,一行写一个。这个先不用写,等编辑好技能再添加。 Icon图标,显示在职业面板的图标,这个地方只能用物品的英文,自己慢慢翻吧。 Icon data图标的叠加数量,可以无视 Icon lore职业介绍,这里给个例子: &6游侠 &f游侠是跟踪与侦察的高手。 &f他们能够在荒野中轻松的伏击或者是给对手下陷阱。 大概就是这样了。 好吧,职业部分的介绍就到这里,还有什么不清楚的可以恢复留言,我会补充的。 技能部分待续。。。。(一般一周更新一次) 附带:看到这里你是不是已经心动了,有没有打算实现一个RPG梦想,创造一个自己的RPG世界。 好了,现在就开更大家期待已久的技能部分。 技能 首先又是点开编辑界面 于是我又做了几个技能作为栗子 先从技能介绍开始讲,上面的details就是技能的文字介绍和一些基本属性(添加技能上面就不用说了,都支持中文的) Name技能名字(不解释) Type类型,自定义,可以随便写 Max level技能最大等级,注意是这个技能最大可以点到多少级的意思。 Skill req前置技能,学习这个技能需要先学什么,填技能名 Skill req level前置技能等级 Permission权限,节点是skillapi.skill.{skillname},比如我给skillapi.skill.地狱之火这个权限就是给现在这个技能 Level req等级需要,注意这里是职业等级,不同于角色等级(上面有说到) Cost升级一次花费的技能点,括号后面是每级增加多少,下同 Cooldown冷却时间,单位是秒,但是经过测试好像不是秒,比秒快一些(确实不清楚 Mana耗费魔法值,只对主动技有效 Cast message发动时发送的信息 Icon图标,显示在技能菜单的图标 Icon data图标数量 Icon lore图标标签,也就是技能介绍,和职业的lore差不多,有一些变量下面再讲。 接下来是编辑技能效果 先来看看几个英文 [attach]855276[/attach] 触发器,也可以理解为技能发动的条件,里面的内容: [attach]855277[/attach] cast主动触发,使用快捷键 crouch蹲下时触发 death死亡时触发 initialize初始化触发?估计是复活时触发 kill击杀时触发 land落地时触发 physical damage造成物理伤害事触发 skill damage造成技能伤害时触发 took physical damage受到物理伤害事触发 took skill damage受到技能伤害时触发 欲知后事如何,请听下回分解~ 2016.1.2 好久不见,前段时间学业比较忙,没能做到周更,实在是抱歉哈{:10_522:} 看到回复中有点同学急于知道完整的技能制作过程,但是这个插件的参数又如此之多,不是一时半会的能介绍完的(其实就是精力有限哈。。。) 所以这次我就先举几个技能的例子,有兴趣的可以照葫芦画瓢,模仿着做几个。需要了解什么,直接回复即可,每周回来解答还是可以滴。。 说实话,这个插件真的不难,就是刚入门看见一推英文会很头疼。 好了,废话不多说,进入正题。 现在在下就现场编个技能, 技能类型:被动 职业:火术士 介绍:操控地狱之火什么什么的。。。 效果: 当受到物理伤害时,将半径20格内的未燃烧敌军目标点亮(点亮使用的是lighting这个效果,如果没有翻译错的话)——隐身夜行侠克星 当受到法术伤害时,有几率使半径10格内的敌军燃烧,触发几率25%,技能每级增加5%几率,燃烧持续时间3秒,每级增**。 下面是制作出来的总效果图 [attach]869049[/attach] 简单说明一下,技能效果分为两项 受到物理伤害时触发(左边那一条) 受到法术伤害时触发(右边) trigger就是触发条件,之前好像说过了。 然后点击触发条件下面的那个+add child就是满足触发条件之后的效果 可以看到,我在trigger后面加了个target,也就是目标 目标选择area(范围),选择后会有个编辑界面。 看一下area的编辑界面 [attach]869058[/attach] [attach]869059[/attach] 讲几个重要的: radius半径,也就是技能介绍里说的,半径20内的会内点亮。 group组,我选择enemy,也就是敌军才会被点亮 下面还有是是否穿墙什么什么的 最后一条是最多选择多少个目标,我设置成99,就是不限制啦。 对了,这里顺便讲一下lore的互联。 把鼠标移到参数icon key前面 [attach]869072[/attach] 大概的意思是,如果你在这里填example的话,就可以在技能介绍中使用{attr:example.xxx}的参数,格式:{attr:iconkey的内容.下面参数的名字} 我再拿area半径做个例子 [attach]869077[/attach] 我在icon key填area,半径设置为基础20格,每级增加5格 于是我就可以使用{attr:area.Radius}这个参数啦~~~ 打开这个技能的details界面,在最下面的lore [attach]869088[/attach] 我写得是:“当前等级触发半径:{attr:area.Radius}格” 当我的这个技能1级时,在游戏里现实的是:“当前等级触发半径:20格” 技能2级时显示:“当前等级触发半径25格” 以此类推。 这个功能就是这样用啦,我也不知道我讲清楚没有。啊。。 又回到前面说的技能。 话说为什么字体变了。 area再add child就是condition状况,我选择了fire,判断目标是否着火,里面编辑可以选not on fire. 如果目标着火,则进入condition下面的mechanic,也就是技能效果。 我在mechanic这选择lighting,一个是点亮的意思。 每个参数都能点进去编辑的,英文什么嘛,好好学英语吧,我试过有道不能直接翻译编辑器了,2333 最后就是将这个技能save保存,放入skillAPI的配置文件内,开启服务器,就能在技能面板看到啦。 好了,这次的更新就到这里。。。。 预计下次更新是两周后。 2016.1.16 实在对不住大家,{:10_514:}在下高三狗+正忙着准备SAT,实在挤不出时间了。。。。汉化是事,只能等2月份了。 不过大家遇到什么问题可以直接私聊或回帖,我在学校还是可以用手机回复滴~ 我的QQ916112430,备注bbs就行 2016.1.29 触发器部分(triggers)
目标部分(target)
触发条件部分,元旦前后再更新。。。 2016.4.4 哎呀呀呀,真是不好意思,一直忘记更新了。 今天就先汉化一点东西吧。。。 Child\Conditions条件部分(事先说明一下,这个部分我也不是很懂)
啊,旧教程到此结束 |
下面是正式的案例
粗略的设计一下
2018.2.10 下面是以PVE为基础设计的,因为我的服没有PVP(才不是因为PVP难设计呢~) 先设计职业,一般网游都是战士法师刺客嘛,那我就定为剑士、术士、重甲、猎弓4种职业(其实是根据MC里剑、锄头、斧头、弓来设定的) 剑士:标准的物理输出职业,近战中有着高伤害的优势,远距离劣势,生命和防御是中等水平 术士(古尔丹??):类似法师与祭祀结合的职业,法术输出,通过吸血回复生命,近战劣势,生命和防御较低 重甲:皮糙肉厚的职业,团队之盾,物理输出,生命和防御极高 猎弓:善用弓箭进行攻击,远程物理输出 平衡职业:各项数值均是平均水平,用于其它职业的对比,玩家不可选该职业 等级: 因为skillAPI的何种属性公式都是a+b*level,所以为了方便期间,还是全部用20级一个大等级,即1、20、40、60、80、100 每个大等级玩家更新一次装备 怪物的等级也是跟玩家一样为1、20、40、60、80、100 怪物掉同等级的装备,一个等级的BOSS属性相当于下一个等级的小怪,例如20级的BOSS和40级的小怪能力相当 评判一个怪物的能力就根据与怪物同等级的玩家需要打多少下才死。 玩家打同等级的怪物需要打20下,打高一等级的怪需要100下,高两个等级的看造化(这里仅以平衡职业来衡量) 那么根据以上设定可知,每个大等级的血量是上一个等级的5倍,伤害也是5倍(玩家和怪物都是如此) 设计到这里,还需要了解MC的一些机制 以下内容摘自Wiki: 盔甲: 当盔甲为玩家吸收伤害,盔甲本身会受损, 会减少。在受到一定伤害后,盔甲会损坏。 伤害种类: 以下种类的伤害会被盔**少并因此使盔甲本身受损: 以下种类的伤害不会被盔**少并对盔甲自身没有效果: 盔甲韧性: 盔甲能进一步通过另一个 —generic.armorToughness来保护玩家。默认只有钻石盔甲提供盔甲韧性,每个部件给予+2盔甲韧性。 伤害保护: 受到的伤害是基于盔甲的防御点数、韧性和攻击强度的。 伤害的方程式是damage = damage * ( 1 - min( 20, max( defensePoints / 5, defensePoints - damage / (2 + (toughness / 4) ) ) / 25 )。每一防御点数减少最多4%伤害;攻击伤害愈高,盔甲能减少的百分点愈少,最低为0.8%。当盔甲韧性增加,高伤害攻击减少的防御量会减少,而如果盔甲韧性到达一个很高的数值(通过使用命令),高伤害攻击减少的防御量是微不足道的。 目前最有用的就是伤害方程式damage = damage * ( 1 - min( 20, max( defensePoints / 5, defensePoints - damage / (2 + (toughness / 4) ) ) / 25 ) 意思是实际受到的伤害=攻击强度*(1-取最小值((20)或(取最大值((防御点数/5)或(防御点数-伤害/(2+(韧性/4))))))/25) 是不是眼花缭乱呢,没关系,我们从中知道玩家受到的伤害大概和哪些属性有关就行了,因为配置Mythicmob要用到 从中也可知,防御最高时,受到伤害=攻击强度*(1-20/25)=攻击强度*20% Wiki中还写到,钻石套提供了20点防御点数,以及8点韧性 代入公式:damage=damage*(1-min(20,max(20/5,20-damage/(2+(8/4))))/25) 当攻击较低时,假设攻击为16,damage=damage*(9/25) 当攻击较高时,假设攻击为100,damage=damage*(21/25) " 当盔甲韧性增加,高伤害攻击减少的防御量会减少,而如果盔甲韧性到达一个很高的数值(通过使用命令),高伤害攻击减少的防御量是微不足道的。 "这就是mythicmob中设置的韧性的作用 等等 |
初始数值
玩家的初始数值就以原版生存中穿上无附魔钻石套的玩家为基准(因为设定是玩家生存玩得差不多了开始玩RPG) 玩家的数值:玩家自身属性+装备属性(因为skillAPI的血量设定是线性增长的,所以需要装备来弥补成指数增长的) 拿钻石剑的攻击是7,设定攻击力1级5,20级25,40级125,60级。。。 血量=攻击力*20 MC的默认血量是20,那1级血量为100,20级为500,40级为2500,60级。。。。(这里可能需要在spigot.yml改一下血量上限) 生命值公式=80+level*10(前面加的20是怕0级没血,到后面这可以忽略) 则玩家自身血量1级90,20级280,40级480,60级680 装备提供的血量1级10,20级500-280=220,40级2500-480=2200,60级。。。 这样子做出的血量波动比较大,就是函数是波浪形,容易造成20级玩家碾压19级的现象,最好就是改成10级或者5级为一个大等级 或者就是做装备强化,类似“某某匕首+12”那种 上面的攻击指的是实际的受到的伤害 skillAPI基础有两个属性:生命和魔法 附加的有:活力、精力、智力、力量、敏捷 活力:+1生命 精力:+1魔法、+2.5%魔法恢复 智力:+2.5%技能伤害 力量:+2.5%物理伤害 敏捷:+2.5%技能释放范围 这么看来,活力和力量是给重甲和剑士的,精力和智力给术士,力量和敏捷给猎弓 重甲的生命要比剑士高,剑士物理伤害较高 平衡职业按各项为100%来算 生命:60+level*8 **:10+level*100(这里乱写的,以为要写了技能才能决定这里) 活力:20+level*2 精力:10+level*10(同**) 智力:0+level*2 力量:0+level*1 敏捷:0+level*1 重甲: 生命:120% 魔法:50% 活力:130%(活力的表达式是线性的,所以要算在玩家自身属性,这里其实可以不用活力这个属性的,只是为了丰富游戏性) 精力:80% 智力:50%(弱智?) 力量:120% 敏捷:100% 剑士: 生命:110% 魔法:50% 活力:110% 精力:80% 智力:50% 力量:120% 敏捷:100% 术士: 生命:60% 魔法:200% 活力:100% 精力:200% 智力:150% 力量:0%(古尔丹:我TM。。。) 敏捷:100% 猎弓: 生命:100% 魔法:100% 活力:100% 精力:100% 智力:150% 力量:100% 敏捷:150% (你确定这不是平衡职业?)没办法,这种射箭的不好弄啊,要是有个暴击率就好了 |
职业
打开skillAPI的编辑器 http://eniripsa96.github.io/SkillAPI/ 这是2018.2.11的编辑器地址,不知道以后会不会变 根据上面设计好的数值,编写职业 在以此类推,写出其它三个职业 放到对应文件夹下 |
未完待续。。。