|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 * {+ \- u1 {* \3 n* f& \
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
6 q( G! m! l# Q5 |. D
4 e6 o1 ~. c0 {' ]: o其實修改無敵很容易,
2 v" N1 M8 _- _+ s+ a8 p) J0 W, D就以遊戲程式設計的觀點來說,: v8 O' E# C4 [6 W- P7 ?
一開始我會將人物無敵數值設定為0
: }- V d% r8 e7 `3 j/ H3 p) W( |- Pex:
) B/ ^ e) ]& z#define InvisibleInit 0+ D3 J4 g, l, R0 Z
. ]" K) _3 }: ^+ ?然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
& \% n9 W. I- v呼叫設定函數4 x. t$ R; A) y/ H
ex:+ z P S$ f$ O# g/ c$ o0 Z
BYTE InviIniVal(EVENT event,BYTE SetVal)5 f/ N% l, b7 f& N
{
4 S7 p# s9 \: j Z1 a//Deal event ...
' y& h+ X# _- ^+ L3 ], R
+ [/ O2 _3 c: Q6 n# z, b//Deal InitVal
) }$ W4 a; b6 N0 V3 HBYTE ret = 0;3 D3 K! F+ f' b
SetVal+=InvisibleInit;+ H+ o; X" I/ f/ T
ret += SetVal ;1 j% t( ?7 w: E6 j. A) f
return ret;
1 ]' |" c X. P}
! X* x d2 G0 r8 y/ o
$ k, @) |/ E+ C; R I5 g& c最後關切的函數當然是遞減函數:
% s. W- ~0 K7 U! G$ s2 z- e5 z7 wex:
" Y" z2 [! J0 n. E( s, mBYTE DecInviVal(BYTE *InviVal)+ O* P7 M. _2 Y( G' J
{' @7 s, F) z/ Q. G" ]0 Y$ ?% G7 h8 l) K
cout<<*InviVal<<endl;- X+ `8 ^. a f( O0 `! `5 ]" s7 X
(*InviVal)--; //*InviVal -= DecVal;' B, X! O' l/ N; Q6 q2 Z
cout<<*InviVal<<endl;
4 ]4 Y) I8 ]: q; J. ]1 F2 N(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;* t3 I* h6 d! C" A
return *InviVal;
7 ]1 H3 W J! f% z: J3 B- S}
1 r' u6 u* T1 w& p' \4 {( b+ s
0 k2 q' S) ^* s7 |% |針對以上觀念,改遊戲就很簡單,
6 u- m+ {+ n" U# X7 U一開始我們先初始化數值,輸入'?',
9 c; B' v+ Z' e) z接著開始無敵時,輸入'+',
" \1 v/ c3 s! X6 _ p接著我們知道無敵時間會開始變動,
! R4 ]1 }5 E" w8 j2 W6 J) B以上例來說時間開始減少,每隔一段時間輸入'-',
" f% p0 C7 w$ D0 E9 }* |最後沒有無敵效果了,輸入'!' 或是 '0'。4 F& d7 e$ U. h- j8 D" r
/ ]8 Z$ j9 F& ]0 o* v2 P3 \5 V記憶體地址經由演算法篩選後,只會剩下幾個,
% X/ t5 k& Z1 ^4 @/ N# d' @try 一下,你要的地址就出現了。
4 g! I9 ^+ u4 K; L- ~; I/ L% Z& T e( m9 D) ]
P.S.以上程式已經Run過,沒有問題。
: A! b2 [4 W$ l/ E3 ]
1 |3 s. |4 @: E# y/ ?! X[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|