|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
s7 O& `% f, o/ j主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
& S6 d* y; w5 K6 T3 b, J- ]$ H6 I, G7 ~5 p8 H! q7 s
其實修改無敵很容易,
$ ~/ k6 q) U) G" n就以遊戲程式設計的觀點來說,; H& E+ W& u+ n5 @
一開始我會將人物無敵數值設定為0( t# W! C1 W2 O T$ w
ex: 7 C8 E: ^0 ?. m6 [ D. @
#define InvisibleInit 0$ P9 n0 j: j0 N, q0 d L8 t) Y. |( x7 Z
( q- e5 v, O$ u然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
* l* z, v1 Z. g6 J' i呼叫設定函數+ U! F7 `! a7 X, W2 ~
ex:
) V4 d2 v6 t' ~7 W) YBYTE InviIniVal(EVENT event,BYTE SetVal)4 G/ A& I J- |
{8 j+ z& u5 C' I! Y# e C9 d* a
//Deal event ...
: y' o( Y, M3 N% ^
3 [3 a! S, _6 g- S. v: P//Deal InitVal
* \; K9 P1 U/ `& c7 `3 JBYTE ret = 0;) r2 f- N4 g+ c3 J7 f, e$ b
SetVal+=InvisibleInit;
% m3 ` N T' R: p7 L. o9 G% F" h, @ret += SetVal ;
, n2 N, |, z, h2 Q' C- E% Y% R1 Freturn ret;
! n2 X! U a( t# m}
7 M: }* Q+ d7 T5 H* y; ?: h" q) h, Z6 p9 T2 J
最後關切的函數當然是遞減函數:9 Y+ Z3 N: m8 E
ex:
) T- L! t+ Q3 i4 N( ABYTE DecInviVal(BYTE *InviVal)2 N. N) U) z# p& }
{; M+ P7 E- g( {9 J7 `. ^( L
cout<<*InviVal<<endl;
# t* ], m, N2 H! e9 T(*InviVal)--; //*InviVal -= DecVal;
, M8 J+ V+ h0 d+ _cout<<*InviVal<<endl;* L; Q. {# r+ ~' U+ M, M% ?
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;8 f( ~6 @# ^! W/ O
return *InviVal;
4 U4 ~3 ^- w2 f4 F$ Q/ g- W}$ F- H9 [$ m& R* ]2 C/ {
& B- E! O/ e; g: p% L+ T1 I針對以上觀念,改遊戲就很簡單,
; J* J, l$ i3 J; @+ X! _一開始我們先初始化數值,輸入'?',! o U6 x$ g+ c( v/ G3 ^3 L
接著開始無敵時,輸入'+',
& `: D% K; q0 u+ c/ W接著我們知道無敵時間會開始變動,
6 L- ?. [5 k! ? S; K, Z以上例來說時間開始減少,每隔一段時間輸入'-',
% f: i5 ?! }: R/ U5 l1 H' f最後沒有無敵效果了,輸入'!' 或是 '0'。
" U7 u( E8 }6 Q8 ?3 c2 W' I5 O; p5 a) F2 q5 k, N/ N
記憶體地址經由演算法篩選後,只會剩下幾個,+ r# e! M' ^! U6 G7 z
try 一下,你要的地址就出現了。9 Z8 V$ _" K1 k) I' _9 p
, W, l# J9 h: E& c: o
P.S.以上程式已經Run過,沒有問題。& u! t) O( i% ]$ {5 M
5 j# }) l# C* j
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|