|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
7 F1 O' O* G+ S" U2 W主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
$ b: D8 R9 l2 ?; y+ `, N9 V$ P+ |
其實修改無敵很容易,4 q; A5 }' m$ h, I: s
就以遊戲程式設計的觀點來說,
0 z1 f1 V5 R4 }; L7 m一開始我會將人物無敵數值設定為0. G0 U. `" ?- h# C7 D
ex: 3 f- e0 h2 I( z- G* c
#define InvisibleInit 0
O2 i2 L4 m/ W/ I& U) J8 K1 P' K8 k
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),; I' q" {% w8 i
呼叫設定函數
, p/ g4 |; L) o% {$ X( Aex:! T" J- L0 Z8 X
BYTE InviIniVal(EVENT event,BYTE SetVal)
7 d3 p; M3 W* e2 }" M* H7 F5 s{4 r1 p2 t' q7 a4 i" P8 `8 i" e% l6 a
//Deal event ..." B c* C W- v2 \$ {1 D. L( p
7 s' G/ _' A8 O2 l& v( N R( L; H//Deal InitVal- @. O! U- b0 ^* I+ z
BYTE ret = 0;
% y' s9 j! X7 k0 T6 FSetVal+=InvisibleInit;$ ]7 J3 b/ u4 r! E. m3 D$ G
ret += SetVal ;
; Y+ R8 J& R# ^ A Yreturn ret;6 r4 T+ u- e' }. V c4 @ E* X6 y& A
}
" ?6 e0 p a |' i
( C K( Q1 i% e8 l7 g' V, Z最後關切的函數當然是遞減函數:
, e' e8 S0 m- p9 E. O! zex:2 p! R/ k% d7 o2 E/ [3 R( ~
BYTE DecInviVal(BYTE *InviVal)
% {' A$ r, x$ C- R, S3 M2 s6 r8 r3 a3 f{4 M- e+ I D8 ?) {+ u
cout<<*InviVal<<endl;9 ~: r/ d2 {! t1 {( K. }7 o
(*InviVal)--; //*InviVal -= DecVal;
$ ?6 i; |+ H5 k) c2 C6 ocout<<*InviVal<<endl;
) I, I. z# Z, i+ o' Q6 d(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
# a' J3 _+ Q* N, M& X, V% a% R% B' u/ creturn *InviVal;
2 N" I6 H7 S% @}* n3 p! |; q/ z( a8 M& I8 D/ Z
: o8 I$ _3 k: q2 k) z, s P
針對以上觀念,改遊戲就很簡單,& n$ ]- v* [& v. Y% K: `
一開始我們先初始化數值,輸入'?',. R& Q; T. Q4 N
接著開始無敵時,輸入'+',' H& r3 O/ t# D6 V+ W; u0 o9 W
接著我們知道無敵時間會開始變動,$ ]4 v1 U; |$ x; H
以上例來說時間開始減少,每隔一段時間輸入'-',$ U6 f- U' W( u0 p, ]
最後沒有無敵效果了,輸入'!' 或是 '0'。' O' D2 F. J, P
8 y! V2 }5 V* ]# {記憶體地址經由演算法篩選後,只會剩下幾個,1 C2 H8 m9 r% N* m0 K2 u
try 一下,你要的地址就出現了。- o+ ]+ v/ D( b# G
* ?7 D3 L/ `* n7 L0 bP.S.以上程式已經Run過,沒有問題。1 i9 a2 |" {5 x: i. F
& L& P1 H3 x. c. a: n1 c[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|