一、传奇宠物脚本核心认知:是什么与做什么
1. 宠物脚本的核心定义
传奇宠物脚本是控制游戏内宠物行为的指令集合,通过预设代码实现宠物召唤、属性绑定、技能释放、状态管理等功能。比如玩家使用“召唤卷”召唤狼宠协助战斗,宠物自动释放“撕咬”技能,血量过低时自动回归主人身边,这些场景均由宠物脚本驱动实现。
2. 宠物脚本的核心功能分类
根据游戏玩法需求,宠物脚本主要实现四类核心功能,覆盖从召唤到战斗的全流程:
- 召唤控制:通过道具、等级、任务等条件触发宠物召唤,支持指定宠物类型、数量限制。
- 属性绑定:宠物属性与玩家等级、转生次数挂钩,如玩家等级越高,宠物攻击、防御同步提升。
- 行为管理:控制宠物战斗模式(主动攻击/被动跟随)、移动范围、归队条件。
- 技能释放:设置宠物技能触发条件,如血量低于50%释放护盾,攻击目标时自动触发专属技能。
3. 主流引擎适配说明
宠物脚本功能实现依赖游戏引擎接口,目前HERO、GOM、BLUE三大主流引擎均支持核心功能,但命令语法存在差异。本文以新手常用的HERO引擎为基础,同步标注GOM引擎适配方案,覆盖多数服务端场景。
二、前期准备:工具、参数与核心文件
1. 必备工具与环境搭建
- 文本编辑工具:优先使用记事本++,支持ANSI编码格式(避免中文乱码),自带语法高亮功能,便于排查代码错误。
- 服务端文件:本地搭建单机服务端(含完整地图、怪物、技能配置文件),确保能正常启动游戏并创建测试角色。
- 参数查询工具:引擎自带“变量查看器”(HERO控制端-功能-变量查询)、“怪物属性编辑器”,用于获取宠物ID、技能ID等核心参数。
2. 核心参数获取方法
宠物脚本制作需提前获取三类核心参数,所有参数均从服务端配置文件中提取,具体路径与方法如下:
参数类型
获取路径
查询方法
宠物ID(怪物ID)
Mir200\Envir\Monster.txt
搜索宠物名称(如“狼”),对应行首数字即为ID(例:1005 狼 30 50 ...)
宠物技能ID
Mir200\Envir\Skill.txt
查找技能名称(如“撕咬”),行首数字为技能ID,记录“触发方式”字段
召唤道具ID
Mir200\Envir\Item.txt
搜索召唤道具名称(如“狼宠召唤卷”),行首数字即为道具ID
宠物变量名
引擎变量查看器
HERO引擎输入“查看宠物变量”,常用变量如PetID(宠物ID)、PetHP(宠物血量)
关键提示:若服务端有“宠物系统”独立配置文件夹(Mir200\Envir\QuestDiary\宠物系统),优先从该文件夹的PetConfig.txt中获取参数,数据更精准。
三、宠物脚本核心语法:必学命令与适配方案
1. 宠物召唤类命令(基础核心)
实现“使用道具召唤宠物”“等级达标自动召唤”等基础功能,是所有宠物脚本的起点,HERO与GOM引擎核心命令对比如下:
功能需求
HERO引擎命令
GOM引擎命令
使用示例
指定ID召唤宠物
召唤宠物 宠物ID 数量
召唤兽 宠物ID 数量
召唤宠物 1005 1(召唤ID1005的狼宠1只)
检测是否已有宠物
#IF HAVEPET
#IF CHECKPET
#IF HAVEPET #ACT SENDMSG 6 你已拥有宠物!
解散当前宠物
解散宠物
回收宠物
#ACT 解散宠物 SENDMSG 6 宠物已解散
道具触发召唤
#IF CHECKITEM 道具ID 1
同HERO
#IF CHECKITEM 2001 1 #ACT TAKE 2001 1 召唤宠物 1005 1
2. 宠物属性控制命令(战力绑定)
实现宠物属性与玩家数据联动,让宠物战力随玩家成长,核心命令及用法如下:
- 固定属性设置:直接定义宠物攻击、防御等基础属性,HERO命令:设置宠物属性 攻击 最小值 最大值,示例:设置宠物属性 攻击 5 10(宠物攻击固定为5-10)。
- 关联玩家等级:宠物属性随玩家等级提升,HERO命令结合变量使用:VARDEFINE PetAtk <$LEVEL>*2(定义宠物攻击=玩家等级×2),再通过设置宠物属性 攻击 <$PetAtk> <$PetAtk+3>生效。
- 关联转生次数:高转生玩家宠物属性加成,示例代码:
#IF
; 玩家转生次数>3次
GREATER <$HUMAN(Reincarnation)> 3
#ACT
; 宠物攻击额外+10
设置宠物属性 攻击 15 25
SENDMSG 6 你的高转生特权使宠物战力大幅提升!
#ELSE
#ACT
设置宠物属性 攻击 5 10
3. 宠物技能释放命令(战斗核心)
控制宠物主动释放技能,支持“无条件释放”“血量触发”“目标触发”等场景,核心配置如下:
; HERO引擎-宠物技能释放脚本(狼宠撕咬技能)
[@PetSkill] ; 宠物技能触发标识
#ACT
; 定义宠物当前血量变量
VARDEFINE PetHP <$PETHP>
; 条件1:宠物血量>50%(保证存活)
#IF
GREATER PetHP 50
; 条件2:检测到目标(使用CHECKMONSTER命令)
CHECKMONSTER <$MAPID> <$PETTARGET> 0 0
#ACT
; 释放ID为201的撕咬技能
宠物释放技能 201
SENDMSG 6 你的宠物发动了撕咬技能!
; 1秒后再次检测是否需要释放技能
TIMER 1 @PetSkill
GOM引擎需将“宠物释放技能”改为“PETSKILL”,其他逻辑一致,适配后命令:PETSKILL 201。
4. 宠物状态管理命令(辅助功能)
实现宠物跟随、停留、归队、死亡处理等辅助功能,常用命令整理:
功能
HERO命令
GOM命令
说明
宠物跟随主人
宠物模式 跟随
PETMODE FOLLOW
宠物随主人移动,不主动攻击
宠物主动攻击
宠物模式 攻击
PETMODE ATTACK
宠物主动攻击范围内怪物
宠物死亡提示
#IF PETDEAD
#IF CHECKPETDEAD
检测到宠物死亡后执行后续操作
宠物自动归队
宠物归队
PETBACK
宠物立即返回主人身边
四、实操演示:制作“新手狼宠脚本”(15分钟完成)
1. 明确脚本核心需求
制作面向10级以上新手的宠物脚本,实现功能:① 等级≥10级可使用“狼宠召唤卷”召唤狼宠;② 狼宠攻击随玩家等级提升(等级×2);③ 狼宠血量低于30%自动归队;④ 狼宠死亡后提示玩家可再次召唤。
2. 步骤1:收集核心参数(提前5分钟完成)
从服务端文件中提取所需参数,整理如下:
参数类型
ID/变量名
来源文件
狼宠ID
1005
Monster.txt
狼宠召唤卷ID
2001
Item.txt
狼宠撕咬技能ID
201
Skill.txt
玩家转生变量
Reincarnation
变量查看器
宠物血量变量
PETHP
引擎变量库
3. 步骤2:编写完整脚本代码(HERO引擎)
打开记事本++,新建文件,按“召唤触发-属性配置-技能释放-状态管理”顺序编写代码,完整代码及注释如下:
; 新手狼宠脚本,存放路径:Mir200\Envir\QuestDiary\Pet\WolfPet.txt
; 1. 召唤卷触发入口(道具使用时触发@UseWolfScroll)
[@UseWolfScroll]
#IF
; 条件1:玩家等级≥10级
GREATER <$LEVEL> 9
; 条件2:未拥有宠物
NOT HAVEPET
; 条件3:背包有1个召唤卷
CHECKITEM 2001 1
#ACT
; 扣减召唤卷
TAKE 2001 1
; 召唤狼宠(ID1005)
召唤宠物 1005 1
; 配置宠物属性(攻击=玩家等级×2 至 等级×2+3)
VARDEFINE PetAtk <$LEVEL>*2
设置宠物属性 攻击 <$PetAtk> <$PetAtk+3>
设置宠物属性 防御 3 5
; 宠物默认跟随模式
宠物模式 跟随
; 启动宠物技能与状态检测
GOTO @PetControl
SENDMSG 6 成功召唤狼宠!输入“@宠物攻击”可切换战斗模式。
#ELSEACT
; 不满足条件的提示
#IF LESS <$LEVEL> 10
SENDMSG 9 等级不足10级,无法召唤狼宠!
#ELSEIF HAVEPET
SENDMSG 9 你已拥有宠物,无法重复召唤!
#ELSE
SENDMSG 9 背包中无狼宠召唤卷!
#ENDIF
; 2. 宠物控制核心(技能+状态管理)
[@PetControl]
#ACT
; 定义宠物状态变量
VARDEFINE PetHP <$PETHP>
VARDEFINE PetTarget <$PETTARGET>
; 状态1:宠物血量≤30%,自动归队
#IF
LESS PetHP 31
#ACT
宠物归队
SENDMSG 6 你的狼宠血量过低,已自动归队!
; 3秒后再次检测状态
TIMER 3 @PetControl
#ELSEIF
; 状态2:有攻击目标,释放技能
CHECKMONSTER <$MAPID> <$PetTarget> 0 0
#ACT
宠物释放技能 201
TIMER 2 @PetControl
#ELSE
; 状态3:无目标,保持跟随
宠物模式 跟随
TIMER 5 @PetControl
#ENDIF
; 3. 宠物死亡处理
[@PetDead]
#ACT
SENDMSG 9 你的狼宠已死亡!可使用狼宠召唤卷再次召唤。
; 清除宠物相关变量
CLEARVAR PetHP
CLEARVAR PetTarget
; 4. 宠物模式切换(玩家命令触发)
[@宠物攻击]
#ACT
宠物模式 攻击
SENDMSG 6 狼宠已切换为主动攻击模式!
[@宠物跟随]
#ACT
宠物模式 跟随
SENDMSG 6 狼宠已切换为跟随模式!
4. 步骤3:GOM引擎适配修改
将HERO命令替换为GOM对应命令,核心修改点如下,完整适配代码:
; GOM引擎-新手狼宠脚本
[@UseWolfScroll]
#IF
GREATER <$LEVEL> 9
NOT CHECKPET
CHECKITEM 2001 1
#ACT
TAKE 2001 1
召唤兽 1005 1 ; GOM召唤命令
VARDEFINE PetAtk <$LEVEL>*2
PETATTR 攻击 <$PetAtk> <$PetAtk+3> ; GOM属性设置命令
PETATTR 防御 3 5
PETMODE FOLLOW ; GOM跟随模式
GOTO @PetControl
SENDMSG 6 成功召唤狼宠!
[@PetControl]
#ACT
VARDEFINE PetHP <$PETHP>
VARDEFINE PetTarget <$PETTARGET>
#IF
LESS PetHP 31
#ACT
PETBACK ; GOM归队命令
SENDMSG 6 狼宠血量过低,已自动归队!
TIMER 3 @PetControl
#ELSEIF
CHECKMONSTER <$MAPID> <$PetTarget> 0 0
#ACT
PETSKILL 201 ; GOM技能释放命令
TIMER 2 @PetControl
#ENDIF
5. 步骤4:脚本配置与生效
1. 保存脚本:将HERO版脚本保存为“WolfPet.txt”,编码设为ANSI,放入路径“Mir200\Envir\QuestDiary\Pet”(Pet文件夹需手动新建)。
2. 绑定召唤卷:打开“Item.txt”,找到ID2001的狼宠召唤卷,在“触发脚本”字段添加“@UseWolfScroll”,实现“使用道具触发脚本”功能。
3. 配置宠物死亡触发:打开“Mir200\Envir\QuestDiary\!QuestDiary.txt”,添加一行“#CALL Pet\WolfPet.txt @PetDead”,确保宠物死亡时触发提示。
4. 刷新生效:启动服务端,点击“刷新Quest脚本”和“刷新物品配置”,无需重启服务端即可生效。
6. 步骤5:测试核心功能
登录10级以上测试角色,完成以下场景测试,确保功能正常:
- 使用狼宠召唤卷:背包扣减道具,成功召唤狼宠,收到绿色提示。
- 宠物血量测试:攻击高等级怪物使狼宠血量低于30%,宠物自动归队并提示。
- 模式切换:输入“@宠物攻击”,狼宠主动攻击附近怪物,释放撕咬技能。
- 宠物死亡:狼宠被怪物击杀后,收到红色死亡提示,可再次使用召唤卷召唤。
五、新手避坑指南:宠物脚本常见问题与解决方法
1. 脚本不触发?先查这4点
- 问题1:使用召唤卷无反应原因:① Item.txt中召唤卷未绑定脚本标识;② 脚本编码不是ANSI导致乱码;③ 条件判断逻辑错误(如等级限制写反)。
解决:重新检查Item.txt的“触发脚本”字段;用记事本++将编码改为ANSI;核对#IF条件中的比较符号(≥用GREATER,≤用LESS)。
- 问题2:宠物召唤后无属性加成原因:① 宠物属性命令语法错误;② 变量定义顺序倒置(先设置属性后定义变量);③ 宠物ID错误导致召唤的是普通怪物。
解决:HERO用“设置宠物属性”,GOM用“PETATTR”;确保变量定义(VARDEFINE)在属性设置命令之前;重新核对Monster.txt中的宠物ID。
- 问题3:宠物技能不释放原因:① 技能ID错误或技能未配置“宠物可用”;② 未检测攻击目标就执行释放命令;③ TIMER时间设置过长。
解决:在Skill.txt中确认技能“适用对象”为宠物;添加CHECKMONSTER命令检测目标;将TIMER时间改为1-2秒。
2. 宠物状态异常?核心修复方案
- 问题1:宠物不受控制,原地不动原因:服务端“宠物AI配置”被禁用,或脚本中未设置宠物模式。
解决:打开引擎控制端-宠物设置-勾选“启用宠物AI”;在召唤脚本中添加“宠物模式 跟随”命令。
- 问题2:宠物频繁归队,无法正常战斗原因:宠物血量判断阈值设置过高(如设置为≥50%归队),或PETHP变量获取错误。
解决:将归队条件改为“LESS PetHP 31”(≤30%);HERO引擎用<$PETHP>,GOM引擎用<$PET_HP>,确认变量名正确。
- 问题3:玩家切换地图后宠物消失原因:未添加“宠物跟随地图”命令,默认宠物不跨地图跟随。
解决:在[@Login]标识中添加代码,实现玩家上线时宠物自动跟随:
[@Login]
#IF
HAVEPET
#ACT
宠物跟随地图 ; HERO命令,GOM用PETFOLLOWMAP
六、进阶方向:宠物脚本功能升级思路
1. 基础升级:添加宠物等级与进化系统
为宠物增加等级成长机制,累计击杀10只怪物升1级,等级满10级进化为“战狼”,核心代码示例:
; 宠物等级与进化逻辑
[@PetLevelUp]
#ACT
; 读取宠物当前等级(用玩家变量存储)
VARDEFINE PetLevel <$HUMAN(WolfLevel)>
VARDEFINE KillCount <$HUMAN(WolfKill)>
; 累计击杀10只怪物升级
#IF
EQUAL KillCount 10
#ACT
SET HUMAN WolfLevel <$PetLevel+1>
SET HUMAN WolfKill 0
; 等级10级进化为战狼(ID1006)
#IF
EQUAL PetLevel 10
#ACT
解散宠物
召唤宠物 1006 1
SET HUMAN WolfLevel 11
SENDMSG 9 恭喜!你的狼宠进化为战狼,属性大幅提升!
#ENDIF
2. 功能拓展:制作“宠物忠诚度”系统
添加忠诚度属性,宠物战斗时降低忠诚度,使用“宠物粮”提升,忠诚度为0时宠物逃跑,增强游戏趣味性,核心逻辑:
- 初始化:召唤宠物时设置忠诚度=100,用变量<$HUMAN(PetLoyalty)>存储。
- 消耗:宠物每次攻击忠诚度-1,血量低于20%忠诚度-5。
- 提升:使用宠物粮(ID2002)触发@AddLoyalty,忠诚度+20。
- 惩罚:忠诚度≤0时执行“解散宠物”并提示“宠物因忠诚度不足逃跑”。
3. 高阶技巧:多宠物召唤与编队控制
针对高转生玩家开放多宠物召唤功能,支持“主动攻击”“辅助加血”编队模式,核心通过判断转生次数控制召唤数量:
#IF
; 转生5次以上可召唤3只宠物
GREATER <$HUMAN(Reincarnation)> 4
#ACT
召唤宠物 1005 1
召唤宠物 1007 1 ; 辅助型灵狐
召唤宠物 1008 1 ; 防御型熊
SENDMSG 6 你已解锁多宠物召唤特权,可通过@宠物编队切换模式
#ELSEIF
; 转生1-4次可召唤2只宠物
GREATER <$HUMAN(Reincarnation)> 0
#ACT
召唤宠物 1005 1
召唤宠物 1007 1
#ENDIF
传奇宠物脚本制作的核心是“参数精准+逻辑清晰”,新手从简单召唤功能入手,熟悉变量与条件判断的使用后,再逐步尝试进化、忠诚度等复杂系统。制作过程中可多参考服务端自带的宠物脚本(如道士骷髅召唤脚本),复制核心逻辑并替换参数,能大幅提升效率。若你有具体的宠物功能需求(如宠物捡物、宠物合成),可补充说明,我会提供针对性的代码方案。

