宠物系统使用详细
一、GM后台基础设置打开 M2 的 宠物设置。必须先检查这几项: 开启宠物系统 勾选“开启宠物系统”。 设置宠物等级上限 在“升级经验”页设置最高等级

一、GM后台基础设置
打开 M2 的 宠物设置。
必须先检查这几项:

-
开启宠物系统
勾选“开启宠物系统”。
-
设置宠物等级上限
在“升级经验”页设置最高等级。
-
设置升级经验
可以使用:
- 原始经验值
- 标准经验值
- 其它倍率经验计划
切换经验计划时会弹确认框,确认后立即写入经验表。
-
设置宠物捡物
如果勾选“同步客户端内挂捡物配置”,宠物捡物会按玩家客户端内挂捡物规则判断。
这个功能不是整张捡物表同步,而是宠物看到物品时,服务端询问客户端该物品是否允许捡取,并缓存结果。
二、宠物模板配置规则
宠物本体依赖怪物库生成。
所以宠物名称必须满足:
- 宠物配置里的名字,要能在怪物数据库里找到同名怪物;
- 例如宠物名叫
白虎,怪物库里也必须有白虎; - 怪物外观、基础属性、攻击方式等,仍然来自原始怪物系统;
- 宠物系统只是在怪物对象上附加宠物归属、等级、经验、技能、背包、脚本控制等逻辑。
如果宠物召唤失败,优先检查:

- 宠物系统是否开启;
- 宠物名是否写错;
- 怪物库里是否存在同名怪物;
- 玩家宠物数据是否已经加载;
- 是否超过召唤冷却。
三、宠物蛋物品设置
宠物蛋使用物品数据库的 StdMode=91 或 StdMode=92。
基本规则:
StdMode=91/92的物品可以作为宠物蛋;- 玩家使用宠物蛋后,会触发宠物孵化;
- 孵化成功后,宠物蛋从背包删除;
- 系统会触发 NPC 标签
@EggToPet; - 宠物重新变回蛋时,会触发
@PetToEgg。
宠物蛋建议配置成普通可使用物品,名称可以叫:
白虎宠物蛋
宠物蛋实际孵化出的宠物名,由脚本发放时绑定。
四、常用 NPC / GM 脚本命令
1、发放宠物蛋
#ACT
GIVEGAMEPET 白虎 <$STR(S1)>
SENDMSG 6 你获得了白虎宠物蛋,物品唯一ID:<$STR(S1)>
说明:
白虎是宠物模板名,同时必须是怪物库里的怪物名;- 第二个参数是变量,返回宠物蛋物品 MakeIndex。
2、直接给玩家宠物
#ACT
GIVEGAMEPETEX 白虎 1 0 0 0 <$STR(S1)>
SENDMSG 6 你获得了白虎宠物,宠物序号:<$STR(S1)>
参数含义:
GIVEGAMEPETEX 宠物名 等级 经验 HP MP 返回变量
例子:
GIVEGAMEPETEX 白虎 30 0 5000 1000 <$STR(S1)>
3、召唤宠物
按序号召唤:
#ACT
RECALLGAMEPET 0
按名字召唤:
#ACT
RECALLGAMEPET 白虎
如果不传有效序号,默认尝试当前宠物或第 0 个宠物。
4、收回当前宠物
#ACT
RETAKEGAMEPET
成功后触发:
@GamePetRetake
5、删除宠物
#ACT
DELETEGAMEPET 0
说明:
- 参数是宠物列表序号;
- 第一个宠物是
0; - 删除前建议脚本二次确认,避免玩家误删。
6、宠物变回蛋
#ACT
GAMEPETTOBAG 0
说明:
- 参数是宠物列表序号;
- 成功后背包增加宠物蛋;
- 会触发
@PetToEgg。
五、宠物等级与经验控制
设置当前召唤宠物等级
#ACT
CHANGEGAMEPETLEVEL = 30
增加等级:
#ACT
CHANGEGAMEPETLEVEL + 1
降低等级:
#ACT
CHANGEGAMEPETLEVEL - 1
设置 / 增加 / 减少经验
增加经验:
#ACT
GAMEPETCHANGEEXP + 10000
减少经验:
#ACT
GAMEPETCHANGEEXP - 10000
直接设置经验:
#ACT
GAMEPETCHANGEEXP = 50000
宠物经验满后会自动升级,并触发:
@GamePetLevelUp
六、宠物技能控制
给宠物技能
#ACT
GIVEGAMEPETMAGIC 1 烈火剑法
说明:
- 第一个参数是技能格位置,从
1开始; - 第二个参数是技能名;
- 技能名必须存在于物品/技能索引表中。
删除指定技能
#ACT
DELGAMEPETMAGIC 烈火剑法
清空宠物技能
#ACT
CLEARGAMEPETMAGIC
获取宠物技能数量
#ACT
GETGAMEPETMAGICCOUNT <$STR(S1)>
SENDMSG 6 当前宠物技能数量:<$STR(S1)>
获取指定技能格信息
#ACT
GETGAMEPETMAGICINFO 1 <$STR(S1)> <$STR(S2)>
SENDMSG 6 技能ID:<$STR(S1)> 技能名:<$STR(S2)>
七、宠物属性控制
属性编号:
| 编号 | 属性 |
|---|---|
| 0 | 最大HP |
| 1 | 最大MP |
| 2 | 防御下限 |
| 3 | 防御上限 |
| 4 | 魔防下限 |
| 5 | 魔防上限 |
| 6 | 攻击下限 |
| 7 | 攻击上限 |
| 8 | 魔法下限 |
| 9 | 魔法上限 |
| 10 | 道术下限 |
| 11 | 道术上限 |
| 12 | 防毒 |
| 13 | 毒恢复 |
| 14 | HP恢复 |
| 15 | MP恢复 |
固定增加属性
#ACT
CHANGEGAMEPETABILITY 0 + 1000 60
说明:
CHANGEGAMEPETABILITY 属性编号 + 数值 持续秒数
上例表示当前宠物最大 HP 增加 1000,持续 60 秒。
固定减少属性
#ACT
CHANGEGAMEPETABILITY 6 - 20 30
表示攻击下限减少 20,持续 30 秒。
设置属性增量
#ACT
CHANGEGAMEPETABILITY 7 = 100 60
表示攻击上限附加值设为 100,持续 60 秒。
按当前属性百分比增加
#ACT
CHANGEGAMEPETABILITYEX 0 + 10 60
表示按当前最大 HP 的 10% 增加,持续 60 秒。
获取临时属性增量
#ACT
GETGAMEPETABILITY 0 <$STR(S1)>
SENDMSG 6 当前HP附加值:<$STR(S1)>
获取宠物实际属性值
#ACT
GETGAMEPETABILITYEX 0 <$STR(S1)>
SENDMSG 6 当前宠物最大HP:<$STR(S1)>
重新计算宠物属性
#ACT
RECALCGAMEPETABILITY
八、宠物蛋属性控制
宠物蛋属性编号:
| 编号 | 含义 |
|---|---|
| 1 | 经验 |
| 2 | 等级 |
| 3 | HP |
| 4 | MP |
| 5 | 技能1 |
| 6 | 技能2 |
| 7 | 技能3 |
| 8-17 | 额外扩展值 |
修改宠物蛋属性
当前操作物品使用 -1:
#ACT
CHANGEGAMEPETEGGABIL -1 2 = 30
表示把当前宠物蛋等级改为 30。
按 MakeIndex 修改:
#ACT
CHANGEGAMEPETEGGABIL 123456 2 + 1
读取宠物蛋属性
#ACT
GETGAMEPETEGGABIL -1 2 <$STR(S1)>
SENDMSG 6 当前宠物蛋等级:<$STR(S1)>
九、宠物攻击控制
设置宠物攻击人物伤害倍率
#ACT
SETGAMEPETATTACKHUMPOWERRATE 50
表示宠物攻击人物时,伤害按 50% 计算。
临时调整宠物攻击人物伤害倍率
#ACT
SETGAMEPETATTACKHUMPOWERRATEEX + 20
获取当前倍率
#ACT
GETGAMEPETATTACKHUMPOWERRATE <$STR(S1)>
SENDMSG 6 当前宠物攻击人物伤害倍率:<$STR(S1)>%
设置攻击目标选项
#ACT
GAMEPETSETATTACKOPTION 0 1 60
参数:
GAMEPETSETATTACKOPTION 类型 值 持续秒数
说明:
- 类型范围:
0-2 - 值范围:
0-2 - 持续秒数大于 0 时,到期自动失效
十、宠物捡物控制
设置当前宠物是否捡物
#ACT
SETGAMEPETENABLEPICK 1
常用值:
| 值 | 含义 |
|---|---|
| 0 | 关闭 |
| 1 | 开启 |
| 2 | 按系统/默认规则 |
如果 M2 勾选了“同步客户端内挂捡物配置”,宠物捡物还会受客户端内挂捡物列表限制。
十一、打开宠物界面
打开宠物主界面:
#ACT
OPENGAMEPETDLG
打开宠物背包:
#ACT
OPENGAMEPETBAG
十二、宠物界面按钮触发
客户端宠物界面预留 3 个按钮。
点击后服务端会触发:
@GamePetButton1
@GamePetButton2
@GamePetButton3
同时也会触发通用标签:
@GamePetButton
当前选中的宠物序号和宠物名会临时绑定到脚本环境,脚本执行后恢复,不污染玩家其它状态。
示例:
[@GamePetButton1]
#ACT
SENDMSG 6 你点击了宠物按钮1。
[@GamePetButton2]
#ACT
SENDMSG 6 你点击了宠物按钮2。
[@GamePetButton3]
#ACT
SENDMSG 6 你点击了宠物按钮3。
十三、系统自动触发标签
这些标签可以写在功能 NPC 中:
@EggToPet
宠物蛋孵化成功时触发。
@PetToEgg
宠物转回宠物蛋时触发。
@GamePetRecall
宠物召唤成功时触发。
@GamePetRetake
宠物收回时触发。
@GamePetLevelUp
宠物升级时触发。
@GamePetKillMon
宠物击杀怪物时触发。
@GamePetSelect
玩家在宠物界面切换选中宠物时触发。
@GamePetAttack
@GamePetMagicAttack
@GamePetStruck
@GamePetMagicStruck
@GamePetAttackDamage
@GamePetStruckDamage
宠物攻击、受击、技能攻击、伤害相关事件触发。
十四、条件判断
判断是否已召唤宠物
#IF
CHECKCALLGAMEPET
#ACT
SENDMSG 6 当前已召唤宠物。
#ELSEACT
SENDMSG 6 当前没有召唤宠物。
判断宠物等级
#IF
CHECKGAMEPETLEVEL > 30
#ACT
SENDMSG 6 当前宠物等级大于30。
也可以用:
CHECKGAMEPETLEVEL < 30
CHECKGAMEPETLEVEL = 30
CHECKGAMEPETLEVEL 30
不写比较符时,默认判断宠物等级是否大于等于该值。
判断宠物是否有指定技能
#IF
CHECKGAMEPETSKILLMAGIC 烈火剑法
#ACT
SENDMSG 6 当前宠物已学习烈火剑法。
十五、GM最小完整示例
[@main]
#SAY
<领取白虎宠物蛋/@GiveEgg>\
<直接领取白虎宠物/@GivePet>\
<召唤白虎/@RecallPet>\
<收回宠物/@RetakePet>\
<打开宠物界面/@OpenPet>\
[@GiveEgg]
#ACT
GIVEGAMEPET 白虎 <$STR(S1)>
SENDMSG 6 获得白虎宠物蛋,ID:<$STR(S1)>
[@GivePet]
#ACT
GIVEGAMEPETEX 白虎 1 0 0 0 <$STR(S1)>
SENDMSG 6 获得白虎宠物,序号:<$STR(S1)>
[@RecallPet]
#ACT
RECALLGAMEPET 白虎
[@RetakePet]
#ACT
RETAKEGAMEPET
[@OpenPet]
#ACT
OPENGAMEPETDLG
十六、GM排查顺序
如果玩家说宠物不能用,按这个顺序查:
- M2 宠物系统是否开启;
- 宠物配置里是否有这个宠物;
- 怪物库是否有同名怪物;
- 宠物蛋是否
StdMode=91/92; - 玩家背包是否有足够空间;
- 宠物是否已经在冷却;
- 客户端是否更新到支持宠物协议的版本;
- 如果宠物不捡物,检查 M2 是否开启“同步客户端内挂捡物配置”,再检查客户端内挂捡物列表是否允许该物品。
后台开系统,怪物库配宠物本体,StdMode 91/92 配宠物蛋,NPC 脚本用 GIVEGAMEPET / RECALLGAMEPET / GAMEPETTOBAG 管理宠物,界面按钮和自动标签负责扩展玩法。