|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 E7 G* t1 D( \, u9 x
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 8 c1 d) h/ e3 ~& N6 K1 d& Q
; X6 D B6 }5 ~* X: v* }
其實修改無敵很容易,3 ]9 T w8 S5 B) z6 k
就以遊戲程式設計的觀點來說," N4 T- p2 z3 \# v2 n9 N" {$ m( ^
一開始我會將人物無敵數值設定為0
+ |; z% J; N5 ^. Pex: ) t) ?7 p4 @4 ~6 E% P' P. x* _
#define InvisibleInit 0) l7 v% {, m/ i) r$ M4 P
' U9 L9 z w$ t' y1 f然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
6 Y' J, f4 w' _# f呼叫設定函數& x% D( P8 @9 Y7 V
ex:
9 b. z3 ? L" z1 O% [5 P) x1 zBYTE InviIniVal(EVENT event,BYTE SetVal)
& t* p6 C+ e. @! Q5 ?# s3 F* D{
, o' r* [( F b1 e8 T//Deal event ...: K9 A6 k6 W4 P$ ~2 v& g$ Z
4 L3 P2 K! a+ \' J$ Z3 X
//Deal InitVal" L t8 X/ B3 i) [' z W' l
BYTE ret = 0; v$ ^& [6 C" |. |6 J7 O
SetVal+=InvisibleInit;6 y2 d; P3 \) p/ \7 F
ret += SetVal ;) S+ d4 l' k! F- k
return ret;3 o7 r) Q# l& ?. j ?; B
} ! Q" K; Y9 [, o0 a
6 {) M8 T4 x: `
最後關切的函數當然是遞減函數:
9 A V" Q6 E1 l) @! eex:3 o4 `# W9 E6 y3 x7 t/ j% G. N
BYTE DecInviVal(BYTE *InviVal)( r8 _* B; [( N; K. i2 t+ Q8 ]5 O
{, z0 D, D- o8 I, q7 |3 |
cout<<*InviVal<<endl;
9 c9 c4 O8 J. p# z- J4 p(*InviVal)--; //*InviVal -= DecVal;& t/ d$ x, T4 O) G$ I# T, e' ^
cout<<*InviVal<<endl;
; w2 p9 p: b; |$ m1 g! Q+ M, w, f(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
. w& B" O" i, s3 {! g/ ]# lreturn *InviVal;8 z! b. M& i* g9 u. i2 M3 v
}) n3 X! q: h0 Q5 A* N7 V, u
3 L2 [6 v8 j5 k3 F
針對以上觀念,改遊戲就很簡單,7 |3 W( E- n4 |% A9 H ?
一開始我們先初始化數值,輸入'?',: t, V1 n% d3 F- N+ {) D; s
接著開始無敵時,輸入'+',
! o3 B8 _9 g. v# m; W6 N接著我們知道無敵時間會開始變動,
" X8 Z+ ^7 D# q g- y$ ?" g) i" O I以上例來說時間開始減少,每隔一段時間輸入'-',
8 J! U3 X8 d( s最後沒有無敵效果了,輸入'!' 或是 '0'。# ?( X: e, K1 p
3 C% V: a+ J6 G
記憶體地址經由演算法篩選後,只會剩下幾個,
; O: Z. A5 {& M; t9 r0 Stry 一下,你要的地址就出現了。
5 m) \5 j# @5 P% J9 p- W5 r8 W- ~" D* ` O8 _
P.S.以上程式已經Run過,沒有問題。
( n" j; L Q+ K5 X" x( X1 X& t* {9 L. q- f N( F
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|