|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 % f6 C, G/ }5 s- O, m1 ~2 q- T
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
( g* Z2 L0 g0 i2 v3 S( w+ w7 ]" B2 F+ F. x* D. v
其實修改無敵很容易,
& d' J3 @6 H% |0 c- K4 h8 f就以遊戲程式設計的觀點來說,. S3 E% {- Z8 O4 V
一開始我會將人物無敵數值設定為0, K) t; j P( ?% e
ex: ! |9 L: Z2 y& w: h8 H1 q( @1 ?5 o
#define InvisibleInit 0
8 c) H+ s0 Y$ T' c# f; ?
: A8 w, ?( F- S) X9 w; C然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
- P7 W. Q, E& N& }: h呼叫設定函數7 K& ^0 v7 f# ]/ Q
ex:% `7 E% w7 y" H2 A+ R( U
BYTE InviIniVal(EVENT event,BYTE SetVal)
' V* e+ R0 ^ t: V- @{
* r5 |/ j U B, Y. e//Deal event ...
- b( I- \8 W1 _/ R( H0 {, E8 F' y, P1 l+ K% F' ], ~
//Deal InitVal& b+ i# m1 u. Z: u
BYTE ret = 0;8 y4 N/ `% {8 |
SetVal+=InvisibleInit;9 y N; L- V, Y2 a
ret += SetVal ;' D7 S/ k5 k/ p
return ret;" D( G u. K" _9 ]9 N. z. w) D: G
} c' [6 Z# }4 f4 D# @
$ E R8 J& Q7 t" w' M
最後關切的函數當然是遞減函數:
' U* L+ b( [- v: `+ L! D f' A" {! Jex:
! H; c7 |* D2 qBYTE DecInviVal(BYTE *InviVal)
9 E6 _# c3 e) V6 B3 U{
( u7 l }7 G0 n/ ~" `cout<<*InviVal<<endl;
2 ?9 L6 ~7 o' X) g1 |4 v(*InviVal)--; //*InviVal -= DecVal;
- u' x8 s8 o- h- B a: F1 C1 Ycout<<*InviVal<<endl;$ v, ]" b3 j: ]0 }% o `7 W
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;/ _# K+ c/ c0 U9 k
return *InviVal;
6 e; U) m6 z6 E$ T/ t+ j}
. b5 j, k) l) m( C0 W
?4 v5 R7 ]5 D/ C" V7 \3 V1 X; K& {針對以上觀念,改遊戲就很簡單,0 @, H) k& ~* z: L8 j4 E% C9 c
一開始我們先初始化數值,輸入'?',
8 M2 m0 P6 a2 w) a- B' V% p接著開始無敵時,輸入'+',
, v- g6 r) p+ E4 p. r- f- z接著我們知道無敵時間會開始變動,
' V/ f. K2 W, e以上例來說時間開始減少,每隔一段時間輸入'-',# `6 p* [0 I1 ^
最後沒有無敵效果了,輸入'!' 或是 '0'。3 h# L# {% o- w, o4 y+ K1 d8 J1 X
3 s b' O% f; S8 r0 o/ J4 D
記憶體地址經由演算法篩選後,只會剩下幾個,
- C0 [. J: q8 b" etry 一下,你要的地址就出現了。
9 y/ P" J8 ]9 D9 U# H! g5 b9 D. x4 R5 `; o, i
P.S.以上程式已經Run過,沒有問題。
- k3 `8 L& d5 J/ M" O9 V
6 F* t$ p/ n* e& ?, a, A3 m% a( y[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|