|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 : j4 F. Z! k6 F, S5 r
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 % |4 }1 W2 {* j. Q; A: K
: M, a- G: z& f7 p) U. t! y
其實修改無敵很容易,; e" [: j9 \% s: X7 X& E2 s
就以遊戲程式設計的觀點來說,
0 y2 Z3 ]4 t: E; j; a2 n一開始我會將人物無敵數值設定為0* Y, g! i, g- {. M8 x4 x
ex: - u# `6 C) b) `; Z! k
#define InvisibleInit 0
@+ ^3 p; z' ^8 S1 a- ?) T/ [) w6 v$ `" ]
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
2 ~+ m4 K9 G( A! l呼叫設定函數
7 Y! v' q! E3 i7 A& i aex:
5 X2 L/ [* g9 ?- \+ n* \BYTE InviIniVal(EVENT event,BYTE SetVal)
& E5 [$ h1 R2 ]5 T |{) Z2 |* s9 ]+ L! k$ m3 B
//Deal event ...
- o0 q8 w# `0 ^6 g4 v' f4 }; M
; a" @1 X; Y& s//Deal InitVal
6 d( [5 T# b# T+ P+ ZBYTE ret = 0;
. y6 P2 o/ C$ Q# r) J7 GSetVal+=InvisibleInit;8 z1 j! l2 C5 }
ret += SetVal ;
: e& D! U( n) F( e. I1 wreturn ret;
8 n% `% R# }. L+ F9 S8 i} ! x3 s3 s; V2 b, w4 W7 k
* X) G% @: A5 h- a( F0 I5 r s6 K4 Y
最後關切的函數當然是遞減函數:, S6 @' ?0 c) O+ l
ex:
9 V' N9 [5 P/ a0 }3 M+ D/ dBYTE DecInviVal(BYTE *InviVal): ?: c, x7 [& c) a# U0 p8 L
{: e$ v1 y! I# H1 P% [
cout<<*InviVal<<endl;
8 g: W4 Q( h; R, ]- W; s' Y(*InviVal)--; //*InviVal -= DecVal;# m8 R# f6 q& O5 y* N
cout<<*InviVal<<endl;( K0 X9 D) d7 n
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
0 ^! S+ |+ X$ C/ Hreturn *InviVal;
$ {! n7 ~4 B/ W0 j# n! ^}
Q9 z6 v) f7 q2 t
/ N) @- ^+ ^- \( v3 w8 R" _針對以上觀念,改遊戲就很簡單,
7 n* M" f% i, ?一開始我們先初始化數值,輸入'?',/ e: o0 X" E, V( K) K7 _
接著開始無敵時,輸入'+',
) Z x$ A9 R8 f) g接著我們知道無敵時間會開始變動,
6 x4 r2 ^& a. E以上例來說時間開始減少,每隔一段時間輸入'-',+ t, i5 Z* N# j; {9 M$ B
最後沒有無敵效果了,輸入'!' 或是 '0'。+ h5 f7 q* f# Y: z. b! ^# i$ Z
" R, a8 C% A! G* C x記憶體地址經由演算法篩選後,只會剩下幾個,
; }/ ?9 q# z; {; ?, |& N* e/ x4 W: @try 一下,你要的地址就出現了。
) d0 W0 U6 e6 l4 l6 c3 G3 Y1 X4 D+ b
P.S.以上程式已經Run過,沒有問題。( W& `3 D+ p5 @: X) w
0 T2 X5 n7 A0 S( ^: t9 {9 T
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|