传奇单机服务端人物与英雄自动学技能设置

来源: 作者: 点击:
在传奇单机服务端中,实现人物创建或英雄创建后自动学习技能,核心逻辑是通过登录触发脚本检测新角色状态,并执行ADDSKILL指令。此功能无需玩家手动使用技能书,由系统在后台直接完成技能赋予。

一、 人物创建自动学技能(QManage.txt)

服务端脚本文件路径为:D:\MirServer\Mir200\Envir\MapQuest_def\QManage.txt。该文件中的[@Login]段是玩家登录时的必经入口。

脚本代码示例(战士职业):
[@Login]
#IF
ISNEWHUMAN ;检测是否为新建角色
CHECKJOB WARRIOR ;检测职业是否为战士
#ACT
ADDSKILL 基本剑术 3 ;直接学会基本剑术,等级设为3级
ADDSKILL 攻杀剑术 3
ADDSKILL 刺杀剑术 3
ADDSKILL 半月弯刀 3
ADDSKILL 野蛮冲撞 3
ADDSKILL 烈火剑法 3
SENDMSG 6 新手战士技能已自动学习完毕!
BREAK

参数说明:
• ISNEWHUMAN:关键检测条件,确保只有第一次创建的角色触发,避免每次上线重复给技能。

• ADDSKILL 技能名 等级:核心指令,直接为角色添加技能并设定初始等级(通常1级为0级,3级即为满级)。

• 法师职业需将CHECKJOB WARRIOR改为WIZARD,并对应添加雷电术、魔法盾等技能ID。

二、 英雄创建自动学技能(QFunction-0.txt)

英雄的自动学习逻辑通常写在QFunction-0.txt中,通过检测英雄召唤或创建事件触发。

脚本代码示例(英雄召唤时触发):
[@HeroLogin] ;部分引擎支持英雄登录标签
#IF
CHECKHEROJOB WARRIOR ;检测英雄职业为战士
#ACT
H.ADDSKILL 英雄基本剑术 3 ;H.前缀代表对英雄操作
H.ADDSKILL 英雄攻杀剑术 3
H.ADDSKILL 英雄刺杀剑术 3
H.SENDMSG 6 你的英雄已领悟全部技能!
BREAK

替代方案(通过变量控制仅触发一次):
若引擎不支持@HeroLogin,可在创建英雄的NPC脚本中设置一个全局变量(如HEROSKILL),并在QFunction-0.txt中监听该变量,确保英雄创建成功后立即执行一次技能赋予。

三、 数据库初始配置(备用方案)

部分引擎(如BLUE、LEGEND)支持通过数据库直接配置新角色的初始技能,此方法优先级高于脚本。

1. 打开DBC2000,进入HeroDB数据库。
2. 修改初始数据表:找到StartItems(初始物品)或InitSetting表,在对应字段中直接填入技能书的物品ID。需配合AutoLearn=1参数,使角色创建时自动使用背包内的技能书。
3. 局限性:此方法依赖引擎是否开启“自动学习”开关,且容易与脚本冲突,单机版建议优先使用脚本方案。

四、 生效流程与常见问题

1. 脚本生效步骤:
◦ 将代码准确复制到对应文件的[@Login]段下方。

◦ 保存文件后,启动M2Server。

◦ 在M2菜单栏点击:控制 -> 重新加载 -> QM脚本(人物技能)或QF脚本(英雄技能)。

2. 技能不显示:
◦ 检查技能名称是否与数据库(StdItems.DB)中的名称完全一致,包括括号(如“基本剑术”与“基本剑法”仅一字之差也会导致失败)。

◦ 确认角色已正确添加到AdminList.txt(GM列表)或为普通玩家身份,部分引擎对GM权限角色的脚本触发有特殊限制。

3. 重复给技能:
◦ 务必保留ISNEWHUMAN条件。若想去掉此条件实现“每次上线补发技能”,需额外添加CHECKSKILL检测,避免技能栏重复添加导致报错。

五、 扩展:按等级分批学习

若不想一次性给满技能,可改用等级触发逻辑(在@Login段内追加):
#IF
CHECKLEVEL 35
CHECKJOB WARRIOR
not CHECKSKILL 烈火剑法 ;检测是否未学习烈火剑法
#ACT
ADDSKILL 烈火剑法 3
SENDMSG 6 恭喜达到35级,领悟烈火剑法!

此逻辑可实现角色达到特定等级后自动领悟高级技能,更适合长期游玩的单机版本。