玩传奇单机用 GOM 引擎的玩家,大多想加个 “假人系统”—— 让假人自动打怪、捡装备、甚至模拟真实玩家喊话、组队,这样单机服不会显得冷清。但很多人定制假人脚本时处处碰壁:要么假人只会站在原地不动,要么乱打低级怪不升级,要么捡满垃圾装备就卡住;找了现成脚本改,又因为不懂 GOM 引擎的专属语法,改完服务端直接报错。我之前帮朋友调 GOM 假人脚本,光让假人学会 “自动去蜈蚣洞打怪 + 捡极品装备” 就试了三次,踩了不少引擎特性的坑。今天就把 GOM 引擎假人脚本的定制逻辑、开发步骤、功能扩展,还有常见问题解决办法全讲透,新手跟着做,不用写复杂代码也能做出实用的假人系统。
一、先搞懂:GOM 引擎假人脚本和其他引擎有啥不一样?
定制前得先摸清 GOM 假人的 “脾气”,它和 HERO、BLUE 引擎的假人脚本差异很大,尤其在 “AI 行为控制” 和 “脚本调用方式” 上,搞错了根本没法用。
首先是 GOM 假人的核心模块,必须包含三个部分,少一个假人就 “不干活”:
假人生成模块:控制假人刷新的数量、职业、等级,比如一次刷 5 个战士假人,初始等级 10 级;
AI 行为模块:决定假人要做什么,比如 “自动找怪打”“打死后捡装备”“没血了喝药”;
交互规则模块:控制假人是否和真实玩家互动,比如 “主动申请组队”“每隔 10 分钟喊一次话”。
和其他引擎比,GOM 假人有两个关键特性要注意:
必须用 “FakePlayer” 专属函数,比如生成假人用 “CreateFakePlayer”,控制假人移动用 “FakePlayerMove”,普通引擎的 “AddNPC” 函数在 GOM 里没用;
脚本要分 “全局配置” 和 “单个假人行为”,全局配置管假人总数、刷新频率,单个假人行为管具体动作,两者要分开写在不同文件里,不然会冲突。
举个实际例子:想让假人自动去蜈蚣洞打蜈蚣,脚本里得先在全局配置里设 “刷新 1 个 30 级法师假人”,再在单个假人行为里写 “判断当前地图是不是蜈蚣洞,不是就自动跑过去;是就找蜈蚣怪,找到后用雷电术打,打死后捡地上的‘菜刀’‘蓝翡翠项链’”,少一步假人都不会去蜈蚣洞。
二、定制前的 3 个准备:工具、路径、参数
别着急写脚本,先做好这三件事,能避免后面反复改文件,节省时间。
1. 备齐必须的工具(GOM 专属)
GOM 引擎编辑器:在服务端 “GOMEngine” 文件夹里,叫 “GOMEditor.exe”,用来写假人脚本的核心逻辑,还能实时测试假人行为;
Notepad++:改脚本文件用,别用系统记事本,容易出现编码错误,GOM 脚本只认 ANSI 编码;
GOM 假人参数查询器:网上能搜到,用来查假人职业 ID(战士 1、法师 2、道士 3)、地图 ID(蜈蚣洞 301)、怪物 ID(蜈蚣 105),错一个 ID 假人就会跑错地方、打错怪。
我之前没下查询器,手动记地图 ID,把蜈蚣洞 301 写成了 310,结果假人全跑到比奇城外面的野区了,查了参数才改对。
2. 找对脚本存放路径(GOM 固定路径)
GOM 假人脚本不能随便放,必须放在服务端 “Envir\FakePlayer” 文件夹里,还要分两个文件写:
GlobalConfig.txt:全局配置文件,管假人总数、刷新频率、初始装备,比如 “MaxFakePlayer=5”(最多 5 个假人),“RefreshTime=60”(每 60 秒刷新一次);
FakePlayerAI.txt:单个假人行为文件,管假人具体动作,比如打怪、捡物、喊话,所有假人的行为都从这个文件读。
要是少了其中一个文件,或者放错了文件夹,启动服务端时假人根本不刷新,这点和其他引擎不一样,必须记牢。
3. 规划假人核心参数(避免后期乱改)
先把假人的关键参数列在记事本上,比如:
数量:3 个(1 战士、1 法师、1 道士);
初始等级:20 级;
初始装备:战士戴 “青铜头盔 + 木剑 + 布衣”,法师戴 “魔法头盔 + 偃月 + 轻盔”;
目标地图:蜈蚣洞(ID301);
目标怪物:蜈蚣(ID105)、黑色恶蛆(ID106);
捡物规则:只捡攻击≥10 的武器、防御≥3 的首饰;
喊话内容:“有没有一起打猪洞的?”(每 15 分钟喊一次)。
参数规划好,后面写脚本直接填,不用边写边想,效率高很多。
三、核心步骤:GOM 假人脚本定制(分模块写)
这部分是重点,按 “全局配置→单个假人行为→功能扩展” 的顺序写,每个模块都给具体代码,加详细注释,新手也能看懂。
第一步:写全局配置(GlobalConfig.txt)
打开 Notepad++,新建文件保存为 “GlobalConfig.txt”,放在 “Envir\FakePlayer” 里,代码如下,每一行都标了注释:
; GOM 假人全局配置文件
; 假人总数(最多 10 个,太多会卡顿)
MaxFakePlayer=3
; 刷新频率(秒),60 秒刷一次,没了就补
RefreshTime=60
; 假人初始等级
InitLevel=20
; 假人名字前缀,后面会自动加数字,比如 “路人甲 1”“路人甲 2”
FakePlayerName = 路人甲
; 假人职业分配(1 战士、2 法师、3 道士,按顺序对应假人 1、2、3)
FakePlayerJob=1,2,3
; 假人初始装备(按职业顺序,战士:青铜头盔 (101), 木剑 (10), 布衣 (201); 法师:魔法头盔 (102), 偃月 (15), 轻盔 (202); 道士:道士头盔 (103), 桃木剑 (12), 中盔 (203))
InitEquipment=101,10,201|102,15,202|103,12,203
; 假人初始血量(百分比),100 就是满血
InitHP=100
; 假人初始蓝量(百分比),100 就是满蓝
InitMP=100
保存时注意:编码选 ANSI,不然 GOM 引擎读不懂;参数之间用英文逗号分隔,比如 “FakePlayerJob=1,2,3”,别用中文逗号。
第二步:写单个假人行为(FakePlayerAI.txt)
这是假人 “会干活” 的关键,新建文件保存为 “FakePlayerAI.txt”,同样放 “Envir\FakePlayer” 里,以 “假人自动去蜈蚣洞打怪 + 捡装备 + 喊话” 为例,代码分 4 个部分:
1. 假人出生后自动去蜈蚣洞
; 假人出生后判断当前地图,不是蜈蚣洞(ID301)就自动跑过去
[@FakePlayerBorn]
#ACT
; 获取当前假人所在地图 ID,存到临时变量 MapID
GetFakePlayerMap MapID
; 判断 MapID 是不是 301(蜈蚣洞),不是就执行移动命令
IF MapID != 301
; 移动到蜈蚣洞的坐标(301,120,130),GOM 里坐标要写 “地图 ID,X,Y”
FakePlayerMove 301,120,130
ENDIF
#SAY
准备去蜈蚣洞打怪升级咯!
2. 假人在蜈蚣洞自动打怪
; 假人每 3 秒执行一次打怪判断(GOM 默认 3 秒触发一次)
[@FakePlayerLoop]
#ACT
; 判断周围有没有蜈蚣(ID105)或黑色恶蛆(ID106),范围 10 格内
CheckMonsterNearby 105,106,10
; 有怪就执行攻击,没有就随机移动找怪
IF TRUE
; 攻击范围内等级最高的怪,用当前职业的技能(战士用攻杀,法师用雷电)
FakePlayerAttack Monster,HighestLevel,UseSkill
ELSE
; 没怪就随机移动 5 格,避免站着不动
FakePlayerMove Random,5
ENDIF
; 判断假人血量是否低于 30%,是就喝红药(红药 ID3001)
CheckFakePlayerHP < 30
IF TRUE
FakePlayerUseItem 3001
ENDIF
; 判断假人蓝量是否低于 20%,是就喝蓝药(蓝药 ID3002)
CheckFakePlayerMP < 20
IF TRUE
FakePlayerUseItem 3002
ENDIF
3. 假人自动捡装备(只捡极品)
; 怪物死后触发捡物判断
[@FakePlayerMonsterDie]
#ACT
; 获取地上物品的 ID 和属性,存到变量
GetGroundItemInfo ItemID,Attack,Defense
; 只捡攻击≥10 的武器(武器类型 1)或防御≥3 的首饰(首饰类型 3)
IF (ItemType == 1 AND Attack >= 10) OR (ItemType == 3 AND Defense >= 3)
FakePlayerPickItem ItemID
#SAY
捡到好东西啦!
ELSE
; 不捡的垃圾物品,10 秒后自动消失
FakePlayerDeleteItem ItemID,10
ENDIF
4. 假人定时喊话(模拟真实玩家)
; 每 15 分钟(900 秒)喊一次话
[@FakePlayerTimer,900]
#ACT
; 随机选一句喊话内容,避免重复
RandomSay 有没有一起打猪洞的?| 这服爆率还不错啊!| 谁有多余的药水,求点!
; 喊话范围是 15 格内,让附近玩家能看到
FakePlayerSpeak 15,RandomSayContent
第三步:保存并测试脚本
把两个文件都保存到 “Envir\FakePlayer”,编码选 ANSI;
打开 “GOMEditor.exe”,点击 “假人系统”→“加载脚本”,选择刚才的两个文件,提示 “加载成功” 就行;
启动服务端和客户端,登录后看比奇城有没有 “路人甲 1”“路人甲 2”“路人甲 3”,要是有,且它们自动往蜈蚣洞跑,说明脚本生效了;
跟着假人去蜈蚣洞,看它们是不是打蜈蚣、捡极品装备、定时喊话,有问题再回头改代码。
四、常见问题:假人不动、不打怪、不捡物?这样解决
我调试时遇到过不少坑,总结了 4 个最常见的问题,按步骤排查,基本能解决 90% 的问题。
问题 1:假人根本不刷新,服务端没报错
大概率是 3 个地方错了:
脚本放错路径:必须在 “Envir\FakePlayer”,放成 “Envir\QuestDiary” 就没用;
全局配置文件名字错了:必须是 “GlobalConfig.txt”,少个字母(比如 “GlobalConfig1.txt”)或多空格都不行;
假人总数设成 0 了:检查 “MaxFakePlayer” 是不是≥1,设 0 肯定不刷新。
问题 2:假人刷新了,但站着不动,不往蜈蚣洞跑
这是 “假人移动函数错了”:
GOM 移动函数是 “FakePlayerMove 地图 ID,X,Y”,别写成 “Move 地图 ID,X,Y”(这是 HERO 引擎的);
地图 ID 或坐标错了:比如蜈蚣洞 ID 不是 301,查参数查询器确认,坐标要是地图里能走的地方,别写墙里(比如 301,0,0),假人会卡住。
问题 3:假人去了蜈蚣洞,但不打怪,只乱跑
有两种可能:
怪物 ID 错了:把蜈蚣 ID105 写成了 150,查参数确认;
没开 “假人攻击开关”:打开 “GOMEditor.exe”,点 “假人系统”→“功能开关”,勾上 “允许假人攻击怪物”,之前我忘了勾这个,假人光跑不打。
问题 4:假人打怪,但不捡装备,地上全是垃圾
多半是捡物规则写错了:
物品类型判断错了:武器类型是 1,首饰是 3,写成 “ItemType == 2”(防具)就不捡武器;
属性数值写反了:把 “Attack>= 10” 写成 “Attack <= 10”,只捡垃圾武器,改过来就行;
没加 “FakePlayerPickItem ItemID”:光判断不执行捡物命令,加上这行就能捡。
五、功能扩展:让假人更 “智能”
基础脚本做好后,还能加这些功能,让假人更像真实玩家:
假人自动摆摊:在 “FakePlayerAI.txt” 里加 “[@FakePlayerLevelUp,40]”(等级到 40 级触发),写 “FakePlayerOpenShop 菜刀 = 5000, 蓝翡翠 = 3000”,假人到 40 级就会在比奇城摆摊卖装备;
假人死亡后复活跑图:加 “[@FakePlayerDie]”,写 “FakePlayerRevive 比奇城 (300,150,160),10”(10 秒后在比奇城复活),再让它重新跑回蜈蚣洞;
假人主动组队:加 “[@FakePlayerSeeRealPlayer]”(看到真实玩家触发),写 “FakePlayerApplyTeam 一起打怪呗,我输出高!”,玩家同意就能组队。
六、总结
GOM 引擎假人脚本定制,核心是 “找对路径、用对函数、写清规则”,其实不算复杂,只要跟着步骤写全局配置和单个假人行为,再按常见问题排查,新手也能做出会打怪、会捡装备、会互动的假人。
玩单机传奇的乐趣就是自己折腾,比如根据喜好改假人数量(别太多,5 个以内不卡顿)、调整捡物规则(只捡极品装备)、加喊话内容(更贴近玩家语气)。要是遇到函数不懂的地方,去 GOM 引擎论坛搜 “假人脚本手册”,里面有所有专属函数的说明,或者发帖问老玩家,大家一般都会分享自己的脚本模板,能少走很多弯路。
传奇单机架设实操教程 GOM 引擎假人脚本系统定制开发与功能调试技巧
来源:
作者:
点击:

