|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
7 Q3 v1 c& U1 m主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
% e i9 D% F9 z9 M' @' ], d4 y1 H4 ~9 p6 p( U1 z% e: R
其實修改無敵很容易,% ~, S6 {: M( s
就以遊戲程式設計的觀點來說,
7 N2 J3 Y/ l$ c7 h一開始我會將人物無敵數值設定為0
. ?$ A$ t8 Y3 F+ y& q' fex: # ?9 |0 l6 _. \6 i' s
#define InvisibleInit 0
* Q: Y7 X( p7 e5 }
" j1 g+ q7 o! l, t然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
& C1 V3 I( c( \% Z) L/ u# {- a. V1 [# }呼叫設定函數
8 w4 J1 C1 [- v) f! l+ s1 {; T! }ex:
$ `' z8 R3 G9 O3 _; _+ J: }BYTE InviIniVal(EVENT event,BYTE SetVal)
& ^1 A" W+ O6 h" D4 o6 H{
5 O, ~' {* Y" A//Deal event ...
# Q) Y" Y2 o5 G* w& J; _7 g' Z' m/ x; B/ h* Z
//Deal InitVal
: h' }- h5 t8 c- ?7 q% F, a$ JBYTE ret = 0;
' ?) ^8 T1 h( L/ W5 u4 VSetVal+=InvisibleInit;5 a5 s" f+ s: d+ N9 l, j
ret += SetVal ;8 |" d6 r5 ]- [/ v
return ret;9 N1 K0 ~& m8 q, X; I; [- `8 z d
}
- j+ S; U2 @ g3 e+ o$ B, U
* Y3 _0 f6 f) @! n9 D s最後關切的函數當然是遞減函數:) @) J. A- [5 O
ex:
4 L* R, y* `$ D! xBYTE DecInviVal(BYTE *InviVal)
+ M# X' v) C( b1 ]% z. X2 f{2 @0 g3 i% m @: L/ ?7 r
cout<<*InviVal<<endl;
, K/ u4 @ w+ q(*InviVal)--; //*InviVal -= DecVal;( I* c" c! x5 O6 F& O2 R, U K d
cout<<*InviVal<<endl;: }" _) |9 x# p& u
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
- v1 s6 T. k* z R1 u/ zreturn *InviVal;
" n6 x' B& u6 ^4 v( }, S}5 p! P3 F% J' @8 W& `* d8 W
: ~& E G$ F* R; U9 x針對以上觀念,改遊戲就很簡單,
, i4 V( X/ W# @9 w6 l一開始我們先初始化數值,輸入'?',
7 L% `5 u9 B, m4 @- j" T接著開始無敵時,輸入'+',
, O4 k& `" v# t- U" @5 H7 h; M接著我們知道無敵時間會開始變動,4 f7 E% j# F" I8 u6 a! U$ Q
以上例來說時間開始減少,每隔一段時間輸入'-',
! O- ?' J2 U9 M% r. i. z5 _, }最後沒有無敵效果了,輸入'!' 或是 '0'。; ?9 l9 W% l7 A7 M
" c h9 K/ u! s& W$ Y記憶體地址經由演算法篩選後,只會剩下幾個,+ B! K- E* u$ W1 A s3 M
try 一下,你要的地址就出現了。
# ~4 g) ]3 {3 I: o8 b5 o
: l% G' m$ [4 D) n, s! ZP.S.以上程式已經Run過,沒有問題。4 @, i& Z5 u& x3 K- j+ X8 C
2 ^% v1 F* x6 ^1 ^[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|