玩传奇单机用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=123
;假人初始装备(按职业顺序,战士:青铜头盔(101)木剑(10)布衣(201);法师:魔法头盔(102)偃月(15)轻盔(202);道士:道士头盔(103)桃木剑(12)中盔(203))
InitEquipment=10110201|10215202|10312203
;假人初始血量(百分比),100就是满血
InitHP=100
;假人初始蓝量(百分比),100就是满蓝
InitMP=100
保存时注意:编码选ANSI,不然GOM引擎读不懂;参数之间用英文逗号分隔,比如“FakePlayerJob=123”,别用中文逗号。
第二步:写单个假人行为(FakePlayerAI.txt)
这是假人“会干活”的关键,新建文件保存为“FakePlayerAI.txt”,同样放“Envir\FakePlayer”里,以“假人自动去蜈蚣洞打怪+捡装备+喊话”为例,代码分4个部分:
1.假人出生后自动去蜈蚣洞
;假人出生后判断当前地图,不是蜈蚣洞(ID301)就自动跑过去
[@FakePlayerBorn]
#ACT
;获取当前假人所在地图ID,存到临时变量MapID
GetFakePlayerMapMapID
;判断MapID是不是301(蜈蚣洞),不是就执行移动命令
IFMapID!=301
;移动到蜈蚣洞的坐标(301120130),GOM里坐标要写“地图IDXY”
FakePlayerMove301120130
ENDIF
#SAY
准备去蜈蚣洞打怪升级咯!
2.假人在蜈蚣洞自动打怪
;假人每3秒执行一次打怪判断(GOM默认3秒触发一次)
[@FakePlayerLoop]
#ACT
;判断周围有没有蜈蚣(ID105)或黑色恶蛆(ID106),范围10格内
CheckMonsterNearby10510610
;有怪就执行攻击,没有就随机移动找怪
IFTRUE
;攻击范围内等级最高的怪,用当前职业的技能(战士用攻杀,法师用雷电)
FakePlayerAttackMonsterHighestLevelUseSkill
ELSE
;没怪就随机移动5格,避免站着不动
FakePlayerMoveRandom5
ENDIF
;判断假人血量是否低于30%,是就喝红药(红药ID3001)
CheckFakePlayerHP<30
IFTRUE
FakePlayerUseItem3001
ENDIF
;判断假人蓝量是否低于20%,是就喝蓝药(蓝药ID3002)
CheckFakePlayerMP<20
IFTRUE
FakePlayerUseItem3002
ENDIF
3.假人自动捡装备(只捡极品)
;怪物死后触发捡物判断
[@FakePlayerMonsterDie]
#ACT
;获取地上物品的ID和属性,存到变量
GetGroundItemInfoItemIDAttackDefense
;只捡攻击≥10的武器(武器类型1)或防御≥3的首饰(首饰类型3)
IF(ItemType==1ANDAttack>=10)OR(ItemType==3ANDDefense>=3)
FakePlayerPickItemItemID
#SAY
捡到好东西啦!
ELSE
;不捡的垃圾物品,10秒后自动消失
FakePlayerDeleteItemItemID10
ENDIF
4.假人定时喊话(模拟真实玩家)
;每15分钟(900秒)喊一次话
[@FakePlayerTimer900]
#ACT
;随机选一句喊话内容,避免重复
RandomSay有没有一起打猪洞的?|这服爆率还不错啊!|谁有多余的药水,求点!
;喊话范围是15格内,让附近玩家能看到
FakePlayerSpeak15RandomSayContent
第三步:保存并测试脚本
把两个文件都保存到“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地图IDXY”,别写成“Move地图IDXY”(这是HERO引擎的);
地图ID或坐标错了:比如蜈蚣洞ID不是301,查参数查询器确认,坐标要是地图里能走的地方,别写墙里(比如30100),假人会卡住。
问题3:假人去了蜈蚣洞,但不打怪,只乱跑
有两种可能:
怪物ID错了:把蜈蚣ID105写成了150,查参数确认;
没开“假人攻击开关”:打开“GOMEditor.exe”,点“假人系统”→“功能开关”,勾上“允许假人攻击怪物”,之前我忘了勾这个,假人光跑不打。
问题4:假人打怪,但不捡装备,地上全是垃圾
多半是捡物规则写错了:
物品类型判断错了:武器类型是1,首饰是3,写成“ItemType==2”(防具)就不捡武器;
属性数值写反了:把“Attack>=10”写成“Attack<=10”,只捡垃圾武器,改过来就行;
没加“FakePlayerPickItemItemID”:光判断不执行捡物命令,加上这行就能捡。
五、功能扩展:让假人更“智能”
基础脚本做好后,还能加这些功能,让假人更像真实玩家:
假人自动摆摊:在“FakePlayerAI.txt”里加“[@FakePlayerLevelUp40]”(等级到40级触发),写“FakePlayerOpenShop菜刀=5000蓝翡翠=3000”,假人到40级就会在比奇城摆摊卖装备;
假人死亡后复活跑图:加“[@FakePlayerDie]”,写“FakePlayerRevive比奇城(300150160)10”(10秒后在比奇城复活),再让它重新跑回蜈蚣洞;
假人主动组队:加“[@FakePlayerSeeRealPlayer]”(看到真实玩家触发),写“FakePlayerApplyTeam一起打怪呗,我输出高!”,玩家同意就能组队。
六、总结
GOM引擎假人脚本定制,核心是“找对路径、用对函数、写清规则”,其实不算复杂,只要跟着步骤写全局配置和单个假人行为,再按常见问题排查,新手也能做出会打怪、会捡装备、会互动的假人。
玩单机传奇的乐趣就是自己折腾,比如根据喜好改假人数量(别太多,5个以内不卡顿)、调整捡物规则(只捡极品装备)、加喊话内容(更贴近玩家语气)。要是遇到函数不懂的地方,去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=123
;假人初始装备(按职业顺序,战士:青铜头盔(101)木剑(10)布衣(201);法师:魔法头盔(102)偃月(15)轻盔(202);道士:道士头盔(103)桃木剑(12)中盔(203))
InitEquipment=10110201|10215202|10312203
;假人初始血量(百分比),100就是满血
InitHP=100
;假人初始蓝量(百分比),100就是满蓝
InitMP=100
保存时注意:编码选ANSI,不然GOM引擎读不懂;参数之间用英文逗号分隔,比如“FakePlayerJob=123”,别用中文逗号。
第二步:写单个假人行为(FakePlayerAI.txt)
这是假人“会干活”的关键,新建文件保存为“FakePlayerAI.txt”,同样放“Envir\FakePlayer”里,以“假人自动去蜈蚣洞打怪+捡装备+喊话”为例,代码分4个部分:
1.假人出生后自动去蜈蚣洞
;假人出生后判断当前地图,不是蜈蚣洞(ID301)就自动跑过去
[@FakePlayerBorn]
#ACT
;获取当前假人所在地图ID,存到临时变量MapID
GetFakePlayerMapMapID
;判断MapID是不是301(蜈蚣洞),不是就执行移动命令
IFMapID!=301
;移动到蜈蚣洞的坐标(301120130),GOM里坐标要写“地图IDXY”
FakePlayerMove301120130
ENDIF
#SAY
准备去蜈蚣洞打怪升级咯!
2.假人在蜈蚣洞自动打怪
;假人每3秒执行一次打怪判断(GOM默认3秒触发一次)
[@FakePlayerLoop]
#ACT
;判断周围有没有蜈蚣(ID105)或黑色恶蛆(ID106),范围10格内
CheckMonsterNearby10510610
;有怪就执行攻击,没有就随机移动找怪
IFTRUE
;攻击范围内等级最高的怪,用当前职业的技能(战士用攻杀,法师用雷电)
FakePlayerAttackMonsterHighestLevelUseSkill
ELSE
;没怪就随机移动5格,避免站着不动
FakePlayerMoveRandom5
ENDIF
;判断假人血量是否低于30%,是就喝红药(红药ID3001)
CheckFakePlayerHP<30
IFTRUE
FakePlayerUseItem3001
ENDIF
;判断假人蓝量是否低于20%,是就喝蓝药(蓝药ID3002)
CheckFakePlayerMP<20
IFTRUE
FakePlayerUseItem3002
ENDIF
3.假人自动捡装备(只捡极品)
;怪物死后触发捡物判断
[@FakePlayerMonsterDie]
#ACT
;获取地上物品的ID和属性,存到变量
GetGroundItemInfoItemIDAttackDefense
;只捡攻击≥10的武器(武器类型1)或防御≥3的首饰(首饰类型3)
IF(ItemType==1ANDAttack>=10)OR(ItemType==3ANDDefense>=3)
FakePlayerPickItemItemID
#SAY
捡到好东西啦!
ELSE
;不捡的垃圾物品,10秒后自动消失
FakePlayerDeleteItemItemID10
ENDIF
4.假人定时喊话(模拟真实玩家)
;每15分钟(900秒)喊一次话
[@FakePlayerTimer900]
#ACT
;随机选一句喊话内容,避免重复
RandomSay有没有一起打猪洞的?|这服爆率还不错啊!|谁有多余的药水,求点!
;喊话范围是15格内,让附近玩家能看到
FakePlayerSpeak15RandomSayContent
第三步:保存并测试脚本
把两个文件都保存到“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地图IDXY”,别写成“Move地图IDXY”(这是HERO引擎的);
地图ID或坐标错了:比如蜈蚣洞ID不是301,查参数查询器确认,坐标要是地图里能走的地方,别写墙里(比如30100),假人会卡住。
问题3:假人去了蜈蚣洞,但不打怪,只乱跑
有两种可能:
怪物ID错了:把蜈蚣ID105写成了150,查参数确认;
没开“假人攻击开关”:打开“GOMEditor.exe”,点“假人系统”→“功能开关”,勾上“允许假人攻击怪物”,之前我忘了勾这个,假人光跑不打。
问题4:假人打怪,但不捡装备,地上全是垃圾
多半是捡物规则写错了:
物品类型判断错了:武器类型是1,首饰是3,写成“ItemType==2”(防具)就不捡武器;
属性数值写反了:把“Attack>=10”写成“Attack<=10”,只捡垃圾武器,改过来就行;
没加“FakePlayerPickItemItemID”:光判断不执行捡物命令,加上这行就能捡。
五、功能扩展:让假人更“智能”
基础脚本做好后,还能加这些功能,让假人更像真实玩家:
假人自动摆摊:在“FakePlayerAI.txt”里加“[@FakePlayerLevelUp40]”(等级到40级触发),写“FakePlayerOpenShop菜刀=5000蓝翡翠=3000”,假人到40级就会在比奇城摆摊卖装备;
假人死亡后复活跑图:加“[@FakePlayerDie]”,写“FakePlayerRevive比奇城(300150160)10”(10秒后在比奇城复活),再让它重新跑回蜈蚣洞;
假人主动组队:加“[@FakePlayerSeeRealPlayer]”(看到真实玩家触发),写“FakePlayerApplyTeam一起打怪呗,我输出高!”,玩家同意就能组队。
六、总结
GOM引擎假人脚本定制,核心是“找对路径、用对函数、写清规则”,其实不算复杂,只要跟着步骤写全局配置和单个假人行为,再按常见问题排查,新手也能做出会打怪、会捡装备、会互动的假人。
玩单机传奇的乐趣就是自己折腾,比如根据喜好改假人数量(别太多,5个以内不卡顿)、调整捡物规则(只捡极品装备)、加喊话内容(更贴近玩家语气)。要是遇到函数不懂的地方,去GOM引擎论坛搜“假人脚本手册”,里面有所有专属函数的说明,或者发帖问老玩家,大家一般都会分享自己的脚本模板,能少走很多弯路。

