|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
3 `7 t3 l! o' j0 ]主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
; l- f# }9 ?; c0 g0 {
1 E: F- w! p& L/ z9 G% ~其實修改無敵很容易,
# C4 G) L2 ~+ G; w9 V就以遊戲程式設計的觀點來說,1 W0 s) y& u* C' h
一開始我會將人物無敵數值設定為02 b* i$ v3 ]5 {- e4 G3 m
ex:
1 u5 _5 g0 l7 J8 F3 I#define InvisibleInit 0; O+ s/ R" }7 d
: Y. w, [8 Y7 z: Q( h( W
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
! P2 ^0 k9 ^; r; Z- t+ x呼叫設定函數1 i0 p& ~) }- A* S
ex:3 b4 F, u* g; A# C1 G
BYTE InviIniVal(EVENT event,BYTE SetVal)# ~6 g. _* {" O& g) {
{
/ m( T3 t: s/ J4 K4 s//Deal event ...2 ?6 W: C8 O1 G
: t4 ~- J/ X4 e h% J4 A//Deal InitVal( S8 |4 k- A6 E
BYTE ret = 0;
& g4 x3 O. ]7 S) Q/ I) NSetVal+=InvisibleInit;
. {2 e7 R# F5 t7 U1 h+ N! gret += SetVal ;$ [! k, I/ c6 h! v& ?4 t$ z
return ret;
8 W D$ T0 b$ c7 S5 W. m} 0 X! x: x- d' y0 q I( r/ t8 d; t
" [7 A/ n7 Q& C. \% a9 v. Z5 H9 Q最後關切的函數當然是遞減函數:
- l3 s, [* {- w0 {: eex:
" U# B7 F8 m7 Y. V* IBYTE DecInviVal(BYTE *InviVal)% P' L3 I4 \0 R2 }
{8 h, c& B0 Q# b- k
cout<<*InviVal<<endl;! ~$ q; n1 D. U
(*InviVal)--; //*InviVal -= DecVal;
! w& k) d t: W! F6 v/ Q/ ccout<<*InviVal<<endl;0 [7 u2 o2 l0 P. Y7 k
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;7 }0 C& {8 z& M0 g2 J% u$ I9 C1 }
return *InviVal;
1 ?7 x4 O- b; r% }}
/ N3 s- t4 i8 } j3 p0 d1 F
1 }, H/ d) q# X/ q1 t# O針對以上觀念,改遊戲就很簡單,9 s" Q! p; _. `* X, ]
一開始我們先初始化數值,輸入'?',
! E, H: _! a+ B9 ]0 s1 f; p接著開始無敵時,輸入'+',
" ?# W& S8 n& r0 D接著我們知道無敵時間會開始變動,+ `0 Q1 w! Q5 @9 ?. ~* H4 U
以上例來說時間開始減少,每隔一段時間輸入'-',
G3 n! }/ e, C8 O4 U3 x最後沒有無敵效果了,輸入'!' 或是 '0'。( q4 `9 R: q! l. D! e" f, t
# ?: A5 j/ e/ X- M( I
記憶體地址經由演算法篩選後,只會剩下幾個,
$ z* @; R5 A$ L" j1 c$ c8 otry 一下,你要的地址就出現了。; A7 a8 Z' ?* {: o: S
4 ?& I% |+ L4 X- S) lP.S.以上程式已經Run過,沒有問題。
: k2 E$ L1 n) O" @" _) ^- y {8 |9 E% {2 e' n( k1 H& f) `, D
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|