|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 . T# t' x. j) g# y
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
) m' w* h! N& O; z" I+ V1 J3 K1 | G. a, f
其實修改無敵很容易,( |4 o) S$ p" T0 @
就以遊戲程式設計的觀點來說,
% t) ]2 F/ k4 m3 ?0 Y* @ o一開始我會將人物無敵數值設定為0& R; V% ]. x* n, X( O5 g
ex:
3 L* y8 j. m) n; m/ u( v# P#define InvisibleInit 0
* M: k8 C% K' S' `& L& s
. L) d* B o: S. s! ~然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),' w* ~3 J3 D+ I* I+ y2 @+ j( X. {- E+ \
呼叫設定函數
6 P' \" S( F+ wex:1 D, F; `6 P: M" L
BYTE InviIniVal(EVENT event,BYTE SetVal)
* U8 s' d# N2 X c: {4 e" B8 x! ]{- m5 Z* x- z! [
//Deal event ...
1 i$ f' t) x7 x* I/ F8 ?0 R+ d9 @/ N
) a7 H% H. A2 G' }//Deal InitVal
. c8 F% |" S0 ?8 rBYTE ret = 0;. n9 i6 o- ?2 M
SetVal+=InvisibleInit; b8 N5 v& }4 q8 n, o, B
ret += SetVal ;/ R; g C+ F$ p8 m* f: T
return ret;1 u, Y8 @+ u8 |6 D
} ' z$ d- F$ [. ?7 L' {
! K Z& o$ a7 o) K最後關切的函數當然是遞減函數:1 _/ A1 g- Y8 W* B+ `4 m
ex:8 j) e. c1 K4 o9 f4 D
BYTE DecInviVal(BYTE *InviVal)
0 v' b( E( ~* K; L# G' d{& A$ d+ V- \, U1 s" `: \! a
cout<<*InviVal<<endl;
0 `$ j! {, X" p- x) ?(*InviVal)--; //*InviVal -= DecVal;
5 T& r6 ~5 X, t" qcout<<*InviVal<<endl;
B5 d2 Z# S( p4 C6 m" v(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;7 U: _' b2 F2 g) r6 b3 b
return *InviVal;
* i# v2 Y% ^3 X8 K- z}
- Y7 [5 ~) t' j5 W- ~, R) t5 b8 h5 s; ^3 r
針對以上觀念,改遊戲就很簡單,0 X% W2 d- B9 Z
一開始我們先初始化數值,輸入'?',- Y, A. a$ U* M+ Z4 t
接著開始無敵時,輸入'+',9 e" c& V5 [$ N# u; L
接著我們知道無敵時間會開始變動, u$ k3 z% E1 @# c1 ^/ h
以上例來說時間開始減少,每隔一段時間輸入'-',4 x/ M3 y, F' d! }' m
最後沒有無敵效果了,輸入'!' 或是 '0'。
' }) i9 R+ f" ^5 T
9 e: s+ `6 I" H F# r/ k( A: s記憶體地址經由演算法篩選後,只會剩下幾個,6 K' F2 n6 J$ H9 u8 c4 W1 O9 J
try 一下,你要的地址就出現了。
& J: C! L; P. [# k5 ~
: ~$ H% L3 Y3 I- w; r8 Y1 M; MP.S.以上程式已經Run過,沒有問題。
" U3 @; k7 o! Y% u# Z
7 |2 q" S7 H) q) F[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|