|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
# W( `: c6 u; b& c# E- U4 `9 O9 X& N主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 - a! n" U" m8 z: u1 [+ b% q) X
$ |! Z, O' a/ ]. O
其實修改無敵很容易,
v$ @8 V/ c" q0 v$ u就以遊戲程式設計的觀點來說,( P- ?& Z1 Q! ~" D5 `6 y
一開始我會將人物無敵數值設定為0' n1 p1 } U0 A) K! p
ex:
' |2 P0 _: A5 |#define InvisibleInit 0
, E/ x3 M2 G% X, v: h% z7 `, r8 L) B
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
: b7 W: _' _0 a2 u# N呼叫設定函數
5 U/ i" K) s6 B5 Z8 L, wex:
. C3 q7 a" D! g( p* |9 b" {0 [' KBYTE InviIniVal(EVENT event,BYTE SetVal) G; @3 Q T. r! D
{
! c9 A5 m# j: I0 B; O+ K//Deal event ...
/ Q: q( F; b% k2 M8 F" ~$ ^9 P# k; b3 u
//Deal InitVal
- F& ^) H% Z7 A; w# }- XBYTE ret = 0;" ^7 {# G1 p9 w: i4 x% S7 U
SetVal+=InvisibleInit;
1 ^( B1 l0 P `0 Jret += SetVal ;
9 }6 g" i, x4 a ~return ret;" y- i( `+ j0 \. N% f
} # {+ t- a) z, p: [* t8 a" O, F k5 `
# e% n" E' L- \" {最後關切的函數當然是遞減函數:
9 \* K6 A _" qex:
3 u: W! L' F) b) B+ jBYTE DecInviVal(BYTE *InviVal)3 x. A% x; Y" _
{
( n- a' B1 h3 X8 Q( _5 [3 c/ N$ mcout<<*InviVal<<endl;) M- G5 b. W I
(*InviVal)--; //*InviVal -= DecVal;5 p. S5 L, x; z$ U
cout<<*InviVal<<endl;8 @+ K+ b1 w' Y7 q( m8 w* H
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;. B. Q8 Q; h+ E5 k6 U
return *InviVal;
( O* I, j @7 d3 `1 ^7 ~% u}4 A: U9 i1 \5 w# t* _& S
# Q- l: B) P9 r( S4 `. S8 Q
針對以上觀念,改遊戲就很簡單,1 ]! a7 p0 U' B \
一開始我們先初始化數值,輸入'?',
& [- I+ T" p3 r# F3 L, U) f接著開始無敵時,輸入'+',
7 P8 _, T7 f% L# q7 @6 p4 W4 A接著我們知道無敵時間會開始變動,
: W3 b1 F+ s$ U2 R7 [* v0 E# v以上例來說時間開始減少,每隔一段時間輸入'-',
' B1 J: A1 v( F最後沒有無敵效果了,輸入'!' 或是 '0'。
9 N/ Z3 m3 [3 ^1 A( Q U5 Q; I
2 p' G/ u/ G) k6 K4 H! |# ?0 A記憶體地址經由演算法篩選後,只會剩下幾個,
9 i, j l% Y& ~try 一下,你要的地址就出現了。& {! }/ o! L. r$ P' g X
* R4 N) N+ U6 R0 ~, xP.S.以上程式已經Run過,沒有問題。7 R! n s) S& E# I
4 E0 I" K' i' [[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|