|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
5 v P) Y& h$ T& T主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
/ t& n9 N$ v* a; B+ X2 l0 Z# {/ R) ]6 L: Z5 ?& k6 D- S! L9 s
其實修改無敵很容易,
0 `: R# V. k& y: a1 y就以遊戲程式設計的觀點來說,4 @9 {; l: m: ?2 _# F: `) x
一開始我會將人物無敵數值設定為0. c/ D2 c) Y; }- r. M- d
ex: 0 O4 F$ [& ~$ H- @
#define InvisibleInit 0
3 t# Q2 o7 F1 e4 }5 M4 R. i( ^& Y1 _( J& x! G
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),5 b; o) ~ P$ f/ P
呼叫設定函數
5 T2 h# m" T3 t& F2 _6 Vex:
: Y, D$ i" A2 L7 mBYTE InviIniVal(EVENT event,BYTE SetVal)
' K! g# M! U; H7 V3 r, w6 ~{
8 I; n8 ~6 U$ c/ F$ t//Deal event ...& C. ]( n# \& e$ p1 D6 v
2 L- j% q: X" ?0 P
//Deal InitVal$ t( g0 I. t0 T
BYTE ret = 0;
3 u" N7 v+ i8 M1 U' kSetVal+=InvisibleInit;
- M3 B. D2 ?4 E" Aret += SetVal ;
: U# |: ]+ F! u7 Wreturn ret;3 F$ a# B3 ~) M/ u, @1 Q
} $ \0 {0 G: S: b4 q9 P. L
9 b; L6 a7 ^7 O: c2 p# Q最後關切的函數當然是遞減函數:
" k. q9 {. I6 u3 H7 j- b3 U/ x1 D9 Kex:
. I( U# y5 D! f; GBYTE DecInviVal(BYTE *InviVal)+ b$ Q X2 s" H
{
0 T' ?+ d: \) O+ {$ N" Ecout<<*InviVal<<endl;
' F% Z' C; E2 P6 p2 u; c& H( r& S- |(*InviVal)--; //*InviVal -= DecVal;
- i7 f9 F7 l h6 q% I( Scout<<*InviVal<<endl;
4 L8 v" J" j* @+ J6 T; \( `; }(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;1 T L Q6 R8 H3 P+ z
return *InviVal; B4 r. U+ Z* O1 i3 r
}
/ o: r6 D# W" b J: T! d& x/ e( V0 A' c4 I% z* G/ V7 `
針對以上觀念,改遊戲就很簡單,
" M1 T; U$ w$ q9 U& P. a一開始我們先初始化數值,輸入'?',
/ Z; y$ \( \+ Z& v! M) G. n7 k接著開始無敵時,輸入'+',
3 g, T7 P" t! E9 K) P8 }) Q: u接著我們知道無敵時間會開始變動,% T- ^; ?$ w$ S/ E; k/ a5 z6 v
以上例來說時間開始減少,每隔一段時間輸入'-',
/ `1 P8 p* J3 F8 ], B7 H' G最後沒有無敵效果了,輸入'!' 或是 '0'。4 X/ R1 V7 S1 f6 ?
; r! f R" _' z6 p! l記憶體地址經由演算法篩選後,只會剩下幾個,
# D. K& ]- W( l+ C. Mtry 一下,你要的地址就出現了。5 {; F: s9 c( m# q& R/ h
6 G6 n, L6 x' c& D+ j! NP.S.以上程式已經Run過,沒有問題。
& }6 P9 q& {. }$ n6 Y% e
% w9 ?! X" y( p8 u) H+ `% l[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|