|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
% @7 q n$ Z9 N* m主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 ! s5 {+ H+ ]* M+ v6 |& Q9 B
) B3 y9 {2 u b; V+ `
其實修改無敵很容易,
! _( ~& z( U8 ?" u( h* j4 `- q就以遊戲程式設計的觀點來說,
( ?! f F" T. g一開始我會將人物無敵數值設定為0- ?- s3 n1 R6 ?* I7 S
ex: $ }3 b% l1 Y( d5 ?$ m7 b8 a4 r
#define InvisibleInit 0
5 l' V d1 Q. Z0 x9 `) T' p* K; [" f1 @: q3 X, p9 [
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
! i# Q& j3 @+ R. e+ ]% p呼叫設定函數
n- p: l0 P# h! |8 U3 Rex:
% W! I: X+ E/ cBYTE InviIniVal(EVENT event,BYTE SetVal)
. \* J5 L* v3 S w) C( f{: s* ^" Y. j+ q' `1 Z" Z
//Deal event ...2 j0 l( o) E1 M8 t* {# R
: L/ _1 T9 O$ y
//Deal InitVal
: f* u2 m" D, QBYTE ret = 0;: {2 l! \: S9 w, U2 z6 Z
SetVal+=InvisibleInit;
& o1 ^) y0 h& X3 i9 d5 U" W7 x4 p0 Oret += SetVal ;
5 J7 l$ o: K- y4 \return ret;5 L3 B6 `% ?5 O1 ?8 U) l( U
} / ?/ o* I+ S+ q3 m+ o% q6 w
2 f" M1 g7 \' |( ~6 K最後關切的函數當然是遞減函數:
5 [6 P0 e& E# R8 p5 v+ i% uex:% W7 i* }; f! }! z
BYTE DecInviVal(BYTE *InviVal)
0 x( {% o% ^' ?2 P- f{* T. a8 m i* w# w( Z8 C
cout<<*InviVal<<endl;. z) {: {% z; ^ y4 y' l. X8 E* K
(*InviVal)--; //*InviVal -= DecVal;+ u$ E" }$ M' c7 F9 ]* }! v
cout<<*InviVal<<endl;
& _/ r4 i3 e7 h. i. V' u8 l a6 i(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;1 q+ t" |6 `3 t' ^) [% b. a! c
return *InviVal;! U0 g9 z; `, k5 m8 A. h
}
z5 ]5 C7 T7 M [: H: i
& f4 r4 w: ?/ w* X/ B針對以上觀念,改遊戲就很簡單,% K6 ?* [* D7 a9 e) V
一開始我們先初始化數值,輸入'?',$ x, k" T" O7 O5 U, V; Y
接著開始無敵時,輸入'+',& r- ?1 f3 N/ b' M1 {3 ~
接著我們知道無敵時間會開始變動,
. ~& M# W- m/ {8 I! E以上例來說時間開始減少,每隔一段時間輸入'-',/ G4 ~' R, W8 R; Z3 ?3 o
最後沒有無敵效果了,輸入'!' 或是 '0'。( `( m# J3 n5 V# K7 o4 [
4 n- r' `+ t6 I6 E1 ^- H
記憶體地址經由演算法篩選後,只會剩下幾個,
$ J1 i9 i/ W3 o+ R B3 ]( J* rtry 一下,你要的地址就出現了。% q* ~9 n' j, g- c1 } V3 C
' }. h( q1 V. [- Z8 Z, sP.S.以上程式已經Run過,沒有問題。5 K* Z0 n8 U# d+ L7 i
. D9 n. J' e- H+ r# f( H2 M
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|