在传奇服务端中,为人物上线发放技能和装备主要依赖登录触发脚本。绝大多数引擎(如GOM、GEE、HERO)均通过修改QManage.txt文件实现,这是控制玩家登录逻辑的核心入口。
一、 核心文件定位与基础概念
服务端脚本目录通常位于 D:\MirServer\Mir200\Envir\MapQuest_def\,核心文件为 QManage.txt。该文件中的 [@Login] 段是玩家每次登录时必执行的代码块,而 ISNEWHUMAN 是检测是否为新建角色的关键条件。
- 脚本执行逻辑:[@Login] 每次上线都触发,适合做日常检测;ISNEWHUMAN 仅在角色第一次进入游戏时触发,用于发放新手礼包。
- 生效方式:修改脚本后,需在M2Server(引擎主控)点击“控制”->“重新加载”->“QF脚本”或“QM脚本”即可生效,无需重启整个服务端。
二、 发放装备脚本写法(GIVE命令)
装备发放使用 GIVE 命令,格式为 GIVE 物品名称 数量。物品名称必须与数据库(StdItems.DB)中的名称完全一致。
示例:全职业新手装
[@Login]
#IF
ISNEWHUMAN
#ACT
GIVE 金币 50000
GIVE 金创药(小) 5
GIVE 魔法药(小) 5
BREAK
#IF
ISNEWHUMAN
CHECKJOB WARRIOR
#ACT
GIVE 木剑 1
GIVE 布衣(男) 1
GIVE 布衣(女) 1
BREAK
#IF
ISNEWHUMAN
CHECKJOB WIZARD
#ACT
GIVE 乌木剑 1
GIVE 轻型盔甲(男) 1
GIVE 轻型盔甲(女) 1
BREAK
代码解析:
• #IF:条件判断开始。
• CHECKJOB WARRIOR:检测职业是否为战士(WIZARD法师,TAOIST道士)。
- #ACT:条件满足后执行的动作。
• BREAK:跳出当前判断,防止重复发放。
三、 自动学习技能脚本(ADDSKILL命令)
让角色直接学会技能(非技能书)需使用 ADDSKILL 命令,格式为 ADDSKILL 技能名称 等级。
示例:道士自动学治愈术
#IF
ISNEWHUMAN
CHECKJOB TAOIST
#ACT
ADDSKILL 治愈术 3
ADDSKILL 精神力战法 3
ADDSKILL 施毒术 3
BREAK
参数说明:末尾的数字 3 代表直接学习到3级技能。若想发放技能书让玩家手动学习,则改用 GIVE 技能书名称 1。
四、 自动穿戴装备设置
部分版本要求上线自动穿上衣服武器,需配合 AutoTakeOnItem 命令。该命令后的数字代表装备位置编号。
示例:自动穿衣服
#IF
ISNEWHUMAN
#ACT
GIVE 布衣(男) 1
AutoTakeOnItem 布衣(男) 0
BREAK
装备位置编号参考:
• 0:衣服
• 1:武器
• 3:项链
• 5/6:右手镯/左手镯
- 7/8:右戒指/左戒指
• 10/11:腰带/鞋子
五、 常见问题与排查
1. 修改不生效:检查 QManage.txt 路径是否正确,或是否被外部脚本调用(如 #CALL [\登陆\登陆.txt])。若被调用,需修改对应的外部TXT文件。
2. 物品名称错误:GIVE 命令中的装备名必须与数据库 StdItems.DB 的 Name 字段一字不差,注意括号是否为全角。
3. 重复发放:确保脚本中使用了 ISNEWHUMAN 检测,且每个逻辑段结尾有 BREAK。老玩家上线若重复领取,可增加检测变量(如 CHECK [新人标记] 0)。
4. 技能学不了:确认 ADDSKILL 后的技能名与 Magic.DB 数据库中的名称一致。若引擎不支持直接学技能,只能改用发放技能书的方式。
六、 进阶:带变量的发放逻辑
为防止刷号或控制发放批次,可使用自定义变量进行标记。
#IF
ISNEWHUMAN
CHECK [NEWGIFT] 0
#ACT
GIVE 新手神剑 1
SET [NEWGIFT] 1
SENDMSG 6 你已领取新手装备!
BREAK
此脚本通过检测变量 [NEWGIFT] 是否为0来判断是否已领取,领取后设为1,避免重复触发。

