|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
( N5 t( P. L6 r' A* Z" h1 q主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
6 y& I- v( ^5 O: I* n0 |8 `6 M1 B. ]. P& q
其實修改無敵很容易,
N' f4 Y7 n# x4 B就以遊戲程式設計的觀點來說,
0 J+ ]/ B3 O* q& S) |# Z( o' B一開始我會將人物無敵數值設定為0
; M# o7 C6 _" n! J) oex:
% M) u2 r6 }/ e l! ~' ?" p#define InvisibleInit 0$ K% D5 f0 Y7 b) O4 j% V
# C. s% Y" K9 }% J3 K$ @
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),: S3 @6 b( P& T) Q' @
呼叫設定函數2 J* n/ z9 X. R; ~6 T1 n
ex:% Q* {* k+ V! j# O1 ~
BYTE InviIniVal(EVENT event,BYTE SetVal)
5 F8 a3 H; I+ ?2 [- Z0 p{
" ~; X! j& U8 z% @& o( Q' [//Deal event ..., f& b$ w" k9 i2 w/ H
$ I8 l+ {% o# A% x# T5 J& H//Deal InitVal3 z" H4 g: s/ @
BYTE ret = 0;( O, |" S4 K, |; E$ p
SetVal+=InvisibleInit;; X' I8 B( B7 ]- D
ret += SetVal ;
/ e- P2 n) B4 nreturn ret;# R8 _7 X+ ^8 L- C# l& h
}
0 u4 A' n3 n- S# o0 `2 p4 D7 v6 d( I. p" \1 T6 X
最後關切的函數當然是遞減函數:
" i- Z; Y* L* Q3 d) ?0 J! i) \ex:/ l/ d. x1 E2 n, ~. S+ t
BYTE DecInviVal(BYTE *InviVal). b1 `8 M; V4 N7 I8 C7 Z+ g
{
- D4 B; I; w% G) tcout<<*InviVal<<endl;
; u" v+ O# M- B# R6 t7 V(*InviVal)--; //*InviVal -= DecVal;' C/ H# G1 ^0 ?0 w
cout<<*InviVal<<endl;
% n+ o& R; H" w(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;" @ v( e! n# Y! d7 x0 q/ B
return *InviVal;
6 ^6 s3 g+ J& F- D$ v) `1 f}
7 @3 a. d7 ~9 V3 ^" k$ h9 L& P9 r0 b: H7 R& i- n2 [
針對以上觀念,改遊戲就很簡單,
1 F9 h# c; H" j ]2 C" a一開始我們先初始化數值,輸入'?',& ^3 c. g: o6 p0 e" |; J; @) f3 C
接著開始無敵時,輸入'+',$ _& N$ N$ q# Z9 a) m1 R; j
接著我們知道無敵時間會開始變動," _" l% @$ C! f9 G0 _: B
以上例來說時間開始減少,每隔一段時間輸入'-',! X' n' R6 I& H' Q' h& t, F8 ^: v) t
最後沒有無敵效果了,輸入'!' 或是 '0'。
0 V, T J9 x. h5 |! t2 W5 J0 j6 q7 s, w5 Z* w- }3 F) S; \0 R
記憶體地址經由演算法篩選後,只會剩下幾個,
5 E+ s# ]5 ~; n, C( Utry 一下,你要的地址就出現了。
- j2 E1 W* `7 n0 o$ R+ _* n$ Z$ e+ V. r9 w: \ C
P.S.以上程式已經Run過,沒有問題。
4 F" i/ f. t* W& x
( k I/ U5 V' R# r[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|