|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
5 J$ l$ K8 ^* i/ H: j; d主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
9 K* e( C. C# v
( k$ n3 F3 J* U1 m/ T2 X. ~其實修改無敵很容易,
% g. ?5 m% e! g p就以遊戲程式設計的觀點來說,
9 i. @3 D0 L' o' ?# V9 Z0 g一開始我會將人物無敵數值設定為0
, L1 w/ v9 Z- M. k! K# Aex:
/ r( ?' Q. n D* ?; M#define InvisibleInit 0
! R; C% B! U; Y4 [2 Q
" D, P5 B- B) i2 N5 B然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
0 g* \% [0 O1 d8 v: i呼叫設定函數
$ z4 }. G8 J Q& ^4 m: Z, v5 l/ X8 Wex:
' @2 g* ]0 L; n4 z9 f: g$ ?BYTE InviIniVal(EVENT event,BYTE SetVal)& A6 W o! W* [; }' N
{) E+ D6 x/ h$ k
//Deal event ...
% K# [- D" ]2 f3 x4 i4 o
9 ~4 \1 G/ a z//Deal InitVal
* U) L& z) K# w# vBYTE ret = 0;7 [; w6 G8 `- y" L2 J& [' @
SetVal+=InvisibleInit;
: W8 C" u7 Q1 n0 h6 L$ H/ n/ |9 Dret += SetVal ;0 w# K. N0 O: w1 r# N
return ret;1 q; X8 A. H, k, A6 e
}
: d' N& ]- t' J7 f3 l- J
5 b3 B9 J, {' j7 {* {/ D# B最後關切的函數當然是遞減函數:% d- I/ Y/ `0 w' a
ex:' M% s& e. }5 V/ H7 q
BYTE DecInviVal(BYTE *InviVal)
$ w8 S1 _9 ? O$ |/ [{
0 c9 r+ B! }- ?& Mcout<<*InviVal<<endl;* A) y$ P! Z- ~7 T8 n4 ^ e
(*InviVal)--; //*InviVal -= DecVal;
' A$ J6 l* F+ H+ Mcout<<*InviVal<<endl;: W9 ^8 N/ R. Y7 C7 Z7 N, k j
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;. V @7 d- ?1 D7 f
return *InviVal;. L' N# |- H [- ~) u: A5 L
}7 B! H, p/ B# z! e
+ o& r" @0 E" N6 z0 e
針對以上觀念,改遊戲就很簡單,- t9 m9 f1 p* [
一開始我們先初始化數值,輸入'?',
$ w) }0 c: l6 V接著開始無敵時,輸入'+',. e: L1 ?8 b5 J
接著我們知道無敵時間會開始變動,: A8 k, D/ Q- R. A Z
以上例來說時間開始減少,每隔一段時間輸入'-',! N+ A1 r% c( @" R
最後沒有無敵效果了,輸入'!' 或是 '0'。
5 |5 C4 E8 L* r0 [( j3 Z; }
6 g' z8 @$ ~( }3 j+ R記憶體地址經由演算法篩選後,只會剩下幾個,' s* J: }4 \# w; A+ z+ |
try 一下,你要的地址就出現了。) o" d+ _5 Q# l# J9 E2 s9 g
$ ?5 _, B9 P# j+ r. Z3 a! u0 r5 HP.S.以上程式已經Run過,沒有問題。% `5 Y2 p" E( W/ M! v$ e" n
6 q" h9 L' E4 l$ w" R2 \[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|