传奇服务端检测指定地图指定怪物数量的脚本写法

来源: 作者: 点击:
传奇服务端中,检测指定地图内指定怪物数量的脚本,核心是调用服务端自带的怪物查询函数,搭配地图ID、怪物ID定位,再通过变量存储数量、判断逻辑执行后续操作,以下是详细可直接复用的写法及拆解,适配主流传奇服务端引擎。
首先明确脚本编写的核心前提,需获取两个关键参数:目标地图ID和目标怪物ID,这两个参数是脚本精准定位的基础,缺一不可。地图ID可通过服务端的地图配置文件查询,通常在MapInfo.txt或类似命名的配置文件中,每个地图对应唯一的数字ID;怪物ID可在怪物配置文件中查找,一般为MonGen.txt或Monster.txt,每个怪物同样有专属数字ID,需准确记录,避免混淆不同怪物或地图。
脚本的核心逻辑的是“查询数量—存储数量—按需执行操作”,不同引擎的函数命名略有差异,但核心语法一致,以下分主流引擎(GOM、GEE、HERO)分别给出完整脚本示例,均无需额外插件,直接复制到服务端脚本文件(通常为QFunction-0.txt、AutoRun.txt等)即可生效,同时标注关键步骤的作用,方便根据实际需求修改。
GOM引擎脚本写法(最常用,适配多数服务端):
//检测指定地图(地图ID:100)内指定怪物(怪物ID:50)的数量
[@检测怪物数量]
#ACT
MapMonCount10050//调用地图怪物数量查询函数,参数1为地图ID,参数2为怪物ID
SetVarHMonCount%MapMonCount%//将查询到的怪物数量存储到变量HMonCount中,方便后续调用
#IF
VarEqualHMonCount0//判断怪物数量为0的情况
#ACT
SendMsg6该地图指定怪物已全部清除//向玩家发送提示信息,6为消息颜色代码
#ELSEIF
VarLessHMonCount5//判断怪物数量小于5的情况
#ACT
SendMsg6该地图指定怪物剩余不足5只,请尽快清理
#ELSE
SendMsg6该地图指定怪物剩余%HMonCount%只,仍需继续清理
//后续可添加额外操作,如怪物数量为0时刷新怪物、触发任务等
//示例:怪物数量为0时,在指定坐标刷新10只目标怪物
#IF
VarEqualHMonCount0
#ACT
MonGen1005010300300//参数依次为:地图ID、怪物ID、刷新数量、X坐标、Y坐标
SendMsg6怪物已刷新,请前往清理
上述脚本中,MapMonCount是GOM引擎的核心查询函数,直接返回指定地图指定怪物的当前存活数量,无需额外定义;SetVar用于存储变量,变量名可自定义(如HMonCount可改为MonsterNum),但需保证全程一致,避免变量混淆;VarEqual、VarLess是判断变量的常用命令,可根据需求修改判断条件,如VarGreater(大于)、VarEqualOrGreater(大于等于)等。
GEE引擎脚本写法(适配GEE及衍生引擎,语法略有差异):
//检测指定地图(地图ID:200)内指定怪物(怪物ID:80)的数量
[@CheckMonsterNum]
#ACT
GetMapMonCount20080//GEE引擎查询函数,参数顺序与GOM一致,函数名多了Get前缀
SaveVarMonNum%GetMapMonCount%//存储怪物数量到变量MonNum
#IF
CheckVarMonNum=0
#ACT
SendMsg0【提示】目标地图指定怪物已全部清除,任务完成!//0为全服广播颜色代码
AddExp10000//给触发脚本的玩家增加经验,可根据需求删除
#ELSE
SendMsg0【提示】目标地图指定怪物剩余%MonNum%只,请继续清除
GEE引擎与GOM引擎的核心区别在于查询函数名,以及变量判断的命令写法(CheckVar替代VarEqual),其余逻辑完全一致,可根据自己的服务端引擎选择对应函数,若不确定引擎类型,可查看服务端根目录下的引擎配置文件,或咨询服务端搭建人员。
HERO引擎脚本写法(适配老版传奇服务端,语法更简洁):
//检测指定地图(地图ID:300)内指定怪物(怪物ID:100)的数量
[@MonsterCountCheck]
#ACT
MonCount300100//HERO引擎查询函数,直接简写为MonCount
SetHVarMyMonCount%MonCount%//存储到全局变量MyMonCount,支持跨脚本调用
#IF
HVarEqualMyMonCount0
#ACT
SendMsg7怪物已清空,可前往领取奖励//7为蓝色消息颜色
OpenNPC1001//打开指定NPC,用于领取奖励,可替换为其他操作
#ELSEIF
HVarGreaterMyMonCount10
#ACT
SendMsg7怪物数量较多,建议组队清理
HERO引擎的变量分为本地变量和全局变量,SetHVar设置的是全局变量,可在其他脚本中通过GetHVar调用,适合需要跨场景检测怪物数量的需求;若仅在当前脚本中使用,可改用SetVar设置本地变量,语法更简洁。
除了上述完整脚本示例,还有几个关键注意点,确保脚本正常运行:
1.地图ID和怪物ID必须准确,若ID错误,脚本将无法查询到怪物数量,导致判断逻辑失效。可通过服务端配置文件逐一核对,避免因ID混淆(如不同地图的同名怪物、同名地图的不同ID)导致脚本出错。
2.函数调用的参数顺序不可颠倒,所有引擎的查询函数,第一个参数均为地图ID,第二个参数为怪物ID,若顺序颠倒,将查询到错误的结果(如查询指定怪物所在的地图数量,而非指定地图的怪物数量)。
3.变量名可自定义,但需遵循服务端脚本命名规则,不可包含特殊字符,且全程保持一致,如在SetVar中定义为HMonCount,后续判断时就不能写为HMonNum,否则会导致变量无法识别。
4.消息颜色代码可根据需求修改,不同引擎的颜色代码一致,常用代码:0(黑色)、1(红色)、2(绿色)、3(黄色)、6(紫色)、7(蓝色),可根据服务端实际显示效果调整,避免颜色过浅导致玩家无法看到提示。
5.后续操作可灵活扩展,除了发送提示信息,还可添加怪物刷新、经验奖励、道具发放、任务触发、传送地图等操作,只需在对应的判断条件下添加对应的脚本命令即可。例如,当怪物数量为0时,触发传送命令,将玩家传送到指定地图:#ACTMoveMap400350350(参数为目标地图ID、X坐标、Y坐标)。
6.脚本编写完成后,需保存到对应的脚本文件中,重启服务端生效。若脚本未生效,可检查脚本文件是否正确(如是否保存到QFunction-0.txt而非其他文件)、脚本语法是否有误(如缺少#ACT、#IF等关键字,或命令拼写错误)、地图ID和怪物ID是否正确。
对于部分特殊需求,如检测多个地图的同一怪物数量、检测同一地图的多个怪物数量,可在此基础上扩展脚本。例如,检测两个地图的同一怪物数量,可分别调用两次查询函数,存储到不同变量中,再进行判断:
//检测地图100和地图200内怪物ID50的总数量
[@CheckMultiMapMon]
#ACT
MapMonCount10050
SetVarMonCount1%MapMonCount%
MapMonCount20050
SetVarMonCount2%MapMonCount%
SetVarTotalMon%MonCount1%+%MonCount2%//计算两个地图的怪物总数量
SendMsg6两个地图指定怪物总数量为%TotalMon%只
若需要检测同一地图的多个怪物数量,可依次查询每个怪物的ID,分别存储变量,再根据需求判断单个怪物数量或总数量。
另外,部分服务端支持自定义函数,若默认的查询函数无法满足需求,可联系服务端开发者添加自定义查询命令,或通过脚本组合实现复杂的检测逻辑。但多数情况下,上述默认函数已能满足日常检测需求,无需额外修改服务端核心配置。
总结来说,传奇服务端检测指定地图指定怪物数量的脚本,核心是掌握对应引擎的查询函数,获取准确的地图ID和怪物ID,通过变量存储数量,再搭配判断命令执行后续操作。不同引擎的语法差异较小,只需替换查询函数名和判断命令,即可适配不同服务端,脚本可直接复制复用,修改关键参数即可满足自身需求。
[顶部]