|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 + Q7 H. I* N7 s7 h
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 # T7 Q" z. o8 c0 X$ v& |0 D
/ R5 J# t3 G ~6 C, w( @% d其實修改無敵很容易,
^( ?( K7 i3 ^; b- u9 j' I& u就以遊戲程式設計的觀點來說,& l% a @& P/ {7 `8 l
一開始我會將人物無敵數值設定為0
: [( v! {( C9 A( ~ex: , v- G$ a5 ^$ g6 D
#define InvisibleInit 0
Z7 h$ F! } I" Q
3 I# P5 u2 ~2 s1 Q7 h然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),% k1 L: t& s# w7 {
呼叫設定函數+ R |( {; W' u
ex:
9 t' W' H# T. yBYTE InviIniVal(EVENT event,BYTE SetVal)7 o5 @6 `$ q: i# b
{; i3 T1 g4 M$ C7 T* ], e* p
//Deal event ...3 k# Y) z$ w, U) k
. r! C5 |- H, v. e; T5 r//Deal InitVal" O& k5 \. U. w
BYTE ret = 0;
' D0 c" u( D1 M7 MSetVal+=InvisibleInit;
% \; y( o) B& r) ^ret += SetVal ;- R* k' d( ]$ G* {3 q
return ret;
' v+ d/ }0 V3 R; S0 q1 [}
M" `! B. n& x+ J$ R% J2 b: w7 \1 z8 X- ]/ M/ S
最後關切的函數當然是遞減函數:. X+ j. i/ i& N1 @; L; r' ?$ j- |+ _9 p
ex:$ O9 b: S, m' e" a }8 p
BYTE DecInviVal(BYTE *InviVal)
" q/ V) x4 E2 \5 n& y) n8 |{1 `( f6 C( w& I3 R f
cout<<*InviVal<<endl;
$ q& V- H* \- I* i! d(*InviVal)--; //*InviVal -= DecVal;5 q8 z8 T3 M, L3 A- c/ k8 g
cout<<*InviVal<<endl;
6 D/ o+ A1 y( A& f(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
- {& r' s, G7 x7 a) dreturn *InviVal;- r3 @8 _6 T( G2 |2 F2 d% Z" r% D
}
6 v* c8 O0 A, _3 X$ ^4 U) E( C# N* B3 a @2 j
針對以上觀念,改遊戲就很簡單,5 h7 g' g- F2 m( d/ Y1 C3 Q
一開始我們先初始化數值,輸入'?',
8 O, i2 n* a* \4 V* H0 `9 C接著開始無敵時,輸入'+',# M v0 P( ^% x: _
接著我們知道無敵時間會開始變動,
$ ?% N* A# z7 h A$ P以上例來說時間開始減少,每隔一段時間輸入'-',& f" r R/ k' B; _ u
最後沒有無敵效果了,輸入'!' 或是 '0'。6 k, P& K7 d& P4 i: A+ k
8 Y" v& \! H$ q" ~8 [9 i記憶體地址經由演算法篩選後,只會剩下幾個,
- k$ Q U9 {4 ` b3 }% Vtry 一下,你要的地址就出現了。& n6 I W- V5 N& Q
6 h L6 O4 p/ ~* o; m0 Z
P.S.以上程式已經Run過,沒有問題。
% Z5 F2 K1 j) D6 [
- ^, b( @ m6 ~- L0 m; m[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|