|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 ' c+ ^8 T: q6 B% U7 e
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 3 \4 f0 b& J6 U+ V
" h+ C7 A7 S" h
其實修改無敵很容易,
2 Y) d7 t# o J/ I3 M+ m: r就以遊戲程式設計的觀點來說,/ e/ J( u$ I. N) j% ^; O- t7 }; F
一開始我會將人物無敵數值設定為0
" g& T- N3 x- h: F" Q' \0 wex: / I- X1 q3 |6 ?" b. I) M
#define InvisibleInit 0
g" K' J8 Q3 J- y2 F
0 B+ B4 I2 h" n% C然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
) b) \% e* O, q$ ^* W3 n2 ]呼叫設定函數
6 v6 f; V, u/ ]4 `6 Q# o, [7 y, pex:) a4 `$ R m- F# T1 C/ o8 `
BYTE InviIniVal(EVENT event,BYTE SetVal)% t1 K; i; k7 i- f
{' q' s# X' k/ @+ S
//Deal event ...
! M+ L& I6 l2 D( G0 N4 R
; G7 |2 h* A8 T; Z# j( `//Deal InitVal
8 b6 K0 V( s$ c# _5 dBYTE ret = 0;
0 F8 W4 n }. \7 M) CSetVal+=InvisibleInit;
$ c" X/ C- X) i ~3 ~2 w7 [ret += SetVal ;
, [+ c* l& b1 e8 a: k- Mreturn ret;5 A/ A p& F# C
}
4 T1 B- h6 c3 B( V2 t% X9 {/ P% ?1 P3 l# V
最後關切的函數當然是遞減函數:7 I6 u( O3 v/ u% E5 i9 n( H [: V
ex:
/ q6 [) O L% n- SBYTE DecInviVal(BYTE *InviVal), T9 O4 v/ j, {* D, a, {
{5 h9 C- ^) b& d$ O) g9 J' N
cout<<*InviVal<<endl;& H9 U% F+ Q* u6 r. D: b" B; s
(*InviVal)--; //*InviVal -= DecVal;3 P0 t5 f) [* g9 V
cout<<*InviVal<<endl;* ^" I% @% f9 a1 X6 c6 q
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
/ }$ j h& B( A: ]! ~/ `return *InviVal;* }) ?. ~) d; a) B
}2 ?, G X) t+ t5 S: y1 E
# e) y) @+ R z |針對以上觀念,改遊戲就很簡單,+ B" e M# x- I0 M
一開始我們先初始化數值,輸入'?',
- U* _1 a3 w% j3 S. y: Y9 T接著開始無敵時,輸入'+',. n f( G$ l2 i4 I9 S
接著我們知道無敵時間會開始變動,
- t$ X7 a1 @ X4 @! h: E以上例來說時間開始減少,每隔一段時間輸入'-',
, Z6 V2 D3 O# P& e最後沒有無敵效果了,輸入'!' 或是 '0'。
8 ^' B! p7 v) q' i4 O/ ?& {& {
記憶體地址經由演算法篩選後,只會剩下幾個,
) c5 @; q$ a& @ Rtry 一下,你要的地址就出現了。0 I9 v$ n- b" P0 `- x2 E% G3 Z( @& F
v4 u+ b# m/ U6 g( G! _
P.S.以上程式已經Run過,沒有問題。
5 @+ o( l3 E# X2 t
% G+ `7 c5 q0 b5 a[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|