|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 ! ~8 u7 Z9 y3 t/ C$ u& E7 b* {$ _
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 " `6 H( {" c' ^7 a Y# s& _% K
% l9 C9 Z6 @$ I) T" `其實修改無敵很容易,
' z6 V% B; C( o* r. d+ O就以遊戲程式設計的觀點來說,
2 T1 `9 B* k1 s4 x一開始我會將人物無敵數值設定為0
7 ^& s* f7 L; t7 p- o' tex: $ _8 t( W' O) R, S3 p' O2 m
#define InvisibleInit 0
# n" `2 E4 [8 M' P
) k2 ~7 @: D1 \4 C) `然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),5 G' q* f8 ]5 V) r
呼叫設定函數! H2 a4 b# ~4 Y
ex:6 T7 c) D$ t$ H+ |8 ~5 k
BYTE InviIniVal(EVENT event,BYTE SetVal)
" T$ ~% ]$ V# |{
+ A2 G! n5 b$ Z4 e3 r& J//Deal event ...
8 h4 |- G2 D$ X- J# r
/ |: y, @$ F1 I; D+ U( c//Deal InitVal* W, Q g+ ?/ V' _
BYTE ret = 0;
" w8 a4 P0 [: KSetVal+=InvisibleInit;
x9 T R% R$ T7 W9 t& a& M3 {" Iret += SetVal ;. `/ R& o5 g) b; G
return ret;4 t9 m) r1 N; X& }
}
# `2 V$ C/ K! U1 A% r- j8 v1 y* i7 O3 }5 _' T% I; D6 P; _
最後關切的函數當然是遞減函數:4 Q1 i% @* A, ^" J
ex:
7 s8 P. t4 u0 iBYTE DecInviVal(BYTE *InviVal)2 B8 ]3 P; m' K0 k5 R* ^
{2 K1 B8 C; { m
cout<<*InviVal<<endl;( c" e$ L% Z: j2 t u" h
(*InviVal)--; //*InviVal -= DecVal;/ l/ K3 K2 D; w, `
cout<<*InviVal<<endl;
1 n! w9 }& x1 i/ y8 L, t(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;, i+ ?7 G% d( g9 C& W+ [) i& u, i& W, N
return *InviVal;
& O8 d# j# I, U6 [3 Y: U}
3 ^, B9 C3 ]4 }9 q- c, Q. O
& Q) T' U) _# e# n$ R% ^針對以上觀念,改遊戲就很簡單,
9 G7 S" G3 s9 x5 j一開始我們先初始化數值,輸入'?',
: T' c( q% m2 J8 A接著開始無敵時,輸入'+',! P5 N, `0 O. o) e& h: B
接著我們知道無敵時間會開始變動,
/ l8 {" \2 [5 T. n: k) c以上例來說時間開始減少,每隔一段時間輸入'-',
% W+ Y" R5 q' R% E4 Y最後沒有無敵效果了,輸入'!' 或是 '0'。
. i1 {. G, T" L) S+ y
' I, W# j, K9 y$ l7 _2 y記憶體地址經由演算法篩選後,只會剩下幾個,
4 n+ X" Y; [) I1 k9 U7 F; O, xtry 一下,你要的地址就出現了。 |9 t; d3 [$ d; ~ _
( b2 E5 O/ S4 I
P.S.以上程式已經Run過,沒有問題。
6 X2 A D8 }0 z. `9 O% C/ t
. b0 d" }+ n, |) Q6 ?* ^) R6 A. m[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|