|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 $ V4 l8 ] G. C) A
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 1 U* t6 p9 r6 y( r5 x2 I1 q: P
; [& o1 f* i+ C- d8 P9 M" H* e. }
其實修改無敵很容易,5 E7 C4 j8 |2 _3 S0 `
就以遊戲程式設計的觀點來說,8 j2 x" e) h- i+ r0 g
一開始我會將人物無敵數值設定為0% P: h: g* `" x8 a( g( P
ex: ( s# r7 [7 z3 H+ Q5 N" }
#define InvisibleInit 03 G: H$ r1 H' q d' M
$ Y% e7 Q ^! u. E然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
( u: T- i! k$ K呼叫設定函數6 J: Q* d9 ^& K7 |, ^& f9 E
ex:
' X$ E ~4 N( o' w, b. qBYTE InviIniVal(EVENT event,BYTE SetVal)4 v; R+ m0 a: g- _( D
{4 @( X# @* k" w3 w5 J6 y& N
//Deal event ...7 H' T1 H! V$ l2 b$ c+ _& k, ~
6 @0 s$ W/ u3 V9 T+ n" T+ U
//Deal InitVal
' d/ O0 C) A+ pBYTE ret = 0;
& L2 f7 {6 O5 q- j' ~# i( FSetVal+=InvisibleInit;. u; `/ |8 c$ F
ret += SetVal ;0 }( m7 C* U/ Q1 s
return ret;
( n2 H6 C, Z2 d/ f} " a4 o6 W* [8 c$ H1 a. |
( u0 L9 z% ?. q" f+ _最後關切的函數當然是遞減函數:
4 ]4 F V. U d. G" y9 {3 @ex:
! J6 d. @1 c' ?# IBYTE DecInviVal(BYTE *InviVal)
5 m# @# D; \4 B7 o# e, y1 [: i' p{
2 D& }% c' @- y" Ycout<<*InviVal<<endl;2 j* K# K' J3 Z8 ^! }5 k4 [; E8 m: z
(*InviVal)--; //*InviVal -= DecVal;3 o5 k* p3 i& p1 `$ r I6 o+ \
cout<<*InviVal<<endl;
7 B2 Y4 p2 G; Y* O(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;8 m/ Q" C. F4 ]6 l
return *InviVal;+ M; k" s& k) Y) v# H4 s/ a
}3 t: T0 p- ~; ]
5 f; o6 D/ O$ S/ `( U! u' G! C& {針對以上觀念,改遊戲就很簡單,8 F7 x5 R0 s" f, y3 K
一開始我們先初始化數值,輸入'?',* Z; [4 M% K8 F( U2 n8 y8 x
接著開始無敵時,輸入'+',
$ l5 F; _# h# Q$ U接著我們知道無敵時間會開始變動,
# j$ \( z( O0 ^! s' R5 @以上例來說時間開始減少,每隔一段時間輸入'-',* a0 {" z) Q$ m+ n7 _1 Q
最後沒有無敵效果了,輸入'!' 或是 '0'。: ?( a }( n, j3 T
* l+ j' R; `" t4 j( F/ Z9 I記憶體地址經由演算法篩選後,只會剩下幾個,
& j" z4 }% i1 Q! btry 一下,你要的地址就出現了。/ k1 A% a" k+ f+ V" _
; H! n8 }& G& ]6 D, tP.S.以上程式已經Run過,沒有問題。
: q5 M- p* R5 }; J& o
' c$ G: v$ \7 g3 {4 p" q" G[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|