一、核心文件定位:QManage.txt
新手上线脚本的核心触发文件是QManage.txt(简称QM),路径位于服务端Mir200\Envir\MapQuest_Def\目录下。该文件控制玩家登录时的全局逻辑,修改后需在M2Server中重载脚本生效。
二、基础脚本编写:按职业发放
在QM文件中找到[@Login]段落(登录触发入口),添加以下逻辑。核心是利用ISNEWHUMAN检测新号,配合CHECKJOB区分职业。
[@Login]
;==========战士新手装备==========
#IF
ISNEWHUMAN;检测是否为新人
CHECKJOBWarrior;检测职业为战士
#ACT
GIVE木剑1
GIVE布衣(男)1
GIVE金创药(小量)5
GIVE金币5000
BREAK;中断后续判断
;==========法师新手装备==========
#IF
ISNEWHUMAN
CHECKJOBWizard
#ACT
GIVE木剑1
GIVE布衣(女)1
GIVE魔法药(小量)5
GIVE金币5000
BREAK
;==========道士新手装备==========
#IF
ISNEWHUMAN
CHECKJOBTaoist
#ACT
GIVE木剑1
GIVE布衣(男)1
GIVE护身符(小)1
GIVE金币5000
BREAK
关键命令说明:
•ISNEWHUMAN:引擎内置标识,仅首次创建的角色触发。
•CHECKJOB:参数为Warrior(战)、Wizard(法)、Taoist(道)。
•GIVE:物品名称必须与数据库StdItems.DB完全一致。
•BREAK:防止脚本继续向下执行导致重复发放。
三、进阶功能:自动穿戴与防重复
若需上线自动穿戴装备(非放入背包),需使用AutoTakeOnItem命令。
#IF
ISNEWHUMAN
#ACT
GIVE布衣(男)1
AutoTakeOnItem布衣(男)0;0代表衣服部位,自动穿身上
SET[100]1;设置逻辑变量[100]为1(已领取标志)
部位编号参考:0=衣服,1=武器,3=项链,4=头盔,5/6=手镯,7/8=戒指,11=鞋子。
四、外部调用模式(推荐)
为避免QM文件过于臃肿,通常将赠送逻辑写在外部文件,通过#CALL调用。
1.在QM中添加调用指令:
[@Login]
#CALL[\系统功能\新手赠送.txt]@SendGift
2.创建外部脚本文件:
◦路径:Mir200\Envir\QuestDiary\系统功能\新手赠送.txt
-内容:
[@SendGift]
#IF
ISNEWHUMAN
#ACT
GIVE新手礼包1
此方式便于管理,修改赠送内容无需频繁编辑QM主文件。
五、常见问题与排查
1.物品不显示:检查GIVE后的物品名称是否与数据库完全一致(包括括号、符号)。
2.重复触发:确认脚本中使用了ISNEWHUMAN而非单纯的等级检测,并在每个分支结尾有BREAK。
3.编码错误:脚本文件需保存为ANSI编码,若保存为UTF-8会导致M2报错或NPC对话乱码。
4.生效步骤:修改脚本后,必须在M2Server的“控制→重新加载→重读NPC脚本”中刷新,直接重启服务端非必要。
总结:上线送装备的核心是修改QManage.txt的[@Login]段,利用ISNEWHUMAN进行精准新人判断,通过GIVE命令发放对应职业的装备。建议采用外部调用模式以保持代码整洁。
新手上线脚本的核心触发文件是QManage.txt(简称QM),路径位于服务端Mir200\Envir\MapQuest_Def\目录下。该文件控制玩家登录时的全局逻辑,修改后需在M2Server中重载脚本生效。
二、基础脚本编写:按职业发放
在QM文件中找到[@Login]段落(登录触发入口),添加以下逻辑。核心是利用ISNEWHUMAN检测新号,配合CHECKJOB区分职业。
[@Login]
;==========战士新手装备==========
#IF
ISNEWHUMAN;检测是否为新人
CHECKJOBWarrior;检测职业为战士
#ACT
GIVE木剑1
GIVE布衣(男)1
GIVE金创药(小量)5
GIVE金币5000
BREAK;中断后续判断
;==========法师新手装备==========
#IF
ISNEWHUMAN
CHECKJOBWizard
#ACT
GIVE木剑1
GIVE布衣(女)1
GIVE魔法药(小量)5
GIVE金币5000
BREAK
;==========道士新手装备==========
#IF
ISNEWHUMAN
CHECKJOBTaoist
#ACT
GIVE木剑1
GIVE布衣(男)1
GIVE护身符(小)1
GIVE金币5000
BREAK
关键命令说明:
•ISNEWHUMAN:引擎内置标识,仅首次创建的角色触发。
•CHECKJOB:参数为Warrior(战)、Wizard(法)、Taoist(道)。
•GIVE:物品名称必须与数据库StdItems.DB完全一致。
•BREAK:防止脚本继续向下执行导致重复发放。
三、进阶功能:自动穿戴与防重复
若需上线自动穿戴装备(非放入背包),需使用AutoTakeOnItem命令。
#IF
ISNEWHUMAN
#ACT
GIVE布衣(男)1
AutoTakeOnItem布衣(男)0;0代表衣服部位,自动穿身上
SET[100]1;设置逻辑变量[100]为1(已领取标志)
部位编号参考:0=衣服,1=武器,3=项链,4=头盔,5/6=手镯,7/8=戒指,11=鞋子。
四、外部调用模式(推荐)
为避免QM文件过于臃肿,通常将赠送逻辑写在外部文件,通过#CALL调用。
1.在QM中添加调用指令:
[@Login]
#CALL[\系统功能\新手赠送.txt]@SendGift
2.创建外部脚本文件:
◦路径:Mir200\Envir\QuestDiary\系统功能\新手赠送.txt
-内容:
[@SendGift]
#IF
ISNEWHUMAN
#ACT
GIVE新手礼包1
此方式便于管理,修改赠送内容无需频繁编辑QM主文件。
五、常见问题与排查
1.物品不显示:检查GIVE后的物品名称是否与数据库完全一致(包括括号、符号)。
2.重复触发:确认脚本中使用了ISNEWHUMAN而非单纯的等级检测,并在每个分支结尾有BREAK。
3.编码错误:脚本文件需保存为ANSI编码,若保存为UTF-8会导致M2报错或NPC对话乱码。
4.生效步骤:修改脚本后,必须在M2Server的“控制→重新加载→重读NPC脚本”中刷新,直接重启服务端非必要。
总结:上线送装备的核心是修改QManage.txt的[@Login]段,利用ISNEWHUMAN进行精准新人判断,通过GIVE命令发放对应职业的装备。建议采用外部调用模式以保持代码整洁。

