|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
) g" }" _" U2 a, R主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
: I$ E) U& L& G8 r# U: a# v' m0 C# O2 F
其實修改無敵很容易,* v; }: m' g* I
就以遊戲程式設計的觀點來說,- |; ]# k r5 q. H: r
一開始我會將人物無敵數值設定為0# d3 }' I: h2 M+ a
ex:
) g0 m8 U! P# M3 X" ]% u0 j#define InvisibleInit 06 d) y) h: ]+ t0 S5 y5 d# M
' O5 C: K6 y; j3 L% X1 ^
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
, M! U* V: _$ {; s) m# G4 E$ i( t呼叫設定函數 {! J+ [1 h2 z- X5 a% W/ C% ?5 j
ex:
9 }# Z5 W$ t: B. N& TBYTE InviIniVal(EVENT event,BYTE SetVal)
& q# U9 m+ p: n9 c{ C0 O8 W/ e. _6 s$ y7 x1 b/ o
//Deal event ...- G3 {8 O$ d3 Q0 T3 `. I
' k- R- k6 K; h( b2 R. `//Deal InitVal
+ y7 ~1 f- z/ M7 z& m* Z5 o. [BYTE ret = 0;" @1 V* B8 u0 T) x) b* N
SetVal+=InvisibleInit;
$ {3 ]# ?' f6 P3 P! U1 Rret += SetVal ;2 d& r* _+ |6 f( B' E. Y
return ret;
: V1 [5 ~5 D' J) F2 l, {" d+ J0 y5 f} 2 M$ y5 ?5 r; r% W7 ]8 v
* I8 v1 Z) Q/ v' G最後關切的函數當然是遞減函數:
5 X( N) R4 C1 c* `' Z! Iex:) t: Q$ K. A* M3 q; l* h
BYTE DecInviVal(BYTE *InviVal)
6 c7 N$ L. O* _: e8 L{0 B0 u! X6 z. {2 R2 s
cout<<*InviVal<<endl;
$ q( p( I/ _' W J(*InviVal)--; //*InviVal -= DecVal;: Y7 A; h+ |2 L7 u" k$ X9 L$ b) W
cout<<*InviVal<<endl;
: n, X# E# L- E! S/ b( \(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
* ~4 I7 |: O6 @, breturn *InviVal;" R3 _1 t7 N7 v: i- |3 J) U. h
}" R& @( \+ Q4 u( |# h' b; D! ?
6 v- _) K$ H6 i
針對以上觀念,改遊戲就很簡單,
# ?5 I; @+ I1 o- W' t; u1 L一開始我們先初始化數值,輸入'?',
/ A* L- N" p8 r# G+ N8 R8 X接著開始無敵時,輸入'+',
# g. g$ w) g* C( [3 d9 D4 g) u接著我們知道無敵時間會開始變動,7 c1 \8 P4 u9 ~
以上例來說時間開始減少,每隔一段時間輸入'-',
/ L+ p* w/ ^) r5 N最後沒有無敵效果了,輸入'!' 或是 '0'。' H' j( D! u6 b+ L& H1 w1 O
f7 _+ a; F& a記憶體地址經由演算法篩選後,只會剩下幾個,
7 r* E! N: N. ]1 K5 m. l: O! xtry 一下,你要的地址就出現了。0 N- x( {" J$ \" v, U
! K, x% s- ]6 c6 E. l3 oP.S.以上程式已經Run過,沒有問題。( s; z7 ?3 ^9 P( Q, U K( \
1 J( y W# b$ G! ^. i% w
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|