翎风引擎传奇M2新功能增加了怪物标识功能操作命令,功能代码SetRangeMonAddByte批量标记范围内的怪物,能使用的命令代码总共有4个如M.SetMonAddByte标记当前攻的怪物,M.CheckMonAddByte检测是否有特定标识M.GetMonAddByte获取怪物标识值需攻触发,如果你有更复杂的需求,可以结合变量+计时器+技能触发等实现更强大的功能。
2 b. H r: f+ L/ B9 i4 T+ x. G+ |4 g3 }& ~$ \; S: v
' h5 B: i" Y9 ~+ }" a
' n" K7 s4 r. z
5 I5 Q- ?6 w& C6 x7 M, r7 z8 T0 \
怪物标识系统详解与应用
! ]* d. e! }4 p1 t这个系统允许你为怪物设置临时标识(0-9共10个)每个标识可以存储一个0-255的数值。这些标识不会久存储(服务器重启后消失)但可以用于实现各种动态效果,
( [1 I' a' I/ q5 W. [( B" p如标记特殊怪物(精英怪、BOSS、任务怪) " R7 j5 d Q1 E
触发特殊攻击效果(额外伤害、冰冻、中毒、减速)
2 ?% Z8 r7 T7 n5 O1 Y控制怪物行为(是否触发特殊技能、是否掉落额外物品) & a: l, _) Q0 g; [" ~2 w j2 [
记录怪物状态(被攻击次数、是否被特定技能命中) 5 F. `2 E6 [0 w& [" |
, b$ @8 ^; C0 p% k
核心命令详解:
5 {3 Y/ u- o( q( q1 J0 Q0 m1. 范围设置怪物标识(批量操作)
. \; T5 l T' T5 |. [SetRangeMonAddByte 地图 X坐标 Y坐标 范围 怪物名称(*代表所有) 标识号(0-9) 值(0-255) 有效时间(秒;0或空为一直有效)示例:: L9 C' O1 y& ^6 m3 [7 J
#ACT
' U: \! e% c! a' Q, R9 c4 l;给人物周围10格内所有怪物设置标识0=100( |( y! j' N# L8 i4 s6 ?# u
SetRangeMonAddByte self <$X> <$Y> 10 * 0 1003 u3 Z7 @/ Z: U' Y( O3 w* f
;只给周围5格内的"野猪"设置标识1=50$ C3 D4 r' b s. r; C0 }) i
SetRangeMonAddByte self <$X> <$Y> 5 野猪 1 50
* O% A' F1 C( ~; o1 {5 O8 C. H/ W/ v z M7 w: \9 M
2. 单个怪物设置标识(针对当前攻击目标)
8 Z$ u8 a, ^- E( N& D$ WM.SetMonAddByte 标识号(0-9) 值(0-255) 有效时间(秒;0或空为一直有效)示例:& s6 o2 f. p- f
#ACT
$ U8 T3 e" g: k* p;给当前攻击的怪物设置标识2=200
2 n3 J2 u+ ] o$ u/ N. MM.SetMonAddByte 2 200- {7 Q3 ]5 [ t5 l! X! A
D5 D7 R; f. y8 z' O
3. 检测怪物标识(需攻击后触发). u" N+ O( }1 l, ^. e$ q+ U
M.CheckMonAddByte 标识号(0-9) 比较符号(<,>,=) 检测数值(0-255)示例:/ B, b$ }) A" [6 T% i. g6 n% K. e
#ACT
0 M/ v) ^0 l: j5 h;如果当前攻击的怪物标识3 > 50,则触发效果. j7 r# Z2 C' l7 w3 D
M.CheckMonAddByte 3 > 509 R3 d8 j3 M S2 }9 N
#SAY- ]& w2 p4 q$ Q2 a8 E3 @1 f z
你的攻击触发了怪物的特殊状态!注意:必须攻击怪物后才能检测,不能直接读取。 5 B% M6 T; I) }, m9 p9 z
+ x) S+ {7 C5 ~2 E4. 获取怪物标识值(需攻击后触发)
5 ~: P4 e; ]& Q- }M.GetMonAddByte 标识号(0-9) 保存变量示例:9 h. f9 ^/ N0 t. M
#ACT
1 L* l; f q+ j: |;获取当前攻击目标的标识0值,存入N1变量
5 S0 O- E! V, ^M.GetMonAddByte 0 N12 m) m& D% J6 w, M c5 {
SendMsg 5 这个怪物的标识0值是:<$STR(N1)>?? 高级应用场景
7 f* Z; R9 Y6 b% ~# K' M1. 标记精英怪,触发额外掉落; S7 d7 z( J, s
#ACT# h2 e7 ~( P' i% n) m
;给当前怪物设置标识1=1(代表精英怪)
1 j' q0 ^7 s) A" {M.SetMonAddByte 1 1
0 w( ?+ p+ I' y6 U* o# L& v$ D6 M B3 [; H
[@OnKillMob]
9 w) m, p5 s, ~& S#IF
) t9 `% @% V4 G( R4 a: w$ t2 L4 ZM.CheckMonAddByte 1 = 1! k8 k6 i2 \/ l+ r6 B( T
#ACT) A% A' S0 ^7 a$ g K5 T4 k
;如果是精英怪,额外掉落物品& V @; R6 j1 ^
Give 金条 1
' w+ `" J# k+ V" M* ^8 l/ ZSendMsg 5 你击杀了精英怪,获得了额外奖励!?? 注意事项
% h. |3 `( y7 f标识是临时的,服务器重启后所有怪物标识会重置。
/ H5 o8 W9 X$ j. X6 c) s& ?; a检测和获取标识必须攻击怪物,不能直接读取未攻击的目标。 8 L* @* V$ K8 w2 I8 F* Z) V
标识号0-9,每个标识存储0-255的数值。
1 \- y' m0 `$ }5 N: G. e2 w可以结合#CALL、#IF等脚本命令实现更复杂的逻辑。
- A. G! k `8 O, G6 H" f y$ r/ ^8 _( c6 U* `9 b$ c
完整示例脚本
2 `; Y! o2 V z0 c Y+ m! j1 `% O
7 |" Z- R5 j- H[@标记精英怪]
% f3 _6 k6 K1 `7 E% ?#ACT
; I4 @) o* l+ t;给周围8格内的"白野猪"设置标识1=1(精英标记)
- q+ b7 |: [0 W1 f0 r, \0 Z6 l& T' ZSetRangeMonAddByte self <$X> <$Y> 8 白野猪 1 1. o# n9 Y- Q6 q8 K. N" s8 D
SendMsg 5 已标记附近的精英白野猪!7 W9 Z z$ |+ ~% W
" m5 o5 x' `* d# Q- x& Z4 |$ {
[@攻击检测]
* F( L/ o( \" z" Z/ }#IF
( |. Y- d' |7 P# B% M$ g+ aM.CheckMonAddByte 1 = 13 G! x8 {6 {% X q) b) r( b" p
#ACT
7 c' W7 S4 Z2 y3 q! l& S1 SSendMsg 5 你正在攻击一只精英怪!' o$ o( m$ t& w/ {3 U4 F
;精英怪受到伤害+20%5 i% L) ^. P" ^
M.HumanHP - 20 0 0 0 0 1+ j/ m, J ]- h: _, G& y- I
2 U4 X/ O% V/ q) ^) R* P* v6 l
[@击杀精英怪], c8 M7 W" h: [% Q0 d7 F( Z
#IF
$ e; s/ O9 E1 Y7 ^, uM.CheckMonAddByte 1 = 1% ?! S& N, }1 n; _- z$ b5 J$ Q. N2 K
#ACT3 D2 R3 P3 V1 ~" {, q5 H
Give 屠龙 1/ m1 e! q+ G3 y }# f
SendMsg 5 恭喜!你击杀了精英怪,获得了屠龙!总结! e: @+ {% z- S! i% S0 F5 U9 G ~
SetRangeMonAddByte:批量标记范围内的怪物。
" W$ l9 ?- {$ n/ l: f0 G) B; L6 RM.SetMonAddByte:标记当前攻击的怪物。 , h8 y, p# ~& @8 |8 ]3 c# ~; o `. m+ @
M.CheckMonAddByte:检测怪物是否有特定标识(需攻击触发)。 * V1 s+ A( J4 T) D$ e7 i' k9 r
M.GetMonAddByte:获取怪物标识值(需攻击触发)。 ' e2 `( l+ V) g( l( ? ]
这套系统非常适合做动态怪物行为控制,比如:
* j! Z& B1 k& ^* O+ F8 |/ F: r0 H) C7 r
任务怪标记(只有带特定标识的怪才算任务目标) . g7 p6 u5 }# ~8 X
特殊技能触发(比如怪物血量低于30%时狂暴)
( a3 ~1 y- N9 D( |$ d8 a6 E副本机制(比如Boss进入二阶段)
# T) {1 t* N% E) U2 ?. z, a$ \ n如果你有更复杂的需求,可以结合变量、计时器、技能触发等实现更强大的功能!
+ N: I# A- Z1 g8 k- V |