|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 R% I7 g/ [7 ]9 q, g& K
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 / H- V& b3 |8 N" @& C
* y/ i" L+ o, w) y其實修改無敵很容易,
. ~2 _1 Z8 Y# | ]就以遊戲程式設計的觀點來說,1 ] [: z1 G3 s% M9 H& G! y
一開始我會將人物無敵數值設定為0
/ h2 q" y. m; gex: 6 l4 n+ M) E1 m c7 v' y1 P/ O! V
#define InvisibleInit 0
' W- L( D- H$ ^. R! _0 k- L9 {- E: s' \: E
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
! @" V5 e# s: _6 \呼叫設定函數7 g- r; L( {! [5 d
ex:
3 A8 P. @: ^7 o% u( t" A; fBYTE InviIniVal(EVENT event,BYTE SetVal)
3 I0 y8 E3 f* A{8 @) _9 `2 [3 |; Y1 h
//Deal event .../ m7 r b. [+ \
& y) a/ x* X$ T% t+ n//Deal InitVal
3 Z+ d( ?' Z. o$ ^BYTE ret = 0;+ T q1 ]+ y- {( d
SetVal+=InvisibleInit;+ b5 K8 y; ?5 P6 k4 c- r2 f
ret += SetVal ;: B* l0 H% i, Y- M; l+ w
return ret;" {7 P: T4 K! z5 A' w$ @2 Y% |3 s' `
}
`" s0 c6 ]7 s- c" P2 s7 D3 k
4 m3 c8 ~2 Y5 e) I* i最後關切的函數當然是遞減函數:
' j2 h7 o0 I: Bex:, `* \% u% h/ X% F* H
BYTE DecInviVal(BYTE *InviVal)
+ F7 |, F. I, {. Y{! ~- ~5 t/ a, l
cout<<*InviVal<<endl;
% m5 A! S) v* e(*InviVal)--; //*InviVal -= DecVal;$ o& y: d) p( p1 n2 M% q
cout<<*InviVal<<endl;
9 v! K6 h/ H6 J6 a' @; a(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;3 k$ M6 H! o$ [" v% S" f
return *InviVal;
/ \0 h) _8 d: h* a9 l' m}
9 m4 |7 x" S0 x7 `3 t X; _
5 O; E4 Z; M: ^針對以上觀念,改遊戲就很簡單,
& F6 E& }2 G. w一開始我們先初始化數值,輸入'?',
2 g9 o* V" z0 S3 [+ E" [4 x接著開始無敵時,輸入'+',8 {, j! c5 s, i
接著我們知道無敵時間會開始變動,; B3 q/ ~' ~# j' F4 W
以上例來說時間開始減少,每隔一段時間輸入'-', ]( N: U# A* v7 b% a9 A! ~
最後沒有無敵效果了,輸入'!' 或是 '0'。
' Z: T. h+ w; ]. t& j) q1 K( w5 W$ N
4 ?, Z$ n# w% H. }6 F; e/ e記憶體地址經由演算法篩選後,只會剩下幾個,
! p& v9 n0 [# {$ i7 ~; ptry 一下,你要的地址就出現了。
% I" @5 V$ ^; o! r: u/ k/ d) X- f/ A b5 m5 y0 a z0 o
P.S.以上程式已經Run過,沒有問題。
6 {3 T, j; l/ Y; Q
c, h# B# d) W/ R! Z2 c+ T[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|