|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
; v k3 L, @2 }主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 , I1 j( S% c. [: c' C
1 k. H; q, w2 P d% k1 ~; n0 D% U其實修改無敵很容易,7 Q# ~( |; G) A
就以遊戲程式設計的觀點來說,
% Y5 e J* Y# _& W; L" q' K一開始我會將人物無敵數值設定為0
# ?+ z, u/ E' n2 Y' r% e% `* Fex: % C8 [9 `* x( D9 ?* P* W9 h) E" T
#define InvisibleInit 0, O' B9 D- |7 E0 L5 s
1 t3 B. X9 {/ F K0 G' e
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),2 |5 O& Q1 [ e) j
呼叫設定函數
! \- ~1 A2 R0 u: f+ r0 U# ^ex:& M- H7 O$ j& |: Y
BYTE InviIniVal(EVENT event,BYTE SetVal)
8 m! A% m' U9 o. K{
- O; n+ P8 O% f4 | u//Deal event ...: u7 M% J/ Q' X
3 B! m& m- k7 O8 b
//Deal InitVal
; S f$ N6 N; R* uBYTE ret = 0;
5 j; f# c+ z7 s! TSetVal+=InvisibleInit;
* z2 l m; p% ~ret += SetVal ;# B( _6 W; Q4 ~- b
return ret;
9 ~, J+ I! p; X( |, b} ) ^8 L( [. z7 R5 {# B: ?
y3 [7 N3 z) B6 ^& r
最後關切的函數當然是遞減函數:
6 @0 }, _+ p( S! z& Rex:
3 f0 f, M% z& F8 ^2 ?BYTE DecInviVal(BYTE *InviVal)
, @0 Z2 j! E7 [8 L{1 k5 b5 `. e; Y9 b! d/ m1 E5 Z
cout<<*InviVal<<endl;
+ W( T0 K4 w+ a: c(*InviVal)--; //*InviVal -= DecVal;
/ F" i7 ]2 W9 u0 T% Zcout<<*InviVal<<endl;
* a$ H8 f3 f( d B/ m7 b. k$ {(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;" k# j7 i) ~# Z. I
return *InviVal;% }0 _' U- `7 n
}
% W& e# x# T- m% }, K/ o7 p8 p" q; t" F' O/ `# L
針對以上觀念,改遊戲就很簡單, |3 W4 B: K0 Z4 z) H, |
一開始我們先初始化數值,輸入'?', P& t5 f$ l1 L6 D: U9 \
接著開始無敵時,輸入'+',
% Q) M0 q, K. V$ G4 a& r接著我們知道無敵時間會開始變動,
! Q* Q$ s' n- [/ k; i以上例來說時間開始減少,每隔一段時間輸入'-',9 l2 t8 D3 u* C: s: ^! Y
最後沒有無敵效果了,輸入'!' 或是 '0'。- {, S' k. H! D/ W! U2 j( Q9 ?
- F" m0 M# _ y( b, S
記憶體地址經由演算法篩選後,只會剩下幾個,3 g5 r4 C% I5 W3 D2 D0 D
try 一下,你要的地址就出現了。
( B: Q1 W- N6 r3 t2 G
6 C% R9 b2 @6 }% lP.S.以上程式已經Run過,沒有問題。
* N1 i% V1 s/ n) e) J' v
2 O" ^7 g+ C/ e, T5 {/ V A+ ][ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|