|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
( w# n$ M; j/ _* i主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
: N# y1 f( S5 D/ A' \ Q* P5 m9 K" @" [& P6 ?8 f
其實修改無敵很容易,6 V0 E( z+ m# B9 q5 X+ a
就以遊戲程式設計的觀點來說,. T7 j4 M2 ^+ v9 p) O* J6 z8 X
一開始我會將人物無敵數值設定為00 z# a! k0 C. v6 m
ex:
9 G0 H* @- l( U. V. N% E#define InvisibleInit 0' K# f4 A) G5 e* ~. O6 S% `
- E2 G0 k6 \0 u# p" Q9 C然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),8 p; l* \6 t* G
呼叫設定函數1 m( ^& C6 Q* m$ Y
ex:4 ^% R- X8 j \- |: E
BYTE InviIniVal(EVENT event,BYTE SetVal). ^+ @- v7 R% B: I- M
{. R) B, Q3 \2 M( J7 C: `$ E( w
//Deal event ...
" X, z! D2 x% o) h3 ~
' N0 r* [1 g" g) Z) z+ Z//Deal InitVal
% W" Q+ T" m+ Z4 U; ~- Y5 VBYTE ret = 0;- H3 [: {0 Y' S0 V
SetVal+=InvisibleInit;
* D: ^" b1 g% Uret += SetVal ;
! _ M% ^! J( `& X& I7 @4 {return ret;6 @8 ?4 X- W/ l7 n4 j
}
6 v- Y4 E/ j8 y/ @! K, i: \- R- M7 v4 X) G: J# H) X' _ F
最後關切的函數當然是遞減函數:
; |6 g6 a1 W* u9 o4 F, uex:8 Y% L; [9 w9 a0 I
BYTE DecInviVal(BYTE *InviVal)& P/ I& n2 s' P# i/ W, U$ G
{2 G9 F, v! Y& u# P/ x
cout<<*InviVal<<endl;- ]) ^3 \0 i* V% ]. k
(*InviVal)--; //*InviVal -= DecVal;
r: o: E1 I8 U) E/ Z# acout<<*InviVal<<endl;
3 V3 |2 O9 R9 A( ^( ~. M(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
3 U# s+ y# i" C' \return *InviVal;
0 ]/ @) S. G# D# b/ H8 G* O}
& i' v0 h# v1 u2 ~$ [1 ]4 Y2 D$ a
9 D3 S/ P; s5 k9 u% X4 N針對以上觀念,改遊戲就很簡單,! |8 e+ l9 s1 j- d. B! `; y
一開始我們先初始化數值,輸入'?',
) K9 i7 s( s, N2 R接著開始無敵時,輸入'+',
* b/ {; k& F# A% |9 L9 E, y* m8 s接著我們知道無敵時間會開始變動,; K& }* l+ N5 a. J; N/ S
以上例來說時間開始減少,每隔一段時間輸入'-',
7 w+ e0 N* S( N最後沒有無敵效果了,輸入'!' 或是 '0'。" N6 }3 [+ A3 C& W
* x/ `* J+ `& L) r
記憶體地址經由演算法篩選後,只會剩下幾個,5 M6 b7 c4 N x8 N c8 e- k, y
try 一下,你要的地址就出現了。! `: e7 v$ l7 s$ h- k: h) z
- `9 u! h. O8 b6 ~' xP.S.以上程式已經Run過,沒有問題。
$ K6 ?$ ]: p! h( {5 x* T3 `6 Z. P- J3 x1 i; t# n6 k2 g
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|