|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 : z6 m# A# i/ f' K
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 3 y2 I1 g3 N% ?( J/ j7 A) ^% Y
+ v" i K2 V, L$ t, o9 P其實修改無敵很容易,
* z ~" g, ^/ ]5 `. C就以遊戲程式設計的觀點來說,' B! O }/ ~! R) q P# H6 X
一開始我會將人物無敵數值設定為0
( O+ s/ f5 s# Q6 d9 Wex:
+ \/ J2 Q( K; E+ L7 I#define InvisibleInit 0- N2 u* m4 A5 W! q; c/ B
4 X( Y# j: d% u$ j! Q1 `
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
7 p) @ r, S/ |% j9 R& p呼叫設定函數/ `" c. s# J! J1 Z
ex:
( @, B6 `+ ~' G3 d9 w+ @7 ~' kBYTE InviIniVal(EVENT event,BYTE SetVal) U9 J$ ` @. ^& q5 k
{
; [/ m3 [+ q+ p6 X8 k//Deal event ...) Q' M5 R) j* u0 v1 s3 \) V% ~
) A! R7 m7 u1 r b//Deal InitVal
$ f+ u# x9 n- x! v8 G; OBYTE ret = 0;
- `3 R& F! x8 e3 u4 o: k. iSetVal+=InvisibleInit;
3 }( C6 Z5 s$ i/ G- l: Jret += SetVal ;' o4 s% F4 E! L, r4 ^
return ret;/ C4 x& x3 s. R
}
1 `) }9 n# M/ Z
7 O- j5 m# D7 D- V& L2 K最後關切的函數當然是遞減函數:% k( [+ _: q4 w8 N! g$ h
ex:
' W$ f) |. q' P- \BYTE DecInviVal(BYTE *InviVal)
& ~% v8 L! E7 v% Z2 A{- r8 b4 ~: q( }* [% h
cout<<*InviVal<<endl;6 k/ ]7 E% `; B5 B! t
(*InviVal)--; //*InviVal -= DecVal;& `+ y6 S7 d2 @* Z- {
cout<<*InviVal<<endl;
" s: G4 Y2 f \ x6 j3 E& d9 z(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ; }2 v0 ]1 _! L' _/ {/ P
return *InviVal;
# y: ]& `& u: T3 X* B}
3 t$ r' v' |5 N! n# }
: N% U; B% z+ F2 Q( M針對以上觀念,改遊戲就很簡單,
$ F/ M8 P$ o) C+ F6 a/ _一開始我們先初始化數值,輸入'?',
) l6 m7 C. u* K# P+ j接著開始無敵時,輸入'+',
4 Q4 Z$ W0 m( \2 t2 S; J1 x. P" X接著我們知道無敵時間會開始變動,+ Y6 M, {- t0 u( r0 b6 J* k1 a; @
以上例來說時間開始減少,每隔一段時間輸入'-',, T9 |1 g6 V# k0 G- |7 S
最後沒有無敵效果了,輸入'!' 或是 '0'。
: P+ o/ I r7 d, p( c
9 H; e. q( ^' Y9 A6 J! r! {, e記憶體地址經由演算法篩選後,只會剩下幾個,
* i5 h( z- _( V1 w. L& `try 一下,你要的地址就出現了。5 l; X0 ?0 x8 T5 Y0 s x% V% G
# v# h2 h/ y: ^+ q6 x7 r
P.S.以上程式已經Run過,沒有問題。
4 B8 F2 O& |$ ?2 ]( n% b5 l- N1 O
% L) ?: K/ S& @" R9 B2 z[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|