查看: 9|回复: 0

[提交中] 希望兼容翎风的怪物标识系统

[复制链接]

1

主题

4

回帖

108

积分

注册会员

积分
108
发表于 昨天 02:24 | 显示全部楼层 |阅读模式
功能
引擎版本号: 26
名称: 怪物标识系统详解与高级应用
原因: 怪物标识系统详解与高级应用
功能详细说明: 怪物标识系统详解与高级应用
这个系统允许你为怪物设置临时标识(0-9共10个),每个标识可以存储一个0-255的数值。这些标识不会永久存储(服务器重启后消失),但可以用于实现各种动态效果,如:

标记特殊怪物(精英怪、BOSS、任务怪)
触发特殊攻击效果(额外伤害、冰冻、中毒、减速)
控制怪物行为(是否触发特殊技能、是否掉落额外物品)
记录怪物状态(被攻击次数、是否被特定技能命中)
?? 核心命令详解
1. 范围设置怪物标识(批量操作)
SetRangeMonAddByte 地图 X坐标 Y坐标 范围 怪物名称(*代表所有) 标识号(0-9) 值(0-255) 有效时间(秒;0或空为一直有效)
示例:
#ACT
; 给人物周围10格内所有怪物设置标识0=100
SetRangeMonAddByte self <$X> <$Y> 10 * 0 100

; 只给周围5格内的"野猪"设置标识1=50
SetRangeMonAddByte self <$X> <$Y> 5 野猪 1 50
2. 单个怪物设置标识(针对当前攻击目标)
M.SetMonAddByte 标识号(0-9) 值(0-255) 有效时间(秒;0或空为一直有效)
示例:
#ACT
; 给当前攻击的怪物设置标识2=200
M.SetMonAddByte 2 200
3. 检测怪物标识(需攻击后触发)
M.CheckMonAddByte 标识号(0-9) 比较符号(<,>,=) 检测数值(0-255)
示例:
#ACT
; 如果当前攻击的怪物标识3 > 50,则触发效果
M.CheckMonAddByte 3 > 50
#SAY
你的攻击触发了怪物的特殊状态!
注意:必须攻击怪物后才能检测,不能直接读取。
4. 获取怪物标识值(需攻击后触发)
M.GetMonAddByte 标识号(0-9) 保存变量
示例:
#ACT
; 获取当前攻击目标的标识0值,存入N1变量
M.GetMonAddByte 0 N1
SendMsg 5 这个怪物的标识0值是:<$STR(N1)>
?? 高级应用场景
1. 标记精英怪,触发额外掉落
#ACT
; 给当前怪物设置标识1=1(代表精英怪)
M.SetMonAddByte 1 1

[@OnKillMob]
#IF
M.CheckMonAddByte 1 = 1
#ACT
; 如果是精英怪,额外掉落物品
Give 金条 1
SendMsg 5 你击杀了精英怪,获得了额外奖励!
?? 注意事项
标识是临时的,服务器重启后所有怪物标识会重置。
检测和获取标识必须攻击怪物,不能直接读取未攻击的目标。
标识号0-9,每个标识存储0-255的数值。
可以结合#CALL、#IF等脚本命令实现更复杂的逻辑。
?? 完整示例脚本
[@标记精英怪]
#ACT
; 给周围8格内的"白野猪"设置标识1=1(精英标记)
SetRangeMonAddByte self <$X> <$Y> 8 白野猪 1 1
SendMsg 5 已标记附近的精英白野猪!

[@攻击检测]
#IF
M.CheckMonAddByte 1 = 1
#ACT
SendMsg 5 你正在攻击一只精英怪!
; 精英怪受到伤害+20%
M.HumanHP - 20 0 0 0 0 1

[@击杀精英怪]
#IF
M.CheckMonAddByte 1 = 1
#ACT
Give 屠龙 1
SendMsg 5 恭喜!你击杀了精英怪,获得了屠龙!
总结
SetRangeMonAddByte:批量标记范围内的怪物。
M.SetMonAddByte:标记当前攻击的怪物。
M.CheckMonAddByte:检测怪物是否有特定标识(需攻击触发)。
M.GetMonAddByte:获取怪物标识值(需攻击触发)。
这套系统非常适合做动态怪物行为控制,比如:

任务怪标记(只有带特定标识的怪才算任务目标)
特殊技能触发(比如怪物血量低于30%时狂暴)
副本机制(比如Boss进入二阶段)
如果你有更复杂的需求,可以结合变量、计时器、技能触发等实现更强大的功能! ??
联系方式: 123
怪物标识系统详解与高级应用
这个系统允许你为怪物设置临时标识(0-9共10个),每个标识可以存储一个0-255的数值。这些标识不会永久存储(服务器重启后消失),但可以用于实现各种动态效果,如:
  • 标记特殊怪物(精英怪、BOSS、任务怪)
  • 触发特殊攻击效果(额外伤害、冰冻、中毒、减速)
  • 控制怪物行为(是否触发特殊技能、是否掉落额外物品)
  • 记录怪物状态(被攻击次数、是否被特定技能命中)
?? 核心命令详解1. 范围设置怪物标识(批量操作)SetRangeMonAddByte 地图 X坐标 Y坐标 范围 怪物名称(*代表所有) 标识号(0-9) 值(0-255) 有效时间(秒;0或空为一直有效)示例:#ACT; 给人物周围10格内所有怪物设置标识0=100SetRangeMonAddByte self <$X> <$Y> 10 * 0 100; 只给周围5格内的"野猪"设置标识1=50SetRangeMonAddByte self <$X> <$Y> 5 野猪 1 50
2. 单个怪物设置标识(针对当前攻击目标)M.SetMonAddByte 标识号(0-9) 值(0-255) 有效时间(秒;0或空为一直有效)示例:#ACT; 给当前攻击的怪物设置标识2=200M.SetMonAddByte 2 200
3. 检测怪物标识(需攻击后触发)M.CheckMonAddByte 标识号(0-9) 比较符号(<,>,=) 检测数值(0-255)示例:#ACT; 如果当前攻击的怪物标识3 > 50,则触发效果M.CheckMonAddByte 3 > 50#SAY你的攻击触发了怪物的特殊状态!
注意:必须攻击怪物后才能检测,不能直接读取。
4. 获取怪物标识值(需攻击后触发)M.GetMonAddByte 标识号(0-9) 保存变量示例:#ACT; 获取当前攻击目标的标识0值,存入N1变量M.GetMonAddByte 0 N1SendMsg 5 这个怪物的标识0值是:<$STR(N1)>
?? 高级应用场景1. 标记精英怪,触发额外掉落#ACT; 给当前怪物设置标识1=1(代表精英怪)M.SetMonAddByte 1 1[@OnKillMob]#IFM.CheckMonAddByte 1 = 1#ACT; 如果是精英怪,额外掉落物品Give 金条 1SendMsg 5 你击杀了精英怪,获得了额外奖励!
?? 注意事项
  • 标识是临时的,服务器重启后所有怪物标识会重置。
  • 检测和获取标识必须攻击怪物,不能直接读取未攻击的目标。
  • 标识号0-9,每个标识存储0-255的数值。
  • 可以结合#CALL、#IF等脚本命令实现更复杂的逻辑。

?? 完整示例脚本[@标记精英怪]#ACT; 给周围8格内的"白野猪"设置标识1=1(精英标记)SetRangeMonAddByte self <$X> <$Y> 8 白野猪 1 1SendMsg 5 已标记附近的精英白野猪![@攻击检测]#IFM.CheckMonAddByte 1 = 1#ACTSendMsg 5 你正在攻击一只精英怪!; 精英怪受到伤害+20%M.HumanHP - 20 0 0 0 0 1[@击杀精英怪]#IFM.CheckMonAddByte 1 = 1#ACTGive 屠龙 1SendMsg 5 恭喜!你击杀了精英怪,获得了屠龙!
总结
  • SetRangeMonAddByte:批量标记范围内的怪物。
  • M.SetMonAddByte:标记当前攻击的怪物。
  • M.CheckMonAddByte:检测怪物是否有特定标识(需攻击触发)。
  • M.GetMonAddByte:获取怪物标识值(需攻击触发)。
这套系统非常适合做动态怪物行为控制,比如:
  • 任务怪标记(只有带特定标识的怪才算任务目标)
  • 特殊技能触发(比如怪物血量低于30%时狂暴)
  • 副本机制(比如Boss进入二阶段
如果你有更复杂的需求,可以结合变量、计时器、技能触发等实现更强大的功能! ??

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表