|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
1 n4 n8 [6 s/ k6 w主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 - P5 ^! \' V' Y
) v* R% k0 O2 D. P+ ` N. `
其實修改無敵很容易,
5 l7 c+ X: w) _/ c' }就以遊戲程式設計的觀點來說,
& W) W* E' f2 N一開始我會將人物無敵數值設定為0
+ e9 x$ f5 [" L7 h1 p B, E6 ?ex:
2 r8 l+ T' A4 i! b6 v#define InvisibleInit 0
& ]. t5 q4 s6 ?7 X# S$ Q$ \3 C+ B" i/ s8 g
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),6 _& I% Y( a- N2 m1 I; D6 C' z2 c! w
呼叫設定函數( j! Y ?9 t1 w- a: G5 m _
ex:
' ^8 [1 b8 }0 M* C% a, oBYTE InviIniVal(EVENT event,BYTE SetVal)
( O- @% J. S6 }; z8 u* ]/ z{+ N) U" W' R, i( s, C
//Deal event ...
( A# l& ~0 g; b- M! t0 U' _
W1 S0 o; t3 V: T1 e9 ^) t% e//Deal InitVal
% j, p: K9 F& ^BYTE ret = 0;/ l6 k' n3 `8 i% ^
SetVal+=InvisibleInit;9 y$ e$ L Y1 a d- Y Y
ret += SetVal ;# _7 a9 p1 p3 @% U7 l! C5 j
return ret;
! c" x( s7 N7 `! g4 E8 N}
; D2 D' j* B- \( @1 C3 `* v3 V" Z( k, v3 z' v( O, `1 C4 F
最後關切的函數當然是遞減函數:
# J( w4 u q' @/ y6 {# I3 ^ex:
5 @4 ?' o$ g; X1 M$ cBYTE DecInviVal(BYTE *InviVal)
$ w) y( Z2 s- Z1 m% e1 H2 @{: v4 t- c( G# @1 }$ z3 u
cout<<*InviVal<<endl;
j* D2 Y# g* T9 c, M* w' e y(*InviVal)--; //*InviVal -= DecVal;
: t" U$ ~* b/ e3 B, ccout<<*InviVal<<endl;
% b' P" T& @: z8 o(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
, c; ^* Z, v5 A! Q$ A; Qreturn *InviVal;
4 g0 L# }& m: s7 l+ n}) S! p$ u" z' k5 S# g a4 b
( M# j8 s7 }/ L$ I: ^2 S' P
針對以上觀念,改遊戲就很簡單,
9 p0 g0 H S6 _- C一開始我們先初始化數值,輸入'?',
& C: s8 v1 O$ B) q1 q) D接著開始無敵時,輸入'+',
- ^( j/ w0 }$ ^. R" h, h9 X7 |2 \接著我們知道無敵時間會開始變動,) g/ Y3 T; R9 V3 N8 w
以上例來說時間開始減少,每隔一段時間輸入'-',! `3 A1 \6 U1 u
最後沒有無敵效果了,輸入'!' 或是 '0'。! ~ y- a C! x* U6 |$ s; E& ~
2 [0 r! |6 _* v5 I6 ?3 w6 v3 ^+ M記憶體地址經由演算法篩選後,只會剩下幾個,
( A7 g- L+ R* f" U; Ttry 一下,你要的地址就出現了。
' f: g, f7 ]2 U. ^( O- [
( v. L& q) a+ F8 Y# `' AP.S.以上程式已經Run過,沒有問題。; p- ?. p: W- N
7 j6 m! ]0 u3 Q[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|