传奇全局G变量自动清理与脚本防占用方案

来源: 作者: 点击:
一、G变量特性与清理必要性

G变量(Global)是全局数字型变量,全服唯一且跨NPC传递。其数据保存在Mir200\GlobalVal.ini中,服务器重启后数值依然保留。若长期不清理,会导致变量耗尽(G0-G999被占满)或逻辑残留,引发活动无法开启、怪物不刷新等故障。

二、方案一:机器人脚本定时自动清理(推荐)

利用Mir200\Envir\Robot.txt的定时任务实现“全自动清理”,无需人工干预。

1.配置机器人触发频率
在Robot.txt中添加以下行(时间单位为分钟):

#AutoRunNPCMIN1@ClearGlobalVar

此行表示每分钟检测一次,触发@ClearGlobalVar脚本段。

2.编写清理脚本
在QFunction-0.txt(或专用机器人脚本文件)中添加:

[@ClearGlobalVar]
;检测是否为每日凌晨5点(服务器时间)
#IF
HOUR05
MIN00
;执行清理
#ACT
;方法A:使用ClearVar命令(GOM/GEE新引擎)
ClearVarG0100
;方法B:传统MOV循环归零(通用)
MOVG00
MOVG10
;...按需添加更多
MOVG990
;记录日志
SENDMSG0“【系统】全局G变量已自动重置”
BREAK

此脚本会在每天5:00自动将G0-G99归零,防止活动数据堆积。

三、方案二:引擎管理后台手动清理

对于临时调试或非定时需求,可直接在M2Server界面操作。

操作路径:
1.打开M2Server→【管理】→【文件管理】。
2.点击【清除全局G变量】或【清除全局A变量】。
3.勾选需要清理的变量范围,点击确认。

注意:此操作会立即生效并清空GlobalVal.ini文件,可能导致正在进行的全服活动中断,建议在维护时使用。

四、方案三:新版引擎ClearVar命令详解

GOM/GEE等新引擎支持ClearVar命令,可批量快速清理。

命令格式:

#ACT
ClearVar变量前缀起始编号清理数量


实战示例:
•清理G50-G100:ClearVarG5050

•清理A变量(全局字符):ClearVarA050

-清理S变量(私人字符):ClearVarS010

此命令比传统MOV循环效率更高,适合在活动结束脚本中直接调用。

五、防占用设计:活动结束自动复位

为避免G变量被永久占用,应在活动脚本中植入“结束即清理”的逻辑。

标准模板:

[@夺宝活动结束]
#ACT
;1.发放奖励
GIVE金币1000000
;2.立即复位活动变量(G5为活动状态标记)
MOVG50
ClearVarG1010
SENDMSG0“夺宝活动结束,相关变量已释放”
BREAK


六、常见问题与变量选择建议

•G变量上限:通常为G0-G999,若版本修改过引擎,上限可能扩展至G4999,需根据!Setup.txt配置判断。

-清理失效:检查Robot.txt的分钟设置是否过短(建议≥1分钟),或HOUR时间判断是否写错。
-替代方案:对于无需持久化的临时数据(如在线人数统计),优先使用I变量(Integer),服务器重启自动清零,无需手动清理。

关键原则:G变量用于需存档的关键状态(如全服首杀),I变量用于临时计数,混合使用可有效减少清理负担。
[顶部]