|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
' A" e/ t; S& @( }5 ]/ _主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 & @& U: U9 I* \$ u9 G
3 v1 m; V# q) u, ]5 q! K+ Z其實修改無敵很容易,1 b ~! @1 ]7 V/ i
就以遊戲程式設計的觀點來說,6 `5 O+ I; p1 W
一開始我會將人物無敵數值設定為0
$ O9 h- d; M! p c9 P; i4 Pex: 0 l7 v: D$ y3 Q9 A5 i* a9 L8 s
#define InvisibleInit 09 I4 d0 V7 Z$ F' K
* e& u" U: s0 U4 ^+ ~8 d: g
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),7 c, S, y; K2 N. H
呼叫設定函數; X# b5 R; K) X/ s+ d9 {8 \
ex:
% n5 B3 m O8 E5 IBYTE InviIniVal(EVENT event,BYTE SetVal)
$ J; k6 i) o8 O) u. ~' s{
$ l8 R0 f1 J s8 V//Deal event ...
5 p" _ b" o9 T6 S e- }$ T5 _8 X
//Deal InitVal
: `* }6 y4 s: v, G D$ f. l" pBYTE ret = 0;. v! ]* d* S8 E5 K. X* _
SetVal+=InvisibleInit;
5 n c' F0 l# X* _2 n1 Hret += SetVal ;
* B' }7 m/ n" f5 X4 Treturn ret;8 b' |" ]( V J5 }" p5 A
} ) o6 T* w, X3 c2 j* N
/ F2 J, T1 _3 b. C9 M5 g/ q
最後關切的函數當然是遞減函數:& r# T3 |) V9 a, L
ex:
+ |: N/ [) g+ R( WBYTE DecInviVal(BYTE *InviVal)
+ z( l6 M/ n( Q# L+ m{( d9 w2 A; ~$ b% _( R/ k
cout<<*InviVal<<endl;
1 q% e; b( ~& `* [0 ~$ N(*InviVal)--; //*InviVal -= DecVal;3 U3 S( H0 `7 a6 T; I
cout<<*InviVal<<endl;5 ^! M. C+ i9 i6 A: X, Y
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;' e! ?, r- H8 s
return *InviVal;& _/ g- P0 o" [ S* ~
}8 {$ d6 _: { H. k
& i, I8 Y* c0 J6 D& v0 J
針對以上觀念,改遊戲就很簡單,
( ]5 V3 j, p8 s9 y一開始我們先初始化數值,輸入'?',
5 E4 L5 j, W2 Y! S% c" ], `接著開始無敵時,輸入'+',
( b2 }( y: O2 E! y, K接著我們知道無敵時間會開始變動,# j) X/ R2 E7 m: ]: y+ ^" T9 ^
以上例來說時間開始減少,每隔一段時間輸入'-',
0 j6 K, z2 I$ C9 F1 S最後沒有無敵效果了,輸入'!' 或是 '0'。- j/ W- ?9 T) V- G" _
- Y$ B. Y) [( G$ R
記憶體地址經由演算法篩選後,只會剩下幾個," x9 ]7 G, z1 h& x7 [! L
try 一下,你要的地址就出現了。6 i- I: R+ t1 Z. s2 s/ ^0 g8 j
3 A. a2 O6 m5 y9 z% d8 `
P.S.以上程式已經Run過,沒有問題。
% j, x4 n. @/ x6 r+ j1 D) |4 H" I$ F1 W5 Z2 {; {
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|