传奇服务端武器限时变量脚本(全区唯一版)

来源: 作者: 点击:
一、核心逻辑:实现全区唯一+限时+下线清除功能

脚本核心通过全局变量控制神器唯一性,搭配人物绑定变量计时、下线触发事件,解决三大问题:人物小退下线神器不消失、全区多把神器共存、怪物刷新与神器状态不同步。整体分为怪物死亡掉落、限时计时、下线清除、怪物刷新四大模块,适配主流GOM、GEE、HERO引擎。

核心变量规划:全局变量G1(控制神器状态,0无神器、1神器存在)、人物变量U1(记录神器持有时间戳)、人物变量U2(标记是否持有神器),通过变量联动确保全区仅存一把神器,状态同步更新。

二、完整脚本代码(可直接复制使用)

脚本文件说明

1.主脚本命名为“GodWeapon.txt”,存放路径:服务端“MirServer\Mir200\Envir\QuestDiary”;

2.辅助触发脚本写入“Qmanage.txt”(下线检测、定时器触发),确保功能全覆盖。

模块1:挑战怪物死亡掉落神器脚本

绑定挑战怪物死亡事件,仅当无神器存在时掉落,确保全区唯一,代码写入“GodWeapon.txt”:

[@挑战怪物死亡]
#IF
EQUALG10;检测全区无神器
#ACT
MOVG11;标记神器已存在
GIVE神器名称1;替换为实际神器名称
MOVU21;标记当前玩家持有神器
MOVU1$TIME;记录持有时间戳(秒级)
STARTSCTIMER11800;启动1800秒(30分钟)定时器
SENDMSG0恭喜玩家%s击杀挑战怪物,获得限时神器(30分钟)!
#elseact
SENDMSG6当前全区已有神器存在,无法再次获得!
RESPAWN挑战怪物名称1;怪物直接刷新,无需等待


模块2:神器限时消失+怪物刷新脚本

定时器触发,30分钟后清除神器并刷新怪物,代码写入“GodWeapon.txt”:

[@OnTimer1]
#IF
EQUALU21;检测玩家持有神器
#ACT
TAKE神器名称1;清除背包/佩戴中的神器
MOVU20;取消持有标记
MOVG10;标记神器已消失
RESPAWN挑战怪物名称1;刷新挑战怪物
SENDMSG6你的限时神器已过期,怪物已重新刷新!
SENDMSG0玩家%s的限时神器已过期,挑战怪物重新刷新!
KILLSCTIMER1;关闭定时器
#elseact
MOVG10
RESPAWN挑战怪物名称1
KILLSCTIMER1


模块3:人物下线/小退清除神器脚本

检测玩家下线动作,立即清除神器并刷新怪物,代码写入服务端“MirServer\Mir200\Envir\Qmanage.txt”末尾:

[@OnUserLogout]
#IF
EQUALU21;检测玩家持有神器
#ACT
TAKE神器名称1;强制清除神器
MOVU20
MOVG10;重置神器状态
RESPAWN挑战怪物名称1;立即刷新怪物
SENDMSG0持有神器的玩家%s已下线,神器已清除,怪物重新刷新!
KILLSCTIMER1;关闭定时器
#elseact
BREAK

[@OnUserQuit];小退触发事件
#IF
EQUALU21
#ACT
TAKE神器名称1
MOVU20
MOVG10
RESPAWN挑战怪物名称1
SENDMSG0持有神器的玩家%s已小退,神器已清除,怪物重新刷新!
KILLSCTIMER1
#elseact
BREAK


模块4:实时计时校验脚本(防定时器失效)

补充实时校验逻辑,避免定时器异常导致神器超时不消失,代码写入“Qmanage.txt”,搭配自动检测:

[@CheckWeaponTime]
#IF
EQUALU21;持有神器
$TIME-U1>1800;持有时间超过30分钟
#ACT
TAKE神器名称1
MOVU20
MOVG10
RESPAWN挑战怪物名称1
SENDMSG6你的限时神器已过期,怪物已重新刷新!
SENDMSG0玩家%s的限时神器已过期,挑战怪物重新刷新!
KILLSCTIMER1
#elseact
GOTO@Main

;加入自动检测,每秒触发一次
#AutoRunNPCSEC1@CheckWeaponTime


三、脚本修改及适配方法(无需代码基础)

基础替换调整

1.神器名称替换:将脚本中“神器名称”改为实际名称(如“屠龙”“裁决之杖”),需与数据库中物品名称完全一致;

2.怪物名称替换:将“挑战怪物名称”改为目标怪物全称(如“终极BOSS”“远古巨龙”),匹配游戏内怪物名;

3.时间调整:若需修改限时时长,将“1800”改为对应秒数(如900秒为15分钟),所有涉及1800的位置需统一修改。

变量冲突排查

1.检查全局变量G1、人物变量U1、U2是否已被其他脚本使用,若冲突可替换为未使用变量(如G20、U10、U11),需同步修改所有对应变量名;

2.定时器编号1若被占用,可改为其他未使用编号(如2、3),确保STARTSCTIMER、KILLSCTIMER、@OnTimer编号一致。

四、脚本部署步骤(3步生效)

第一步:创建主脚本文件

1.新建系统记事本,复制模块1、模块2代码粘贴,按需求替换名称、变量;

2.点击“文件-另存为”,文件名填“GodWeapon.txt”,编码选“ANSI”,保存至指定路径。

第二步:写入辅助触发脚本

1.打开“Qmanage.txt”,复制模块3、模块4代码粘贴至文件末尾;

2.保存文件,关闭记事本,确保代码无多余空格、换行。

第三步:绑定怪物死亡事件

1.进入服务端“MirServer\Mir200\Envir\MonItems”文件夹,找到挑战怪物对应的TXT文件(如“远古巨龙.txt”);

2.在文件末尾添加一行:#DEATH@挑战怪物死亡,绑定死亡触发事件;

3.关闭服务端所有程序,重新启动服务器,脚本即可生效。

五、常见问题排查(解决现有异常)

问题1:人物下线/小退神器不消失

排查方向:1.确认“@OnUserLogout”“@OnUserQuit”脚本已正确写入Qmanage.txt,无拼写错误;2.检查U2变量是否正常标记,可在游戏内用GM命令查看变量值(@查看变量U2);3.确保TAKE命令中神器名称正确,无多余空格。

问题2:全区出现多把神器

排查方向:1.检查G1变量是否正常联动,怪物死亡前G1是否为0;2.确认脚本中所有“MOVG11”“MOVG10”操作无遗漏,神器消失后及时重置G1;3.避免多人同时击杀怪物,可在脚本中添加怪物死亡冷却(如添加“MOVG2$TIME”,下次死亡需间隔10秒)。

问题3:神器消失后怪物不刷新

排查方向:1.检查RESPAWN命令中怪物名称是否正确,参数1代表立即刷新;2.确认脚本中神器消失后(定时器触发、下线触发)均有RESPAWN命令;3.若怪物刷新受其他脚本控制,暂时关闭对应脚本,避免冲突。

问题4:30分钟后神器未消失

排查方向:1.检查定时器编号是否一致,STARTSCTIMER与@OnTimer编号需相同;2.启用模块4实时校验脚本,弥补定时器失效问题;3.确认时间戳变量U1获取正常,$TIME命令是否被引擎支持(部分引擎用$SYSTIME)。

六、使用注意事项

1.脚本部署前备份Qmanage.txt及MonItems对应怪物文件,误改可快速恢复;

2.测试时用GM号击杀挑战怪物,验证神器掉落、限时、下线清除、怪物刷新全流程,无异常再开放给玩家;

3.若引擎不支持$TIME、STARTSCTIMER命令,替换为对应兼容命令(如HERO引擎用TIMER代替SCTIMER);

4.全区唯一逻辑依赖全局变量G1,服务器重启后G1重置为0,怪物会重新掉落神器,属于正常现象。
[顶部]