|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
# f# e0 Y8 I* Z- [: e主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
& Q" v1 L: q! }, |/ a, z8 J* G3 S3 r$ _
其實修改無敵很容易,
: ?+ A. Q* l5 ` ]6 e3 S6 s& |就以遊戲程式設計的觀點來說,
) A! C6 K4 q: l+ N! U( }6 ?- K一開始我會將人物無敵數值設定為0' N# G- W- I- ?. A) n( |2 L" S
ex:
4 I9 n4 D1 {! X#define InvisibleInit 0
9 E3 G: ^8 b2 {3 c: e" y' [* y+ f6 {% [. B$ D
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),/ i9 z. J1 M1 s4 x6 S' {' y
呼叫設定函數
1 y1 F/ J' m/ jex:3 r' ], Q9 C/ y) n. g
BYTE InviIniVal(EVENT event,BYTE SetVal)
7 g) i4 n4 U2 R! |: n5 v{
; K& z) L5 C4 @- ?2 a2 i//Deal event ...
5 K7 T7 m& q& v$ Y- v; h4 j
# ^) G* f/ p6 }$ o, i//Deal InitVal
8 R( j$ n. n/ O% OBYTE ret = 0;
6 J" q: ~ @; }# lSetVal+=InvisibleInit;
0 w$ G. d( u% t) n1 \: L4 pret += SetVal ;7 u) S9 y K( |+ Z
return ret;& Z6 [3 b7 H1 d+ U
}
, i7 |! n( g. e7 {
6 u I& Z! }" m4 b最後關切的函數當然是遞減函數:
4 T( z f4 V. \ex:
' J* M) V: p* Z, hBYTE DecInviVal(BYTE *InviVal)
& }2 B/ `# f5 H, d{3 g: `, P# B! _, l" K
cout<<*InviVal<<endl;1 W# {/ a/ \$ ^( a; e# I$ ^
(*InviVal)--; //*InviVal -= DecVal;
- B& p7 m4 Z# e# r8 Z ]cout<<*InviVal<<endl;
7 P4 F% h3 H9 j* s(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;( f2 G- G: I, l2 b( k7 @& _2 x
return *InviVal;
. h6 h+ R/ w) y" i; X4 U}
; b Z1 Z3 e& Y% e+ ^, g. X- \) O$ f+ o1 v9 c2 @
針對以上觀念,改遊戲就很簡單,1 w. c; K3 `) v) C& v ?
一開始我們先初始化數值,輸入'?', P9 u7 r# ^9 ?
接著開始無敵時,輸入'+',( c# x9 R6 w' ~) Z2 A
接著我們知道無敵時間會開始變動,
8 Q# E7 I3 f& a以上例來說時間開始減少,每隔一段時間輸入'-',) J( N* n" x" N8 {9 {
最後沒有無敵效果了,輸入'!' 或是 '0'。. @+ W- J: c, Q" X+ F2 Y
; e+ {2 R! B9 M7 c記憶體地址經由演算法篩選後,只會剩下幾個,
$ f* l3 C# j4 X* U. \try 一下,你要的地址就出現了。
% N) P- y/ F7 p# o) S! J/ [' r- @7 |2 V& ], v' k+ S5 {; @/ F( S2 Y
P.S.以上程式已經Run過,沒有問題。' x8 F$ G6 I, S: |1 v
7 p$ N: e0 S8 b/ i* @% c[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|