|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 3 F9 q& |, W* G5 F
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
- j' q/ m0 O: K) [& Z+ @8 g
, ?% H: O2 q" n! k其實修改無敵很容易,
# V! S7 p2 s# |- s就以遊戲程式設計的觀點來說,% u1 r4 ?- R0 D# B; x- Z7 W
一開始我會將人物無敵數值設定為07 d6 J3 H$ \3 ~; X8 f
ex: + l4 y6 k- ]2 B$ u; \: ^
#define InvisibleInit 0$ F: x; {& \( R2 d- O- v$ v
- z7 H! Z$ M1 @$ b& U3 Y然後當觸發特定事件,例如受到敵方攻擊(物件碰撞)," F- k( o) h- J m: \
呼叫設定函數1 f1 F8 Y/ _ D3 J) l' o2 T
ex:
% N# ], @4 c5 s! ^3 O8 cBYTE InviIniVal(EVENT event,BYTE SetVal)# c8 y. k8 |9 Q2 f, v
{1 W2 @2 E' \5 Z+ ]" C* I3 V+ ^6 m4 {' w& A
//Deal event ...( i! H: d# R$ q' b
$ e3 l3 `: `$ f g {: M
//Deal InitVal
( G* ]3 f& u* |, A; i: rBYTE ret = 0;$ a [ D1 L4 C% D5 w% A: b
SetVal+=InvisibleInit;
7 x4 L/ R" I& N5 c5 h* Rret += SetVal ;- u8 e0 f8 u1 r7 U- N" K# Q
return ret; ?" H1 s; ^# o5 S1 b
} 0 i1 g( D0 {2 j* ]- J" [
. _; f d: [8 j
最後關切的函數當然是遞減函數: X9 E; Y0 D4 Y' e
ex:5 X7 J9 c4 E9 |5 ?/ R! g+ h
BYTE DecInviVal(BYTE *InviVal): ]! k0 e# q, a" z- B
{ A- x% W9 x( q7 C) h
cout<<*InviVal<<endl;$ z6 x! A1 b9 p
(*InviVal)--; //*InviVal -= DecVal;
# q8 O+ D p" ? ?. }9 fcout<<*InviVal<<endl;
3 d. Q' n3 n! Z! R5 R, U(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
+ n3 ?5 @ V( e1 D, t; i" Treturn *InviVal;
- q1 D0 S) G# `4 n} ~! S4 P1 m j9 g
) c8 N. I. r; y; t/ Y- A: R
針對以上觀念,改遊戲就很簡單,
# D1 f5 t; a# S+ _' q一開始我們先初始化數值,輸入'?',
9 g4 t8 N# r' q8 t, n, a. ?2 _接著開始無敵時,輸入'+',2 I4 z+ E& E' }6 ~* i8 H
接著我們知道無敵時間會開始變動,: K3 v6 W" Y3 K
以上例來說時間開始減少,每隔一段時間輸入'-',* O9 k/ j1 I2 ?
最後沒有無敵效果了,輸入'!' 或是 '0'。' W5 J5 c3 t- ?$ [7 e
) C) N+ S& J6 j記憶體地址經由演算法篩選後,只會剩下幾個,
L$ S4 \$ I4 ^- V+ \, N. ~" stry 一下,你要的地址就出現了。/ U( D3 b! N# Q7 f) M4 O7 _5 a
2 a, L5 g9 N2 C( d( X, P$ q
P.S.以上程式已經Run過,沒有問題。9 }9 |. v0 Y: ?6 y# j
8 s# H- o$ f& c4 z7 @6 x) Q: r0 W
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|