|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
7 U* U+ E9 Q n+ [主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 0 v' T$ S3 u" q* r+ F
& q; f% n! w* u ]9 ~其實修改無敵很容易,9 W" \0 b0 w1 Z& h5 R- v
就以遊戲程式設計的觀點來說,
( Y5 {; U( C# v一開始我會將人物無敵數值設定為0
% n0 w" O; s4 f5 a6 w8 o, mex:
8 d# v, c: i5 Z5 t. P; s6 W/ m2 c#define InvisibleInit 0, U) w( S% q2 y" D) o! x0 J" a
& m1 T4 J" I. z& K
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),6 [3 p5 v2 O0 U( q
呼叫設定函數0 [& R7 F- d2 i
ex:
% o- ~% s- ~5 aBYTE InviIniVal(EVENT event,BYTE SetVal)
$ H% y5 t" h7 D{0 h E C$ {$ [" C( e; r3 v
//Deal event ...
9 q; F3 z- x8 K% [. q$ p' [: a/ C2 X, u' f( T
//Deal InitVal
/ d4 p. d/ J0 V" p. r$ R, sBYTE ret = 0;
, R- u/ t" w, F( O* f* L; SSetVal+=InvisibleInit;
4 r$ r# U# y9 g1 l" r0 C+ W3 n: J7 lret += SetVal ;- X/ a2 O% w% `9 k7 V
return ret;
1 j; j6 z3 X3 H: N9 t} " d5 Z: A* F+ A8 C7 I
4 y0 @$ g3 u! \% Z9 p最後關切的函數當然是遞減函數:
5 ?, \0 b$ j5 H. }0 \ex:' B/ o+ S3 [% p$ x
BYTE DecInviVal(BYTE *InviVal)
% b `# e- |7 t- N5 `# q{
5 [/ f0 x" r1 ^! rcout<<*InviVal<<endl;
$ L4 Q& R5 T; \ N1 C(*InviVal)--; //*InviVal -= DecVal;( ~' ~' @. N/ D
cout<<*InviVal<<endl;
; J: c1 X- x/ W. y: ?7 D(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
3 y+ y1 g' u' I6 s" Wreturn *InviVal;8 x8 l/ M; d0 J& X6 C5 ]
}/ A& n A; f6 v8 E; `1 ]
; V" j( o" ]. D E% K- n
針對以上觀念,改遊戲就很簡單,
0 `- H" B; m4 o. [% G/ K一開始我們先初始化數值,輸入'?'," B }1 |+ h4 \, J+ u6 ~. Q% ?- ^" w
接著開始無敵時,輸入'+',, \4 c+ v+ C6 n1 u8 h9 Q; |( E% w) s
接著我們知道無敵時間會開始變動," B: J/ U8 I# J# e
以上例來說時間開始減少,每隔一段時間輸入'-',/ N4 n- o4 f. ~, C* @0 Y
最後沒有無敵效果了,輸入'!' 或是 '0'。6 b; ?/ R$ s* m* J+ C0 w
$ b! K. W# o" @4 T
記憶體地址經由演算法篩選後,只會剩下幾個,
8 G, H4 q$ P1 y# d+ o1 dtry 一下,你要的地址就出現了。
: }! v; j* m) p+ f1 g1 K3 H# `1 Z; Z. w# x! q
P.S.以上程式已經Run過,沒有問題。7 l4 R2 h9 t- |7 q- J8 z! b
+ I5 Z8 G- p1 V[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|