|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
) `- ? D* M/ j" P. C主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 5 h8 N/ i) G/ ~
2 K( |! ] n8 q+ h其實修改無敵很容易,
4 b8 |' l" V; z1 _' s就以遊戲程式設計的觀點來說,
6 g3 @) i m1 h: M1 j8 I) C一開始我會將人物無敵數值設定為0: [3 Z3 U" Y* N2 E# B
ex:
5 Y6 |7 J) ]2 h6 C#define InvisibleInit 0
! p* J9 a7 {- y! H; a
0 a* _6 O2 k- ?- x然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
( b, K0 _2 Y3 C* |& J呼叫設定函數& A& t8 d- K9 @, A
ex:7 t+ F2 i2 u u% B7 u! J7 {3 w2 z1 @1 t
BYTE InviIniVal(EVENT event,BYTE SetVal)- n: ?5 I* ?5 T7 q+ V" Z8 @0 d7 @
{5 P1 L+ a* a! ?0 o9 Q- l
//Deal event ...! F9 H2 l6 V4 d( `: V0 f
* o$ l B' g$ a9 Z//Deal InitVal
: ? f( G8 f4 w1 a {: IBYTE ret = 0;- }# m% N! v- k6 H
SetVal+=InvisibleInit;
% G1 P+ T6 e0 x, i& mret += SetVal ;9 O6 y% |9 b. [4 X
return ret;
$ n. |. U; K6 r5 ^} ) c& ~3 _# |# m5 Y7 Z6 k
8 g! r3 D* T2 x1 b9 o7 W* X! X$ ?+ N7 t
最後關切的函數當然是遞減函數:5 v4 U' ]& i3 c# Z
ex:
9 C8 K! k7 D/ rBYTE DecInviVal(BYTE *InviVal)+ m0 [; H3 D+ [ O) ^/ Q' R, U6 Z
{
" S2 v* E, o, @! Zcout<<*InviVal<<endl;; O) v$ p2 {! `% H3 m* O. Y; l
(*InviVal)--; //*InviVal -= DecVal;
Q. J# i7 Z: V1 H- Ccout<<*InviVal<<endl;7 q% t0 b! O2 O" b$ P
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;, ]/ ~+ v! L6 X. ]1 q
return *InviVal;9 W% m; g+ O5 U1 [
}2 i5 O/ Q# H. Q3 N
1 x; Z8 t c- {9 x( @6 Y) W' }. _針對以上觀念,改遊戲就很簡單,
% u2 F. r2 q$ T J# p一開始我們先初始化數值,輸入'?',) P# z8 X- L5 G+ [
接著開始無敵時,輸入'+',
T. X$ p0 C$ f接著我們知道無敵時間會開始變動,. m$ [" E. j& i
以上例來說時間開始減少,每隔一段時間輸入'-',
: |, d; A/ e" i$ s1 T2 q' R最後沒有無敵效果了,輸入'!' 或是 '0'。' E5 ?! D9 j& ^/ [1 @0 ^. P; f
- N! ^5 _- S- P& x記憶體地址經由演算法篩選後,只會剩下幾個,3 \6 h& F1 W3 a9 Z. G+ C
try 一下,你要的地址就出現了。$ V# F& r0 k. q* t
" ?" i; P5 ^, k# M( V5 o" @6 lP.S.以上程式已經Run過,沒有問題。
' c9 w. A" ^/ o$ e
* n; p' a) |* E. S0 J& H& @4 p[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|