|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
/ R+ X" _$ e4 W/ j( g主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 , L0 i" L: m" M$ m8 X
/ M; L" ~0 d' F9 v: f4 ?/ V8 Z其實修改無敵很容易,
2 M. p! q% a& S) }5 D& `就以遊戲程式設計的觀點來說,0 c5 D* m! L4 V
一開始我會將人物無敵數值設定為0
}. C" a4 N1 G5 h6 Z9 E6 w9 Iex: 1 \" s7 j( U" G* `- |; Z
#define InvisibleInit 0
, Y- i I$ e# y2 X, n- Y: }2 t5 s) V7 h" m+ `2 l% h+ Q$ Y: B' z
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
1 G; {5 y. l7 {5 [ p: X呼叫設定函數. \- m0 s3 X: u5 P' v3 n+ J# {+ T9 M
ex:) J3 j( C0 V3 W$ x ]" R+ Y4 w' L
BYTE InviIniVal(EVENT event,BYTE SetVal)
# u+ e2 j, F+ ^) I+ e4 ?% B: N; Q{. N# g4 ?# r1 Q3 _1 C# }
//Deal event ...
8 s1 \( N. I; n+ ~% `) M! x; d/ p5 d# E" r
//Deal InitVal% }2 Q" i' c- _* P
BYTE ret = 0;! I5 {% a4 ]1 t+ W# y+ x
SetVal+=InvisibleInit;
: c! I i' a- c3 C; P; Oret += SetVal ;
2 s8 e+ v R3 j3 Dreturn ret;2 C# a. z1 [$ e" X2 ]0 W' v1 O
} # F8 b4 [% {# M3 s
; Z3 s% K9 c1 I k2 s
最後關切的函數當然是遞減函數:
" q0 T% |( o* O# B! Z! wex:
( L# K3 T* G, g7 J! L0 tBYTE DecInviVal(BYTE *InviVal)0 h8 I) t2 l* _ N$ K. p9 B
{5 [: Z* i; t/ B
cout<<*InviVal<<endl;8 L Y# j6 ~) w& X
(*InviVal)--; //*InviVal -= DecVal;
5 X2 t) x) l4 U# U2 p! Xcout<<*InviVal<<endl;
# q* C' a- c) A* h8 x p(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
* y! C% W6 {5 q% Q# k3 k Hreturn *InviVal;8 H6 X6 m" t u( T4 a3 x
}
4 Q# I( B( d& U/ o c" M
. A3 }2 r5 Z7 t" G% H, |針對以上觀念,改遊戲就很簡單,: ]/ |0 M$ @7 n( H
一開始我們先初始化數值,輸入'?',
. R$ r9 D8 f% ?4 ]接著開始無敵時,輸入'+',, y6 D. b) P* [- f$ B1 X
接著我們知道無敵時間會開始變動,
4 J, q2 M. _; T3 s8 K. \以上例來說時間開始減少,每隔一段時間輸入'-',6 U$ I9 J1 v" G' {% |& B/ ?& G4 H
最後沒有無敵效果了,輸入'!' 或是 '0'。# E3 Y9 k, o% {2 q
1 ~; j) T! A# D8 l& i' G8 j記憶體地址經由演算法篩選後,只會剩下幾個,
6 h! N8 x1 X& A7 Atry 一下,你要的地址就出現了。
4 \" f4 k) f' O
7 x6 P: Q8 b2 I" b& @0 }6 f/ PP.S.以上程式已經Run過,沒有問題。* s/ x* @3 s" E2 s* k
5 |' ]" j1 a+ g, s/ n: {5 R# B
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|