登录奖励脚本通过服务端脚本文件控制,玩家上线时自动触发。核心文件位于 MirServer\Mir200\Envir\MapQuest_def\QManage.txt,修改该文件中的 [@Login] 段即可实现。
一、基础新人登录奖励
适用于首次创建角色时发放启动资源。在 QManage.txt 中找到或新建 [@Login] 段落,写入以下逻辑:
[@Login]
#IF
ISNEWHUMAN
#ACT
GIVE 金条 1
GIVE 回城卷 10
GAMEGOLD + 5000
SENDMSG 6 欢迎新人!获得金条*1、回城卷*10、5000金币。
BREAK
• ISNEWHUMAN:引擎专用命令,检测是否为新建角色,确保奖励只发一次。
• GIVE:给物品指令,后接数据库中的准确名称及数量。
• GAMEGOLD:增加游戏币(元宝)指令。
• BREAK:终止后续判断,防止重复执行。
二、每日登录与累积奖励
利用变量记录登录天数,实现按天发放的不同奖励。需配合文件存储变量:
[@Login]
#IF
; 检测是否为新的一天(D0为系统日期变量)
LARGE D0 <$HUMAN(最后登录日)>
#ACT
; 登录天数+1
CALCVAR HUMAN 登录天数 + 1
MOV D0 <$HUMAN(最后登录日)>
; 保存变量到文件
SAVEVAR HUMAN 登录天数 ..\QuestDiary\玩家数据\登录记录.txt
SAVEVAR HUMAN 最后登录日 ..\QuestDiary\玩家数据\登录记录.txt
; 根据天数发放奖励
#IF
EQUAL <$HUMAN(登录天数)> 1
#ACT
GIVE 新手礼包 1
#IF
EQUAL <$HUMAN(登录天数)> 3
#ACT
GAMEGOLD + 10000
SENDMSG 6 累计登录3天,奖励10000金币已发放。
BREAK
• SAVEVAR:将变量保存至文本文件,确保服务器重启后数据不丢失。
- CALCVAR:对变量进行数学运算。
• EQUAL:条件判断,检测变量是否等于指定值。
三、全职业新手套装发放
根据不同职业发放对应的武器与技能书:
[@Login]
#IF
ISNEWHUMAN
CHECKJOB WARRIOR
#ACT
GIVE 乌木剑 1
GIVE 布衣(男) 1
ADDSKILL 基本剑术 3
BREAK
#IF
ISNEWHUMAN
CHECKJOB WIZARD
#ACT
GIVE 乌木剑 1
GIVE 布衣(女) 1
ADDSKILL 火球术 3
BREAK
• CHECKJOB:检测玩家职业(WARRIOR战士/WIZARD法师/TAOS道士)。
• ADDSKILL:直接为玩家添加技能并设定等级,无需使用技能书。
四、修改生效与调试流程
1. 文件备份:修改 QManage.txt 前,务必复制备份。
2. 编码格式:使用 Notepad++ 等工具,将文件编码保存为 ANSI,严禁使用 UTF-8 含 BOM 格式,否则会导致脚本乱码或失效。
3. 重载脚本:修改保存后,在游戏引擎(M2Server)的“管理”菜单中点击“重读”→“重读QManage.txt”。若修改无效,需重启整个服务端。
4. 报错排查:若上线无奖励,检查 QManage.txt 是否已存在其他 [@Login] 段造成冲突,或 ISNEWHUMAN 命令在当前引擎中是否被禁用。
五、高级扩展:调用外部脚本
当主脚本过于臃肿时,可将奖励逻辑分离到外部文件:
在 QManage.txt 中写入:
[@Login]
#CALL [\系统功能\登录奖励.txt] @执行奖励
随后在 MirServer\Mir200\Envir\QuestDiary\系统功能\登录奖励.txt 文件中编写具体的 @执行奖励 段落。此方法便于管理复杂的多日签到系统。
制作完成后,务必在游戏中创建新角色实测触发条件,确保 GIVE 的物品名称与数据库 StdItems.DB 完全一致。

