上线技能全送满在3K引擎中的实现,核心是把登录触发标签和技能赋予命令组合起来。人物技能和英雄技能使用不同的触发入口,人物走[@Login],英雄走[@HEROLOGIN],两套脚本写在同一个文件里互不干扰。很多人只写了人物部分忘了英雄,或者把英雄脚本放错了触发段,结果上线后英雄一个技能都没有。下面把完整脚本和配置步骤拆开说清楚。
脚本文件的正确位置和触发结构
3K引擎的登录触发脚本统一放在Mirserver\Mir200\Envir\MapQuest_Def\QManage.txt文件中。这个文件在服务端启动时自动加载,玩家每次登录和英雄每次上线都会分别执行对应的触发标签。QManage.txt中登录脚本的入口是[@Login]段,英雄登录脚本的入口是[@HEROLOGIN]段,两个段独立存在,互不影响。
打开QManage.txt后,先确认文件中是否已经存在[@Login]段。如果存在,把技能赋予脚本追加在该段内部即可。如果不存在,需要完整添加。注意QManage.txt中可能已经有其他登录逻辑,比如上线公告、属性初始化等,追加脚本时要放在已有逻辑的后面,不要覆盖或打乱现有内容。每次修改QManage.txt后需要在M2Server控制台执行重新加载脚本操作,或者重启M2Server使修改生效。
英雄技能全送满的完整脚本
英雄技能脚本必须写在[@HEROLOGIN]段内。以下脚本按职业分支处理,战士、法师、道士各自有独立的判断条件,脚本根据英雄的职业自动匹配对应的技能列表。
```
[@HEROLOGIN]
#IF
CHECKHEROLEVEL = 1
CHECKHEROJOB WARRIOR
#ACT
READSKILLNG HERO
OPENHEROPULS
OPENPULSE 0 1 HERO
OPENPULSE 0 2 HERO
OPENPULSE 0 3 HERO
OPENPULSE 0 4 HERO
OPENPULSE 0 5 HERO
OPENPULSE 1 1 HERO
OPENPULSE 1 2 HERO
OPENPULSE 1 3 HERO
OPENPULSE 1 4 HERO
OPENPULSE 1 5 HERO
OPENPULSE 2 1 HERO
OPENPULSE 2 2 HERO
OPENPULSE 2 3 HERO
OPENPULSE 2 4 HERO
OPENPULSE 2 5 HERO
OPENPULSE 3 1 HERO
OPENPULSE 3 2 HERO
OPENPULSE 3 3 HERO
OPENPULSE 3 4 HERO
OPENPULSE 3 5 HERO
ADDSKILL 白日门剑术 3 HERO
ADDSKILL 白日门攻杀 3 HERO
ADDSKILL 白日门刺杀 3 HERO
ADDSKILL 白日门半月 3 HERO
ADDSKILL 白日门野蛮 3 HERO
ADDSKILL 白日门烈火 3 HERO
ADDSKILL 白日门狮吼 3 HERO
ADDSKILL 护体神盾 3 HERO
ADDSKILL 英雄逐日剑法 3 HERO
ADDSKILL 怒之攻杀 3 HERO
ADDSKILL 怒之半月 3 HERO
ADDSKILL 怒之内功剑法 3 HERO
ADDSKILL 怒之烈火 3 HERO
ADDSKILL 怒之逐日 3 HERO
ADDSKILL 静之火球 3 HERO
ADDSKILL 静之攻杀 3 HERO
ADDSKILL 静之地狱火 3 HERO
ADDSKILL 静之半月 3 HERO
ADDSKILL 静之大火球 3 HERO
ADDSKILL 静之爆裂火焰 3 HERO
ADDSKILL 静之雷电 3 HERO
ADDSKILL 静之火符 3 HERO
ADDSKILL 静之火墙 3 HERO
ADDSKILL 静之内功剑法 3 HERO
ADDSKILL 静之疾光电影 3 HERO
ADDSKILL 静之地狱雷光 3 HERO
ADDSKILL 静之寒冰掌 3 HERO
ADDSKILL 静之烈火 3 HERO
ADDSKILL 静之冰咆哮 3 HERO
ADDSKILL 静之灭天火 3 HERO
ADDSKILL 静之噬血 3 HERO
ADDSKILL 静之逐日 3 HERO
ADDSKILL 静之流星火雨 3 HERO
ADDSKILL 三绝杀 3 HERO
ADDSKILL 追心刺 3 HERO
ADDSKILL 断岳斩 3 HERO
ADDSKILL 横扫千军 3 HERO
OPEN4BATTERSKILL HERO
SENDMSG 7 恭喜: %s 的英雄技能已全部修炼完毕!
```
战士英雄的脚本以CHECKHEROJOB WARRIOR为判断条件,CHECKHEROLEVEL = 1表示英雄至少为1级时触发。READSKILLNG HERO命令的作用是让英雄学习内功,这条命令必须放在所有OPENPULSE之前执行,否则经脉开通命令会因为英雄没有内功基础而失效。OPENHEROPULS命令用于开通英雄的经脉系统,OPENPULSE后面的两组数字分别对应经脉类型和穴位编号,0到3代表四种经脉,1到5代表每类经脉的五个穴位。
ADDSKILL命令的格式是ADDSKILL 技能名 等级 HERO。技能名必须和Magic.DB中的MagName字段完全一致,差一个字命令就不会生效。等级后面的3表示技能直接赋予三级,省去了逐级修炼的过程。末尾的HERO参数是3K引擎特有的标识,告诉引擎这个技能是赋予英雄的而不是主号的,漏掉这个参数技能会加到人物身上。
法师英雄和道士英雄的脚本结构与战士完全一致,区别在于CHECKHEROJOB后面的职业标识不同,以及ADDSKILL的技能列表不同。法师英雄的判断条件写CHECKHEROJOB WIZARD,道士英雄写CHECKHEROJOB TAOIST。三个职业的判断段并列写在[@HEROLOGIN]段内,引擎会根据英雄的实际职业自动匹配对应的分支执行。
人物技能全送满的脚本写法
人物技能脚本写在[@Login]段内。与英雄脚本相比,人物脚本不需要HERO后缀参数,触发条件用CHECKJOB替代CHECKHEROJOB,命令的写法更简洁。以下是战士人物技能的示例结构:
```
[@Login]
#IF
CHECKJOB WARRIOR
#ACT
READSKILLNG
OPENPULS
OPENPULSE 0 1
OPENPULSE 0 2
OPENPULSE 0 3
OPENPULSE 0 4
OPENPULSE 0 5
OPENPULSE 1 1
OPENPULSE 1 2
OPENPULSE 1 3
OPENPULSE 1 4
OPENPULSE 1 5
OPENPULSE 2 1
OPENPULSE 2 2
OPENPULSE 2 3
OPENPULSE 2 4
OPENPULSE 2 5
OPENPULSE 3 1
OPENPULSE 3 2
OPENPULSE 3 3
OPENPULSE 3 4
OPENPULSE 3 5
ADDSKILL 基本剑术 3
ADDSKILL 攻杀剑术 3
ADDSKILL 刺杀剑术 3
ADDSKILL 半月弯刀 3
ADDSKILL 野蛮冲撞 3
ADDSKILL 烈火剑法 3
ADDSKILL 狮子吼 3
ADDSKILL 逐日剑法 3
ADDSKILL 三绝杀 3
ADDSKILL 追心刺 3
ADDSKILL 断岳斩 3
ADDSKILL 横扫千军 3
SENDMSG 7 恭喜: %s 的技能已全部修炼完毕!
```
人物脚本中READSKILLNG不带HERO参数,OPENPULS也不带HERO,ADDSKILL末尾同样不带HERO。这些参数的区别是3K引擎区分人物和英雄命令的核心标识,写混了会导致命令作用到错误的目标上。法师和道士人物的脚本结构相同,只需替换CHECKJOB后面的职业标识和ADDSKILL的技能名称列表。
用HEROSKILLLEVEL单独调整英雄技能等级
除了在登录时一次性赋予全部技能,3K引擎还提供了HEROSKILLLEVEL命令用于在游戏运行中动态调整英雄已有技能的等级。这个命令的格式为:HEROSKILLLEVEL 技能名 控制符 等级数,控制符可以是等号、加号或减号,等级数范围是0到3。
典型用法示例:
```
[@skilllevel0]
#IF
#ACT
HEROSKILLLEVEL 雷电术 = 3
#SAY
你的英雄雷电术等级已经为3级。
[@skilllevel1]
#IF
#ACT
HEROSKILLLEVEL 雷电术 + 1
#SAY
你的英雄雷电术等级已经升了1级。
[@skilllevel2]
#IF
#ACT
HEROSKILLLEVEL 雷电术 - 1
#SAY
你的英雄雷电术等级已经降了1级。
```
这个命令的适用场景是做技能升级NPC,玩家消耗资源后提升英雄某个技能的等级。和ADDSKILL一次性赋予三级不同,HEROSKILLLEVEL是在已有技能基础上做增减,如果英雄还没有学会该技能,HEROSKILLLEVEL不会自动添加技能,需要先用ADDSKILL赋予再调整等级。
脚本编写中的常见问题
脚本写完后英雄技能不生效,按以下顺序排查。
第一,检查[@HEROLOGIN]段的拼写。3K引擎对这个标签的名称大小写不敏感,但段名本身不能写错,写成[@HeroLogin]或[@英雄登录]都不会被触发。确认QManage.txt中确实存在[@HEROLOGIN]这个段。
第二,检查READSKILLNG HERO命令的位置。这条命令必须在所有OPENPULSE和ADDSKILL之前执行。如果READSKILLNG HERO写在ADDSKILL后面,经脉开通会因为英雄内功未学习而失败,部分依赖内功的高级技能也无法正常赋予。
第三,检查技能名称是否与Magic.DB一致。打开服务端Mud2\DB目录下的Magic.DB文件,查看MagName字段的实际内容,脚本中的技能名必须和这里完全一致。常见错误是脚本中写了“逐日剑法”但数据库中是“英雄逐日剑法”,名称不匹配时ADDSKILL命令静默失败,不产生任何报错信息。
第四,检查CHECKHEROLEVEL的判断值。脚本中写CHECKHEROLEVEL = 1意味着英雄1级时就执行全部技能赋予。如果写CHECKHEROLEVEL > 50,则英雄需要达到50级以上才会触发,低等级英雄登录时不会获得技能。这个值根据实际需求设置,大部分全送满版本写1即可。
第五,修改QManage.txt后要执行重新加载。只保存文件不重新加载,引擎读的还是内存中的旧脚本。在M2Server控制台的选项菜单中找到重新加载脚本的入口执行一次,或者直接重启M2Server。
英雄技能和人物技能同时全送满的完整方案,本质上就是[@Login]和[@HEROLOGIN]两个段各写一套对应的脚本。两段脚本共用QManage.txt文件,互不冲突。写好后用测试账号实际登录验证,分别检查人物技能面板和英雄技能面板,确认所有技能都已经出现在列表中且等级为3级。如果人物有技能但英雄没有,问题一定出在[@HEROLOGIN]段;如果英雄只有部分技能,检查对应职业的ADDSKILL列表是否有遗漏。
传奇3K引擎上线技能全送满脚本编写英雄技能同步配置完整方法
来源:
作者:
点击:

