|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
# A( Y. D3 A! y" ?6 B l1 O主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 * h! Q$ q p6 N" g" F d9 a+ O1 H! t
( Q0 o9 ?" Z5 v4 n* v- o$ J
其實修改無敵很容易,. ]6 G5 o5 j: D% o' y4 S8 W- y
就以遊戲程式設計的觀點來說,) y( T! H9 u0 `
一開始我會將人物無敵數值設定為0) e- M6 F% X; H3 n% `7 g
ex:
( S& d) P# y( v, l; _& \, G- V#define InvisibleInit 0
- z9 C) w: {2 p+ @% r& M9 R2 B7 j. n' g& m( S" t
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
1 x0 U6 p! Y) l/ X9 Y* s呼叫設定函數
) J( _6 l2 ], i0 D( m* |. L: _ex:. S! X; ^# h m/ }
BYTE InviIniVal(EVENT event,BYTE SetVal)
$ Z/ w7 W$ g! G: A5 g; n{4 s5 d! g1 K \5 C4 d* t$ r
//Deal event ...
3 B! {5 |2 G* }2 u) v
! @+ e; T* c2 p" `7 \//Deal InitVal) m7 k8 e. [6 o4 |! d5 \5 [
BYTE ret = 0;
& z- Z a+ {. F( [7 g9 e9 ySetVal+=InvisibleInit;
8 M4 H9 N/ f$ \/ w1 j8 }! Yret += SetVal ;, [' `7 a& i& O7 A, L" k
return ret;& w, n/ s* @6 Q
}
1 n& E! Z4 f7 H6 r6 X: R& G+ y9 A3 R. \3 v3 Q8 ^3 X5 D! E M
最後關切的函數當然是遞減函數:
* F' Y \4 e7 B0 A" ]! a5 m! K7 ?ex:# S3 C* w) w T5 u
BYTE DecInviVal(BYTE *InviVal)
: }! u* z3 m1 Z+ r7 z( k$ J{" D. r; D/ l9 R4 J# e
cout<<*InviVal<<endl;
1 w/ v% @# N, y. [ M4 i7 t- c(*InviVal)--; //*InviVal -= DecVal;. Y' c* Q* G* P+ z6 e4 a
cout<<*InviVal<<endl;- @$ d5 Q1 }0 a G) B0 @4 A
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
" d! a7 G( l7 N( ^+ \return *InviVal;
9 r9 p( s1 b: V2 ]}2 _& S8 K* G& a
, U3 j/ b$ k! F
針對以上觀念,改遊戲就很簡單,4 @. {2 D& D) x8 d
一開始我們先初始化數值,輸入'?',
, t' a5 X% b1 i% {接著開始無敵時,輸入'+',
, h, Z1 Q5 v0 J接著我們知道無敵時間會開始變動,
6 ?# B; H! B( _以上例來說時間開始減少,每隔一段時間輸入'-',
' o: \( m! T5 w最後沒有無敵效果了,輸入'!' 或是 '0'。; r. Z9 U4 u u
c6 x/ D, o; J2 d4 I記憶體地址經由演算法篩選後,只會剩下幾個,/ _- P5 r4 v! }: M; ~5 N1 A d4 Q
try 一下,你要的地址就出現了。5 ?! ?- n) V. Q1 t
: v2 ?, a6 |! o/ d* K2 L7 F/ |
P.S.以上程式已經Run過,沒有問題。8 l5 M3 d! y6 z8 m" v
1 [, g5 J+ J0 f# x5 ^, Z0 k[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|