【详细】【给任意技能添加强制】【nut】
首先特别感谢@15501qq这里写的方法就是来自这位大大分享的PVF,我只是把它说的更清楚点。
详情可以转去大大的帖子。
可能有不合适的地方,仅供参考吧。
楼下继续。 总的说,这种方法涉及四个文件,分别是:
(都是以鬼剑为例)
第一个:sqr\loadstate.nut
第二个:sqr\test_loop_qiangzhi.nut
第三个:sqr\character\swordman\test_qiangzhi_swordman.nut
第四个:clientonly\cancelskilllist.co
下面分开说吧。 第一个
这个nut一般在PVF里都有,需要添加下面一行:
sq_RunScript("test_loop_qiangzhi.nut"); 第二个
这是要新建的nut,里面写:
IRDSQRCharacter.pushState(ENUM_CHARACTERJOB_SWORDMAN, "character/swordman/test_qiangzhi_swordman.nut", "qiangzhiswordman", STATE_ATTACK, -1);
IRDSQRCharacter.pushState(ENUM_CHARACTERJOB_SWORDMAN, "character/swordman/test_qiangzhi_swordman.nut", "qiangzhiswordman", STATE_DASH, -1);
IRDSQRCharacter.pushState(ENUM_CHARACTERJOB_SWORDMAN, "character/swordman/test_qiangzhi_swordman.nut", "qiangzhiswordman", STATE_STAND, -1); 第三个
这是要新建的nut,里面写:
function onProc_qiangzhiswordman(obj)
{
if (!obj) return false;
if (sq_getJob(obj) == ENUM_CHARACTERJOB_SWORDMAN)
{
obj.setSkillCommandEnable(65, true);
obj.setSkillCommandEnable(64, true);
obj.setSkillCommandEnable(77, true);
obj.setSkillCommandEnable(20, true);
if (sq_getGrowType(obj) == 1)
{
obj.setSkillCommandEnable(9, true);
obj.setSkillCommandEnable(72, true);
obj.setSkillCommandEnable(73, true);
obj.setSkillCommandEnable(86, true);
obj.setSkillCommandEnable(97, true);
obj.setSkillCommandEnable(81, true);
obj.setSkillCommandEnable(79, true);
obj.setSkillCommandEnable(85, true);
obj.setSkillCommandEnable(31, true);
}
if (sq_getGrowType(obj) == 3)
{
obj.setSkillCommandEnable(81, true);
obj.setSkillCommandEnable(79, true);
obj.setSkillCommandEnable(85, true);
obj.setSkillCommandEnable(9, true);
obj.setSkillCommandEnable(72, true);
obj.setSkillCommandEnable(73, true);
obj.setSkillCommandEnable(86, true);
obj.setSkillCommandEnable(97, true);
}
if (sq_getGrowType(obj) == 4)
{
obj.setSkillCommandEnable(50, true);
obj.setSkillCommandEnable(57, true);
obj.setSkillCommandEnable(74, true);
}
}
}
再附一张图
第四个
这里是在技能说明和技能栏加上可强制的文字显示,不加也可以用的。
附图
【特别注意】
检查一下你的sqr\character目录是否有swordman_load_state.nut
如果有的话,看里面有没有一句:
IRDSQRCharacter.pushState(0, "character/swordman/attack/attack.nut", "swordmanattack", STATE_ATTACK, -1);
如果有的话会和上面写的强制冲突。
OK,写完了。 卧槽!!!!666啊,感谢大佬分享,有时间研究研究!
顺便问一下,可以中断其他技能吗? 教程贴必须顶 感谢大家帮顶
附带一个别的点,这两天测出来的,鬼剑的格挡的skl文件里的静态数据,第一项默认500的是最短格挡时间,把它改小可以让格挡变得更灵活 这很难么
厉害呀 帮顶 牛啤
不好意思,我太笨了,完全失败了。我想改女漫游的强制技能,所有首先在sqr\loadstate.nut里写入了sq_RunScript("test_loop_qiangzhi.nut"); 这个完全照搬的,应该没问题的。而且完全可以索引到test_loop_qiangzhi.nut这个文件里。test_loop_qiangzhi.nut里我写入了IRDSQRCharacter.pushState(ENUM_CHARACTERJOB_ATGUNNER, "character/atgunner/test_qiangzhi_atgunner.nut", "qiangzhiATGUNNER", STATE_ATTACK, -1);
IRDSQRCharacter.pushState(ENUM_CHARACTERJOB_ATGUNNER, "character/atgunner/test_qiangzhi_atgunner.nut", "qiangzhiATGUNNER", STATE_DASH, -1);
IRDSQRCharacter.pushState(ENUM_CHARACTERJOB_ATGUNNER, "character/atgunner/test_qiangzhi_atgunner.nut", "qiangzhiATGUNNER", STATE_STAND, -1);
这么看,是没有问题的,就是把swordman改为了atgunner而已。最关键的第三个文件来了,我写入的是function onProc_qiangzhiatgunner(obj) {
if (!obj) return false;
if (sq_getJob(obj) == ENUM_CHARACTERJOB_ATGUNNER) {
obj.setSkillCommandEnable(30, true);
if (sq_getGrowType(obj) == 1) {
obj.setSkillCommandEnable(9, true);
obj.setSkillCommandEnable(51, true);
obj.setSkillCommandEnable(15, true);
obj.setSkillCommandEnable(72, true);
obj.setSkillCommandEnable(10, true);
}
}
}
这里是不是哪儿有问题,按照UP主的第四步进入游戏后,技能上面显示可以强制,但是就是不生效,头大,盼望UP主解答。万分感激,祝你长命百岁! 363325970 发表于 2025-10-6 18:31
不好意思,我太笨了,完全失败了。我想改女漫游的强制技能,所有首先在sqr\loadstate.nut里写入了sq_RunScr ...
大佬,请看图,更客观一点,万望解答疑惑!谢谢!
		页: 
[1]