|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
& o: p( e" y' Y8 c o主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
& Q3 `* {" h3 I4 ?/ h9 o
: d6 M3 ~& A0 v0 r$ H( H其實修改無敵很容易,
. K& h4 t8 P, }2 X+ q# M# |就以遊戲程式設計的觀點來說,, O& C* }2 H5 n7 G! G! F% H4 N
一開始我會將人物無敵數值設定為0" ?3 m. B. N# R, t
ex: % i. N# G( f8 C6 c. U
#define InvisibleInit 0) L' p8 H6 K" p" n! I; n
/ U' i; c& g0 e然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
. A4 S5 z9 F/ M1 q! f1 y9 \3 c呼叫設定函數. q# E7 T/ j6 j3 e/ H
ex:* T, y8 _! r6 q( C, \ z5 E
BYTE InviIniVal(EVENT event,BYTE SetVal)
7 v% H+ S6 k( a8 g{7 e5 _; P0 P4 F6 v; C* O( c# Z
//Deal event ...
9 f, D Q$ B% q6 E
3 G" M$ ~1 I: {- S% i//Deal InitVal
# r' c! M8 P3 c0 H. c/ YBYTE ret = 0;; c1 v5 ~3 f7 E3 h2 H
SetVal+=InvisibleInit;
2 S1 i! B' p) X0 S q+ Rret += SetVal ;0 z: }* X( R: F+ l9 e( ?1 @( ]
return ret;1 ]! e- p! {: a! t3 }- l
} - K5 i; j/ A/ s- E' x, E% B
( C( G* |( w: ~* K3 B T9 B
最後關切的函數當然是遞減函數:
4 I# { H- f8 b, g' P: aex:
6 K* b+ M3 \, }3 R/ RBYTE DecInviVal(BYTE *InviVal)) ~7 ]8 i2 s9 z4 W/ K
{
, y! \4 i5 N1 V6 f. i2 W. l! mcout<<*InviVal<<endl;
( b1 s: O- P! H3 U(*InviVal)--; //*InviVal -= DecVal;6 _, Z T4 [8 P# C7 ?- |$ v
cout<<*InviVal<<endl;4 C. U! V+ j2 r$ `3 P9 }
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;' O- N) _. u: r6 A2 M0 f
return *InviVal;+ o- N# j% M" ?6 R o6 C+ o/ _3 n$ D
}
8 e( v% m; j b$ S; t' d1 v, k) C6 j) x" N: X! h* _. A$ a
針對以上觀念,改遊戲就很簡單,
6 T$ {$ o- }2 x u3 k; s L5 M一開始我們先初始化數值,輸入'?',
( _+ Y/ B* I) N& J7 M' S& ^6 ?6 [接著開始無敵時,輸入'+',
& w/ n" H- q Q. m/ p接著我們知道無敵時間會開始變動,
/ ]+ Y6 C, B2 |# x% M以上例來說時間開始減少,每隔一段時間輸入'-',9 ^8 @% }# d+ ^* S8 n* g" O
最後沒有無敵效果了,輸入'!' 或是 '0'。
: c6 J( p2 {% O3 f0 c1 v" y4 j# k- z( C9 K; c
記憶體地址經由演算法篩選後,只會剩下幾個,# j7 m3 N a( m% a& L# j
try 一下,你要的地址就出現了。
2 g5 |$ ^+ F, G, m; N+ H1 I# L: a
+ g" b; H3 ]& c, i; n% }1 AP.S.以上程式已經Run過,沒有問題。& P4 u5 J$ I/ S. L2 |$ u3 e: u
% b; C; D5 {' }' c
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|