传奇人物登录脚本编写方法与实例详解

来源: 作者: 点击:
传奇人物登录脚本控制玩家进入游戏时自动执行的一系列操作,包括检测登录状态、发放奖励、初始化变量、触发任务等。该脚本文件通常命名为“QManage.txt”,存放于服务端“Mir200\Envir\MapQuest_def”目录下,通过[@Login]标签触发执行。

登录脚本基础结构与存放位置

登录脚本的核心是[@Login]标签,当玩家成功登录游戏时,服务端引擎自动执行该标签下的所有指令。脚本文件必须放置在正确路径:MirServer\Mir200\Envir\MapQuest_def\QManage.txt。若目录下无此文件,需手动创建文本文件并重命名。脚本采用“标签-条件-执行”三层结构,标签为[@Login],条件判断使用#IF开头,执行动作使用#ACT开头。

基础框架示例:

[@Login]
#IF
#ACT
SENDMSG 6 欢迎<$USERNAME>来到传奇世界!

此脚本在玩家登录时发送一条私聊欢迎信息。其中<$USERNAME>为系统变量,自动替换为当前玩家角色名。

常用检测命令与变量操作

登录脚本中常用检测命令包括CHECKIPLIST(检测IP列表)、CHECKLEVELEX(检测等级)、CHECK [标记](检测任务标记)、EQUAL <$HUMAN(变量名)> 数值(检测私人变量)。变量操作命令包括SETHUMAN(设置私人变量)、CALCVAR HUMAN(计算私人变量)、SAVEVAR HUMAN(保存私人变量)。

检测首次登录示例:

[@Login]
#IF
EQUAL <$HUMAN(首次登录)> 0
#ACT
SETHUMAN 首次登录 1
SAVEVAR HUMAN 首次登录 ..\QuestDiary\数据保存\首次登录.txt
GIVE 新手剑 1
GIVE 金币 5000
SENDMSG 6 首次登录奖励:新手剑*1,金币*5000
#ELSEACT
SENDMSG 6 欢迎回来,<$USERNAME>!

EQUAL <$HUMAN(首次登录)> 0检测变量是否为0(首次登录)。SETHUMAN 首次登录 1将变量设为1(已登录过)。SAVEVAR保存变量到文本文件,确保数据持久化。

多条件组合与复杂判断

登录脚本支持多条件组合判断,通过AND连接多个条件实现复杂逻辑。常用组合包括检测等级与VIP状态、检测登录时间与活动状态、检测IP地址与账号安全。

检测等级与VIP状态示例:

[@Login]
#IF
CHECKLEVELEX > 40
CHECK [VIP会员] 1
#ACT
GIVE 双倍经验卷 2
SENDMSG 6 VIP会员登录奖励:双倍经验卷*2
#ELSESAY
你的等级不足或不是VIP会员。

CHECKLEVELEX > 40检测等级是否大于40级。CHECK [VIP会员] 1检测VIP标记是否为1。两个条件同时满足时执行#ACT部分。

时间检测与每日奖励发放

通过检测系统时间与玩家最后登录日期,可实现每日登录奖励功能。使用CHECKTEXTLIST检测日期文件,DAYOFWEEK检测星期几。

每日奖励示例:

[@Login]
#IF
NOT CHECKTEXTLIST ..\QuestDiary\数据保存\每日登录\<$USERNAME>.txt <$DATETIME>
#ACT
ADDTextListEx ..\QuestDiary\数据保存\每日登录\<$USERNAME>.txt <$DATETIME>
GIVE 金币 10000
GIVE 随机装备箱 1
SENDMSG 6 每日登录奖励:金币*10000,随机装备箱*1
#ELSEACT
SENDMSG 6 今日已领取过登录奖励。

NOT CHECKTEXTLIST检测玩家今日是否已领取奖励。<$DATETIME>为系统当前日期。ADDTextListEx将当前日期写入玩家专属文件,标记已领取。

IP检测与账号安全

通过检测登录IP,可限制同一账号多地登录或实现地区限制。CHECKIPLIST检测IP是否在列表中,ADDIPLIST将IP加入列表。

IP检测示例:

[@Login]
#IF
CHECKIPLIST ..\QuestDiary\IP白名单.txt
#ACT
SENDMSG 6 IP验证通过,欢迎登录。
#ELSEACT
KICK
SENDMSG 6 登录IP不在白名单中,连接已断开。

CHECKIPLIST检测当前登录IP是否在“IP白名单.txt”文件中。若不在则执行KICK命令断开连接。

任务状态检测与进度恢复

登录时检测玩家任务进度,加载未完成任务变量,确保任务连续性。LOADVAR HUMAN加载保存的变量值。

任务进度恢复示例:

[@Login]
#IF
CHECK [消灭野猪任务] 1
#ACT
LOADVAR HUMAN 杀野猪计数 ..\QuestDiary\个人变量\杀野猪计数.txt
SENDMSG 6 任务“消灭野猪”进度已恢复:<$HUMAN(杀野猪计数)>/10

CHECK [消灭野猪任务] 1检测任务标记是否为进行中。LOADVAR HUMAN加载之前保存的击杀计数变量。

全服公告与活动提示

登录时可触发全服公告,提示玩家当前活动信息。SENDMSG 1发送全服红字公告,SENDMSG 7发送屏幕中央公告。

活动提示示例:

[@Login]
#IF
HOUR 20 22
#ACT
SENDMSG 1 玩家[<$USERNAME>]上线了!当前时段:晚间活动时间,经验加倍!
SENDMSG 7 晚间活动时间(20:00-22:00)经验值提升50%
#ELSEACT
SENDMSG 6 欢迎回来,<$USERNAME>!

HOUR 20 22检测当前时间是否为20点到22点。SENDMSG 1发送全服公告,SENDMSG 7发送屏幕中央提示。

变量初始化与状态设置

登录时为玩家初始化各种状态变量,确保游戏功能正常运行。包括设置攻击模式、初始化背包、设置默认技能等。

变量初始化示例:

[@Login]
#IF
#ACT
SETATTACKMODE 0
SETHUMAN 自动拾取 1
SETHUMAN 自动喝药 1
SETHUMAN 挂机状态 0

SETATTACKMODE 0设置攻击模式为和平模式。SETHUMAN设置各种功能开关变量。

多引擎语法差异处理

不同引擎在登录脚本语法上存在差异,需根据实际使用的引擎调整命令格式。

HERO引擎与GOM引擎对比:
• 变量保存:HERO用SAVEVAR HUMAN,GOM用SAVEVALUE HUMAN。

• 时间检测:HERO用HOUR,GOM用CHECKHOUR。

• 文本列表:HERO用CHECKTEXTLIST,GOM用CHECKTEXTLISTFILE。

• 消息发送:两者均用SENDMSG,但参数含义可能不同。

GOM引擎登录脚本示例:

[@Login]
#IF
CHECKHOUR 20 22
#ACT
SENDMSG 1 玩家[<$USERNAME>]上线了!当前为双倍经验时间!
GIVEEXP 100000
#ELSEACT
SENDMSG 6 欢迎回来!


脚本调试与问题排查

编写完成后需重启M2引擎使脚本生效。通过查看M2控制台输出信息,可定位脚本错误。

常见问题与解决方法:
1. 登录无任何反应:检查QManage.txt文件是否放置在正确目录,文件名是否正确。
2. 变量不保存:确认SAVEVAR命令路径存在,QuestDiary目录下已建立对应文件夹。
3. 条件判断失效:检查命令语法是否正确,变量名是否与设置时一致。
4. 奖励重复发放:确保日期检测逻辑正确,ADDTextListEx命令正常执行。
5. 全服公告不显示:确认SENDMSG第一个参数为1(全服红字公告)。

完整登录脚本实例

整合多种功能的完整登录脚本示例:

[@Login]
#IF
EQUAL <$HUMAN(首次登录)> 0
#ACT
SETHUMAN 首次登录 1
SAVEVAR HUMAN 首次登录 ..\QuestDiary\数据保存\首次登录.txt
GIVE 新手剑 1
GIVE 布衣 1
GIVE 金币 10000
SENDMSG 1 欢迎新玩家[<$USERNAME>]加入传奇世界!
SENDMSG 6 首次登录奖励已发放!
BREAK

#IF
NOT CHECKTEXTLIST ..\QuestDiary\数据保存\每日登录\<$USERNAME>.txt <$DATETIME>
#ACT
ADDTextListEx ..\QuestDiary\数据保存\每日登录\<$USERNAME>.txt <$DATETIME>
GIVE 金币 5000
GIVE 随机装备箱 1
SENDMSG 6 每日登录奖励:金币*5000,随机装备箱*1
BREAK

#IF
CHECKLEVELEX > 35
CHECK [VIP会员] 1
#ACT
GIVE 双倍经验卷 1
GIVE 疗伤药包 1
SENDMSG 6 VIP专属登录奖励已发放!
BREAK

#IF
HOUR 20 22
#ACT
SENDMSG 7 当前为晚间活动时间(20:00-22:00),经验值提升50%
BREAK

#IF
#ACT
SENDMSG 6 欢迎回来,<$USERNAME>!
SETATTACKMODE 0
SETHUMAN 自动拾取 1
SETHUMAN 自动喝药 1

此脚本包含首次登录检测、每日奖励、VIP奖励、活动提示、基础设置等多个功能模块,每个模块使用BREAK命令分隔,确保只执行一个符合条件的模块。

编写要点总结

登录脚本编写核心在于精准的条件判断与有序的执行流程。条件检测需按优先级排列,从特殊到一般。使用BREAK命令避免多个条件同时执行。变量操作后及时保存,防止数据丢失。消息提示要清晰明确,让玩家了解触发效果。测试时使用不同账号、不同条件多次登录,验证各功能模块是否正常触发。通过组合基础命令,可实现复杂的登录逻辑,为玩家提供个性化的登录体验。