Previous topicNext topic
 Gameofmir Help
Help > 游戏引擎功能系统 > 功能操作命令 >
怪物标识系统详解与高级应用

怪物标识系统详解与高级应用
说明: 怪物标识用于给怪物临时保存0-9共10个标识值,每个标识可保存0-255的数值。标识只在当前服务器运行期间有效,不保存到数据库,服务器重启或怪物对象消失后标识清空。
用途: 可用于标记精英怪、BOSS、任务怪,控制特殊攻击、冰冻、中毒、减速、额外掉落、阶段状态、被攻击次数等动态机制。

范围设置怪物标识
格式: SetRangeMonAddByte 地图 X坐标 Y坐标 范围 怪物名称 标识号 值 有效时间
参数1: 地图编号,支持 self 表示当前地图
参数2: X坐标
参数3: Y坐标
参数4: 范围
参数5: 怪物名称,* 代表所有怪物
参数6: 标识号,范围0-9
参数7: 标识值,范围0-255
参数8: 有效时间,单位秒;0或空为一直有效,直到怪物消失或服务器重启

示例: 给人物周围10格内所有怪物设置标识0=100
[@范围标识所有怪物]
#IF
#ACT
SetRangeMonAddByte self <$X> <$Y> 10 * 0 100
SENDMSG 5 已给附近怪物设置标识0=100

示例: 只给周围5格内的野猪设置标识1=50,有效60秒
[@范围标识指定怪物]
#IF
#ACT
SetRangeMonAddByte self <$X> <$Y> 5 野猪 1 50 60
SENDMSG 5 已给附近野猪设置标识1=50,有效60秒

设置当前攻击怪物标识
格式: M.SetMonAddByte 标识号 值 有效时间
参数1: 标识号,范围0-9
参数2: 标识值,范围0-255
参数3: 有效时间,单位秒;0或空为一直有效
说明: M.表示当前攻击目标,需在攻击怪物后或有当前怪物目标的脚本环境中使用。

示例: 给当前攻击怪物设置标识2=200
[@Attack]
#IF
#ACT
M.SetMonAddByte 2 200
SENDMSG 5 已给当前攻击怪物设置标识2=200

获取当前攻击怪物标识值
格式: M.GetMonAddByte 标识号 保存变量
参数1: 标识号,范围0-9
参数2: 保存变量
说明: 获取当前攻击目标指定标识值,标识不存在或已过期时返回0。

示例: 获取当前攻击怪物标识0
[@获取怪物标识]
#IF
#ACT
M.GetMonAddByte 0 N1
SENDMSG 5 这个怪物的标识0值是:<$STR(N1)>

检测当前攻击怪物标识
格式: M.CheckMonAddByte 标识号 比较符号 检测数值
参数1: 标识号,范围0-9
参数2: 比较符号,支持 <、>、=、<>、<=、>=
参数3: 检测数值,范围0-255
说明: 检测当前攻击目标指定标识值,标识不存在或已过期时按0处理。

示例: 攻击时检测精英怪标识
[@Attack]
#IF
M.CheckMonAddByte 1 = 1
#ACT
SENDMSG 5 你正在攻击一只精英怪!

高级示例: 标记精英怪并击杀额外奖励
[@标记精英怪]
#IF
#ACT
SetRangeMonAddByte self <$X> <$Y> 8 白野猪 1 1
SENDMSG 5 已标记附近的精英白野猪!

[@Attack]
#IF
M.CheckMonAddByte 1 = 1
#ACT
SENDMSG 5 你正在攻击一只精英怪!
; 可以在这里配合其他伤害、状态、技能命令实现特殊效果

[@OnKillMob]
#IF
M.CheckMonAddByte 1 = 1
#ACT
Give 屠龙 1
SENDMSG 5 恭喜!你击杀了精英怪,获得了额外奖励!

注意事项
1. 标识为临时数据,不保存到数据库,服务器重启后清空。
2. M.SetMonAddByte、M.CheckMonAddByte、M.GetMonAddByte 需要通过 M. 前缀作用于当前攻击目标。
3. 标识号只支持0-9,标识值只支持0-255。
4. 有效时间到期后,检测和获取时会自动按0处理。
5. SetRangeMonAddByte 的怪物名称支持 *,指定名称时会兼容怪物名的数字后缀。