传奇3KM2引擎安全区挂机假人阵亡后自动重连登录脚本编写与触发逻辑

来源: 作者: 点击:
[@OnMobDeath]
#IF
ISFAKEHUMAN
#ACT
GETMOBVAR <$MOBID> S1 FAKEACCOUNT
GETMOBVAR <$MOBID> S2 FAKEPASS
GETMOBVAR <$MOBID> S3 FAKEIP
GETMOBVAR <$MOBID> S4 FAKEPORT
DELAYGOTO 3 @ReLoginFake
BREAK
[@ReLoginFake]
#ACT
FAKEHUMANLOGIN <$STR(S1)> <$STR(S2)> <$STR(S3)> <$STR(S4)>
MESSAGE 假人账号<$STR(S1)>已阵亡,执行自动重新登录
BREAK

[@OnFakeHumanLogout]
#IF
ISFAKEHUMAN
#ACT
GETMOBVAR <$MOBID> S1 FAKEACCOUNT
GETMOBVAR <$MOBID> S2 FAKEPASS
GETMOBVAR <$MOBID> S3 FAKEIP
GETMOBVAR <$MOBID> S4 FAKEPORT
DELAYGOTO 5 @ReLoginFake
BREAK

假人初始化NPC脚本
[@main]
#ACT
MESSAGE 假人管理面板,可创建安全区挂机假人,设置假人账号密码网络参数
#IF
NOT ISADMIN
#ACT
MESSAGE 权限不足,仅管理员可操作假人相关功能
BREAK
#ELSEACT
MESSAGE 1.添加安全区挂机假人 2.查看在线假人列表 3.关闭面板
BREAK
[@添加安全区挂机假人]
#IF
ISADMIN
#ACT
INPUTS 输入假人账号 S1
INPUTS 输入假人密码 S2
INPUTS 填写登录IP S3
INPUTS 填写端口 S4
FAKEHUMANCREATE <$STR(S1)> <$STR(S2)> <$STR(S3)> <$STR(S4)>
GETMOBVAR <$MOBID> FAKEACCOUNT = <$STR(S1)>
GETMOBVAR <$MOBID> FAKEPASS = <$STR(S2)>
GETMOBVAR <$MOBID> FAKEIP = <$STR(S3)>
GETMOBVAR <$MOBID> FAKEPORT = <$STR(S4)>
FAKEHUMANMOVE 3 330 330
MESSAGE 假人账号<$STR(S1)>创建成功,传送至安全区挂机
BREAK
#ELSEACT
MESSAGE 假人创建失败,参数填写错误或者账号重复
BREAK
[@查看在线假人列表]
#IF
ISADMIN
#ACT
FAKEHUMANLIST
BREAK
[@关闭面板]
#ACT
MESSAGE 关闭假人管理面板
BREAK

整套脚本适配3KM2引擎,分为全局怪物死亡触发器、假人下线触发器以及管理员假人创建NPC三部分。[@OnMobDeath]放在QFunction-0.txt文件内,当假人角色被击杀死亡时触发,先读取该假人身上预先存储的账号、密码、IP、端口变量,等待短暂延时后调用FAKEHUMANLOGIN指令执行重新登录。[@OnFakeHumanLogout]用来捕获假人主动掉线、异常断开场景,触发相同的重连逻辑,覆盖阵亡掉线和意外离线两种情况。

假人创建阶段使用FAKEHUMANCREATE生成假人实例,生成之后用GETMOBVAR把登录信息存入假人自身变量,假人死亡销毁时,变量信息跟随实例读取,作为重连登录参数。FAKEHUMANMOVE指令将假人直接移动到指定地图安全区坐标,保证重连生成后直接回到挂机点位,不会跑到危险区域。延时指令DELAYGOTO用来预留足够时间等待假人实例完全销毁,避免假人还未释放就执行登录造成账号占用报错,延时数值根据服务器负载调整,一般设置3至5秒即可。

NPC面板仅限管理员操作,普通玩家点击直接返回权限提示,防止其他人随意新增大量假人占用服务器资源。INPUTS依次接收账号、密码、IP、端口四项参数,参数填写完成后一次性创建假人并保存登录信息,FAKEHUMANLIST指令可以快速列出当前全部在线假人,方便管理员核对假人运行状态。

测试阶段,管理员创建假人放置安全区,手动击杀假人角色,观察假人死亡后是否触发重连,等待设定延时后检查假人是否重新生成并回到安全区坐标。可以增加假人血量监控定时器,当假人血量降低到阈值时自动执行回城指令,避免频繁死亡重连消耗服务器性能。也可以增加假人数量限制,使用全局变量记录当前假人总数,达到上限时禁止继续新增假人。

可扩展功能,增加假人分组管理,不同分组假人配置不同挂机地图坐标。增加假人登录失败重试机制,登录失败后多次重试,多次失败后停止重试并发送系统提示。增加假人行为脚本,挂机状态下自动执行基础动作,实现原地循环动作。增加定时下线清理,设置固定时间批量重启全部假人,解决长时间运行产生的内存堆积。

需要核对引擎指令支持,部分低版本3KM2内核对于假人变量存储、FAKEHUMANLOGIN指令支持存在差异,假人无法自动重连时升级引擎内核。假人账号需要提前在角色数据库建立,账号密码必须完全匹配,IP和端口填写错误会直接导致登录失败。大量假人同时死亡重连会瞬间产生并发请求,容易造成服务器短暂卡顿,需要控制单批假人数量,或者在重连逻辑增加随机延时,分散登录请求。

假人变量存储属于实例临时变量,服务器重启后所有假人实例销毁,变量清空,重启后需要重新创建假人。如需服务器重启自动加载一批固定假人,可以在机器人脚本增加服务器启动事件,服务端开启时自动批量创建预设假人。安全区坐标需要确认地图编号和坐标无误,坐标错误会导致假人重连刷新到地图危险区域,反复阵亡循环。

脚本不会限制假人行为,假人创建后默认原地挂机,如需增加假人自动拾取、自动聊天等功能,需要额外编写假人行为脚本。假人死亡重连仅为实例重建,不会继承死亡前背包、身上装备状态,如需保留假人装备,需要在死亡触发前添加装备保存与加载逻辑。可以增加日志输出,每次假人死亡、重连、登录失败写入日志文本,方便排查假人频繁掉线、登录失败等异常问题。