|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 M5 \9 L5 A* w# Y- j
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
" g f/ Q- `0 {9 x& k' d* S& Z. e" L8 o% I: ]4 }6 _! \1 t; q2 `
其實修改無敵很容易,. T" X! d/ d& i3 y- ]) P4 T% K
就以遊戲程式設計的觀點來說,
7 P' q6 `9 f6 v1 n, o- j一開始我會將人物無敵數值設定為0, m( M! v% G- j7 M) q5 x2 U
ex:
/ p- [* N" F1 f+ Z+ ~#define InvisibleInit 0, W+ D- ^( S y+ X: ]
) F. w/ m3 x- Q2 A
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),; e, l' y% P- S. Y3 ^; H0 u4 D% ~ ?
呼叫設定函數/ O7 W1 ^& y& v
ex:
% n0 v. ]" t; Y0 ^+ o" s- H0 i, {BYTE InviIniVal(EVENT event,BYTE SetVal)+ d$ Z! r' c* P4 J
{, |" \& b! n( ~6 M) K( |! x
//Deal event ..." w7 i' B, A9 {& z- P4 T6 y
1 x$ H! c$ Q1 U
//Deal InitVal2 `# w* \ U) u: Z9 b
BYTE ret = 0;
* P0 m- E2 l1 H( x: ?. LSetVal+=InvisibleInit;5 K( Z; Y3 X% { ^
ret += SetVal ;( l U0 r n1 z2 ~
return ret;
6 u% u7 _; L0 L) Z$ N* n} / U2 Q7 H: `" u2 o! @; T+ I
: p4 H, m) _$ F1 J# M {: h最後關切的函數當然是遞減函數:
& p, [6 M5 @& ?* A# uex:
( {8 N# Z2 c2 P8 OBYTE DecInviVal(BYTE *InviVal) G6 ~' F) W6 {& j- D7 R4 U8 _, H
{: ~7 j/ U: a4 ~- \6 W( C/ M
cout<<*InviVal<<endl;3 ~: X6 J) W: _1 Z
(*InviVal)--; //*InviVal -= DecVal;
8 G0 F9 v% W! b" wcout<<*InviVal<<endl;
; Y# T& l' N. |0 e- i(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;8 p r3 T! s% g3 C. K
return *InviVal;- c' ?% Q. W2 P5 i/ ]9 D7 s* b
}
) v7 [$ d0 S/ E. V/ u- I
% I0 Y2 R! ?: \$ t針對以上觀念,改遊戲就很簡單,0 O' g8 L/ y2 q/ D& S
一開始我們先初始化數值,輸入'?'," F2 ]* ^6 I" L# j6 N5 q
接著開始無敵時,輸入'+',
' w- _0 m$ h" Q k6 I4 u接著我們知道無敵時間會開始變動,
8 p9 O' |' v" ^4 ]" |9 H' v: w以上例來說時間開始減少,每隔一段時間輸入'-', o$ Q; S0 m9 P; P u6 o" ^( W% {2 M
最後沒有無敵效果了,輸入'!' 或是 '0'。. S( q# r& S; e( z7 D2 F# {
3 a) t) P* H' J6 K# k記憶體地址經由演算法篩選後,只會剩下幾個,
' B1 `) }% i3 r& N5 N0 v' W5 m' K2 gtry 一下,你要的地址就出現了。1 p/ l8 k. n5 `9 h; o; M; g4 o8 C5 ~, ~
3 f/ _. @; G" @$ V: T
P.S.以上程式已經Run過,沒有問題。
. A+ W" D1 _! o- ]# i5 \5 j: s$ F# ?9 E2 T. I: _% l) a
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|