翎风引擎传奇M2新功能增加了怪物标识功能操作命令,功能代码SetRangeMonAddByte批量标记范围内的怪物,能使用的命令代码总共有4个如M.SetMonAddByte标记当前攻的怪物,M.CheckMonAddByte检测是否有特定标识M.GetMonAddByte获取怪物标识值需攻触发,如果你有更复杂的需求,可以结合变量+计时器+技能触发等实现更强大的功能。3 [5 U) N. ?) |; B
1 K: _ a8 r9 a2 J# Z; t: b
! g4 |- S; f! m, p8 W
1 y3 G) a1 `% q* v6 p2 T7 {! X2 k" _* y7 B8 c5 S5 ^0 h
怪物标识系统详解与应用
: y! g" X3 ^7 |* t; Z这个系统允许你为怪物设置临时标识(0-9共10个)每个标识可以存储一个0-255的数值。这些标识不会久存储(服务器重启后消失)但可以用于实现各种动态效果,
9 I* i1 a! n/ ^/ m4 H7 T8 N) ]如标记特殊怪物(精英怪、BOSS、任务怪) : R* j' [7 l& P- [
触发特殊攻击效果(额外伤害、冰冻、中毒、减速) : X ~, u* }' ]& f: M
控制怪物行为(是否触发特殊技能、是否掉落额外物品)
$ ?2 P! W4 a: u, H记录怪物状态(被攻击次数、是否被特定技能命中)
9 z& o+ I1 l& M* `. L+ c3 U9 t1 m f4 O- F6 O; _
核心命令详解:
7 y9 d: m8 R" D' w) I1. 范围设置怪物标识(批量操作)
9 Y3 g% }( s, d* |# cSetRangeMonAddByte 地图 X坐标 Y坐标 范围 怪物名称(*代表所有) 标识号(0-9) 值(0-255) 有效时间(秒;0或空为一直有效)示例:
) Y+ ` }% r2 X; F# i#ACT7 b- i8 N$ Q, l; v+ r
;给人物周围10格内所有怪物设置标识0=100, q) F2 b9 \& i$ R' F$ n: _
SetRangeMonAddByte self <$X> <$Y> 10 * 0 100% V/ c( y; u/ y6 P, K0 |5 [! ^
;只给周围5格内的"野猪"设置标识1=50
" A, ^2 M3 g/ K) h) ?1 H k- jSetRangeMonAddByte self <$X> <$Y> 5 野猪 1 50
& `. m2 @) j" j5 S8 a! \& S- ~! M$ g) M
2. 单个怪物设置标识(针对当前攻击目标)
2 u- s+ \4 h3 \& z) ]( p( y/ z7 w' J. NM.SetMonAddByte 标识号(0-9) 值(0-255) 有效时间(秒;0或空为一直有效)示例:
1 p6 Q- h2 j9 b( X- |0 s1 {$ h#ACT F3 ~0 i" ]/ R/ S
;给当前攻击的怪物设置标识2=200
* }% y; _9 T+ e$ K, ?* R" w( I& iM.SetMonAddByte 2 200# t2 i% ]5 ~, U5 X$ B
" G+ y5 F! s% s* R
3. 检测怪物标识(需攻击后触发)
}$ X9 g+ v0 D: P( qM.CheckMonAddByte 标识号(0-9) 比较符号(<,>,=) 检测数值(0-255)示例:; K: q6 |1 m6 I; t
#ACT& |, O- |, i' \
;如果当前攻击的怪物标识3 > 50,则触发效果9 a' k& P/ u4 D( {7 h% `1 l: E
M.CheckMonAddByte 3 > 50, r, q' ?! I1 u6 b% N. P( z
#SAY: a' E5 N- U+ C3 g: x
你的攻击触发了怪物的特殊状态!注意:必须攻击怪物后才能检测,不能直接读取。 ! n0 Y0 [, \* i* Z& [0 M
' V( j* P% H; q- X
4. 获取怪物标识值(需攻击后触发)
0 T1 x2 V1 \9 k H: r9 vM.GetMonAddByte 标识号(0-9) 保存变量示例:2 a; A8 l& o2 Q* L7 o
#ACT
- A% d, O9 R1 R;获取当前攻击目标的标识0值,存入N1变量) ~1 ]; v. }$ c6 N. f) l
M.GetMonAddByte 0 N1
; Q& s. X1 R9 Q( ]0 wSendMsg 5 这个怪物的标识0值是:<$STR(N1)>?? 高级应用场景, Z8 w0 I7 a. e$ |( f
1. 标记精英怪,触发额外掉落& q. m I/ |# N2 Y4 t3 L# c; b
#ACT
; |8 S5 G* P5 K7 I6 R+ Y;给当前怪物设置标识1=1(代表精英怪): v. _; P' {7 A& L* ` l
M.SetMonAddByte 1 1
% B- g- {. f4 E
' P) Y, x, O G+ ?: F[@OnKillMob]
* `. C. _* t0 m% q6 F#IF/ n* E. Q! ~% [. a
M.CheckMonAddByte 1 = 1
+ x. s- Q, j% o6 s#ACT6 O+ ~, L$ T9 w: h) U" n# G
;如果是精英怪,额外掉落物品
. C4 T; P( h1 A& a$ aGive 金条 1
9 u% i4 A- r, S4 h8 |9 W. }SendMsg 5 你击杀了精英怪,获得了额外奖励!?? 注意事项% n! `. N* n" e8 v
标识是临时的,服务器重启后所有怪物标识会重置。 3 l+ e0 e7 i! q, \6 \/ @7 G
检测和获取标识必须攻击怪物,不能直接读取未攻击的目标。 6 H3 T% H" R C! e
标识号0-9,每个标识存储0-255的数值。 4 c7 S0 R) i7 @9 D; }+ j$ k6 S" P
可以结合#CALL、#IF等脚本命令实现更复杂的逻辑。
* W4 k- g& H" r( ^6 Z7 o3 ^9 p( Z2 G8 I2 G+ l/ Z* |
完整示例脚本 J# @% b! R# }9 v
) ~, v7 h. R [, Q3 e3 T[@标记精英怪]
9 P! O& }5 @. ^/ _% h9 v#ACT
+ v2 T7 F4 ?) ]% l;给周围8格内的"白野猪"设置标识1=1(精英标记). W2 ~1 J$ V- [) Z; v p
SetRangeMonAddByte self <$X> <$Y> 8 白野猪 1 1& Z! E8 L# J' |* F! X* X5 X" O
SendMsg 5 已标记附近的精英白野猪!
( h) P& ?8 A; e% ]4 [# d& U3 m, k/ O6 q, Q" \6 J& Q. v
[@攻击检测]
9 u( D( @1 h2 x8 S( y#IF# o, T/ @- i/ K4 g; n
M.CheckMonAddByte 1 = 1
7 x& F2 [$ S. }9 d#ACT
8 q( p/ y, o& h/ B! E0 B& C% `SendMsg 5 你正在攻击一只精英怪!1 Z i* O2 V2 N# {. Y: @
;精英怪受到伤害+20%
1 R a/ }1 m" X$ v+ l, hM.HumanHP - 20 0 0 0 0 1
2 N7 D% t% k! R0 u$ g5 E
! y! V& M4 M2 T' M0 |& u[@击杀精英怪]- N% B+ l r3 A2 c$ S- E
#IF
2 A" P( q' N! X7 O! }M.CheckMonAddByte 1 = 1$ r! K; v6 F" w
#ACT
1 C3 ?" J+ L6 P4 d6 z' h. cGive 屠龙 1" X, r, L* S7 m9 d7 ^6 _' I; [0 e
SendMsg 5 恭喜!你击杀了精英怪,获得了屠龙!总结
3 e' y) P/ I0 X: J1 e9 LSetRangeMonAddByte:批量标记范围内的怪物。 & m$ q9 g6 }% i# w, ?
M.SetMonAddByte:标记当前攻击的怪物。 7 h; x4 B4 c/ m- o
M.CheckMonAddByte:检测怪物是否有特定标识(需攻击触发)。 + }7 w, D' A7 c6 n5 D
M.GetMonAddByte:获取怪物标识值(需攻击触发)。 - ^' t8 \; v+ |: A" p3 ?+ c
这套系统非常适合做动态怪物行为控制,比如:
' C$ f8 ]8 Y# y. v9 X; E
3 ]# v) C4 W5 z8 r. W8 q5 Z5 ^4 a任务怪标记(只有带特定标识的怪才算任务目标) ( ]+ X/ E. m% b( Z
特殊技能触发(比如怪物血量低于30%时狂暴) 8 I; N" E9 t7 P
副本机制(比如Boss进入二阶段) 5 I8 A- O; V J; Y5 |& _' a2 e; }
如果你有更复杂的需求,可以结合变量、计时器、技能触发等实现更强大的功能!
4 u) H/ m6 b5 T4 z A |