江奈Mizuki 发表于 2025-10-2 22:07:41

让技能点从低次数转职向高次数转职反向分配的一种设想。

本帖最后由 江奈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 + "#l\r\n";
        }
cm.sendSimple(text);
//仅作举例,没有定义的变量要自己定义哦
当然,不得不提的是,重要的“传授技能函数”,这肯定是要用的。
public void teachSkill(int skillid, byte level, byte masterLevel, long expiration)
//四个参数:技能id、传授等级、最高等级、有效期(直接写-1)
完整npc脚本示范(仅适用于冒险家)
**** Hidden Message *****


leevccc 发表于 2025-10-2 23:35:25

我也玩过一段时间牧师,如果魔法双击和圣剑术都满级的情况下,我还是更愿意使用魔法双击。因为圣剑术这类有弹道的攻击都有被卡墙的情景,魔法双击就不会,圣剑术的伤害系数比魔法双击又高不了多少。

针对你的想法,我感觉直接用技能换技能,比你说的洗点来的实在。
NPC对话
Page1 玩家选择要洗的职业
Page2 玩家选择要洗的技能(只列出已学习的)
Page3 玩家选择要学习的职业
Page4 玩家选择要学习的技能

然后计算要洗的技能点,把Page2的技能等级扣掉,Page4的技能等级加上去,相关方法参考@skill命令即可

这样不用一个个技能点操作,也不会出现你说的问题

loveene 发表于 2025-10-3 02:31:19

改内存就可以实现把1技能突破到高

4060586 发表于 2025-10-4 16:42:24

loveene 发表于 2025-10-3 02:31
改内存就可以实现把1技能突破到高

大佬,快出一期实现方法。就等这个

4060586 发表于 2025-10-4 16:45:19

其实我也遇到了类似的问题,我把二段跳给了用户,导致用户三转加技能会被占用20点技能点,77级才能开始加三转技能

xiaomai 发表于 2025-10-4 18:05:44

内存不是可以单攻改群攻吗

ccsk199 发表于 2025-10-7 16:27:40

看看看看,学习一下。
页: [1]
查看完整版本: 让技能点从低次数转职向高次数转职反向分配的一种设想。