上线技能全送满在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
CHECKHEROJOBWARRIOR
#ACT
READSKILLNGHERO
OPENHEROPULS
OPENPULSE01HERO
OPENPULSE02HERO
OPENPULSE03HERO
OPENPULSE04HERO
OPENPULSE05HERO
OPENPULSE11HERO
OPENPULSE12HERO
OPENPULSE13HERO
OPENPULSE14HERO
OPENPULSE15HERO
OPENPULSE21HERO
OPENPULSE22HERO
OPENPULSE23HERO
OPENPULSE24HERO
OPENPULSE25HERO
OPENPULSE31HERO
OPENPULSE32HERO
OPENPULSE33HERO
OPENPULSE34HERO
OPENPULSE35HERO
ADDSKILL白日门剑术3HERO
ADDSKILL白日门攻杀3HERO
ADDSKILL白日门刺杀3HERO
ADDSKILL白日门半月3HERO
ADDSKILL白日门野蛮3HERO
ADDSKILL白日门烈火3HERO
ADDSKILL白日门狮吼3HERO
ADDSKILL护体神盾3HERO
ADDSKILL英雄逐日剑法3HERO
ADDSKILL怒之攻杀3HERO
ADDSKILL怒之半月3HERO
ADDSKILL怒之内功剑法3HERO
ADDSKILL怒之烈火3HERO
ADDSKILL怒之逐日3HERO
ADDSKILL静之火球3HERO
ADDSKILL静之攻杀3HERO
ADDSKILL静之地狱火3HERO
ADDSKILL静之半月3HERO
ADDSKILL静之大火球3HERO
ADDSKILL静之爆裂火焰3HERO
ADDSKILL静之雷电3HERO
ADDSKILL静之火符3HERO
ADDSKILL静之火墙3HERO
ADDSKILL静之内功剑法3HERO
ADDSKILL静之疾光电影3HERO
ADDSKILL静之地狱雷光3HERO
ADDSKILL静之寒冰掌3HERO
ADDSKILL静之烈火3HERO
ADDSKILL静之冰咆哮3HERO
ADDSKILL静之灭天火3HERO
ADDSKILL静之噬血3HERO
ADDSKILL静之逐日3HERO
ADDSKILL静之流星火雨3HERO
ADDSKILL三绝杀3HERO
ADDSKILL追心刺3HERO
ADDSKILL断岳斩3HERO
ADDSKILL横扫千军3HERO
OPEN4BATTERSKILLHERO
SENDMSG7恭喜:%s的英雄技能已全部修炼完毕!
```
战士英雄的脚本以CHECKHEROJOBWARRIOR为判断条件,CHECKHEROLEVEL=1表示英雄至少为1级时触发。READSKILLNGHERO命令的作用是让英雄学习内功,这条命令必须放在所有OPENPULSE之前执行,否则经脉开通命令会因为英雄没有内功基带失效。OPENHEROPULS命令用于开通英雄的经脉系统,OPENPULSE后面的两组数字分别对应经脉类型和穴位编号,0到3代表四种经脉,1到5代表每类经脉的五个穴位。
ADDSKILL命令的格式是ADDSKILL技能名等级HERO。技能名必须和Magic.DB中的MagName字段完全一致,差一个字命令就不会生效。等级后面的3表示技能直接赋予三级,省去了逐级修炼的过程。末尾的HERO参数是3K引擎特有的标识,告诉引擎这个技能是赋予英雄的而不是主号的,漏掉这个参数技能会加到人物身上。
法师英雄和道士英雄的脚本结构与战士完全一致,区别在于CHECKHEROJOB后面的职业标识不同,以及ADDSKILL的技能列表不同。法师英雄的判断条件写CHECKHEROJOBWIZARD,道士英雄写CHECKHEROJOBTAOIST。三个职业的判断段并列写在[@HEROLOGIN]段内,引擎会根据英雄的实际职业自动匹配对应的分支执行。
人物技能全送满的脚本写法
人物技能脚本写在[@Login]段内。与英雄脚本相比,人物脚本不需要HERO后缀参数,触发条件用CHECKJOB替代CHECKHEROJOB,命令的写法更简洁。以下是战士人物技能的示例结构:
```
[@Login]
#IF
CHECKJOBWARRIOR
#ACT
READSKILLNG
OPENPULS
OPENPULSE01
OPENPULSE02
OPENPULSE03
OPENPULSE04
OPENPULSE05
OPENPULSE11
OPENPULSE12
OPENPULSE13
OPENPULSE14
OPENPULSE15
OPENPULSE21
OPENPULSE22
OPENPULSE23
OPENPULSE24
OPENPULSE25
OPENPULSE31
OPENPULSE32
OPENPULSE33
OPENPULSE34
OPENPULSE35
ADDSKILL基本剑术3
ADDSKILL攻杀剑术3
ADDSKILL刺杀剑术3
ADDSKILL半月弯刀3
ADDSKILL野蛮冲撞3
ADDSKILL烈火剑法3
ADDSKILL狮子吼3
ADDSKILL逐日剑法3
ADDSKILL三绝杀3
ADDSKILL追心刺3
ADDSKILL断岳斩3
ADDSKILL横扫千军3
SENDMSG7恭喜:%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]这个段。
第二,检查READSKILLNGHERO命令的位置。这条命令必须在所有OPENPULSE和ADDSKILL之前执行。如果READSKILLNGHERO写在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引擎的登录触发脚本统一放在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
CHECKHEROJOBWARRIOR
#ACT
READSKILLNGHERO
OPENHEROPULS
OPENPULSE01HERO
OPENPULSE02HERO
OPENPULSE03HERO
OPENPULSE04HERO
OPENPULSE05HERO
OPENPULSE11HERO
OPENPULSE12HERO
OPENPULSE13HERO
OPENPULSE14HERO
OPENPULSE15HERO
OPENPULSE21HERO
OPENPULSE22HERO
OPENPULSE23HERO
OPENPULSE24HERO
OPENPULSE25HERO
OPENPULSE31HERO
OPENPULSE32HERO
OPENPULSE33HERO
OPENPULSE34HERO
OPENPULSE35HERO
ADDSKILL白日门剑术3HERO
ADDSKILL白日门攻杀3HERO
ADDSKILL白日门刺杀3HERO
ADDSKILL白日门半月3HERO
ADDSKILL白日门野蛮3HERO
ADDSKILL白日门烈火3HERO
ADDSKILL白日门狮吼3HERO
ADDSKILL护体神盾3HERO
ADDSKILL英雄逐日剑法3HERO
ADDSKILL怒之攻杀3HERO
ADDSKILL怒之半月3HERO
ADDSKILL怒之内功剑法3HERO
ADDSKILL怒之烈火3HERO
ADDSKILL怒之逐日3HERO
ADDSKILL静之火球3HERO
ADDSKILL静之攻杀3HERO
ADDSKILL静之地狱火3HERO
ADDSKILL静之半月3HERO
ADDSKILL静之大火球3HERO
ADDSKILL静之爆裂火焰3HERO
ADDSKILL静之雷电3HERO
ADDSKILL静之火符3HERO
ADDSKILL静之火墙3HERO
ADDSKILL静之内功剑法3HERO
ADDSKILL静之疾光电影3HERO
ADDSKILL静之地狱雷光3HERO
ADDSKILL静之寒冰掌3HERO
ADDSKILL静之烈火3HERO
ADDSKILL静之冰咆哮3HERO
ADDSKILL静之灭天火3HERO
ADDSKILL静之噬血3HERO
ADDSKILL静之逐日3HERO
ADDSKILL静之流星火雨3HERO
ADDSKILL三绝杀3HERO
ADDSKILL追心刺3HERO
ADDSKILL断岳斩3HERO
ADDSKILL横扫千军3HERO
OPEN4BATTERSKILLHERO
SENDMSG7恭喜:%s的英雄技能已全部修炼完毕!
```
战士英雄的脚本以CHECKHEROJOBWARRIOR为判断条件,CHECKHEROLEVEL=1表示英雄至少为1级时触发。READSKILLNGHERO命令的作用是让英雄学习内功,这条命令必须放在所有OPENPULSE之前执行,否则经脉开通命令会因为英雄没有内功基带失效。OPENHEROPULS命令用于开通英雄的经脉系统,OPENPULSE后面的两组数字分别对应经脉类型和穴位编号,0到3代表四种经脉,1到5代表每类经脉的五个穴位。
ADDSKILL命令的格式是ADDSKILL技能名等级HERO。技能名必须和Magic.DB中的MagName字段完全一致,差一个字命令就不会生效。等级后面的3表示技能直接赋予三级,省去了逐级修炼的过程。末尾的HERO参数是3K引擎特有的标识,告诉引擎这个技能是赋予英雄的而不是主号的,漏掉这个参数技能会加到人物身上。
法师英雄和道士英雄的脚本结构与战士完全一致,区别在于CHECKHEROJOB后面的职业标识不同,以及ADDSKILL的技能列表不同。法师英雄的判断条件写CHECKHEROJOBWIZARD,道士英雄写CHECKHEROJOBTAOIST。三个职业的判断段并列写在[@HEROLOGIN]段内,引擎会根据英雄的实际职业自动匹配对应的分支执行。
人物技能全送满的脚本写法
人物技能脚本写在[@Login]段内。与英雄脚本相比,人物脚本不需要HERO后缀参数,触发条件用CHECKJOB替代CHECKHEROJOB,命令的写法更简洁。以下是战士人物技能的示例结构:
```
[@Login]
#IF
CHECKJOBWARRIOR
#ACT
READSKILLNG
OPENPULS
OPENPULSE01
OPENPULSE02
OPENPULSE03
OPENPULSE04
OPENPULSE05
OPENPULSE11
OPENPULSE12
OPENPULSE13
OPENPULSE14
OPENPULSE15
OPENPULSE21
OPENPULSE22
OPENPULSE23
OPENPULSE24
OPENPULSE25
OPENPULSE31
OPENPULSE32
OPENPULSE33
OPENPULSE34
OPENPULSE35
ADDSKILL基本剑术3
ADDSKILL攻杀剑术3
ADDSKILL刺杀剑术3
ADDSKILL半月弯刀3
ADDSKILL野蛮冲撞3
ADDSKILL烈火剑法3
ADDSKILL狮子吼3
ADDSKILL逐日剑法3
ADDSKILL三绝杀3
ADDSKILL追心刺3
ADDSKILL断岳斩3
ADDSKILL横扫千军3
SENDMSG7恭喜:%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]这个段。
第二,检查READSKILLNGHERO命令的位置。这条命令必须在所有OPENPULSE和ADDSKILL之前执行。如果READSKILLNGHERO写在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列表是否有遗漏。

