|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 $ B' S3 w* @+ J" U. O" y, |
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
* i2 O7 A; `0 F* }( u2 r. E1 n, G" P; l
其實修改無敵很容易,
3 i V) u! H: k3 I4 m就以遊戲程式設計的觀點來說,6 v) K1 L4 |+ z9 O
一開始我會將人物無敵數值設定為0; p, V- z1 F& U) U5 K0 @% ?, [7 D; f
ex: * I4 ?9 j" ?# Z
#define InvisibleInit 0
5 s" o% t0 j+ Y0 {: Q% `
% B0 ~( E9 \9 P7 y7 E" j然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
5 p( k( [* R) O% a$ ?呼叫設定函數+ k: V& ^3 q! M9 [! G% p
ex:4 L. C9 h7 g; G! X
BYTE InviIniVal(EVENT event,BYTE SetVal), f U* T6 B" l3 [& @" h8 L
{ o/ `7 _, o. q
//Deal event ...' s+ }2 z! ~9 R$ _) ]& e4 L
$ Z$ a. {$ z9 Z6 I2 q2 Y
//Deal InitVal' \* ^! i4 F% r! m& \( }
BYTE ret = 0;
" K6 h* Q9 M) O4 e8 SSetVal+=InvisibleInit;
& m& @2 j) E+ u3 m, mret += SetVal ;. Z: T1 |6 l7 y
return ret;/ M: H" r+ l) d$ K. o2 { W
}
# X7 M6 M( g, d) ?! U. D' z# \8 Q6 ?0 L& q) V
最後關切的函數當然是遞減函數:0 ~$ s$ d; M9 n7 b, N+ B
ex:7 b& e4 c9 e+ j1 a o& b
BYTE DecInviVal(BYTE *InviVal)
2 f0 N) H6 ~' {) G{6 r1 S ^* h% V8 B+ b
cout<<*InviVal<<endl;
: ~5 I$ {/ {5 ~$ i7 s# Z4 [4 G5 h% x6 b(*InviVal)--; //*InviVal -= DecVal;
' x3 F; k4 e/ F! w) r+ v# n- Kcout<<*InviVal<<endl;) L [5 Y* j- @, B- X9 s. ?
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;9 E4 ^! s- g! ^' s
return *InviVal;0 Z- B n% {8 T' b# S; L
}
! C) P4 s( ^1 K/ i) Z( Q* l' j, F x
針對以上觀念,改遊戲就很簡單,9 ?- ^! }+ C$ T
一開始我們先初始化數值,輸入'?',
" {* O+ N8 b* L# u2 x7 [0 z接著開始無敵時,輸入'+',$ ?$ k# N; S1 B6 B
接著我們知道無敵時間會開始變動,1 ]' A6 u* N9 t
以上例來說時間開始減少,每隔一段時間輸入'-',) b5 s" K4 x' K1 n$ ]4 d& W$ r
最後沒有無敵效果了,輸入'!' 或是 '0'。
7 g2 l& e' G% _9 d+ x/ Y l8 o% q' b; @) H: u. _5 \' f1 Q2 u
記憶體地址經由演算法篩選後,只會剩下幾個,& ]- G7 \2 ^2 f3 ~3 i7 m
try 一下,你要的地址就出現了。
& G3 b/ j/ H* `! z) w" p7 M# W% V& ]& V) d; E' B, ^5 f+ e
P.S.以上程式已經Run過,沒有問題。
+ o2 i+ p% F6 B2 ]# Q, b! I( d$ i. ]
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|