|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 * J" }4 ?: m ^. W6 S
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 # Q+ r7 H6 A2 i4 s; b) o; s# K
6 d5 k, u8 S& c) } m& U( Q
其實修改無敵很容易,
/ l+ }& K0 O8 @# B% W c6 v就以遊戲程式設計的觀點來說,# Q# p, H. O: K2 [
一開始我會將人物無敵數值設定為0
+ f. E$ [7 a2 m0 o/ P& `ex: 0 r, K% S; H* L1 w1 ?' C
#define InvisibleInit 0
; i7 S) p! _7 Y3 Q
9 O3 u& U, t$ f3 L2 z然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
- H( Q8 Y1 Q e4 @呼叫設定函數" A5 h' u6 N0 W" K G. Y) j
ex:: j/ N0 |. c! U
BYTE InviIniVal(EVENT event,BYTE SetVal), j8 r8 |% B' J/ `/ X- c
{+ ~$ i6 g5 A5 f3 _5 T
//Deal event .../ d( V6 H3 J1 O+ w; z8 t7 m
! r/ u8 b. q/ |
//Deal InitVal
7 G- t7 V0 [3 d& A9 NBYTE ret = 0;
2 L2 F/ u6 t, E5 g2 B. USetVal+=InvisibleInit;
; v5 i' V1 E$ l4 }, t" Aret += SetVal ;! X) E/ q" K# W) G7 d, L
return ret;1 O1 o _, }, ~' [) G/ S/ h$ @! P
}
0 E+ k7 P& V4 \) @, g; C- X8 q; z% e+ @
最後關切的函數當然是遞減函數:
9 M, O: A. r) n$ s \2 ^8 U" dex:
/ r/ ]! w7 k7 w2 cBYTE DecInviVal(BYTE *InviVal); b' T9 {6 j# ?" D3 k! B
{
6 l# ]& E* Z: L5 S jcout<<*InviVal<<endl;
1 m3 J: g R+ l6 C! b# V(*InviVal)--; //*InviVal -= DecVal;
4 r; X5 e4 ?& \- K9 g- ecout<<*InviVal<<endl;" g8 X) N8 x" s5 ^( _
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;/ ?* d* p( V1 V3 q4 c( \! M6 \$ K
return *InviVal; z2 H( t5 S, ?" Y* N# [& I% N
}
6 Y- \) D4 e4 O# a0 w" S3 v- }9 s' J
針對以上觀念,改遊戲就很簡單,+ V8 x& x) g2 n4 U5 c
一開始我們先初始化數值,輸入'?',! U+ t* d: w. ?3 v/ x; }! t
接著開始無敵時,輸入'+',( b; j$ G- F. M* m7 ?( B& T( L
接著我們知道無敵時間會開始變動,2 @# e3 }4 g) X$ Z
以上例來說時間開始減少,每隔一段時間輸入'-',
0 u; ^* s8 b# U最後沒有無敵效果了,輸入'!' 或是 '0'。& d8 H7 @2 P* c/ E% a$ Z
; ]( J4 |- p3 ~ H4 n9 S- C記憶體地址經由演算法篩選後,只會剩下幾個,9 F8 J2 v4 k- f' j1 r. A6 S
try 一下,你要的地址就出現了。
- v6 f# ]( a1 M( K3 O2 l- O
: ^3 C- b1 G5 n# V$ gP.S.以上程式已經Run過,沒有問題。) u1 F4 a$ c/ L: M2 J$ W
* ]' ^: |9 l+ M8 E- D) D' B[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|