|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
' T8 [1 n# C9 D; T7 G3 x$ S主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
+ j' m( ~* B% N. z% n: O8 }' |
9 A5 D! k( j: x其實修改無敵很容易,6 C5 s! _9 s8 ~1 G! y
就以遊戲程式設計的觀點來說,
2 q) g$ C! M/ o: H! w+ ~" { c一開始我會將人物無敵數值設定為0
5 j. O9 C) ^) `( Y! m, lex: 2 K# z, q; A, V6 ~6 f8 d. |$ T
#define InvisibleInit 0
; Q) V% V8 ]& H% @7 a+ D$ a) c& B2 v# P; z
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
( H, C, C' _5 \; B. l* ]呼叫設定函數1 L* R4 z) K% e, T* n1 V2 A
ex:
% }" `4 \ S! D& d9 m; [BYTE InviIniVal(EVENT event,BYTE SetVal)
+ Y- Q4 n* C( D4 f{* X' F/ D) l q: ~$ W
//Deal event ..., U* \! ?4 E. r+ v
! ^# w4 }2 E1 z
//Deal InitVal8 {" n' \! i6 y" q8 z' ~
BYTE ret = 0;; z6 Z, S( T0 y$ I w L# t: g
SetVal+=InvisibleInit;/ D8 ^/ b2 B* C
ret += SetVal ;# `+ v! ~* L7 P3 T4 [
return ret;
6 @* l) e2 j8 u( V6 Z# c# o8 b1 }} " S6 q$ p' p/ b( S5 B! B3 a T" C
# m7 _- u6 `* U4 H3 I% c* j最後關切的函數當然是遞減函數:+ ^& x" H" Q- ~1 F' C& r
ex:
: j7 e6 U; ] j0 rBYTE DecInviVal(BYTE *InviVal)& \/ f$ f, [0 @
{
9 z: G! I8 G# n, B6 s+ qcout<<*InviVal<<endl;9 q0 A( Z! P9 r2 d4 K. l
(*InviVal)--; //*InviVal -= DecVal;9 Y# A, i. H4 S) j
cout<<*InviVal<<endl;* I& V0 x* T# S& s6 u
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;6 l" v8 s! S, P+ g- o! g& e
return *InviVal;0 w) O2 A; R/ Z$ T! z
}
, w- v3 _) N( G" H9 j2 t
. Y7 M' H; m; o1 `+ x3 ?' g& _% O針對以上觀念,改遊戲就很簡單,
i% X( }( A/ d! b, z1 W5 o一開始我們先初始化數值,輸入'?',3 B3 N3 ]! g) } @# I
接著開始無敵時,輸入'+',
* l4 ^6 Z- U8 L5 n+ \9 B3 W接著我們知道無敵時間會開始變動,% \9 W6 w0 N: z; W; b
以上例來說時間開始減少,每隔一段時間輸入'-',
; Z/ o$ x& y* m/ @/ p" c$ h最後沒有無敵效果了,輸入'!' 或是 '0'。5 W' H! h8 r/ M* v3 B2 G, W
: Z+ p- L0 V9 ?$ u% I/ m2 E" n記憶體地址經由演算法篩選後,只會剩下幾個,9 |4 n/ }. L$ D2 S0 ^
try 一下,你要的地址就出現了。( V p5 ? B+ S* u
1 _9 J9 `, E9 z7 R; g7 Z8 KP.S.以上程式已經Run過,沒有問題。
# X/ H& K4 \" M, [! l
' | N C$ \5 |[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|