|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 + E2 X8 t5 D+ l! |' m% _" j
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 3 N. }/ N& L. O4 a! m
1 \: f P0 m& b' t其實修改無敵很容易,
5 z2 n& l+ q7 K& m, e* }. f! L4 {& N( x就以遊戲程式設計的觀點來說,
; }! y2 F E; g' U1 h一開始我會將人物無敵數值設定為0% ~ w. x! n5 d$ p. i
ex:
4 z, H% ~) [' t& t t#define InvisibleInit 0* n6 N1 _9 \) ?
2 S3 z# w w) B5 e5 z% x: H* x, ]" \然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
h6 X) c2 J: y) R+ \% W呼叫設定函數
1 R9 b, S7 a6 `% }. lex:
3 ]9 P2 [5 D: C( R) I5 q) c2 `BYTE InviIniVal(EVENT event,BYTE SetVal)9 s' G: p, V6 V% G# y/ R
{
5 r: y# ` w# Z//Deal event ...( m6 D5 g j; h/ x% a1 V
# z2 M! P, ]# K( I* K: g" V
//Deal InitVal9 k6 @/ u }( n7 B* }$ z
BYTE ret = 0;+ m1 P$ n$ |, ^. Y1 l4 d
SetVal+=InvisibleInit;
4 ~+ ^5 ^+ |7 `8 aret += SetVal ;
|* R" V2 _2 P- N9 [" `, Q! ?9 kreturn ret;
0 Q( |, j$ j- ]. O6 F! Z}
+ H# p, M0 ]8 v
0 z! X, X V1 T. w4 w5 a最後關切的函數當然是遞減函數:
; \1 ^4 H+ w' V3 e! Bex:% R/ S- [& I2 G. `- M
BYTE DecInviVal(BYTE *InviVal)
* ?+ D$ d8 ?( F1 ~& E& G w3 |7 E{
$ }2 p; y& l( g# I; q) Mcout<<*InviVal<<endl;
3 o6 `; ]- z1 I, a6 O' ]; W$ |(*InviVal)--; //*InviVal -= DecVal;
8 O* Y$ s, W( l2 h! m8 U# r; tcout<<*InviVal<<endl;/ Y0 l7 r% p( [& T, Q+ [
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;! _7 x4 ~4 Y/ L# |3 n# t* t
return *InviVal;2 Z# G/ f) S9 p. p% w
}- s& Q, O. B2 Z6 w- l) z" O j, u
A0 M0 V1 v7 P$ F# j5 o
針對以上觀念,改遊戲就很簡單,- _$ L8 d( i, \ W4 e- {
一開始我們先初始化數值,輸入'?',
1 D8 G: [2 d m7 G9 j接著開始無敵時,輸入'+',% T6 n/ {2 V8 ]4 Y' b% B
接著我們知道無敵時間會開始變動,: l$ j7 f H, L
以上例來說時間開始減少,每隔一段時間輸入'-',
% w( c$ y9 P* x/ ^) X# Y最後沒有無敵效果了,輸入'!' 或是 '0'。
" w5 r9 ~) s9 r: {/ {- i" G! U
8 g1 P1 g# x3 [" ]; F7 C記憶體地址經由演算法篩選後,只會剩下幾個," j3 J1 T1 Y' C( Z
try 一下,你要的地址就出現了。
2 M4 [" [: v6 _# O
8 \" s6 _2 S4 W* t' U4 cP.S.以上程式已經Run過,沒有問題。9 J6 b8 V1 F* ]2 b: N
" Q8 d. F- C8 k3 l6 X2 t3 D
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|