|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
0 l5 [( N2 x' }8 \; O6 j主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 , [# m6 {) T) X
+ i. f* Q4 h8 Z2 }( o( ?
其實修改無敵很容易,9 t+ r Q: ?# l4 g: {1 | b$ E
就以遊戲程式設計的觀點來說,. a3 Y( \1 H( ]0 f5 H) w. m! g
一開始我會將人物無敵數值設定為0
N& E( P8 r* U8 J" Mex:
; E: r3 H4 n. Y) s, H& t#define InvisibleInit 0
2 {5 H' B% I8 E b/ H- ]
- A' p& L% Y6 k2 m- v8 b- S) t然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),! N7 M" [0 N4 u$ I. C8 i
呼叫設定函數6 G1 Z& Z; u0 h) v7 U/ o
ex:; O$ ^, ~) e' Y3 l. t3 A0 I
BYTE InviIniVal(EVENT event,BYTE SetVal)' b( G5 `& D3 M, X! t8 E, e
{: C/ Q# w" S4 z2 o1 ^# a3 [
//Deal event ...
0 F3 ]* x } s# i6 {5 D: i8 m( Q0 _" M3 {$ i$ E6 \
//Deal InitVal* L9 I. e: F0 T1 H+ J0 I8 q( R8 X
BYTE ret = 0;
( C, Z9 e9 E6 MSetVal+=InvisibleInit;
; q& B7 s. d1 ~# Q& _8 c" H2 N1 Dret += SetVal ;
( g) M; K+ c. ^/ J" S p, G/ l: hreturn ret;
5 l8 g* e& |9 i# M" `1 \# Y}
' |, i7 q0 ~9 ?, Y" ]& c5 b" U3 i2 g4 @' q4 Z& O
最後關切的函數當然是遞減函數:: R0 w6 D! ?8 q
ex:
5 W1 d- s; Q. j4 f0 X7 HBYTE DecInviVal(BYTE *InviVal)
1 r2 L3 S6 W1 S% C{
* u! L3 G1 O8 m7 N% ~) Y6 kcout<<*InviVal<<endl;+ L1 O: g' m& \" d8 {; q) W
(*InviVal)--; //*InviVal -= DecVal;
, |- } r2 v, R& F' g8 H( Gcout<<*InviVal<<endl;
* r7 Z& T- d; P3 `8 a) J(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;/ r0 E3 J7 \4 E( R3 B
return *InviVal;
4 {* n @0 ?: P! G- O$ D3 o}+ g, {1 Y+ `2 G- F$ F) I9 F- B
. p! K' Z* `4 [- T針對以上觀念,改遊戲就很簡單,& h! _: f7 }3 B; n+ x
一開始我們先初始化數值,輸入'?',6 R* V4 U! E1 l' B
接著開始無敵時,輸入'+',
6 T3 ~- X1 {) b0 h7 U接著我們知道無敵時間會開始變動,2 K& R K; _ {7 ~
以上例來說時間開始減少,每隔一段時間輸入'-',
/ [7 R% p& S3 a) H! P6 A最後沒有無敵效果了,輸入'!' 或是 '0'。* R4 K% M' T6 l& B" F
1 k: s; P+ T7 F9 ?3 r8 n \記憶體地址經由演算法篩選後,只會剩下幾個,
& y' N9 x6 g* O# i/ [) m( Btry 一下,你要的地址就出現了。0 m- a; I4 N. j7 t% I. i9 u
$ Z- _3 n6 Q6 u. d9 E; |
P.S.以上程式已經Run過,沒有問題。. M% }$ H1 e1 h3 }; @# [' U% |; L
% T5 M. S+ b" @8 G
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|