|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
3 E0 Z: Y& S. m) D主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
1 }) g+ F a, P" D4 ~
1 j$ {4 |9 F! E9 Q) j: G6 T其實修改無敵很容易,% W) Y$ u; o" x9 `' p! T$ i
就以遊戲程式設計的觀點來說,8 P( \; I4 N5 X! i% |- b
一開始我會將人物無敵數值設定為0
& Z0 c, g+ k! ~ a( R) mex: N4 K1 \' R& R9 ?8 V
#define InvisibleInit 0* o o+ w# `% Z: {
4 e, j" l+ W! j; D4 M: g然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
! {. K5 C6 `) `2 n- x. A呼叫設定函數
\1 _1 {% m8 E) a0 I; Oex:. j* A4 i0 I- k2 z
BYTE InviIniVal(EVENT event,BYTE SetVal)7 V' V+ [2 s) Z% |" K }1 w
{' ~ |( Z2 W5 n# @+ V) O# x- X
//Deal event ...
. b% S7 X) [2 V3 h
) h+ o8 [* [& W8 `3 C Y//Deal InitVal) V* V0 N/ ~. g& {/ o7 M3 Z1 M! ]5 j
BYTE ret = 0;
$ Q( j2 I, Q3 J( aSetVal+=InvisibleInit;; n! y2 T% O6 p1 s Q$ @
ret += SetVal ;( `$ G& e6 q3 z/ j1 X1 H t
return ret;
+ V$ c n' y' ]& n: z} 2 Z2 P5 g0 _, u+ f% ?
; V! ?3 U8 r' [0 f: d1 z* I
最後關切的函數當然是遞減函數: w8 |& b) {+ j9 C0 i
ex:+ x/ y4 a! u2 F) O$ U
BYTE DecInviVal(BYTE *InviVal)
! G& _" M& m6 n3 o{
1 F" b4 V7 c' [* B2 p9 l) Gcout<<*InviVal<<endl;& a% q5 b5 {6 B) L
(*InviVal)--; //*InviVal -= DecVal;3 t0 a9 @. o) u) g: b
cout<<*InviVal<<endl;! | `3 \( z# A
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
9 @/ Q2 r# F* x1 u2 T: }return *InviVal;' `) d6 V* s, a- N
}5 q) p$ }+ ^- N2 ^) u: S9 o2 ~
; i. _; v! Z& W( x
針對以上觀念,改遊戲就很簡單,5 H& p4 E6 A+ E* c" N/ n5 g A
一開始我們先初始化數值,輸入'?',
) Q3 p/ x( [8 A9 x$ C; ?# `; L接著開始無敵時,輸入'+', S6 Q! o, D' I2 r3 K9 w
接著我們知道無敵時間會開始變動,
' X: a$ o( v, }$ n以上例來說時間開始減少,每隔一段時間輸入'-',7 z% E* V2 W9 e$ L9 W1 G9 f9 Z
最後沒有無敵效果了,輸入'!' 或是 '0'。
, p9 f6 L; h* q9 `: d0 \7 y
/ ` [' y" v% T0 v記憶體地址經由演算法篩選後,只會剩下幾個,. L# _+ b- ^9 j3 @( x. S. z+ |! p5 p. `
try 一下,你要的地址就出現了。. m4 W8 i* D- g( ]2 m- M2 q1 Q2 {+ R
7 i: S7 e' G% h8 s4 A: {# Z. J
P.S.以上程式已經Run過,沒有問題。9 l: }6 M+ f. \' r$ j/ I7 j
6 L- F7 _. c- u[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|