|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
! J' q* G/ s9 y" R- b+ }主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
/ f9 L' V6 }. C. p" _
4 t. m, }, E9 @! u a其實修改無敵很容易,
7 r4 F# V9 L- `8 e0 b就以遊戲程式設計的觀點來說,8 G1 |) x8 L* ~! N/ `# ^
一開始我會將人物無敵數值設定為0
$ n1 x+ K s6 p# ]: aex: 3 R$ B% r# f) c1 [7 |) G; D$ ^. D
#define InvisibleInit 0
; v. W2 X0 T6 ?- r2 U6 F. n
* J! e, R7 B9 ]: Z& E0 Q然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
( F! a8 g: V; A# l: ~& R呼叫設定函數0 C! N! w t# f
ex:
5 u5 @7 y; E/ d! z2 s; Q& qBYTE InviIniVal(EVENT event,BYTE SetVal)& E8 x9 Q8 [5 F, P, y. X
{
5 E: c) E/ s- m y* z) v: f" Y//Deal event ...$ _- \( w8 E, d8 X: e
: I& u3 u, R) I
//Deal InitVal
; y) D5 w7 ?9 ~+ cBYTE ret = 0;
) y% j; t P; Y2 E( rSetVal+=InvisibleInit;! O7 {) i8 g n/ K; J
ret += SetVal ;
- K. u; g' g5 X; Z/ V4 [return ret;9 u. X+ w7 D$ W7 G' E
} 9 j( A t4 O& s7 o# v- a+ S/ N+ |! \. ~4 r0 w
& U. B6 b* {; }4 b6 t4 c+ S& _
最後關切的函數當然是遞減函數:$ S! c7 K: D& x$ r- y; s
ex:% c+ w8 u9 T S# u
BYTE DecInviVal(BYTE *InviVal)
9 C Q" K" F2 u# B3 h{! {. V( E3 _4 E: v2 m6 A
cout<<*InviVal<<endl;
) S% M* `( [& X- b(*InviVal)--; //*InviVal -= DecVal;( m+ H$ W$ k; @. G/ P0 @. }+ K
cout<<*InviVal<<endl;
8 P5 ]* b9 r$ L) B* K(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
, l, w, ?. N- U2 freturn *InviVal;# H7 v0 e% d$ L: u9 }1 F# o2 D
}
; Q& l2 `" B+ s! B
* M) h% D( ^' R9 k0 l- M針對以上觀念,改遊戲就很簡單,
8 F: v: b0 e$ J% ^7 j" _7 |一開始我們先初始化數值,輸入'?',7 }0 E+ N9 G, s: d1 A
接著開始無敵時,輸入'+',
2 k' }; t: T' v. c+ e* {) t接著我們知道無敵時間會開始變動,
, N0 X8 x: U. ?! O# P以上例來說時間開始減少,每隔一段時間輸入'-',# |$ A' B) t4 Q- B+ e! G l
最後沒有無敵效果了,輸入'!' 或是 '0'。
; T- T+ Q- M- w
& B B( W( y$ { [/ u5 F記憶體地址經由演算法篩選後,只會剩下幾個,
. E* u) W+ F0 D$ H$ ^try 一下,你要的地址就出現了。9 ]. S; i5 u" J1 j. x) d0 Y! x
0 B c1 M. u7 w( i( @) y+ u. f
P.S.以上程式已經Run過,沒有問題。
' G: C ?: A$ U% M' O; r
; b, `# N" h% z, j* b" V[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|