本帖最后由 江奈Mizuki 于 2025-10-2 22:04 编辑
为什么会想做这个
我在玩复古版本的冒险岛时,喜欢玩牧师。不是为了打经济什么的,只是觉得辅助别人是一件很有存在感的事。但是二转的时候,我看到牧师如果要满上其它的辅助技能,必然要放弃圣箭术,导致牧师一路用魔法双击作为单体技能到四转。不是说嫌弃魔法双击的伤害,只是觉得,既然都已经转职成为这样一个神圣的职业,不用特色的箭术缺乏点仪式感。“要是能把魔法双击洗成圣箭术就好了。”我这样想。
有的时候对复古版本的冒险岛技能设计挺无语的,有一些技能明明仪式上很有职业的味道,但是应用上效果一坨,让人根本不想学。打算对一些有意思但是一直没用的技能加上一点有创意的改进,但是真要把所有技能都弄成有用,技能点怕是又不够。“明明一转输出技能早就没用了,不能把一转技能点拿上来用吗?”我有这样的想法
实现的功能
如题目所言,让技能点从低转职向高转职分配。不过具体到每个开服的人的个人想法,可以给这种反向分配加一些约束(比如:必须60级以上,才能把一转技能点拿出来给二转用;不然30级刚转职直接满一个二转输出技能,也是太过分了。)
尚存的问题
1.目前转职有太多的技能点的话,手动点技能点会提示低转技能点不足,一旦用了这个功能,不通过这个功能、像之前那样手点技能是点不上去的。
2.“把目前转职的技能点全部洗下”的功能,数据库里虽然把技能点发给角色了,但是客户端不会及时收包更新,必须换地图或者小退以后才能看见。-“我点一下这个按钮以后我的技能点全没了!”-“你换个地图就看到了。”
实现的思路
纯粹用npc脚本实现。当然,如果想找一个原本不走脚本的npc来实现的话,也要自己改一下wz。
实现这个功能的路上花最多时间找的函数是“找到某个职业某次转职的所有技能”:
- //获得角色的职业
- Ujob = cm.getJob().getId();
- //举例:打印这名角色职业对应一转职业的所有技能列表,变成npc对话中的选项罗列出来
- DownSkillArr = cm.getPlayer().getSkillsByJobIdCharacter(Math.floor(Ujob/100)*100);
- for(let i = 0; i < DownSkillArr.length; i++){
- text += "#L" + i + "#" + DownSkillArr[i][1] + "#l\r\n";
- }
- cm.sendSimple(text);
- //仅作举例,没有定义的变量要自己定义哦
复制代码
当然,不得不提的是,重要的“传授技能函数”,这肯定是要用的。
- public void teachSkill(int skillid, byte level, byte masterLevel, long expiration)
- //四个参数:技能id、传授等级、最高等级、有效期(直接写-1)
复制代码
完整npc脚本示范(仅适用于冒险家)
|