|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 q; D$ u" ?2 I! L
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 ) Z/ D7 u$ L8 H! t/ Y- g9 B+ Y
7 C! T8 s# X" E2 z# p$ j5 j/ j3 l
其實修改無敵很容易,
3 D- a2 b0 Q, }$ o就以遊戲程式設計的觀點來說,1 J9 p; F. A' C7 S% E4 `
一開始我會將人物無敵數值設定為0
3 a/ D3 |' T/ vex: ; B! S$ u% }; Y/ U @
#define InvisibleInit 0! l/ _* b$ }* J3 E8 q2 [
8 M M' `5 i: i5 n0 s然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),$ G ~/ k7 A9 L- a
呼叫設定函數) p9 w1 B. v) M
ex:
$ r" l9 A8 N: {# ABYTE InviIniVal(EVENT event,BYTE SetVal)
8 P3 o8 z" i" R* j5 h; y: q- e{
% ]1 W! O# o+ O' m//Deal event ...
7 e2 }. s% P" |. k/ J, N
2 H) E9 K( m: i, ]//Deal InitVal0 E9 w; g. v0 h1 K
BYTE ret = 0;
3 G9 `2 m9 s* [2 ^- B% s. xSetVal+=InvisibleInit;0 G2 x5 e" K' \. Y5 l s' R/ U
ret += SetVal ;, m4 ^2 p0 R |8 L5 j6 `% |8 d c
return ret;
1 C, r4 R/ P9 x; u0 J. f}
& k" |. v2 k1 {! S8 k1 i- N W# O2 O) a+ Q% d
最後關切的函數當然是遞減函數: k+ Y/ w9 B8 z1 q
ex:4 V% Q) R$ t- E- ~6 A( J( l. g& M) R
BYTE DecInviVal(BYTE *InviVal)
/ h. D+ x/ h- M% p& s6 V; c, w{( D- [* I2 ?, {, R, J
cout<<*InviVal<<endl;0 a4 |+ b+ a6 ? s/ q( f2 N
(*InviVal)--; //*InviVal -= DecVal;+ O8 f4 Z3 `( Z9 X
cout<<*InviVal<<endl;' {& i+ J5 E3 D4 z j& u% [! |0 n
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;2 H8 E) q% Z' t* K9 f4 F9 N
return *InviVal;7 |" q; O) L" G& m0 _
}
5 n2 X$ @ t2 |4 ` Q" s6 `0 l* I
" T- K& m0 @) c M1 @針對以上觀念,改遊戲就很簡單,1 R4 D1 f$ R7 Z
一開始我們先初始化數值,輸入'?',1 v4 v$ U; z3 _* b3 X: ]4 }
接著開始無敵時,輸入'+',0 G9 d7 t4 ^) s$ D9 K
接著我們知道無敵時間會開始變動,0 j7 E' M& {. L. d
以上例來說時間開始減少,每隔一段時間輸入'-',: G7 R: n. M" ?1 M. e
最後沒有無敵效果了,輸入'!' 或是 '0'。
" N! r& q9 \! y1 w5 T1 ]* [1 _. e5 q5 O5 k7 }: B
記憶體地址經由演算法篩選後,只會剩下幾個,# t$ g( X1 c) N7 I/ q* S
try 一下,你要的地址就出現了。
2 u$ D- v V" l' |+ _2 B5 L t8 g |) W' n1 n+ W5 e7 V
P.S.以上程式已經Run過,沒有問題。8 b8 y6 {8 `9 N( j( b0 i, M# p7 v
( U$ e' A( o$ R[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|