|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
n v" o( A% ~7 H2 D主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
6 p9 h% m D& M' b
* y6 h$ Z; ^$ L( O! U7 q( F$ F) ]其實修改無敵很容易,
' s* ?$ y2 ?4 f9 ?; N# }就以遊戲程式設計的觀點來說,
1 w! E, z+ }0 U# K一開始我會將人物無敵數值設定為0 j! U# U5 V/ D& \
ex:
& y# M& f" Q W3 @( u0 ^- N#define InvisibleInit 0
9 |9 f% H9 s! D b- | h% z" @) {/ O& v
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),& S/ d1 A* Y3 m
呼叫設定函數
" f; x, q# Y2 g; l% C$ T+ j$ t+ uex:
; s/ w0 \: {8 p3 HBYTE InviIniVal(EVENT event,BYTE SetVal)
9 M! `& d& E; T/ ]$ I{( [0 K y" R' t" I7 Q& G; E
//Deal event ...! B; ~) F$ {) k; m: r
0 s/ O' |9 W$ S
//Deal InitVal
( M. U Q+ N5 rBYTE ret = 0;6 h* \& g9 m8 B% F A8 U% d
SetVal+=InvisibleInit;
, E5 a8 `7 P& @, I8 yret += SetVal ;
+ z, _: a( o: }2 \% [) yreturn ret;
W1 r- N0 ^/ s* c( r}
& Z: y; Q6 l0 P& {) f5 Q3 Q1 E
( p% E6 g5 m' i, Z最後關切的函數當然是遞減函數:! @7 L) s& @( J3 ?0 R; H
ex:4 I) v6 r& |" f- c# n! z6 M1 e2 c2 m
BYTE DecInviVal(BYTE *InviVal)
7 [! ^) D' M0 z& z }, L: R{3 ~. u) {, m/ I) @
cout<<*InviVal<<endl;# J& z D, h& T% b j
(*InviVal)--; //*InviVal -= DecVal;
7 T3 i0 u, k+ Z; O/ m& Mcout<<*InviVal<<endl;
0 A) e( o& X r4 |! G(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;- ?$ H5 A3 X! X: w4 n1 m$ d
return *InviVal;
: C) h3 {, D! B& x' @% O2 T q}
8 Q0 m1 P8 C2 a+ |. z- |1 _: E- w& U
針對以上觀念,改遊戲就很簡單,% w2 `/ O, W! q
一開始我們先初始化數值,輸入'?',& s6 l4 r0 }- P% f6 G1 v
接著開始無敵時,輸入'+',
, d* k7 J. z- f' T9 c接著我們知道無敵時間會開始變動,
% B! [3 _2 ^, R. c以上例來說時間開始減少,每隔一段時間輸入'-',- D9 T5 S5 l: r1 R
最後沒有無敵效果了,輸入'!' 或是 '0'。
2 Y- i" c8 F6 n8 l$ R
$ R+ z2 h7 b' w8 T% J' d記憶體地址經由演算法篩選後,只會剩下幾個,
/ U% N1 r8 ^; [' t: T) o7 gtry 一下,你要的地址就出現了。$ g! o f5 Q/ s a9 h
' ?; u. G1 k+ e
P.S.以上程式已經Run過,沒有問題。
7 S3 J" ], h- T% s# _: w u9 Y9 A
' s9 D1 t, q: p* a) m. c! W( \4 W[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|