|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
2 d. H/ E1 l' \) O( H4 W t主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
1 m6 |6 V- ^8 @
- t# i: m! k. D! A3 W) A其實修改無敵很容易,
. F# F, ? m- H1 F" B就以遊戲程式設計的觀點來說,; b f0 _9 N; ^4 v0 k. h3 O, E, P' R
一開始我會將人物無敵數值設定為0( I& g% u0 V8 u; X+ X1 B
ex: 1 O* [, L$ Y/ Z( i
#define InvisibleInit 0; p- \' p# {. m* h$ Y% g
2 ~' _! | \8 E C然後當觸發特定事件,例如受到敵方攻擊(物件碰撞), y# O0 Q& c; C# d; m2 s
呼叫設定函數
! D& [+ p3 l; C: fex:
/ ~' U+ ~/ T1 |" \4 n6 |6 DBYTE InviIniVal(EVENT event,BYTE SetVal)
* t7 B; \' |$ J0 a' i{
) B& ] y& ]4 ^- \//Deal event ...
f/ D2 f7 T' q3 ^/ M4 w8 m* a7 N7 O; F7 }8 B$ |/ y1 l4 `9 X2 |5 r3 q
//Deal InitVal
' g9 g/ Q$ b0 b: EBYTE ret = 0;6 s# W/ h) h$ Y1 N1 ]( F; M9 Q% k6 e
SetVal+=InvisibleInit;
; o/ t, b3 Y9 Pret += SetVal ;
5 {6 L/ |2 A7 X* T% r' n, Zreturn ret;
2 G# Y {6 T2 N} : W$ z8 }% Q1 H6 O6 D5 [# g$ ~! ~' ?
: h+ t+ s$ C7 [6 b- p最後關切的函數當然是遞減函數:( n- r T- m; Y4 t+ K: `
ex:
$ M5 i- U+ X. G$ g, k3 DBYTE DecInviVal(BYTE *InviVal)
( q" c3 d* S/ X. K7 n/ x: X: j* D{) c, X7 N& c0 g3 |) D+ A
cout<<*InviVal<<endl;
) u+ c5 S' R( L6 o/ a(*InviVal)--; //*InviVal -= DecVal;
* J5 Y+ _0 a- Fcout<<*InviVal<<endl;
1 b* C F7 M4 e" A. n+ B* A(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;% F/ H. H( h! D y4 G' _: F: N- b- B
return *InviVal;- P5 f, _- S3 A. q, e$ U
}) P* k Q! `8 [
' R2 H3 ^: |9 h( J; l3 o7 z
針對以上觀念,改遊戲就很簡單,
9 [: g* _% R1 G3 i1 G" V$ ^一開始我們先初始化數值,輸入'?',. E# Z: S! c% n
接著開始無敵時,輸入'+',
" q& d# ]7 X9 y$ }& @8 q& G接著我們知道無敵時間會開始變動,: ^- y& _, ^! A* `# [( {
以上例來說時間開始減少,每隔一段時間輸入'-',
$ Y( i ]8 o5 ^5 v& D. H最後沒有無敵效果了,輸入'!' 或是 '0'。
1 {. q) w0 k0 i3 {( \
& j& f8 j/ b ^0 X# r記憶體地址經由演算法篩選後,只會剩下幾個,
( A; P* c, p) m) V. d2 I. etry 一下,你要的地址就出現了。
( |( P. W y3 p/ h4 e6 A* y. g5 t1 n% G* E' }: X
P.S.以上程式已經Run過,沒有問題。
) N$ b3 c' d$ a' g6 O; E( \! | d' W) X
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|