|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
. `5 f% J" L: }: x9 ^4 B+ o# m) b主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 4 h7 }& r6 j7 M0 p- V) M
1 D; a( ~0 K5 p; ?( ], ^( u
其實修改無敵很容易,6 r4 x6 i2 _3 Y, m+ I3 s
就以遊戲程式設計的觀點來說,4 r: j* g9 I/ I
一開始我會將人物無敵數值設定為09 D0 G; m/ _4 Y8 B5 G4 t+ J/ Z: {
ex: 0 X1 @+ f. z! w# M. J
#define InvisibleInit 0" p! w6 ?$ \9 M; W% q
# b* S* Y; ]. d4 u然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),: X0 K! M @( l6 f
呼叫設定函數! r, s7 c, e" f: D" C: Z
ex:
, t! d- f9 U1 r4 T& I* kBYTE InviIniVal(EVENT event,BYTE SetVal)
- f: G% Q# k$ @7 Z4 q{
" H Z" \4 Y5 V/ ~//Deal event ...
2 `# ]1 n1 S: ?4 W. P' z
+ g5 U9 z9 y) c# o//Deal InitVal
+ C( U$ ^3 r, [# d1 G' ^7 `& gBYTE ret = 0;% |; q( q( D5 W! o7 f
SetVal+=InvisibleInit;
2 n# ^1 q2 w+ Y# t8 bret += SetVal ;" e8 ] Z) J' B' t$ L! d: }9 |
return ret;
' p8 _3 s- S3 h} ) a% x: L( I& [
8 i! I" t+ ~0 A$ t! h" ~最後關切的函數當然是遞減函數:) ?2 V5 j$ ~, S' [4 g, J& n
ex:! R7 c8 D, R, p
BYTE DecInviVal(BYTE *InviVal)
: p& H. @5 D- z) _% Q" b& A{
3 U. C- K) p$ Ocout<<*InviVal<<endl;+ e. Y6 c2 C2 O% S" G( E" p, @
(*InviVal)--; //*InviVal -= DecVal;2 a5 g8 b& T9 k0 ^
cout<<*InviVal<<endl;1 d/ o E4 @: [5 F# g
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;9 w+ r: k7 U( @5 [
return *InviVal;
& e Z% i9 ~. l7 F3 d. W7 U; }8 d}
* u7 m4 h) V1 Q
& x6 {' c5 ?' {6 ~8 i針對以上觀念,改遊戲就很簡單,
) d+ L# @% ~( e# ~一開始我們先初始化數值,輸入'?'," E. o: n0 Y- N! q& q/ S/ `- ]
接著開始無敵時,輸入'+',
( K: l8 x- x3 R! \ D7 }( H接著我們知道無敵時間會開始變動,
" v- r0 h5 u% q/ e& {3 U以上例來說時間開始減少,每隔一段時間輸入'-', ^4 F- y/ p9 i& r3 {: P* W) Q: U
最後沒有無敵效果了,輸入'!' 或是 '0'。$ ~) m+ I2 x1 i+ j1 {3 M7 h) Q
8 M3 _% z# Q! b1 g/ W3 ~' [/ e記憶體地址經由演算法篩選後,只會剩下幾個,
- `. u0 S$ w, U1 d6 u7 g1 V4 d+ btry 一下,你要的地址就出現了。: N3 d' f( l4 E* {/ T
6 a5 C$ s* a4 v8 c) U2 {P.S.以上程式已經Run過,沒有問題。) o1 t2 r k$ c' l
) ~' A8 X3 C; o- f$ s! Q7 z2 Q& t
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|