|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 - W8 J' _: F5 L. B
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 # _1 `6 F; O2 ~0 x/ K
( X$ t& J- y" }; @7 T其實修改無敵很容易,
~5 u( C* }' v) O" u就以遊戲程式設計的觀點來說,
$ q9 a B* s2 K, \& p一開始我會將人物無敵數值設定為0
! o3 Q) ]) e7 w+ Dex: 4 L& ?5 d7 j# Q
#define InvisibleInit 0
) q5 @: `* @1 z# K' t% u" a+ w4 V, t9 [) D
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
' C" `5 i6 \) ]3 ^( z6 K呼叫設定函數5 H% T7 S/ k+ Z7 l
ex:% G- m9 |1 r4 x8 l: m/ `
BYTE InviIniVal(EVENT event,BYTE SetVal)6 p% | r' [0 c7 u/ a- M* f
{' D( _, r+ D5 E- c Z( Y1 B' [+ o
//Deal event ...0 E8 c5 z# h& |5 [
' n( _- g8 U. ^% s//Deal InitVal: O4 ?0 \( ^' U& o1 \0 n
BYTE ret = 0;1 q) O) d! t3 c* s7 @5 _
SetVal+=InvisibleInit;: j0 m% L- R( N' u3 C/ d! i5 _7 `. D# S
ret += SetVal ;
! |; b: |3 K% L3 o. p( ?return ret;
3 j. |# o9 U) M- J0 }0 I: c}
7 F' F9 t" |5 r; g5 p' }) I# ~& a) H' ^( S2 p
最後關切的函數當然是遞減函數: S% d( b5 v3 G2 b$ Y+ {) _
ex:' }4 s( a* a5 D5 [1 v, {
BYTE DecInviVal(BYTE *InviVal)
+ D% s& t7 P3 q) e{$ Q6 }9 t! @1 ?- o
cout<<*InviVal<<endl;" R0 D. \! u6 b4 d& b+ f
(*InviVal)--; //*InviVal -= DecVal;' d0 A% E# f* \3 l) G
cout<<*InviVal<<endl;; L& l/ ~& d6 A! E. v4 Z3 }. y
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;( [' S+ \ ]1 D7 a% P$ T& k9 E- n
return *InviVal;1 L' ?, s0 o# O2 A" T
}, e: w' t) X. D' ?! Y9 m
1 U( r# W/ ]) l) y- f# b- M( d$ ~
針對以上觀念,改遊戲就很簡單,
2 q: x) n/ E) ?) Y一開始我們先初始化數值,輸入'?',
2 Z0 n! G( V( a( V- r6 g Y' x* M接著開始無敵時,輸入'+',% j0 d7 i* g; X; y
接著我們知道無敵時間會開始變動,4 s O: Y0 x+ j
以上例來說時間開始減少,每隔一段時間輸入'-',, H7 c/ }% O3 ~3 ]
最後沒有無敵效果了,輸入'!' 或是 '0'。
: W* i9 b* T, j$ N% x( y7 I6 D" F1 Q( q/ J
記憶體地址經由演算法篩選後,只會剩下幾個,+ b4 l. h _" J8 j
try 一下,你要的地址就出現了。3 P0 {8 h3 U1 N+ p6 k8 L1 Q1 Q9 k
; h" R) {& w6 t* M0 Z3 YP.S.以上程式已經Run過,沒有問題。
; @: }1 j! ]0 ~5 n) A: f7 s; j1 K1 J% b7 ^# }2 w4 c4 e6 {$ I
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|