|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表
4 w% i. V8 C8 h7 A( E! m+ X主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 9 t! S8 V4 Q$ M9 `
0 T, j2 D! k* ?! H+ n" n其實修改無敵很容易,
# L- X& Q7 T) \& y就以遊戲程式設計的觀點來說,0 F. ~4 M, c! Y- e7 s$ R
一開始我會將人物無敵數值設定為09 v+ K0 V, X/ I$ @( R8 N
ex: 0 w, b4 z) {9 r. x" B, L
#define InvisibleInit 0
. m1 K5 `& z: j2 T1 c w) U( M L# u; h4 @2 a
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
# m- d2 s7 i' X9 q/ b8 Y呼叫設定函數: |# _' D8 j! P9 u
ex:9 c- H9 j" d5 T5 |0 y) H
BYTE InviIniVal(EVENT event,BYTE SetVal)
% ?( {7 F/ @/ N* F{- Z. x+ f2 f) n! p; m5 ]: c1 l
//Deal event ...) `: }' g8 h, u( P# T: X
, d6 b# J+ j; `, _, u; _//Deal InitVal
6 t) t/ a8 a8 e# ~6 V8 }8 C& h" g( MBYTE ret = 0;2 u$ Z3 z3 @# m: }: g
SetVal+=InvisibleInit;
3 n3 `+ q' R% z; U, Vret += SetVal ;
% f7 Q2 o9 |+ ~) S$ ?3 c0 {return ret;
9 J7 H+ z% N! ]1 I2 M. r4 }2 b} * }0 _: D9 @0 @1 s& u. _
' A# g0 I4 o/ ~& F
最後關切的函數當然是遞減函數:' F( i6 p$ l, x' s) }
ex: E% L1 f4 j' G2 U2 `
BYTE DecInviVal(BYTE *InviVal)
, N: n0 c7 V4 Q* c2 c4 v8 l7 L% M& e{
1 c% d. q n# D# r. ]cout<<*InviVal<<endl;
% D. t& c; m; n: [2 _(*InviVal)--; //*InviVal -= DecVal;
, U7 H$ Q0 ?& Z9 P" q1 f& Hcout<<*InviVal<<endl;
" b3 b1 B0 o/ \2 `! }! B(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
! R, {" B+ T5 Z' j4 W. ?return *InviVal;
+ L7 |0 d/ L! C7 R9 n}) Q+ p" {. l8 A( `
, Z f/ s5 s/ J針對以上觀念,改遊戲就很簡單,( j2 `- B9 I6 }+ i; d, ^
一開始我們先初始化數值,輸入'?',3 b8 [% y- ?$ v" z/ y4 O
接著開始無敵時,輸入'+',
0 ]8 o# D8 f# S3 V5 t' R/ }接著我們知道無敵時間會開始變動,
9 ?2 z% V9 s. f9 |# Y/ e以上例來說時間開始減少,每隔一段時間輸入'-',
3 P8 u; M, y$ }: b+ t# `2 |' X最後沒有無敵效果了,輸入'!' 或是 '0'。4 Z6 V1 A/ I! f9 A8 Z1 @! W9 f( Q8 y
+ ^! l/ K) t; f+ s記憶體地址經由演算法篩選後,只會剩下幾個,
3 {0 S7 z5 V- Wtry 一下,你要的地址就出現了。
1 I! S; `/ V7 v' F7 b' r$ |7 L0 p E# l: B9 Z- t% k
P.S.以上程式已經Run過,沒有問題。& z( L( w* n0 U" N7 I o
1 U) K8 \1 C; }+ n. \
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|