|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
) `" M2 P/ t, o0 w% e/ U主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 ' @& H- B. Q6 w R- F" Z3 q
- _/ W6 s( P7 m/ h8 ]
其實修改無敵很容易,
! Q4 l6 A# |5 O3 C, \3 [就以遊戲程式設計的觀點來說,5 _ n, H: a. y% V9 h# w& p
一開始我會將人物無敵數值設定為0
+ b3 N' e; P; V+ O2 Oex: 5 ^$ t- e4 w1 P( S1 x4 M
#define InvisibleInit 0
- z' d* A% d5 m" z9 W! E" F( t) y, c4 |$ h& X
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
6 O: g4 l2 l" o% g0 h2 Q呼叫設定函數
, J% Q! t9 d' C9 O8 s: b1 _, \ex:' H0 \1 }! y- L3 n1 c
BYTE InviIniVal(EVENT event,BYTE SetVal)$ a9 [/ u, r. p% @. v! @. y
{+ c, q: k( E* K1 _: U' m
//Deal event ..., V4 u0 F& ?& a' \5 C
* A: h/ c: k3 ~ L7 V
//Deal InitVal }( ? g9 f/ x% f6 l+ J
BYTE ret = 0;2 A6 o* j2 ?# l0 z& P
SetVal+=InvisibleInit;$ k& `4 b+ Z$ _+ Z$ e" h# B( x
ret += SetVal ;
) O+ H% y3 S* m) w$ A) X+ f& Ereturn ret;
# J, J4 ]- ~! A! n/ o ~}
5 r1 W! L$ R0 {0 j1 a3 M6 U6 P+ S3 r+ w& o# y
最後關切的函數當然是遞減函數:7 \- U# F# K& Q3 V9 Y. Z5 B2 ~2 F
ex:
" @2 C* s1 M* qBYTE DecInviVal(BYTE *InviVal)) x4 K# l7 c+ ~1 v7 u5 n9 c
{
V/ M& t) x* O/ _cout<<*InviVal<<endl;
( b" O1 I* R9 I5 }* e! D2 z(*InviVal)--; //*InviVal -= DecVal;3 p2 R4 e) E, h/ p5 [9 b# N
cout<<*InviVal<<endl;8 n" ^, @* d5 G1 d- `
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
4 j- O5 F9 s& ~' ?8 X# S) ^3 Jreturn *InviVal;$ I ~* Z0 P1 \! h& p3 o
}
, W# g6 l# ^6 [" N3 k
! F! h! _1 L8 s3 x' }# J針對以上觀念,改遊戲就很簡單,
8 e& n7 z# G% |+ e0 a+ }* d- o一開始我們先初始化數值,輸入'?',7 O1 y0 i/ C1 C0 w2 F
接著開始無敵時,輸入'+',
8 F; H1 m$ y2 T4 V! y9 ?接著我們知道無敵時間會開始變動,
- S) A0 H+ b5 @+ E Z3 |) D3 |' H/ M7 M以上例來說時間開始減少,每隔一段時間輸入'-',0 v- C5 Q& Z9 t
最後沒有無敵效果了,輸入'!' 或是 '0'。
4 y2 |! q9 q+ x0 r9 }- O+ d, T( g/ ]( Z# b3 r1 Y
記憶體地址經由演算法篩選後,只會剩下幾個,
7 ^/ i; p, P4 l: h. mtry 一下,你要的地址就出現了。
% n* z3 |6 t3 t0 w
8 o. L3 _/ K. MP.S.以上程式已經Run過,沒有問題。' F( Q/ M" ?' A% c
$ D; ?; g. M1 a; ~$ E) y[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|