全清自己宝宝用KILLSLAVE,按名字清指定宝宝用KILLCALLMOB。两个命令不同,全清不要写循环去一个个杀名字,按名不要写KILLSLAVE清所有人,避免误杀其他玩家宠物或把地图野怪一起清掉。
GOM、GEE、Hero、996、V8、MaxM2通用全清
NPC脚本写在Mir200\Envir\Market_Def对应商人文件,或自建清理NPC。最简全清:
[@main]
IF
ACT
KILLSLAVE
SENDMSG 5 你的全部宝宝已被清除
带清尸体参数按引擎写。GEE资料给的格式是KILLSLAVE 是否清尸体,0或空不清、1清尸体;V8资料同样用KILLSLAVE 是否清尸体,名字为空或*清所有。想直接消失不保留尸体:
[@main]
IF
ACT
KILLSLAVE 1
SENDMSG 5 全部宝宝已清除并清理尸体
只提示不杀用检测先判断。Hero/通用可用CheckSlaveCount看数量,再决定是否清:
[@main]
IF
CheckSlaveCount > 0
ACT
KILLSLAVE 1
SENDMSG 5 检测到携带宝宝,已全部击杀
ELSEACT
SENDMSG 5 当前没有召唤宝宝
CheckSlaveCount不同文档符号写法有>、=、<等,按所用引擎命令手册填判断符。不确定变量支持情况时,先不写条件,直接KILLSLAVE做按钮最稳。
按名字杀指定宝宝
GOM、996、Hero支持KILLCALLMOB 名字 数量 方式。格式:方式0有死亡动画并触发死亡脚本,1直接消失不触发。杀1只神兽:
[@killone]
IF
ACT
KILLCALLMOB 神兽 1
SENDMSG 5 神兽已击杀
杀1只神兽且不播死亡动画:
[@killone]
IF
ACT
KILLCALLMOB 神兽 1 1
SENDMSG 5 神兽已移除
杀2只白野猪:
[@killpet]
IF
ACT
KILLCALLMOB 白野猪 2
SENDMSG 5 已击杀2只白野猪宝宝
名字必须和RECALLMOB、诱惑、英雄召出来的怪物名一致。带颜色、带后缀、带主人名显示的,先用CheckSlaveName检测再杀。星河/通用文档给CheckSlaveName 名字 数量、KILLSLAVE 名字 1清指定并清尸;Hero旧资料用CheckSlaveName检测当前宝宝名字。示例:
[@killbyname]
IF
CheckSlaveName 月灵 1
ACT
KILLSLAVE 月灵 1
SENDMSG 5 月灵已清除
ELSEACT
SENDMSG 5 未检测到月灵
多名字逐个写段,不要试图用一个KILLCALLMOB传多个名字,大多数引擎只认单个怪物名加数量。
英雄宝宝单独清
英雄召出的属下是否归入人物KILLSLAVE,看引擎版本。996资料有英雄获得宝宝触发@heroSlavebb,自己宝宝死亡触发@SelfKillSlave。若KILLSLAVE只清主号不清理英雄,按引擎另写英雄命令或检测英雄 Slave。Hero可用H系列思路处理英雄技能,宝宝清理若版本支持再调用对应英雄从属命令;不支持就进游戏手动解散英雄再KILLSLAVE,避免脚本误判。
进入安全区自动清自己宝宝
安全区用MapFlag或QF进入地图触发。QF写Mir200\Envir\Market_Def\QFunction-0.txt,示例按进入安全区地图判断:
[@EnterMap0]
IF
CheckMapName 比奇安全区
ACT
KILLSLAVE 1
SENDMSG 5 安全区禁止逗留宝宝,已全部清除
地图名按MapInfo.txt实际名称改。部分版本进入地图触发标签不是@EnterMap0,按M2脚本说明用@IntoMap或对应地图QF段。只想进某活动图不许带宠,可用机器人定时全图检测人数和宝宝,再KILLSLAVE;但机器人遍历全图若写成CLEARMAPMON会连野怪一起清,只清玩家宠物必须用KILLSLAVE而不是清图命令。
机器人定时清自己宝宝
Mir200\Envir\Robot.txt配置执行间隔,Robot_def相关文件写脚本名。示例思路:每30秒对指定地图在线人物执行清理NPC段。Robot_def:
[RobotExec1]
时间参数=30
执行命令=@AutoKillSlave
Robot_default\AutoKillSlave.txt:
[@AutoKillSlave]
IF
CheckMapName 皇宫
ACT
KILLSLAVE 1
SENDMSG 5 皇宫规则:已自动清除你的宝宝
机器人是对当前触发角色执行,不要把KILLSLAVE写进全服循环去杀所有人不加地图条件。需要只清某地图就CheckMapName前置;需要只清超过数量就CheckSlaveCount前置。
按等级、按数量条件清
宝宝过多才清,用CheckSlaveCount。Hero/通用资料支持CheckSlaveCount判断数量:
[@main]
IF
CheckSlaveCount > 3
ACT
KILLSLAVE 1
SENDMSG 5 宝宝超过3只,已全部清理
ELSEACT
SENDMSG 5 宝宝数量未超上限
按等级清用CheckSlaveLevel,部分文档命令为CheckSlaveLevel 符号 等级。低于某等级全清、高于保留,示例:
[@main]
IF
CheckSlaveLevel < 5
ACT
KILLSLAVE 1
SENDMSG 5 低等级宝宝已清理
ELSEACT
SENDMSG 5 宝宝等级较高,未处理
符号按引擎支持写>,<,=等;老Hero资料出现过CheckSlaveLevel带逗号分隔的写法,新版本以命令手册为准。
死亡触发自己宝宝全清
宝宝死亡后还想做日志或连带处理,996用QFunction-0的@SelfKillSlave。示例:
[@SelfKillSlave]
IF
ACT
SENDMSG 6 你的宝宝已死亡
WriteLog ..\Envir\Log\SlaveDie.txt <%s> <$DATETIME>
只记录不主动杀,配合NPC按钮KILLSLAVE使用。若写主动再KILLSLAVE会造成递归,宝宝死亡触发又杀宝宝,单机测试会卡脚本,不建议在死亡段重复调用全清。
GM后台与聊天命令
M2开启允许脚本/GM命令后,聊天框可直接试。全清自己宝宝让玩家点NPC最安全;GM代清让目标站在当前地图,对其执行KILLSLAVE。部分引擎GM清全图野怪用@KillAll、@MonClear、CLEARMAPMON,这些不是“自己的宝宝”命令,会杀全图所有怪和他人宠物,正式服别拿来代替KILLSLAVE。只处理本人从属,坚持用KILLSLAVE、KILLCALLMOB。
常见不生效原因
写了KILLSLAVE没反应:QF未重载、NPC未重新加载、命令在所用引擎被改名。Hero资料给KILLSLAVE全清和KILLCALLMOB按名;GEE给KILLSLAVE带清尸参数;GOM按名用KILLCALLMOB。改完在M2控制重新加载NPC脚本、重新加载QF,再用小号召宝宝点NPC验证。
按名杀不了:名字不匹配。用CheckSlaveName先测,能检测再KILLCALLMOB或KILLSLAVE 名字。带“主人名+怪物名”显示的版本,KILLCALLMOB按基础怪物名通常可杀;若服务端改过属下命名规则,按实际显示名调整。
清完又立刻重新召:机器人间隔太短、进入地图触发和安全区触发重复执行。只保留一个入口,NPC手动清一套,安全区自动清一套,机器人只用于活动图,不要三处都KILLSLAVE 1,玩家体验会很差。
误杀别人宝宝:脚本写在全服定时、机器人遍历在线列表但未限定当前角色。KILLSLAVE本身按执行对象清其个人从属;机器人若用GM命令对全部角色强制循环,要改成逐人当前触发。清全图别用CLEARMAPMON、MonClear、KillAll代替KILLSLAVE。
英雄宝宝没清:主号KILLSLAVE不覆盖英雄从属时,检查引擎是否把英雄宠物归独立Slave。可先手动解散英雄再测;若必须脚本处理,查所用Hero/GEE/Blue英雄从属命令,不要硬套人物KILLSLAVE。
完整NPC示例
Market_Def新建CleanSlave.txt:
=
[@CleanSlave]
IF
CheckSlaveCount > 0
ACT
KILLSLAVE 1
SENDMSG 5 已清除你全部宝宝及尸体
ELSEACT
SENDMSG 5 当前无宝宝可清
[@KillOne]
IF
CheckSlaveName 神兽 1
ACT
KILLCALLMOB 神兽 1
SENDMSG 5 神兽已击杀
ELSEACT
SENDMSG 5 未检测到神兽
[@KillName]
IF
CheckSlaveName <$STR(N1)> 1
ACT
KILLSLAVE <$STR(N1)> 1
SENDMSG 5 指定宝宝已清除
ELSEACT
SENDMSG 5 请输入正确宝宝名
N1用对话框传入;若引擎不支持输入框取名的变量,直接写固定名字段最稳。
备份与测试顺序
改QF、Robot、Market_Def前备份Envir整目录。先单机建两个号,A召神兽、月灵各1只,B召白野猪1只。A点全清NPC应只清A所有宝宝,不影响B;A点按名杀神兽应留月灵;安全区触发应只对进入安全区的A生效;机器人只配活动图,不应在练级图自动清。验证通过再上正式版本,避免KILLSLAVE误接全服循环导致玩家投诉。
传奇全引擎将自己宝宝全部杀死脚本NPC机器人进入安全区清宠物KILLSLAVE教程
来源:
作者:
点击:

