|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 b0 x; o& V: ~8 B
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 1 u0 ?& [$ M* ~
( ~) R: E7 K' @# B8 _" p
其實修改無敵很容易,# B+ f4 k* s$ h+ ` h
就以遊戲程式設計的觀點來說,& ~( m- |' G8 e! [2 D& o
一開始我會將人物無敵數值設定為0
$ m! d7 ~% n' w. j+ x/ \ex: $ o) s3 l) N$ Y: G" a u- K, j3 i
#define InvisibleInit 07 ~; d# @+ ^1 z* f+ k5 G. k& I
" O/ j8 k Y O' z然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),! d) a M& ?6 G* H/ _' C) m5 e
呼叫設定函數7 Z: S( T; Z$ I
ex:
3 N# N E) S/ Q8 SBYTE InviIniVal(EVENT event,BYTE SetVal)
u: G7 v; o8 o' Z{) N3 A9 D% Y* D. ]( o8 ^
//Deal event .../ X5 v' [" v; O( N9 H7 C- j
# ^ a( b" J0 i//Deal InitVal- [7 [6 @( Z o- S9 z8 z8 P+ c
BYTE ret = 0;$ l" Z5 _# @; {* K+ l
SetVal+=InvisibleInit;9 |+ l. V9 X. W- f$ |7 L. e! I: W
ret += SetVal ;: Q, |7 E T7 J- K' C
return ret;3 V" a) H( I1 k+ V( f
}
& h0 M- _7 q ]# Q, L. K9 x
0 D8 X V! S0 X8 J w最後關切的函數當然是遞減函數:: N/ p% m: l0 _* @9 P# R" c
ex:
4 T( q" D) B$ h) wBYTE DecInviVal(BYTE *InviVal)$ Q3 ]! }4 b% M7 g' \9 G
{
1 m9 ~+ O/ l! b' Kcout<<*InviVal<<endl; j: {6 w- t/ |, R" X
(*InviVal)--; //*InviVal -= DecVal;: R! u3 c( u+ Y' m& a, F7 c( _, L
cout<<*InviVal<<endl;
! O# C' g7 X) Y(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;# s5 g9 \; A, B( I" t* \5 N
return *InviVal;5 o0 U/ Y' k3 r; X0 p5 K
}
: S: @& f6 O9 Z7 W" y2 W
# T5 K9 u( n/ C+ }針對以上觀念,改遊戲就很簡單,9 d6 M1 E2 z+ Q
一開始我們先初始化數值,輸入'?',
5 ^; I" B7 g# j7 q9 o接著開始無敵時,輸入'+',
. |' ~" U; k. t- _接著我們知道無敵時間會開始變動,+ A, ^: L+ c$ ~- |. Q3 @
以上例來說時間開始減少,每隔一段時間輸入'-',) B- a, j" c3 A1 |! @
最後沒有無敵效果了,輸入'!' 或是 '0'。$ Z. m7 y, l8 c1 P
7 P6 f0 \ n3 ~+ \0 h記憶體地址經由演算法篩選後,只會剩下幾個,
- ~( U2 A- p9 R! v4 Mtry 一下,你要的地址就出現了。
" U' k- r1 f% ]: h; ~/ A9 i& z4 r! H+ V* R& ~
P.S.以上程式已經Run過,沒有問題。" t+ E( O$ o! Y
. U* j y8 X. u6 `6 C+ \7 g[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|