传奇GOM引擎关于脚本安全相关,部分新手写脚本不严谨,导致游戏脚本被封包利用造成损失,再这里给大家举例说明几个脚本安全相关示例
4 Z: `$ k! A1 }* U9 b( T$ {
, t" e' z! ?" r1 R首先涉及到GOTO,CALL,和非NPC界面使用鼠标点击的脚本,我们可以利用引擎禁止点击字符进行强化安全,下面我们就使用系统禁止点击触发命令 :PlayDie ,这个命令是死亡触发命令,引擎文档也提到只要脚本头前缀涉及包含PlayDie 那么不允许点击,这个可以搜索引擎文档进行了解,搜索关键词:为什么提示禁止点击该NPC触发字段. D9 X6 x6 T w5 m; D, E' K
6 j o4 B7 j4 W
* D9 t& Z% o6 b8 O. ]
( S. T! D+ ?6 o+ S" K1 I
( K. m8 s3 w! ?5 Z风险脚本示例1------------下面----------看讲解为什么是风险----------------------------------5 \! {/ U- Y8 n/ a& h" p6 G$ R+ R
;下面是NPC脚本:$ S: R! G& c4 M& D2 U
[@main]) z) W! \8 ^( L
\3 v' t6 T2 j7 d. P. ^, Z& C5 Y+ D
[@正常开始回收]
. ?7 x, U* O; I; M* O! y5 \#IF. z- J) g9 j5 i8 n
EQUAL U108 0 {+ e# X4 S. D
#ACT
( F0 L6 U, ~, u- l) M- h* U8 @#CALL [\回收元宝系列\装备回收价格.txt] @回收装备正常
* S+ M) D. L8 s0 z1 kCLOSE
8 k4 q+ H P* |2 p2 Rbreak
9 b" l! ~ \% G4 z) Y% _) L;下面....QuestDiary\回收元宝系列\装备回收价格.txt脚本(因为上面NPC脚本已经将脚本CALL到这里了)
5 b/ v5 P. R& q5 x5 z;执行条件为 检测 U108变量不等于0则CALL到下面脚本执行4 ~$ W: E0 l- }
[@回收装备正常]. K2 }/ h9 j! v! X
{* O; z' ^; u/ x5 o0 y
#IF
+ a. J- o: p. ncheck [100] 1
9 K! B1 F: B3 a#ACT
" D2 _" J/ v1 v* ^goto @战狂回收检测A
) m8 M, \* v+ _% {" ~ r#IF
& A6 y3 q: k* Gcheck [101] 14 ^, R; ?0 i$ M
#ACT
2 R; i9 u: s- a% w& S$ Qgoto @神武回收检测B0 B( N/ {0 s. l1 Z( J, {
#IF
, m4 Y X8 E; T" fcheck [102] 1
8 f9 }0 c# M) [8 R0 c. o#ACT
) Q, f$ U4 [. G% bgoto @烈火回收检测C
+ \! Z' G1 s# F8 B& n. X1 pbreak
5 c6 r. C& Z+ C/ W;--下面是上方GOTO执行脚本,
/ a/ e0 O' ?# t/ |;执行条件为 分别检测个人标识100 101 102等于1则GOTO进行执行下面对应脚本) W, e* n0 R8 y& i, j6 |, U
[@战狂回收检测A]
4 V4 Q* G; h) z O4 s* j" _#OR A1 z L. G9 l& h' I
Checkitem 战狂精铁剑 14 ]" Y0 t1 }1 B$ P9 \3 z1 ]9 \
Checkitem 战狂精铁铠 1
7 d9 m' {4 P" l- C) t$ aCheckitem 战狂头盔 1& J [+ ] W: z& k' d
Checkitem 战狂项链 1
7 Q* f% s% O+ K0 B q3 U% cCheckitem 战狂手镯 1
! w( V% K; U" j0 o0 G: pCheckitem 战狂护腕 10 t! ^" n$ ` p& I- f: W: u
Checkitem 战狂戒指 1
7 B9 _' i6 A+ l( x- {Checkitem 战狂指环 1
2 }' I4 H9 |3 e! {+ m! ACheckitem 战狂腰带 1
- X! I" z. {: K0 @* uCheckitem 战狂靴子 1* x& A! m4 K8 V
#ACT% T' Q3 {# |0 Q9 y% y2 V' Q
TakeBagItem 战狂头盔|战狂项链|战狂手镯|战狂护腕|战狂戒指|战狂指环|战狂腰带|战狂靴子 46 20 0 0 38000 N0 1
' ?, U+ w& n3 l- nTakeBagItem 战狂精铁剑|战狂精铁铠 46 40 0 0 76000 N1 10 r2 N2 H. P; N. a( L% h
MOV N$回收金额A
4 I _$ [% p, [- I% y. ZMUL N$回收金额A 201 a9 C+ u2 D! a" g" E: e
MOV N$回收金额B3 Z) x4 W+ j6 L, u
MUL N$回收金额B 40; ?6 G# Z: {2 ^/ i2 N$ h. f
INC U897 u; A" Y( q5 D7 m) |. L/ r& i; m
INC U891 n* ?4 w$ H) ~. u" a. v/ G
SENDMSG 0 【装备回收】:恭喜{[]|250:0:1}成功回收{战狂套装|254:0:1},获得海量[{元宝,经验|254:0:255}]...!!! 31 0
2 X& u* e8 N- B% Q8 Q4 @2 W% `8 Xbreak7 B" @5 E# X2 ^& F# ~4 U/ K1 i
[@神武回收检测B]) J3 C: _, f/ J" Z' e; T) s5 D# }
#OR
/ D+ ~2 r D DCheckitem 神武嗜血剑 14 q# D5 t8 B4 h& C; I/ E
Checkitem 神武嗜血铠 1$ g+ G0 c! e7 ~' M8 I! v
Checkitem 神武头盔 1
X4 I2 s- R6 w1 u( {8 F) XCheckitem 神武项链 1! G' X9 Z& r+ x: P6 o) P
Checkitem 神武手镯 1
' @5 p0 L& O; VCheckitem 神武护腕 16 F4 t( ]# m$ m7 d X- Z7 J# V9 ]
Checkitem 神武戒指 1
4 [8 m1 ]4 K, s3 L5 ?; n# M9 P# cCheckitem 神武指环 1
2 j5 s7 h( E+ H, JCheckitem 神武腰带 11 \3 G6 @- e2 d" N7 B
Checkitem 神武靴子 15 f2 ?* O# I& Y
#ACT6 Q2 z* P8 z1 b& x3 v7 V% o( R
TakeBagItem 神武头盔|神武项链|神武手镯|神武护腕|神武戒指|神武指环|神武腰带|神武靴子 46 40 0 0 40000 N0 1; n0 G( j8 u; o- ^! C
TakeBagItem 神武嗜血剑|神武嗜血铠 46 80 0 0 80000 N1 1
: m5 l. K6 b# \. PMOV N$回收金额A% n, w2 y/ a8 z$ {+ W
MUL N$回收金额A 40
& M* r+ d% q! j" NMOV N$回收金额B" Q/ q* X1 X2 s; I4 \6 c
MUL N$回收金额B 80! T* D1 h0 g3 B* q2 s
INC U89
" t0 A$ E) s. `INC U893 m% n X4 V( I1 ~& j& P" B! a
SENDMSG 0 【装备回收】:恭喜{[]|250:0:1}成功回收{神武套装|254:0:1},获得海量[{元宝,经验|254:0:255}]...!!! 31 0
5 t& j8 E5 o8 U& z5 tbreak! G& ]2 Q, O- ^& z2 j5 Y
[@烈火回收检测C]' I% Z _0 W, I- U- @9 G
#OR) t1 h& V* x7 J
Checkitem 烈火焚天剑 1! Z" m. ` B: Q+ W" r
Checkitem 烈火焚天铠 19 l+ _2 y4 F5 `. p$ h; ]' b J+ C
Checkitem 烈火头盔 1
. ^- L% T$ z B! @9 A6 j! GCheckitem 烈火项链 1# P, D; X) t3 e0 x) X
Checkitem 烈火手镯 1
" c( K( j( q3 N6 B4 H6 NCheckitem 烈火护腕 16 L& [' u6 A3 H8 Y8 w' m; v
Checkitem 烈火戒指 1
& w3 m- w3 }7 J" `% zCheckitem 烈火指环 1
6 W) r/ L' Z: s( D+ b8 b2 bCheckitem 烈火腰带 15 `/ [# }$ q9 f' [) F8 ^% k5 N
Checkitem 烈火靴子 1
2 r" \3 I9 H9 w: V% O#ACT
8 ?. T% s# A! t# t# K4 k8 W7 i. cTakeBagItem 烈火头盔|烈火项链|烈火手镯|烈火护腕|烈火戒指|烈火指环|烈火腰带|烈火靴子 46 60 0 0 45000 N0 1
n+ x8 |9 s6 `4 R# f% E) YTakeBagItem 烈火焚天剑|烈火焚天铠 46 120 0 0 90000 N1 1; Q5 u4 Q% ]1 a `( N
MOV N$回收金额A( C* t5 u& g: k4 l. r3 j7 g, k0 h
MUL N$回收金额A 60/ r2 Y" ^. O, b6 f- m
MOV N$回收金额B# D) G5 Z" |& Q* e% k
MUL N$回收金额B 120
- F) E7 N/ g$ m6 ^INC U89
# f8 a& G1 ` z# u# ?$ yINC U898 T/ Y2 W' p& G ]8 O6 N. J
SENDMSG 0 【装备回收】:恭喜{[]|250:0:1}成功回收{烈火套装|254:0:1},获得海量[{元宝,经验|254:0:255}]...!!! 31 01 q) p" l1 t+ g% T! ?
break
0 P# c3 W0 W: k# Q$ g1 L5 z" O- g" m6 c9 \" |' k
" f$ ~ R! X, \# d& c( t& |1 f; l+ ^) T& a
) y' r4 C r" g1 S: S9 f$ Q; A讲解风险:以上脚本可以使用封包工具直接执行@回收装备正常 @MAIN 和 @战狂回收检测A @神武回收检测B @烈火回收检测C ,因为这才是整段脚本的核心,前面所做一切检测就是为了这段核心执行脚本所准备,反而到了执行脚本可以忽略前面所做的一切检测,如果在执行脚本or下执行检测好像又不好做,那么我们就可以利用引擎禁用点击字段进行设置,比如上面所说的死亡触发字段PlayDie,因为这段执行脚本是不需要NPC点击,所以可以使用禁止点击字符来进行规避风险+ a! y' z6 i& X% P2 V) z3 a/ v
下面修正脚本进行讲解,
9 t; \" l I1 d" k风险2.CALL过来的脚本第一个字段是[@回收装备正常] ,再QFunction-0.txt 是有检测U108变量值的,但是封包可以无视NPC脚本中的[@正常开始回收]检测字段,依然可以直接点击@回收装备正常],解决方式有2个,第一个就是把检测U108放入到@回收装备正常]内如下:! \8 Z/ k: [, s) S0 h+ u/ W( M
[@回收装备正常]7 _# m! a+ h8 |/ M7 M# I. v; L
{" c v1 [, N& ]% O/ f
#IF
2 h: `+ X; R" ?0 b- y& JEQUAL U108 0
+ X( w* {, h5 G# Mcheck [100] 1
; c% [$ V) D+ b& M/ L% H/ u8 M4 ^* o#ACT
- q/ _$ W0 |; G5 _. f* ngoto @战狂回收检测A! m# @+ T& Q* n$ k
#IF
& D; X" ]# i/ U3 y) L. \EQUAL U108 0
- e2 n3 a. k; T% e+ {& L- Ucheck [101] 1& _' H/ G% T. T$ k7 k$ a5 q/ D
#ACT+ M+ K( B( j/ f6 Z
goto @神武回收检测B
" I' D6 x9 a+ R' O7 J' Q#IF
. {+ ~. g, w: x8 ]$ J( PEQUAL U108 05 _9 x% G4 m7 ?! h% g3 C- y9 \
check [102] 10 y: _# m0 t+ E
#ACT
+ m3 a3 j/ A2 Z) J7 K3 E1 ]goto @烈火回收检测C
5 s- I' g' L3 ]! S0 Nbreak+ J( g# U: i- P, _. b
这样处理就可以了,当时封包依然可以跳过上面的检测直接执行@战狂回收检测A @神武回收检测B @烈火回收检测C,因为这三段脚本都OR检测,所以不好做检测,我们我们可以利用禁止点击字符进行规避风险,因为@回收装备正常 属于引擎内部跳转脚本,也是不需要NPC点击的,所以我们可以使用禁止点击字符来进行规避(关于禁止点击字段,下面讲解)
) l1 W5 y4 A2 _$ O讲解那么多现在来说如何正确使用系统禁止点击字段来规避风险,下面脚本演示
4 J" ?5 x; e9 h& M[@main]) m3 x9 h6 d3 I0 w1 c0 p
\# \& e5 v+ N' |
[@正常开始回收]7 x# ^) \8 v0 \4 x i K1 a
#IF5 p- Y/ c9 A- I2 ~' F% h. _; D
EQUAL U108 07 f1 R, c; ~1 R/ D& e
#ACT8 U% g( q; G- P+ f) I* \$ i
#CALL [\回收元宝系列\装备回收价格.txt] @PlayDie回收装备正常3 M/ @5 V. Z! L; l) l% T& Z; I
CLOSE
- |" t8 Z( N, d1 nbreak$ n; S) x0 _+ w! u$ W6 K" E' A
[@PlayDie回收装备正常]
+ Y0 {% O5 n1 C{
- A7 C9 g5 ~ ]1 N2 x#IF: @3 s1 H; H& }! w
check [100] 1; O& I! k& C& V1 [9 E
#ACT+ g3 i/ d6 {4 Z: L* m/ g
goto @PlayDie战狂回收检测A
+ F/ O9 q6 m- Q# C#IF
- O+ g/ g! S( P0 xcheck [101] 1
, L. x9 ?. S. X+ u) ?( e' S5 V#ACT# ^5 V/ ^9 p$ T, a
goto @PlayDie神武回收检测B. ?4 G5 p# k5 e1 I0 A# E5 n
#IF
0 ?2 Q; L7 Y% N8 Tcheck [102] 1) G9 }9 s {$ }) N* r/ ~4 \) R0 S
#ACT8 g$ s- f7 m/ |, S+ |' b C! k
goto @PlayDie烈火回收检测C
: [- |, `- E& ?1 S) r* mbreak$ B% V6 r. Z P! E
[@PlayDie战狂回收检测A]. v! z' ^. G6 x! ?/ Z6 e, _$ O
#OR
1 P5 h# ]6 w, SCheckitem 战狂精铁剑 1
" i8 b" s" R& \+ s# ]7 N2 P& j" aCheckitem 战狂精铁铠 1: X3 d" u5 _* h3 Y l7 m6 S
Checkitem 战狂头盔 1
: t$ r7 a5 S+ r! f" E4 j5 e: XCheckitem 战狂项链 1: o) E! f7 g4 ^. F0 Z
Checkitem 战狂手镯 1
" p9 Y7 M' y" q9 s; O: A" @Checkitem 战狂护腕 1% }: [* X( f6 X+ n& C
Checkitem 战狂戒指 1
' m9 H, N; J5 [& v) s( QCheckitem 战狂指环 1
9 b, R& E6 B& m0 X( h/ O d& KCheckitem 战狂腰带 10 R9 M9 F+ I$ k: o
Checkitem 战狂靴子 1# l, l4 @2 [3 b# p+ ^$ w: b
#ACT4 \5 {: V" Z4 W4 ]$ y! m
TakeBagItem 战狂头盔|战狂项链|战狂手镯|战狂护腕|战狂戒指|战狂指环|战狂腰带|战狂靴子 46 20 0 0 38000 N0 1! p) m3 o# a; {9 h
TakeBagItem 战狂精铁剑|战狂精铁铠 46 40 0 0 76000 N1 1
1 P( f9 }. l0 g, @MOV N$回收金额A
9 ]9 ^6 u- q8 nMUL N$回收金额A 20: K9 k+ z* h# d- l2 A* n
MOV N$回收金额B
, p' q6 \4 K! j+ N6 LMUL N$回收金额B 408 O7 K$ }! G; f# q% j7 a- X& k
INC U89. m- w- v" f# G6 q$ p* |7 i6 `
INC U89
- A) ?9 C% u( T% ]2 T0 B" D' C3 Z' uSENDMSG 0 【装备回收】:恭喜{[]|250:0:1}成功回收{战狂套装|254:0:1},获得海量[{元宝,经验|254:0:255}]...!!! 31 0+ D* Q( I$ h0 I! n, x+ _' U
break
; `/ t; _& k; t L[@PlayDie神武回收检测B]
) ]" k' d/ a1 {& H: q/ T! W#OR
( T. h$ g$ y6 J1 BCheckitem 神武嗜血剑 1
# Q( H; e8 Q* z* ^Checkitem 神武嗜血铠 13 x' h+ m7 f c8 \1 n. M
Checkitem 神武头盔 1% ^8 \: b+ Q" N# Y
Checkitem 神武项链 1
" E3 Y! U; Y* V7 ~/ j" nCheckitem 神武手镯 1, y( ^8 k1 b& Z
Checkitem 神武护腕 1
- Q+ w5 c; D- \, OCheckitem 神武戒指 1
4 h' ?+ {$ Y4 l* c V) kCheckitem 神武指环 1
0 ~1 r% H6 @3 Z! OCheckitem 神武腰带 1
+ s! R5 H% f; ]) c4 ~Checkitem 神武靴子 1# I B1 n: e7 {% g* n$ e( Y
#ACT7 @+ ~! i: R, b. g$ W, e% Z
TakeBagItem 神武头盔|神武项链|神武手镯|神武护腕|神武戒指|神武指环|神武腰带|神武靴子 46 40 0 0 40000 N0 1
1 r( J+ Z8 N: ~3 _1 DTakeBagItem 神武嗜血剑|神武嗜血铠 46 80 0 0 80000 N1 1/ R8 `6 B4 D! ]: M7 X- q
MOV N$回收金额A2 o3 D" b$ Q& K- K
MUL N$回收金额A 40% ^" X" ^2 a7 {# }# C
MOV N$回收金额B
) a/ i0 h; w: J* a6 v" E! TMUL N$回收金额B 80
0 X4 V' @* z: t8 I7 f# B4 ]% ]INC U89: K4 V4 Q: V" }+ W: g9 U& Q- e
INC U89; W+ U1 [' U( l. i% @1 d0 A( ?
SENDMSG 0 【装备回收】:恭喜{[]|250:0:1}成功回收{神武套装|254:0:1},获得海量[{元宝,经验|254:0:255}]...!!! 31 06 k; r% p- q! V/ K' m; R
break
( G" q- S. h' m* K' N- n: G$ L[@PlayDie烈火回收检测C]
2 P' s, X' g7 b8 W#OR {8 x4 K5 ^ P/ F
Checkitem 烈火焚天剑 1" M1 |, @# K1 B1 r4 m; Z8 T, J
Checkitem 烈火焚天铠 12 v" d1 ?3 E* U% V# g3 C8 C+ Q
Checkitem 烈火头盔 18 A+ I. k" O T. G6 _% ]
Checkitem 烈火项链 1
4 l f% d" O1 P2 k" Y$ wCheckitem 烈火手镯 16 j/ n0 t0 P3 L2 j5 W- c
Checkitem 烈火护腕 1
+ ]2 ?, w8 D: eCheckitem 烈火戒指 1
p* \7 `; m. z7 y% zCheckitem 烈火指环 13 u A. f' U+ u' w
Checkitem 烈火腰带 1
5 N) i4 s% h0 e* }$ ~+ WCheckitem 烈火靴子 1
. V1 u1 L) w0 {1 H5 @#ACT8 }/ a' J; m4 [# g
TakeBagItem 烈火头盔|烈火项链|烈火手镯|烈火护腕|烈火戒指|烈火指环|烈火腰带|烈火靴子 46 60 0 0 45000 N0 1 K0 V1 n( [! O: k9 H& Y; b
TakeBagItem 烈火焚天剑|烈火焚天铠 46 120 0 0 90000 N1 1: y* {: i' v) P' C9 I) d9 Q
MOV N$回收金额A
: F+ ~( U/ U, l" q# aMUL N$回收金额A 606 h) _9 o2 Q4 I, @" p
MOV N$回收金额B
) v0 t8 M3 b# PMUL N$回收金额B 1202 w1 w# i* }5 W" \
INC U895 H. V2 T/ L& w
INC U891 b! d. ?: a1 K7 S
SENDMSG 0 【装备回收】:恭喜{[]|250:0:1}成功回收{烈火套装|254:0:1},获得海量[{元宝,经验|254:0:255}]...!!! 31 0
5 R8 A. u7 G" M' d. q, H1 ^/ e) jbreak
; D, h( [; \+ t' ]: y4 r
8 @+ _2 G# Q' P; |( t
/ S5 K$ R+ W7 n- g0 q! w以上脚本为修复脚本,因为脚本前缀包含了系统禁止点击字段PlayDie,那么这脚本只能引擎内部跳转使用,严禁外部点击的,任何脚本字段只要不是靠NPC去点击的都可以使用引擎禁止点击字段作为前缀,当玩家使用封包工具进行点击时候,引擎上会显示日志: 用户:人物名称; NPCFunction 禁止点用该NPC触发字段playdie回收装备正常!反正只要不是需要鼠标点击的都可以使用禁止点击字符来做脚本头!!!!这样就无视封包工具刷包了,那么需要NPC点击的下面讲解!7 s$ Q1 h, x E; `9 M6 b2 n
6 t) {% R' a& i/ F0 ^$ \ |