|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
9 `. O4 _9 f, ?主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
! p8 }9 g3 F/ w8 g2 o( y: B+ }9 r. k" e% J9 T: Y
其實修改無敵很容易, _* R+ h" n( U) L, O
就以遊戲程式設計的觀點來說,
6 `* W+ y3 O/ W! a ~一開始我會將人物無敵數值設定為01 W# C9 U- K+ u/ D
ex: & ?0 c0 k* y, ?
#define InvisibleInit 0
5 T4 [, y" w& e- n2 a- W+ \
6 z6 C" K G# E. o2 l. P然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
$ \) |/ f! O6 u呼叫設定函數
6 R) _4 w* `/ Z/ _ex:
& C8 C+ L6 `. u5 HBYTE InviIniVal(EVENT event,BYTE SetVal)+ f% J) b9 D4 D( J6 e4 a4 @
{; C" Q, z/ l( e
//Deal event ...8 ~* |' p, t. S; t$ ^8 v( W$ Q
: I6 L S; v+ A* @$ F
//Deal InitVal
: \4 o, v/ w. A- f% n8 f- e" m. fBYTE ret = 0;" S; _9 c( _; Y
SetVal+=InvisibleInit;
+ c7 B% h, O9 u2 j* @ret += SetVal ;+ W' ^6 c4 r) z6 @, o2 x/ g% C* S
return ret;
: w3 v1 g9 x& u, A9 o} * u& n5 j7 d, a: Z8 Y
. U2 r- u/ v! }6 T L8 G
最後關切的函數當然是遞減函數:
0 K/ x- G8 h/ n Hex:
4 O( y5 Y" Q# O m" y$ V" MBYTE DecInviVal(BYTE *InviVal)) Y/ B' L7 a7 {: s
{- U! ?+ L0 Y* M6 W" [ V& j
cout<<*InviVal<<endl;
; X K c6 z' y- x(*InviVal)--; //*InviVal -= DecVal;) L) Q3 o# v1 {. `5 ^
cout<<*InviVal<<endl;$ o+ }2 D8 s" X4 A6 q3 d
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
. D8 g6 L9 U, e' zreturn *InviVal;
( t+ H- ?: N' c W+ `. J}
' @/ a k$ u* ^$ `! r' J$ V1 b; J" m. C$ L4 _) s- v4 J
針對以上觀念,改遊戲就很簡單,7 X3 `0 N8 r7 m3 W6 p
一開始我們先初始化數值,輸入'?',
' i/ l. v; t2 I6 \0 L接著開始無敵時,輸入'+',9 E' f1 O0 p; c. B4 X9 D' S+ o
接著我們知道無敵時間會開始變動,/ d [1 L0 R6 t# S/ {0 O5 w
以上例來說時間開始減少,每隔一段時間輸入'-',5 } ~; U! y+ a7 r1 P
最後沒有無敵效果了,輸入'!' 或是 '0'。4 V6 R1 K. G: I Z
; \% I9 C4 ]; N6 v+ [記憶體地址經由演算法篩選後,只會剩下幾個,
4 x7 Q5 H7 v! U; B& O- D. wtry 一下,你要的地址就出現了。9 `7 |- H; ?0 ^$ m5 o+ l& s$ R
0 O! }* z9 H: w& vP.S.以上程式已經Run過,沒有問題。
+ I" M3 X. E2 U$ T0 L
' L: @# k; @9 y8 ][ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|