庄园管家时间扣元宝脚本实现按在线时长扣除元宝功能。脚本核心逻辑基于个人计时器与元宝检测扣减系统。以下为完整脚本代码与配置方法。
庄园管家NPC脚本放置在服务端D:\mirserver\Mir200\Envir\Market_Def\目录。新建文本文件命名为“庄园管家-3.txt”,3代表盟重省地图编号。脚本开头需定义NPC基本属性。
[@main]
IF
ACT
MOV S0 <$USERNAME>
SAY
欢迎来到庄园管家服务系统。\ \
当前时间:<$DATETIME>\ \
您的账户:<$USERNAME>\ \
剩余元宝:<$GAMEGOLD>个\ \
<开始计时/@开始计时> <查看状态/@查看状态>\ \
<停止计时/@停止计时> <退出/@exit>
计时开始触发段处理初始设置。检测玩家元宝数量,不足设定值则提示无法启动。
[@开始计时]
IF
CHECKGAMEGOLD > 99
ACT
GAMEGOLD - 100
SET [301] 1
SET [300] 0
SENDMSG 6 提示:计时系统已启动,首小时预扣100元宝。
SENDMSG 6 提示:后续每小时自动扣除100元宝,元宝不足自动停止。
ELSEACT
SENDMSG 6 提示:元宝不足100个,无法启动计时系统。
个人计时器通过RobotManage.txt文件实现自动扣费。在D:\mirserver\Mir200\Envir\Robot_def\RobotManage.txt添加以下内容。
[@OnTimer30]
IF
CHECK [301] 1
CHECKGAMEGOLD > 99
ACT
GAMEGOLD - 100
INC G300 1
SENDMSG 6 提示:计时系统扣除100元宝,累计计时<$STR(G300)>小时。
ELSEACT
SET [301] 0
SENDMSG 6 提示:元宝不足或手动停止,计时系统已关闭。
状态查询功能显示当前计时情况与累计消费。
[@查看状态]
IF
CHECK [301] 1
ACT
SAY
计时状态:运行中\ \
累计时长:<$STR(G300)>小时\ \
累计消费:<MUL(<STR(G300)>,100)>元宝\ \
<返回/@main>
ELSEACT
SAY
计时状态:未运行\ \
<返回/@main>
手动停止计时功能清除计时标志并保存数据。
[@停止计时]
IF
CHECK [301] 1
ACT
SET [301] 0
SENDMSG 6 提示:计时系统已手动停止。
SENDMSG 6 提示:累计计时<STR(G300)>小时,总消费<MUL(<$STR(G300)>,100)>元宝。
MOV G300 0
ELSEACT
SENDMSG 6 提示:当前没有运行中的计时任务。
计时器触发间隔通过AutoRunRobot.txt配置。在相同目录的AutoRunRobot.txt添加以下行。
AutoRun NPC SEC 30 @OnTimer30
此设置表示每30秒执行一次@OnTimer30段。扣费逻辑为每小时扣除100元宝,通过30秒检测一次实现近似实时扣费。变量G300记录累计小时数,[301]作为计时运行标志。
NPC配置文件Merchant.txt需要添加对应条目。编辑D:\mirserver\Mir200\Envir\Merchant.txt,添加以下行。
庄园管家 3 330 330 庄园管家-3 0 8 0 0 0
字段含义依次为:NPC名称、地图编号、X坐标、Y坐标、脚本文件名、外观代码、方向、是否自动刷新、是否可攻击、是否显示名称。地图编号3对应盟重省,坐标330 330为庄园管家位置。
脚本变量说明:S0存储玩家名称用于后续操作。[300]系列变量为个人计时标识。[301]标志位控制计时启停。G300变量记录累计计时小时数。<GAMEGOLD>调用当前元宝数量。<USERNAME>获取角色名称。<$DATETIME>显示服务器当前时间。
扣费额度调整方法:修改脚本中所有“100”数值为其他金额即可改变每小时扣费标准。同时需要调整检测条件CHECKGAMEGOLD后的数值,保持大于扣费金额。
计时间隔调整方法:修改AutoRunRobot.txt中的“SEC 30”部分。SEC表示秒,30为间隔秒数。改为SEC 60则每分钟检测一次。RobotManage.txt中的@OnTimer30需要同步修改数字部分,保持与AutoRunRobot.txt调用名称一致。
多档位计时方案可通过扩展脚本实现。增加多个计时选项,对应不同扣费标准。例如添加“豪华计时”选项,每小时扣除200元宝但提供额外收益。需要新增标志位[302]和变量G301分别管理。
脚本调试常见问题:计时不启动检查元宝数量是否充足。扣费不执行确认RobotManage.txt配置正确。NPC不显示验证Merchant.txt条目格式。变量不保存检查变量类型是否正确,个人计时器变量应使用[ ]系列。
数据保存机制通过人物下线自动保存实现。累计计时数据G300在人物离线时写入数据库。重新登录后数据保持不变。如需重置累计数据,通过GM命令或特定NPC操作。
扩展功能建议:添加元宝不足预警,提前10分钟提示续费。增加计时套餐,例如包天扣费、包周扣费等不同模式。集成收益系统,计时期间获得经验加成或爆率提升。
脚本兼容性测试主要针对不同引擎版本。HERO引擎使用上述语法,GOM引擎需要调整变量格式为<$STR(G300)>。BLUE引擎可能需修改扣费命令为GAMEGOLD-100形式。
性能优化考虑:计时器检测间隔不宜过短,避免服务器负担。30秒间隔在精度与性能间取得平衡。大量玩家同时在线时,计时器脚本应保持简洁高效。
错误处理机制包含在脚本各环节。元宝不足自动停止防止负值。异常状态检测避免重复扣费。数据验证确保累计数值准确可靠。
脚本部署步骤总结:创建NPC脚本文件,配置计时器触发,设置NPC位置信息,重启服务端测试。修改任何文件后必须重启M2Server使更改生效。
最终验证方法:登录游戏找到庄园管家NPC,点击开始计时,等待规定时间后查看元宝扣减情况。通过状态查询功能确认累计数据准确。停止计时后验证系统正确重置。

