|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
& a8 C2 l% v L$ `/ @主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 4 P) j% k% G* n( L, g
; B+ |& n2 \" R+ T3 p. O0 [5 u/ T其實修改無敵很容易,
$ T1 o+ K8 @1 O: c9 z就以遊戲程式設計的觀點來說,9 Z1 A! L9 R# e: A& z
一開始我會將人物無敵數值設定為0
5 k2 \# W# {6 q6 uex:
3 p- Q3 M1 f* R) D#define InvisibleInit 0
+ y) `4 R! f, v. n8 J
/ I2 b' l$ d6 h: t然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),3 S0 g8 p) z y) K- w; u. {4 f
呼叫設定函數2 \3 d3 V5 q9 s( q
ex:! }2 y3 R) W' B) }; T
BYTE InviIniVal(EVENT event,BYTE SetVal)
- U( |% o( K$ K+ V2 H# V$ p# |2 D{
W. H' ^( b( K4 ?. t* r//Deal event ...; @+ U/ G" O) e
0 `" O# A8 _' F
//Deal InitVal
+ m. O- O' ]' n' q nBYTE ret = 0;
g" M6 {2 A3 I+ @" ]! A. O$ ESetVal+=InvisibleInit;
3 q3 C' T9 d0 y0 E% r) a6 Cret += SetVal ;. a) m5 }+ Y* w$ Y# V1 `0 _0 I3 v
return ret;
1 Z) w$ Y S9 S3 _, m$ y- c7 \} ( M. B: U6 D: T* S
$ H0 v- |3 b, d7 A
最後關切的函數當然是遞減函數:
1 y, p" S9 n" U7 g. F1 I. f' xex:! C' p1 H& p" g) ?; G
BYTE DecInviVal(BYTE *InviVal)5 d) b" e- X* z! C1 `
{+ u% r5 b& e3 O4 i
cout<<*InviVal<<endl;; B0 i2 w2 L0 p+ m/ D" ~$ p/ e7 \
(*InviVal)--; //*InviVal -= DecVal;( E* h2 ^# M: J- y& O
cout<<*InviVal<<endl;
- t# {9 v( x V& q4 [, N6 L(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;" q! z8 q- ~ Q3 O% U
return *InviVal;
' o2 ]2 j" c B$ [0 x2 `4 j}) ]0 l; o- t5 T
) W P3 |6 W- X+ q+ s; A- \1 k
針對以上觀念,改遊戲就很簡單,* D6 H3 n: o* a0 {, d/ N
一開始我們先初始化數值,輸入'?',
& \- S. Q0 C! b# V接著開始無敵時,輸入'+',5 x( @( |1 |7 t3 [
接著我們知道無敵時間會開始變動,7 C9 r- e' u' `. X# Z* X
以上例來說時間開始減少,每隔一段時間輸入'-',3 I, F8 u4 N7 N9 _" w3 [
最後沒有無敵效果了,輸入'!' 或是 '0'。- R/ w& b6 B# U U! I$ e
7 S, J/ Z: F/ V% S, y
記憶體地址經由演算法篩選後,只會剩下幾個,
4 N3 o, j5 K5 i5 ~8 ~0 t2 otry 一下,你要的地址就出現了。
& W; ?3 _7 \3 z2 \- P5 k2 j0 R- E4 ]2 }
P.S.以上程式已經Run過,沒有問題。
, ]% Q7 `/ l% b0 b) I% S5 t! |. R8 R
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|