|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 & M* A" ?( z7 Y2 A6 P4 z0 R1 q
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
/ n* B- L( P( j/ Q- Y) E8 `- I
7 Z- a4 ~5 e+ J9 ]+ w$ V其實修改無敵很容易,! |" [) }* \( i
就以遊戲程式設計的觀點來說,7 Y( O$ g4 L4 }: k- p4 e1 u. t% j$ q
一開始我會將人物無敵數值設定為0
3 r# m6 q% T! G5 m/ Zex: 3 u( I' j+ U1 h. I% n: j# o- ?
#define InvisibleInit 02 j' M0 F4 ~( ?3 N( d2 A9 c
7 @; a) y# `8 ^6 L& H9 y8 x: ~然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),' w5 [$ m3 t: e( K( ^5 Y
呼叫設定函數
! Q6 n* s- v' w9 g! mex:
8 t) y+ U1 G3 s7 _) G: z# s( ?" pBYTE InviIniVal(EVENT event,BYTE SetVal)+ D# Z( J4 Q3 e% g
{
( G/ J- d- C) Z* R1 Z, `//Deal event ..." P/ T. I- f" W5 F
0 W( j/ e7 ~6 q1 w. m//Deal InitVal- e$ [ e. c, _) V; e* D
BYTE ret = 0;: c! i6 _2 |. ~9 e; W8 m; `7 k
SetVal+=InvisibleInit;
) C: k8 S1 M- q9 kret += SetVal ;! [: f+ g' H* G* E/ r, x2 J5 j0 a
return ret;& l1 z7 f! S7 |# j5 @8 ?3 _3 ]
}
% A! i5 q1 P5 S2 |0 Q8 x5 n8 f- ^# Y V: k7 ~* D! @
最後關切的函數當然是遞減函數:
# x! h& u5 H2 t; cex:
7 H* X9 ]& A. EBYTE DecInviVal(BYTE *InviVal). B9 \5 P6 v: ^
{1 h q* U( E \ Z9 r: F2 _
cout<<*InviVal<<endl;1 [+ |$ I/ Q! R/ e
(*InviVal)--; //*InviVal -= DecVal;
! s4 { T' R( b* @1 rcout<<*InviVal<<endl;" C% \8 \& }8 D3 A
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;3 p8 }9 g9 V% G/ q/ Q( a
return *InviVal;, C4 k6 M/ ^0 W4 n5 ~
}
3 z$ c$ L* @) D9 L3 B: b: m: }7 ]) o, z" M: m+ x
針對以上觀念,改遊戲就很簡單,
7 s0 G* d# S7 u; ^. ?" n; k一開始我們先初始化數值,輸入'?',
/ V1 N) A3 R% u& |, C接著開始無敵時,輸入'+',
( P8 [, f- o* s1 A4 w6 l2 K# t接著我們知道無敵時間會開始變動,2 \6 h$ J8 k% k: e+ y
以上例來說時間開始減少,每隔一段時間輸入'-',* T1 o6 H% b1 `+ d& d6 s! R; j& Z
最後沒有無敵效果了,輸入'!' 或是 '0'。
1 l: o) A' R- U# R4 t# x8 P
7 ?9 a. ~6 {; H* k' Q記憶體地址經由演算法篩選後,只會剩下幾個,
9 [3 m K0 b6 n$ e$ J! V9 U+ ttry 一下,你要的地址就出現了。& l3 |. t+ {, ~
- C0 I, Y- i3 p2 _
P.S.以上程式已經Run過,沒有問題。8 E/ ?/ V$ W! N5 F. P5 Q
5 h5 T9 X, D3 M4 F! {/ I! R- U
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|