|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 1 t4 V) p* j ?; n
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
+ y0 y" X& _' `+ E% D! w5 K. I. ?6 H' ?
其實修改無敵很容易,' B) v* c) X( N4 C2 U; S
就以遊戲程式設計的觀點來說,4 h0 I! j- I% [ w
一開始我會將人物無敵數值設定為0
9 J$ P. E9 R7 i, k3 I5 Zex:
% O- J. ?7 S/ `% F* t" y#define InvisibleInit 0' ~4 s! z$ a3 \9 R# N, H2 W Z
! Q g% e# S R6 r/ Z: e2 A
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),9 }: N& e9 _+ i- P8 g# U
呼叫設定函數5 J" c" Q: Q% q
ex:. W' ]& M' u% ?0 p
BYTE InviIniVal(EVENT event,BYTE SetVal)8 f* l! g8 f, u0 I; J: h* Z
{5 @. k! X' ?5 r8 t0 e( v
//Deal event ...
6 M1 a* `$ R$ h# A
$ u8 K! y& a. q+ o0 A4 q" j//Deal InitVal
9 }$ P( a5 G& EBYTE ret = 0;+ o3 B+ _ [5 f* V- k( u
SetVal+=InvisibleInit;' Z6 }: l3 H- H6 P+ O* D- @, E
ret += SetVal ;
, v( b, z1 x4 G& Rreturn ret;
( z# N# W: d! {) s}
' X, W, V; h3 [7 @2 ^- S/ c0 L) J1 _: N" M
最後關切的函數當然是遞減函數:/ |, j' o1 \& K. z. B
ex:
/ V& v# g/ [8 f s0 O7 DBYTE DecInviVal(BYTE *InviVal). ]# Q! \: P1 ]# I7 w; w9 z
{1 t0 Z% j, S/ ^7 N7 |9 b/ D
cout<<*InviVal<<endl;
/ C- y, ]3 g- ?* j7 G, F! m(*InviVal)--; //*InviVal -= DecVal;/ A2 I* H( Q$ Q
cout<<*InviVal<<endl;
+ B3 G8 J9 x+ R(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
, v- i% z: F6 `" J9 treturn *InviVal;) ]4 W8 b9 x1 K/ T3 k, ~- F9 |
}
0 j: s9 N( o- Q- [. C7 y& n5 V& A/ i) z; ^
針對以上觀念,改遊戲就很簡單,# F( f7 a0 f/ g' A$ a( X
一開始我們先初始化數值,輸入'?',
& d! G3 c) m# ?3 H b6 }/ ^接著開始無敵時,輸入'+',* G* @0 M$ ^% V% w7 o2 U/ E" C- }
接著我們知道無敵時間會開始變動,* p5 Y% u/ f0 k4 k
以上例來說時間開始減少,每隔一段時間輸入'-',- e1 U- Q0 t* |
最後沒有無敵效果了,輸入'!' 或是 '0'。/ r7 W4 c4 E! z1 T# g2 `
! g# R. V2 k7 J% r記憶體地址經由演算法篩選後,只會剩下幾個,9 n1 m# c1 k/ G% d
try 一下,你要的地址就出現了。
5 e9 J* J+ Y0 }; x. O5 g
0 C8 O1 P$ J- B/ O; r2 i' }P.S.以上程式已經Run過,沒有問題。
6 y; `( Z6 s( _ `% l( z7 W) n/ j1 A ~. G% f a; B( P% f& ~
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|