翎风引擎传奇M2新功能增加了怪物标识功能操作命令,功能代码SetRangeMonAddByte批量标记范围内的怪物,能使用的命令代码总共有4个如M.SetMonAddByte标记当前攻的怪物,M.CheckMonAddByte检测是否有特定标识M.GetMonAddByte获取怪物标识值需攻触发,如果你有更复杂的需求,可以结合变量+计时器+技能触发等实现更强大的功能。+ F, C y' z/ V9 E9 v' S
! m! |7 V. R3 _1 z# o
3 m$ I$ R2 t* B" l( p
q* t: t6 L% O' d$ ]* ^" v2 \
6 s' R% J' q7 K; H$ H怪物标识系统详解与应用
1 b+ U# L- w' O( g这个系统允许你为怪物设置临时标识(0-9共10个)每个标识可以存储一个0-255的数值。这些标识不会久存储(服务器重启后消失)但可以用于实现各种动态效果,4 L* X: d7 Q% }3 {" v' D7 a, G5 w
如标记特殊怪物(精英怪、BOSS、任务怪) 7 L. |, s/ y- W/ X2 G1 q8 R2 ]
触发特殊攻击效果(额外伤害、冰冻、中毒、减速)
( N4 @+ R, p6 M2 I$ i, P* k控制怪物行为(是否触发特殊技能、是否掉落额外物品) & I3 `2 A5 j1 b- Y4 g
记录怪物状态(被攻击次数、是否被特定技能命中) 5 z. p. f3 I( }2 r2 F8 ?7 y
0 H0 L1 M6 L7 N8 f$ i" h核心命令详解:* ]0 U5 q1 E( v/ v
1. 范围设置怪物标识(批量操作)
8 q5 S8 k6 Q' j2 T+ j6 dSetRangeMonAddByte 地图 X坐标 Y坐标 范围 怪物名称(*代表所有) 标识号(0-9) 值(0-255) 有效时间(秒;0或空为一直有效)示例:
' l: F4 x4 I( ^: v# A- W#ACT
3 j- z8 C' x, z1 I. N w5 I. T/ x;给人物周围10格内所有怪物设置标识0=1009 ?6 D4 r. J: I
SetRangeMonAddByte self <$X> <$Y> 10 * 0 100. b$ _3 _3 w4 g3 y' R. \
;只给周围5格内的"野猪"设置标识1=50
' J8 Z' c3 R* o' A$ }9 ESetRangeMonAddByte self <$X> <$Y> 5 野猪 1 50
& F2 x# i+ B# J& M& q
$ u. }% N0 X' X* k6 ^2. 单个怪物设置标识(针对当前攻击目标)
; q9 }' p6 W2 R3 J/ V) pM.SetMonAddByte 标识号(0-9) 值(0-255) 有效时间(秒;0或空为一直有效)示例:5 _ H* C$ Q3 q, Q9 @& m3 C
#ACT, u; j: L& m1 {) S% C) a- p
;给当前攻击的怪物设置标识2=200
) N1 m/ H4 x2 _- o2 Q! \6 _ ^& {M.SetMonAddByte 2 200
1 o) ?6 b2 B" `8 d1 W5 q$ ?2 |: m0 _) w
3. 检测怪物标识(需攻击后触发)
. M& j$ |5 N2 z6 ]- M5 vM.CheckMonAddByte 标识号(0-9) 比较符号(<,>,=) 检测数值(0-255)示例:- Q& D; ` P5 w+ R3 K* @4 ^
#ACT
: V) `2 Q. n" \7 i7 C;如果当前攻击的怪物标识3 > 50,则触发效果+ G' P/ R9 @0 w4 Q2 q6 l. h
M.CheckMonAddByte 3 > 50) N8 e) o7 {$ w% D4 @6 S6 k
#SAY
3 E# L# {. Y8 b+ ~8 t8 b你的攻击触发了怪物的特殊状态!注意:必须攻击怪物后才能检测,不能直接读取。 2 u, W) U' L3 b5 n, x1 S+ p0 R
: V" V' s" G- |4. 获取怪物标识值(需攻击后触发)0 W& o. V! E7 s3 P, j
M.GetMonAddByte 标识号(0-9) 保存变量示例:
7 h8 \% E9 ]( z2 T% ^; E, `#ACT1 P: u; k- c5 B" {9 N, i; Q
;获取当前攻击目标的标识0值,存入N1变量. I1 k, u2 z. P
M.GetMonAddByte 0 N16 h. v9 o0 s$ _8 S# n
SendMsg 5 这个怪物的标识0值是:<$STR(N1)>?? 高级应用场景
, [9 @6 Z# P. z1. 标记精英怪,触发额外掉落$ m8 A) h' T" k2 }" C
#ACT7 G6 d9 @8 R- D& C+ K5 G! R
;给当前怪物设置标识1=1(代表精英怪)" f$ n! `7 T" {4 ~2 R
M.SetMonAddByte 1 1
* D2 B/ R- E+ W# d, D8 \) a" x: B" Z
[@OnKillMob]; s* ?+ k7 N& B% \. v7 \, O9 a4 a
#IF p5 h) W* s; B$ Y
M.CheckMonAddByte 1 = 1
; U3 B C2 W' f1 \7 o$ |#ACT R2 l) b' ` h4 A/ z1 u3 Z4 B
;如果是精英怪,额外掉落物品. g% s7 b+ _# M1 R/ ]
Give 金条 10 I' C" X7 m( `5 A1 {" G
SendMsg 5 你击杀了精英怪,获得了额外奖励!?? 注意事项# X3 Y8 y1 j% w4 g4 o" P4 c4 G- g
标识是临时的,服务器重启后所有怪物标识会重置。 ( A, V8 k$ n* G$ f+ _3 ^9 Z+ ^: K
检测和获取标识必须攻击怪物,不能直接读取未攻击的目标。 . q8 S6 }4 f1 V3 n+ o# A
标识号0-9,每个标识存储0-255的数值。 / U5 b* `( m0 t+ F% s
可以结合#CALL、#IF等脚本命令实现更复杂的逻辑。
& l# A4 h1 S( q; W, h" S- t P0 k) J) p) D3 ~1 K3 v8 U
完整示例脚本
& H# B$ c+ o1 n0 R1 {
9 A4 x H/ H0 ^& ]- Q[@标记精英怪]# e& n$ f& r; G6 W! L5 V+ c( I
#ACT
+ M6 s O2 B( s4 ]- G;给周围8格内的"白野猪"设置标识1=1(精英标记)
7 m9 I5 x' ?- Z( W3 q( C% G/ wSetRangeMonAddByte self <$X> <$Y> 8 白野猪 1 1
' `) b. O0 f6 CSendMsg 5 已标记附近的精英白野猪!
& ?: A% c# U8 N6 E7 P _" g `: l# S' y; w9 O7 H. Z
[@攻击检测], z! N; z. e1 e6 C$ a
#IF
! { y" t5 \3 UM.CheckMonAddByte 1 = 1* J7 j+ l, A- j6 ^9 v/ k5 o: |
#ACT1 b( t8 p7 }6 R! m' v% l b* j; \
SendMsg 5 你正在攻击一只精英怪!8 i8 \' b& N/ v0 Q2 ^# D
;精英怪受到伤害+20%
: q" T4 }% v4 {% P8 hM.HumanHP - 20 0 0 0 0 1
8 |; F/ D/ U; d' c Z; y
9 n* l7 R, y- i! S4 [* X[@击杀精英怪]2 }# \" V& {8 U% |
#IF
9 c) M+ c+ _ qM.CheckMonAddByte 1 = 1
+ M0 {4 H3 T- t1 _( Q7 t6 v! a# y" w#ACT
/ Z, b& W: ?$ Y! T; E# RGive 屠龙 1. m2 [6 E# B3 n/ c+ l
SendMsg 5 恭喜!你击杀了精英怪,获得了屠龙!总结
7 t3 H- O& W o) N7 P- ^! uSetRangeMonAddByte:批量标记范围内的怪物。 " u9 i. D' s, l1 x3 b7 `& k
M.SetMonAddByte:标记当前攻击的怪物。
; L" }. A; [4 S) uM.CheckMonAddByte:检测怪物是否有特定标识(需攻击触发)。
+ r0 ]) ?( v, Y' j* h+ OM.GetMonAddByte:获取怪物标识值(需攻击触发)。
* M: N( q' m1 A! y这套系统非常适合做动态怪物行为控制,比如:
( G7 K8 [. ?( R/ M3 n# l5 P
, A" J# {" r- X7 Q ^. R任务怪标记(只有带特定标识的怪才算任务目标)
3 V1 K3 y4 p* e) D! {/ q特殊技能触发(比如怪物血量低于30%时狂暴)
2 b4 G' Z6 d% u2 B( N副本机制(比如Boss进入二阶段) " i J/ d. y4 ?- j$ Q
如果你有更复杂的需求,可以结合变量、计时器、技能触发等实现更强大的功能!
# ^; U5 Z8 i# h7 T( e) u8 M, l |