|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 9 {, c/ n$ {/ f9 I5 ^
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 2 T0 V# m2 D# ]% d2 L$ h
3 m( v9 Y* F# e7 l( Q$ H& G
其實修改無敵很容易,
Z# n# L1 z7 u! x! J# Q就以遊戲程式設計的觀點來說,9 k) L& |7 ?, a" F- `$ W. V2 U
一開始我會將人物無敵數值設定為0$ a$ B6 v' X4 k3 f
ex:
* N7 y0 Z2 n1 |& `5 k#define InvisibleInit 0$ {+ n5 O+ K2 n7 g1 q
6 U/ u# j4 N3 _: [2 T
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
$ i, J* o, j# T2 v呼叫設定函數, C0 O" O' n& ]) E' R5 E9 l
ex:% j1 Z4 m9 ?" N) ]2 L
BYTE InviIniVal(EVENT event,BYTE SetVal)
$ _" c5 Q" w$ V7 b{3 S5 M8 Q* p/ D1 r, {1 W
//Deal event ...
+ j% G3 E/ V3 h; r P3 A {( ]2 [1 B$ B2 C# Q
//Deal InitVal. e, m/ l+ [! H. N
BYTE ret = 0;8 I3 y/ w/ G2 C6 o0 F1 j
SetVal+=InvisibleInit;
7 r( |& p$ y6 T! }$ G; U. d0 Eret += SetVal ;
8 y" `. P$ V: f! nreturn ret;
1 }: h/ ^; U2 p2 T' [* ?/ @4 J}
5 y8 p" R+ t% j$ \; [
) T5 O3 N$ c3 m最後關切的函數當然是遞減函數:, j! V8 y# q! _$ V
ex:, N+ S$ N% K; J& h
BYTE DecInviVal(BYTE *InviVal)) l' J' O1 q9 h7 y( w: j
{4 C* P- {* l9 ~5 ]' h: h$ f
cout<<*InviVal<<endl;& d. I, w4 M3 A( u) E; a
(*InviVal)--; //*InviVal -= DecVal;
2 t8 }, m0 |+ ~; d' ecout<<*InviVal<<endl;
6 e" ?; @; ~$ q8 q(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;/ r. l: U" F$ N; K. q
return *InviVal;( r, U) A" B7 g7 f1 c
}5 j8 Y* [. B( r3 m4 d- b
, E' \" U+ G2 F6 Q/ m" k, l針對以上觀念,改遊戲就很簡單,
0 F. P5 J1 M F, J' o- B一開始我們先初始化數值,輸入'?',
& k3 i z6 V# [) M4 c5 n, n接著開始無敵時,輸入'+',$ \' |* Y5 g# m( m/ I
接著我們知道無敵時間會開始變動,
3 \) |- `6 i2 \0 y以上例來說時間開始減少,每隔一段時間輸入'-',
7 @! T& w( Y1 h$ O; n# q最後沒有無敵效果了,輸入'!' 或是 '0'。1 ` S0 v& y! b4 \
6 w- T) N* T) k+ A% w記憶體地址經由演算法篩選後,只會剩下幾個, z' N, |: o+ p* O
try 一下,你要的地址就出現了。
) Z# T! B1 t' P" V* ?
+ P, }& E* k+ m2 U' C: gP.S.以上程式已經Run過,沒有問題。
+ J8 d; B. X6 b1 E5 P( ?8 r! t; J% |
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|