传奇GOM引擎假人系统实战:Robot脚本与DummyConfig高仿真人生态搭建

来源: 作者: 点击:
GOM 引擎的假人不是简单站桩人偶,本质是走账号登录链路、吃人物命令集、受 Robot_def 定时器与 DummyConfig 行为文件双重驱动的模拟角色。M2 里勾了“启用假人系统”后,假人从 DBServer 走正常选人流程进游戏,能用 ChangeAttatckMode、RECALLHERO、GUILD、MAPMOVE、PICKUP、SENDMSG 等全部人物级指令,区别只在 ISDUMMY 标记为真、不受真人充值/反外挂/部分 GM 监控约束。

一、核心文件与目录分布
• Mir200\Envir\DummyNameList.txt:主体假人名字池,每行一个,支持“陪练战士01 0 35 0 60”格式(职业 等级 性别 移动速度),名字同步写进 DBServer\DenyChrName.txt 防真人抢名

- Mir200\Envir\DummyHeroNameList.txt:假人英雄名字池,配合 RECALLHERO 出英雄
• Mir200\Envir\DummyConfig\假人名称.txt:单假人行为配置,字段含职业、性别、等级、攻击模式、自动拾取、使用技能、穿戴装备、说话机率、摆摊开关、回城间隔

- Mir200\Envir\Robot.txt + Robot_def\AutoRunRobot.txt + Robot_def\RobotManage.txt:全局定时器机器人,按秒/分/时/天/星期触发 [@段] 跑服务端指令(喊话、刷怪、攻城、批量登假人)
- Mir200\Envir\QuestDiary\假人系统\*.txt:登录触发、死亡触发、地图切换、智能 PK、泡点、摆摊等复杂状态机
• Mir200\Envir\Market_Def\假人管理员-0.txt + Npcs.txt/Merchant.txt:可视 NPC 入口,手动调试用

二、假人登录链路(QManage.txt 标准写法)
[@Login]
#IF
ISDUMMY
#ACT
SETDUMMYCONFIGFILENAME ..\DummyConfig\<$USERNAME>.txt
LOADDUMMYCONFIGFILE
ChangeAttatckMode 5
DUMMYSTART
; 英雄陪练
GETDUMMYNAME 11
SETDUMMYHERONAME <$STR(S11)>
RECALLHERO

ISDUMMY 先拦真假,SETDUMMYCONFIGFILENAME 指向同名配置,LOADDUMMYCONFIGFILE 把 MOVRD06、CHANGEATTATCKMODE、AutoPickup、UseSkill 等参数灌进角色,DUMMYSTART 切自动机。不写 LOADDUMMYCONFIGFILE 假人就是空壳站桩。

三、DummyConfig 行为参数拆解(高仿真人关键)
;假人名称.txt 示例
Job=0 ;0战1法2道
Gender=0 ;0男1女
Level=42
AttackMode=5 ;5行会 6红名 1和平 0全体
MoveSpeed=550
HitSpeed=1200
AutoPickup=1
PickupItem=金币,沃玛装备,药水
UseSkill=战士:半月弯刀,烈火剑法|法师:雷电术,冰咆哮|道士:施毒术,召唤骷髅
EquipList=武器:屠龙,衣服:战神盔甲,项链:圣战项链,手镯:圣战手镯,戒指:圣战戒指
TalkRate=30 ;每30秒概率说话
TalkFile=..\QuestDiary\假人系统\假人喊话.txt
DeathReviveMap=安全区随机
DeathEquipRepair=1 ;爆装后延迟自检补齐
GuildCreate=1 ;达等级自建行会,上限6个后转加入
AutoStall=1 ;土城安全区概率摆摊

装备名必须和 StdItems.txt 的 Name 完全一致,自创装备先入库再写;TalkRate 配 TalkFile 随机读行,避免全员复读同句;DeathEquipRepair 开后才能模拟“爆了再凑一套”的真人循环。

四、Robot_def 定时机器人搭生态节奏
AutoRunRobot.txt:
#AutoRun NPC SEC 8 @DummyLoginBatch
#AutoRun NPC RUNONDAY 19:30 @SiegeDummy
#AutoRun NPC MIN 30 @DummyTalkFlush

RobotManage.txt:
[@DummyLoginBatch]
#IF
CHECKVAR A51 1
#ACT
DUMMYLOGON 0 330 320 5 ;比奇安全区每次补5个

[@SiegeDummy]
#ACT
SENDMSG 0 沙城攻城假人军团进场……
MAPMOVE 3 330 330 群体传送指令或MISSION刷假人攻城队列

[@DummyTalkFlush]
#ACT
GETRANDOMLINETEXT ..\QuestDiary\假人系统\世界频道.txt
SENDMSG 5 <$STR(LINE)>

SEC/MIN/HOUR/RUNONDAY/RUNONWEEK 五种周期足够覆盖泡点、攻城、世界喊话、批量上下线。

五、高仿真人行为状态机(QuestDiary 片段)
[@DummyAI_战士]
#IF
CHECKLEVELEX < 25
#ACT
MAPMOVE 比奇新村 200 200
GOTO @Train_骷髅洞
#IF
CHECKLEVELEX >= 25
CHECKLEVELEX < 40
#ACT
MAPMOVE 盟重 300 300
GOTO @Train_猪洞
#IF
CHECKLEVELEX >= 40
#ACT
MAPMOVE 祖玛寺庙 200 220
GOTO @AttackMonster

[@AttackMonster]
#IF
CHECKMONSTERCOUNT 5
#ACT
ATTACKMONSTER 1
#ELSE
#ACT
WALK 随机
GOTO @PickDrop

[@PickDrop]
#IF
CHECKITEM 沃玛装备 0
#ACT
PICKUP 沃玛装备 1
#IF
CHECKHP < 30
#ACT
USEITEM 金疮药(大)

[@SmartPK]
#IF
CHECKPLAYERNEAR 3
CHECKVARHUMANAttack > <$TARGETATTACK>
#ACT
ATTACKPLAYER 1
SENDMSG 5 假人<%s>:敢抢怪?找死!
#ELSE
#ACT
RUNAWAY 随机 5

等级分段换图、打怪→捡物→喝药→智能 PK→逃跑,配合随机 WALK 间隔(500~800ms)和说话概率,肉眼难辨真假。

六、人形怪式假人(Monster.DB 方案)
不想走账号链路的轻量方案:DBC2000 开 Monster.DB 加一条 Name=假人哨兵,Race=0/1,Appr 抄战士/法师模型,Undead=0,写 MonGen.txt 刷坐标。缺点:不吃 ChangeAttatckMode、不能真入行会、不能摆摊交易,只适合当固定巡逻兵或攻城肉墙。

七、行会与攻城生态联动
• 开区前跑“假人行会初始化”建 6~10 个霸气行会名,假人达 35 级自动 GUILDCREATE,超出上限转 GUILDJOIN 随机真/假行会

• 攻城日 AutoRunRobot 触发 @SiegeDummy,假人切 AttackMode=0 或 5,分正门/侧门队列砍城墙进皇宫,死亡后安全区延时复活重进

- 行会聊天、行会令、攻城补贴用 RobotManage 发 SENDMSG,避免全是系统广播穿帮

八、摆摊与交易拟真
土城安全区判定:
#IF
ISDUMMY
CHECKMAP 0 ;比奇安全区
RAND 100 < 20 ;20%概率
#ACT
CREATESTALL <$USERNAME>杂货
STALLADD 治疗药水 10 50
STALLADD 沃玛首饰 1 50000
STOPDUMMYAI

摆摊名用假人本名,价格随市场变量浮动,真人可以真买,经济流闭环。

九、调试与排错硬规矩
• 编码全 ANSI,中文乱码先另存 ANSI 重写 RobotManage.txt

• 单图假人 ≤20,刷新间隔 ≥30 秒,登录间隔 5~10 秒,避免 M2 主线程卡死

- 坐标别落障碍物/安全区边界,用 MapQuest_def 预检 CANMOVE
• 改 DummyConfig 不停服需 M2“重新加载假人配置”;Robot_def 改完重载机器人脚本;MonGen 改完重载刷怪

- ISDUMMY 判断漏写会导致真人也被强制 LOADDUMMYCONFIGFILE,全员变战斗机器
• 同名冲突:DummyNameList 与 DenyChrName 不同步,真人建了同名号假人登不进来

十、参数区间参照(贴近真人节奏)
• MoveSpeed 500~600(战士略慢、法师略快)

• AttackSpeed 战士 800~1200 / 法师 600~1000 / 道士 1000~1400

- TalkRate 20~40 秒随机一句,世界喊话 ≥30 分钟一轮
• 死亡复活延迟 5~15 分钟,爆装自检 10~30 分钟补齐

• 泡点地图假人占比 30%,野外 40%,安全区/摆摊 30%,别全堆土城

假人生态的真伪分界不在“能不能动”,而在等级曲线(新村→骷髅→猪洞→祖玛→赤月)、装备迭代(爆了补、好了穿)、行会归属、攻城站位、频道发言、摆摊定价这几条链路是否同时跑通;只开 DUMMYLOGON 不写 DummyConfig 和 QuestDiary 状态机,出来的就是一眼假的桩子。