|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 7 v6 h% [4 M) g; u8 Z: T3 C
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
. L5 Z+ b" a$ n0 X* a: ~7 ?- E/ K! J9 ]% [5 s d& Z9 f
其實修改無敵很容易,; @! I9 Z0 a/ L' J* j. F5 k
就以遊戲程式設計的觀點來說,
6 h" k' `( y& K: Y" ]. T一開始我會將人物無敵數值設定為0' b4 l# @/ B' O' L" @
ex:
4 N4 O, P7 |8 g#define InvisibleInit 04 X9 _* z% k6 \
n# C1 M3 E w' d
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
: ?6 c6 v* d. J; U. [呼叫設定函數/ g/ O! q, m) d6 C. b" N
ex:
# Q* ]+ c& {/ o+ WBYTE InviIniVal(EVENT event,BYTE SetVal)
. b, m( F7 M$ `) @3 x2 P8 b3 V1 l{2 \0 v- ?9 Q8 J% V# T% j' [
//Deal event ...
) T& \6 j) m8 f, ]: x. N( W% m5 E( a, h6 B4 [
//Deal InitVal
4 |8 p Y& \) N# O h2 V- K! dBYTE ret = 0;
, d% V9 V% ]$ X0 [; |SetVal+=InvisibleInit;
& Z$ }; ?2 F6 O2 V/ x% Z1 |ret += SetVal ;
/ t# W% q3 ?* x* p2 Yreturn ret;
# b! M7 V6 j* \! w( c0 ~}
$ ~0 p0 ~' c$ v# r
3 Y2 V" k! f* O4 f, J* d# _最後關切的函數當然是遞減函數:
* T# {; p( q% Z. W0 |- O) Y rex:
9 M; u% a4 Q# ~6 F& y q) m$ ?BYTE DecInviVal(BYTE *InviVal). n) C7 l$ X; e8 m" M6 G% W+ n5 d' r: B
{- V1 a0 T) r0 S! I
cout<<*InviVal<<endl;
7 \' \& V2 d3 Q% z/ R(*InviVal)--; //*InviVal -= DecVal;4 x( _# h& h5 m7 l u
cout<<*InviVal<<endl;# m+ T, E0 y" T6 W9 X
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;0 A) S! b) y2 r9 u
return *InviVal;/ B1 L% f, O# V# j
}
- `* R& o1 m/ }* y8 J* T/ S$ S! i$ \' \! C$ S
針對以上觀念,改遊戲就很簡單,
, ^0 @! V& }" L" Q2 q$ |+ c( h( P一開始我們先初始化數值,輸入'?',
2 O9 y! w, q# A+ U. _. W接著開始無敵時,輸入'+',# }/ V, g _6 h! ^
接著我們知道無敵時間會開始變動,
H3 V% f! V. [% f& {8 a! s% J: f' b以上例來說時間開始減少,每隔一段時間輸入'-',4 r9 Q# V2 N( H2 B
最後沒有無敵效果了,輸入'!' 或是 '0'。
# o( X' {. C& U' \; P- G
' ^0 E* \* ?2 J1 L# Q' ?( z+ B: r5 Q7 E記憶體地址經由演算法篩選後,只會剩下幾個,
8 u4 r/ A3 ^% T% ~* @' ~% q8 e; x, btry 一下,你要的地址就出現了。
* o$ R* I5 i! M1 u; G( p. Q2 \4 E6 D" ^
P.S.以上程式已經Run過,沒有問題。$ X8 G6 f# c* O- d; q* R
+ i0 U7 F7 W- o- Y[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|