|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
P/ I+ n- W/ u J主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 3 M% l/ C& d& P. O1 ~5 d0 n
& @ d' B4 ^$ t
其實修改無敵很容易,
! ]& m; Y" v' ` v就以遊戲程式設計的觀點來說,0 `3 j; J/ r& d, f' e. `# H8 c g
一開始我會將人物無敵數值設定為0" @; R2 m( q. A
ex:
4 Q/ ?9 A8 q, k#define InvisibleInit 0( D5 l( J5 I2 p6 `" P1 B
( E- l* i& W( `* f( I
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),5 D6 G! ]4 Q6 w& W, a
呼叫設定函數
2 _1 S h3 r9 [1 D( `; U( b) ~ex:, ?" W" H* i4 q% a( Y
BYTE InviIniVal(EVENT event,BYTE SetVal)
: |: z5 U5 q. |3 n3 o{
& ~9 T- ?" i3 R+ |. c//Deal event .../ q, F4 T) |. }+ ^$ b/ Q, }; {
# B# z, G3 E* H: [: @) q- \
//Deal InitVal
( H8 R& R% n% Y _- N0 eBYTE ret = 0;+ J4 k- k, ]9 d3 R/ E6 j
SetVal+=InvisibleInit;" @% O' e* y& c* d1 g
ret += SetVal ;
: H! z! C9 a x, g0 l3 m+ A2 v3 qreturn ret;8 |- H' h y4 x7 ]: F
} ; m# ?8 s& D9 Z8 B0 o7 A' `3 _. W
6 y5 ? A' s. c5 A) J
最後關切的函數當然是遞減函數:
' V4 u2 H: u6 ^% u8 G( p: kex:
/ I' I3 A8 V$ HBYTE DecInviVal(BYTE *InviVal)
" _5 o7 n7 v8 @) E# _4 }{
7 A, Q% i; e8 u7 A5 [cout<<*InviVal<<endl;
* _3 s. V; _- @, A' Z9 h5 S. ~* o(*InviVal)--; //*InviVal -= DecVal;
* g9 G- q8 w0 M5 ?- r9 X( G# Qcout<<*InviVal<<endl;6 q5 C8 a X" P$ [ _% t# T
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
5 w; W7 E' \' Ireturn *InviVal;
* d" \( K0 o) W}3 _0 i3 h- `1 y) _
6 J* k, G) R! g針對以上觀念,改遊戲就很簡單,
& S7 _' b8 x2 a2 e7 U一開始我們先初始化數值,輸入'?',
: V8 f1 w/ X" G: u/ X- {/ {$ @接著開始無敵時,輸入'+',
0 a/ h2 m. E8 c' P接著我們知道無敵時間會開始變動,
5 y% n$ M7 S9 Q# D以上例來說時間開始減少,每隔一段時間輸入'-',1 i& H, W$ _0 N" g& u
最後沒有無敵效果了,輸入'!' 或是 '0'。$ Q7 t9 W/ r1 o; W/ S; H
( s( R2 {; h# @" E. K( I記憶體地址經由演算法篩選後,只會剩下幾個,5 s1 S1 M) T3 `! d% g4 ^/ D$ r
try 一下,你要的地址就出現了。
- h& L. Y9 H7 I
K, K- ]3 N% E+ l+ |: f/ YP.S.以上程式已經Run過,沒有問題。
/ N2 E, d0 c' a' Y, O0 q- \& n- O/ h) p6 s
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|