|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 ( h& }; @+ B/ K" {# o
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 ; v; { `0 l* J, f5 X7 G7 ^* a
/ Y K2 W- K7 c+ V! q
其實修改無敵很容易,: ^+ G, ]" ` ?7 j
就以遊戲程式設計的觀點來說,& f# Y8 g- k; F) H
一開始我會將人物無敵數值設定為04 k5 e# G- i( I9 g9 q1 ]1 L
ex: 2 t4 Z& u: h5 c+ D
#define InvisibleInit 02 c8 I) _% r- n5 _$ v8 ?7 r2 {' B
+ @& b1 s6 [- o
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
( _/ }- z2 ?7 H: Z1 z呼叫設定函數& q6 }. o# ~- e' X4 m @
ex:
, [0 {2 Q+ d Y' m5 ]1 RBYTE InviIniVal(EVENT event,BYTE SetVal)
- D6 I( V( Q, `! z8 l5 Y% ~7 ?{: h c( r* H, m& g; v( W+ ?( p" y
//Deal event ...2 ^% q: W- l/ `) j* |$ q6 V+ y I
) h6 W1 @- P# h//Deal InitVal3 A) P+ V$ p" z/ U4 I
BYTE ret = 0;" p# D! J* U7 X
SetVal+=InvisibleInit;4 k' Z) x6 m7 B# h, ^" c! {
ret += SetVal ;2 y% C( ^/ J! i3 ?$ ]9 x( R; @$ o
return ret;
7 n6 h1 o7 h1 T. o1 {' p2 z} 6 C5 e @6 O% B0 X! F6 l
! H2 l. B7 t! K W
最後關切的函數當然是遞減函數:
4 s9 S: M& y$ S* Fex:" `- y( e- E( h1 u; G
BYTE DecInviVal(BYTE *InviVal)- f8 E3 a! P# d) L0 Q r" `2 i4 H# h" P
{
- u; B& C: i; D( h9 q3 Bcout<<*InviVal<<endl;
7 a+ r4 _* r! k$ ~(*InviVal)--; //*InviVal -= DecVal;
0 M$ z9 @6 M8 v" K+ E- Xcout<<*InviVal<<endl;
% s9 e! N+ _/ ]0 _4 ` b(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
, }5 Y G# T7 ^0 `return *InviVal;8 M6 |) Z d, l% d
}# H# y; B1 a8 M3 o( l3 W# w
3 q3 G' L0 {& X4 j8 k
針對以上觀念,改遊戲就很簡單,
) N2 c# U/ n! X: y一開始我們先初始化數值,輸入'?',
% E$ v5 k- U6 U接著開始無敵時,輸入'+',
f: R0 ` _' T: K7 M接著我們知道無敵時間會開始變動,
% q$ i1 V+ U4 D5 m. D以上例來說時間開始減少,每隔一段時間輸入'-',( S+ p$ Q! y) I6 Z
最後沒有無敵效果了,輸入'!' 或是 '0'。
; R& o7 E5 k& E2 O
* E" l( x' Z' d, S l1 G3 H+ u記憶體地址經由演算法篩選後,只會剩下幾個,
# j/ k$ I- e- Wtry 一下,你要的地址就出現了。- r9 D. M" |% u. q5 G
- _! i& w$ ]3 e) \7 m, t6 c3 w; NP.S.以上程式已經Run過,沒有問題。) A1 y& A7 D: l' {, O
- T8 W S8 p7 E: a l2 C) D[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|