|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 - i- s% P3 J9 t- W6 D
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
$ m" S# w. j1 U8 C) B3 Y
/ B G7 N+ a$ `其實修改無敵很容易,
2 t6 L2 r v8 n" j就以遊戲程式設計的觀點來說,! W( B- n: t+ [8 g, Z; z# X
一開始我會將人物無敵數值設定為0
) f' L' ^: f5 x& c. \ex:
3 Y+ E$ P3 d, j! p/ n( ]#define InvisibleInit 0
( \9 u5 B! }" F% N' g2 i/ s: o/ J. k0 ?- A) F; Q! x
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
1 F7 p4 G( }! Q o2 N6 M5 h) A呼叫設定函數
- X2 s" I B5 m0 `; w0 V% Gex:
# ]7 ]( Y* B* w8 f q$ g QBYTE InviIniVal(EVENT event,BYTE SetVal)0 V' p5 p* ?0 y- ?0 g% Y4 U+ U3 w
{
1 _; j/ N: D$ V; Q! U//Deal event ..., V4 A& a3 C9 J& k' ]% J
3 v3 O @8 Q# m. M//Deal InitVal
" f- ?" v4 E( V% yBYTE ret = 0;
/ I7 l6 @, Y7 }1 z; WSetVal+=InvisibleInit;4 |( R4 ?* p5 u! B
ret += SetVal ;
' V5 A* z( B2 Y- W0 x; ]return ret;) w' d8 x1 o) R; l2 u1 n
}
; g: M' E. d& b- @' T; V" W8 h
( Z" z& I+ K ~9 i. m0 k( s9 w最後關切的函數當然是遞減函數:6 X+ X$ D, d* ~" j+ A7 B6 T$ I& X
ex:
& @! s2 [! \) O0 QBYTE DecInviVal(BYTE *InviVal)8 W/ ^% w/ p O h& P0 l; o& e2 y
{6 w0 b# u0 x9 }; ^
cout<<*InviVal<<endl;
% ]4 ?$ \! C: a8 [" q- f(*InviVal)--; //*InviVal -= DecVal;
& b7 `+ j2 {1 s# y, }2 kcout<<*InviVal<<endl;, D% B! Y p4 V
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;$ }+ ~ B* m8 C) `; F
return *InviVal;( y% H) |* e* g/ W
}
, q0 u5 V( l6 W6 b. L# @) e" ]6 I0 H# o h0 b
針對以上觀念,改遊戲就很簡單,
# C2 r3 d! l7 A1 R; I$ f+ t- O一開始我們先初始化數值,輸入'?'," Z2 e' |+ [) Q( v3 K: @+ Z3 p8 T4 _6 t
接著開始無敵時,輸入'+',
u4 P0 ?$ \' y4 k1 \* T接著我們知道無敵時間會開始變動,
5 t9 c9 s. x5 F2 f以上例來說時間開始減少,每隔一段時間輸入'-',
1 r C% F; c5 Q6 i. }4 m最後沒有無敵效果了,輸入'!' 或是 '0'。
5 @; W/ b0 _# Q$ {; F: e8 \
5 U' e# e$ x4 o記憶體地址經由演算法篩選後,只會剩下幾個,; Q& V, } z6 O' j* ]+ N$ c# x+ x
try 一下,你要的地址就出現了。6 e) m+ w: G' @
6 N( B8 X2 u- Y8 W/ i) I" F" pP.S.以上程式已經Run過,沒有問題。5 y3 [/ y4 N! Y% a
: I0 p4 d" u1 J! }. T
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|