传奇宠物脚本制作教程召唤/技能/属性配置全流程

来源: 作者: 点击:
一、传奇宠物脚本核心认知:是什么与做什么

1.宠物脚本的核心定义

传奇宠物脚本是控制游戏内宠物行为的指令集合,通过预设代码实现宠物召唤、属性绑定、技能释放、状态管理等功能。比如玩家使用“召唤卷”召唤狼宠协助战斗,宠物自动释放“撕咬”技能,血量过低时自动回归主人身边,这些场景均由宠物脚本驱动实现。

2.宠物脚本的核心功能分类

根据游戏玩法需求,宠物脚本主要实现四类核心功能,覆盖从召唤到战斗的全流程:

-召唤控制:通过道具、等级、任务等条件触发宠物召唤,支持指定宠物类型、数量限制。

-属性绑定:宠物属性与玩家等级、转生次数挂钩,如玩家等级越高,宠物攻击、防御同步提升。

-行为管理:控制宠物战斗模式(主动攻击/被动跟随)、移动范围、归队条件。

-技能释放:设置宠物技能触发条件,如血量低于50%释放护盾,攻击目标时自动触发专属技能。

3.主流引擎适配说明

宠物脚本功能实现依赖游戏引擎接口,目前HERO、GOM、BLUE三大主流引擎均支持核心功能,但命令语法存在差异。本文以新手常用的HERO引擎为基础,同步标注GOM引擎适配方案,覆盖多数服务端场景。

二、前期准备:工具、参数与核心文件

1.必备工具与环境搭建

-文本编辑工具:优先使用记事本++,支持ANSI编码格式(避免中文乱码),自带语法高亮功能,便于排查代码错误。

-服务端文件:本地搭建单机服务端(含完整地图、怪物、技能配置文件),确保能正常启动游戏并创建测试角色。

-参数查询工具:引擎自带“变量查看器”(HERO控制端-功能-变量查询)、“怪物属性编辑器”,用于获取宠物ID、技能ID等核心参数。

2.核心参数获冉法

宠物脚本制作需提前获取三类核心参数,所有参数均从服务端配置文件中提取,具体路径与方法如下:

参数类型

获取路径

查询方法

宠物ID(怪物ID)

Mir200\Envir\Monster.txt

搜索宠物名称(如“狼”),对应行首数字即为ID(例:1005狼3050...)

宠物技能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数量

召唤宠物10051(召唤ID1005的狼宠1只)

检测是否已有宠物

#IFHAVEPET

#IFCHECKPET

#IFHAVEPET#ACTSENDMSG6你已拥有宠物!

解散当前宠物

解散宠物

回收宠物

#ACT解散宠物SENDMSG6宠物已解散

道具触发召唤

#IFCHECKITEM道具ID1

同HERO

#IFCHECKITEM20011#ACTTAKE20011召唤宠物10051

2.宠物属性控制命令(战力绑定)

实现宠物属性与玩家数据联动,让宠物战力随玩家成长,核心命令及用法如下:

-固定属性设置:直接定义宠物攻击、防御等基础属性,HERO命令:设置宠物属性攻击最小值最大值,示例:设置宠物属性攻击510(宠物攻击固定为5-10)。

-关联玩家等级:宠物属性随玩家等级提升,HERO命令结合变量使用:VARDEFINEPetAtk<$LEVEL>*2(定义宠物攻击=玩家等级×2),再通过设置宠物属性攻击<$PetAtk><$PetAtk+3>生效。

-关联转生次数:高转生玩家宠物属性加成,示例代码:
#IF
;玩家转生次数>3次
GREATER<$HUMAN(Reincarnation)>3
#ACT
;宠物攻击额外+10
设置宠物属性攻击1525
SENDMSG6你的高转生特权使宠物战力大幅提升!
#ELSE
#ACT
设置宠物属性攻击510

3.宠物技能释放命令(战斗核心)

控制宠物主动释放技能,支持“无条件释放”“血量触发”“目标触发”等场景,核心配置如下:

;HERO引擎-宠物技能释放脚本(狼宠撕咬技能)
[@PetSkill];宠物技能触发标识
#ACT
;定义宠物当前血量变量
VARDEFINEPetHP<$PETHP>
;条件1:宠物血量>50%(保证存活)
#IF
GREATERPetHP50
;条件2:检测到目标(使用CHECKMONSTER命令)
CHECKMONSTER<$MAPID><$PETTARGET>00
#ACT
;释放ID为201的撕咬技能
宠物释放技能201
SENDMSG6你的宠物发动了撕咬技能!
;1秒后再次检测是否需要释放技能
TIMER1@PetSkill

GOM引擎需将“宠物释放技能”改为“PETSKILL”,其他逻辑一致,适配后命令:PETSKILL201。

4.宠物状态管理命令(辅助功能)

实现宠物跟随、停留、归队、死亡处理等辅助功能,常用命令整理:

功能

HERO命令

GOM命令

说明

宠物跟随主人

宠物模式跟随

PETMODEFOLLOW

宠物随主人移动,不主动攻击

宠物主动攻击

宠物模式攻击

PETMODEATTACK

宠物主动攻击范围内怪物

宠物死亡提示

#IFPETDEAD

#IFCHECKPETDEAD

检测到宠物死亡后执行后续操作

宠物自动归队

宠物归队

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:未拥有宠物
NOTHAVEPET
;条件3:背包有1个召唤卷
CHECKITEM20011
#ACT
;扣减召唤卷
TAKE20011
;召唤狼宠(ID1005)
召唤宠物10051
;配置宠物属性(攻击=玩家等级×2至等级×2+3)
VARDEFINEPetAtk<$LEVEL>*2
设置宠物属性攻击<$PetAtk><$PetAtk+3>
设置宠物属性防御35
;宠物默认跟随模式
宠物模式跟随
;启动宠物技能与状态检测
GOTO@PetControl
SENDMSG6成功召唤狼宠!输入“@宠物攻击”可切换战斗模式。
#ELSEACT
;不满足条件的提示
#IFLESS<$LEVEL>10
SENDMSG9等级不足10级,无法召唤狼宠!
#ELSEIFHAVEPET
SENDMSG9你已拥有宠物,无法重复召唤!
#ELSE
SENDMSG9背包中无狼宠召唤卷!
#ENDIF

;2.宠物控制核心(技能+状态管理)
[@PetControl]
#ACT
;定义宠物状态变量
VARDEFINEPetHP<$PETHP>
VARDEFINEPetTarget<$PETTARGET>
;状态1:宠物血量≤30%,自动归队
#IF
LESSPetHP31
#ACT
宠物归队
SENDMSG6你的狼宠血量过低,已自动归队!
;3秒后再次检测状态
TIMER3@PetControl
#ELSEIF
;状态2:有攻击目标,释放技能
CHECKMONSTER<$MAPID><$PetTarget>00
#ACT
宠物释放技能201
TIMER2@PetControl
#ELSE
;状态3:无目标,保持跟随
宠物模式跟随
TIMER5@PetControl
#ENDIF

;3.宠物死亡处理
[@PetDead]
#ACT
SENDMSG9你的狼宠已死亡!可使用狼宠召唤卷再次召唤。
;清除宠物相关变量
CLEARVARPetHP
CLEARVARPetTarget

;4.宠物模式切换(玩家命令触发)
[@宠物攻击]
#ACT
宠物模式攻击
SENDMSG6狼宠已切换为主动攻击模式!
[@宠物跟随]
#ACT
宠物模式跟随
SENDMSG6狼宠已切换为跟随模式!

4.步骤3:GOM引擎适配修改

将HERO命令替换为GOM对应命令,核心修改点如下,完整适配代码:

;GOM引擎-新手狼宠脚本
[@UseWolfScroll]
#IF
GREATER<$LEVEL>9
NOTCHECKPET
CHECKITEM20011
#ACT
TAKE20011
召唤兽10051;GOM召唤命令
VARDEFINEPetAtk<$LEVEL>*2
PETATTR攻击<$PetAtk><$PetAtk+3>;GOM属性设置命令
PETATTR防御35
PETMODEFOLLOW;GOM跟随模式
GOTO@PetControl
SENDMSG6成功召唤狼宠!

[@PetControl]
#ACT
VARDEFINEPetHP<$PETHP>
VARDEFINEPetTarget<$PETTARGET>
#IF
LESSPetHP31
#ACT
PETBACK;GOM归队命令
SENDMSG6狼宠血量过低,已自动归队!
TIMER3@PetControl
#ELSEIF
CHECKMONSTER<$MAPID><$PetTarget>00
#ACT
PETSKILL201;GOM技能释放命令
TIMER2@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”,添加一行“#CALLPet\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变量获取错误。

解决:将归队条件改为“LESSPetHP31”(≤30%);HERO引擎用<$PETHP>,GOM引擎用<$PET_HP>,确认变量名正确。

-问题3:玩家切换地图后宠物消失原因:未添加“宠物跟随地图”命令,默认宠物不跨地图跟随。

解决:在[@Login]标识中添加代码,实现玩家上线时宠物自动跟随:
[@Login]
#IF
HAVEPET
#ACT
宠物跟随地图;HERO命令,GOM用PETFOLLOWMAP

六、进阶方向:宠物脚本功能升级思路

1.基础升级:添加宠物等级与进化系统

为宠物增加等级成长机制,累计击杀10只怪物升1级,等级满10级进化为“战狼”,核心代码示例:

;宠物等级与进化逻辑
[@PetLevelUp]
#ACT
;读取宠物当前等级(用玩家变量存储)
VARDEFINEPetLevel<$HUMAN(WolfLevel)>
VARDEFINEKillCount<$HUMAN(WolfKill)>
;累计击杀10只怪物升级
#IF
EQUALKillCount10
#ACT
SETHUMANWolfLevel<$PetLevel+1>
SETHUMANWolfKill0
;等级10级进化为战狼(ID1006)
#IF
EQUALPetLevel10
#ACT
解散宠物
召唤宠物10061
SETHUMANWolfLevel11
SENDMSG9恭喜!你的狼宠进化为战狼,属性大幅提升!
#ENDIF

2.功能拓展:制作“宠物忠诚度”系统

添加忠诚度属性,宠物战斗时降低忠诚度,使用“宠物粮”提升,忠诚度为0时宠物逃跑,增强游戏趣味性,核心逻辑:

-初始化:召唤宠物时设置忠诚度=100,用变量<$HUMAN(PetLoyalty)>存储。

-消耗:宠物每次攻击忠诚度-1,血量低于20%忠诚度-5。

-提升:使用宠物粮(ID2002)触发@AddLoyalty,忠诚度+20。

-惩罚:忠诚度≤0时执行“解散宠物”并提示“宠物因忠诚度不足逃跑”。

3.高阶技巧:多宠物召唤与编队控制

针对高转生玩家开放多宠物召唤功能,支持“主动攻击”“辅助加血”编队模式,核心通过判断转生次数控制召唤数量:

#IF
;转生5次以上可召唤3只宠物
GREATER<$HUMAN(Reincarnation)>4
#ACT
召唤宠物10051
召唤宠物10071;辅助型灵狐
召唤宠物10081;防御型熊
SENDMSG6你已解锁多宠物召唤特权,可通过@宠物编队切换模式
#ELSEIF
;转生1-4次可召唤2只宠物
GREATER<$HUMAN(Reincarnation)>0
#ACT
召唤宠物10051
召唤宠物10071
#ENDIF

传奇宠物脚本制作的核心是“参数精准+逻辑清晰”,新手从简单召唤功能入手,熟悉变量与条件判断的使用后,再逐步尝试进化、忠诚度等复杂系统。制作过程中可多参考服务端自带的宠物脚本(如道士骷髅召唤脚本),复制核心逻辑并替换参数,能大幅提升效率。若你有具体的宠物功能需求(如宠物捡物、宠物合成),可补充说明,我会提供针对性的代码方案。
[顶部]