|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 " G' A3 N3 B3 G+ H7 Z) r [
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 ' f+ ?/ `$ @$ Y X" S7 L, X3 R
2 e, z% `' s6 A- e
其實修改無敵很容易,+ h* Q. S+ M% T0 A$ B. N/ I1 G: J# u! \& v
就以遊戲程式設計的觀點來說,# j# c. k- |& Z
一開始我會將人物無敵數值設定為09 t/ x- M+ x+ n/ O3 T, H6 V5 W
ex:
9 D* X* ?1 k$ R$ M& M#define InvisibleInit 0
Q5 K& I( s9 t, v+ V% I% I* j* k7 j% ^6 P! i4 l- M) E8 {$ I
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
8 U6 [* o6 Q0 I: v$ N呼叫設定函數 w/ |5 q6 l4 f \9 Q4 l! h$ U
ex:* a) \" E* g% A( C" C
BYTE InviIniVal(EVENT event,BYTE SetVal)
- M( b0 h8 m5 V1 o# W/ |{! N2 q3 X; Z, e: T3 k; P
//Deal event ...
. W/ [: j8 D8 [- O6 E4 Q0 C/ }8 _
r" v# e! E+ _//Deal InitVal
: l$ n* { _+ ?- {$ X' NBYTE ret = 0;+ I" i* [. k& D3 a0 R" N
SetVal+=InvisibleInit;
" u. G; V; P5 i/ \% nret += SetVal ;8 ^& ^/ F8 e* F. o
return ret;5 R" T, x" s% K& i
}
) ^5 W/ Q7 R* v3 @# k" X. U' S: k
最後關切的函數當然是遞減函數:/ i1 M4 Z" N" F4 Z! ?
ex:
3 Z; L( O6 L2 ]+ q1 ? QBYTE DecInviVal(BYTE *InviVal) n: K$ D. L8 ^- U1 g. e3 ?. z
{
4 X/ V. a9 \4 f( dcout<<*InviVal<<endl;
! H0 a+ {" `, k# i(*InviVal)--; //*InviVal -= DecVal;; O" t9 p3 H( L! Z
cout<<*InviVal<<endl;
+ [7 M9 A2 z/ }5 k* v" i(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
3 v5 P: h! z7 n' L! B. ^return *InviVal;
' P% e2 u+ ]& @1 M5 M9 h1 _}+ t' f# {# U3 ~ s( D& [
3 |1 ~% ^0 Q: f+ F! f X% |' `
針對以上觀念,改遊戲就很簡單,! s6 h6 i# h4 ~9 E0 j- |
一開始我們先初始化數值,輸入'?',
8 l% d& p/ H R; M1 ~$ ]- m接著開始無敵時,輸入'+'," ]0 c8 `3 T" Z* r
接著我們知道無敵時間會開始變動,7 f" O& C% T+ I0 W! ~; k) ^9 Z
以上例來說時間開始減少,每隔一段時間輸入'-',: r7 {/ i. [! N0 n8 R& V# w3 }. A
最後沒有無敵效果了,輸入'!' 或是 '0'。" \$ T& i- ? ]2 ^- L: L4 _
3 t& D" F3 M! k3 N) q- a
記憶體地址經由演算法篩選後,只會剩下幾個,
8 m5 k1 M( _- D, U6 atry 一下,你要的地址就出現了。
2 ^8 V- c4 J. ?. s! `' V
. t, S6 `. {- X3 O( b0 J, A$ ^P.S.以上程式已經Run過,沒有問題。- [+ s7 ]5 g3 F. x$ g3 c
2 V# t1 ^" r1 a8 g[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|