|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 % m% m8 ~3 v/ i X' m p
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
- n) K) n. d( F5 l8 ?8 A" s! d, f7 K* _6 D/ ^* w% d7 q$ i
其實修改無敵很容易,
3 x& S- w' k b) F就以遊戲程式設計的觀點來說,
) Y, F( x! f# @1 \/ R+ b" i一開始我會將人物無敵數值設定為0, t9 E8 w+ Q6 O: Q8 v2 i& L! A8 ]! x
ex: ' t0 f3 E5 @( p0 R# V
#define InvisibleInit 0
3 X5 @! r/ B7 ~& f1 ~: H; K
! i& }' ]# n+ W: p m8 \. t# Y然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),7 l: \0 E8 C* Y
呼叫設定函數* j% F1 G$ @6 Y" r0 I
ex:# q$ q5 x2 ?2 n, D/ @& N" [
BYTE InviIniVal(EVENT event,BYTE SetVal); z& ?+ \, _, c% }4 q; U3 O
{
8 z/ y5 D8 e( \" A//Deal event .../ R! M7 N, H* e+ Y/ }9 ~& g% w+ K
( f, g0 H) U. q1 w8 h//Deal InitVal
; C! \. e. _, uBYTE ret = 0;
" s& F# z( A7 T' Z* ?SetVal+=InvisibleInit;
. u. X6 {; ~1 `; w; x) qret += SetVal ;0 | z. L: X! S5 ?# P7 R
return ret;/ `4 N3 k% d3 C$ J- A
}
: K+ {" u1 H4 A6 R
3 T# }/ M/ Z! w2 s. a最後關切的函數當然是遞減函數:. }' ?3 Q# V k D2 m! Y
ex:
6 B# P: d! `' f4 O% g' vBYTE DecInviVal(BYTE *InviVal)
/ K# x9 C/ j* i& p/ k{
4 V: P/ \, e Q6 r+ D0 Ecout<<*InviVal<<endl;
' L/ R. ~. Q7 W& H5 O(*InviVal)--; //*InviVal -= DecVal;
) D' e5 \3 X+ S# k7 u& Z Q' u; C' Acout<<*InviVal<<endl;
, B' F, |- W/ d% W) [. M(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
; I" D- m/ C5 @1 @( T6 Z' ereturn *InviVal;
. }9 ?8 ]( S: k* [6 s3 ?( J}
1 E' H! G- ]: ~& H9 x' ?: T" K: x, f' v" R9 Q+ J
針對以上觀念,改遊戲就很簡單,- R6 P! k1 V- q. D- T. v" ^0 ]
一開始我們先初始化數值,輸入'?',' W% ^6 p7 W3 [3 w% [/ G
接著開始無敵時,輸入'+',7 a! I0 b0 t/ o" d }8 D5 o7 ~
接著我們知道無敵時間會開始變動,4 |' T0 e- R6 b' |
以上例來說時間開始減少,每隔一段時間輸入'-',
o8 q u7 i, q. }6 A最後沒有無敵效果了,輸入'!' 或是 '0'。
# d1 y9 Z% m9 _5 v0 p
& R d" h" v4 L; r3 K記憶體地址經由演算法篩選後,只會剩下幾個,
0 Y+ ]' Z6 V' D: U" Atry 一下,你要的地址就出現了。( X) w" @: u' E7 S
+ S( T# q% f* A3 q( c% E
P.S.以上程式已經Run過,沒有問題。
2 ~- N# E( p$ w# Y; ~5 W) B* {9 o& O* @* O4 ]& _1 C4 G* ]
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|