|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
' e# v/ h8 ?6 s主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 $ }, v0 x& ~' i/ c1 E6 T. W \% X
* t, \( M; K B, R& _1 x% g
其實修改無敵很容易,
0 @( D& u' J& U3 D+ R9 c就以遊戲程式設計的觀點來說,
1 k+ S, k& C4 ?0 S% p一開始我會將人物無敵數值設定為0
/ T1 K; \% h6 Iex:
& z/ y% R. t, A. p+ i1 q# w#define InvisibleInit 06 [5 R& H4 A4 U" K+ h3 |
) v! ?1 _3 A) |然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
( y7 x0 t; C S6 j/ F呼叫設定函數
6 m6 Z/ X3 l2 P* R, I- X( J; h5 Zex:
" l# |. ?3 T7 @& c' wBYTE InviIniVal(EVENT event,BYTE SetVal)
' l* i. N% Q: h6 h! v5 O{* w4 {+ Q: d% r
//Deal event ...
9 c: I( P$ }# ]: b8 u8 V+ B. i: Z* L6 b& t
//Deal InitVal7 |, f- T( B6 y. U/ W$ e
BYTE ret = 0;
& B: I% V$ }4 f# N5 f# Y, N i$ ]SetVal+=InvisibleInit;7 b7 V9 n& k: V3 e! X- A; g
ret += SetVal ;
) X/ M8 Y$ a; Yreturn ret;/ y9 ?- q% T$ b. k# F. Z' ?
} ( q" P6 Y8 k2 M5 F- R7 a
; J3 ]- A Y" f, M( ^4 t( O- \0 m最後關切的函數當然是遞減函數:
2 f. W6 V- U0 ^# G: A$ ?4 v; Gex:% H! J/ J+ L, ~% L
BYTE DecInviVal(BYTE *InviVal)# d* a7 B% u f2 F: z
{
! l( w, i: Y5 b: Ocout<<*InviVal<<endl;
- m: |* F3 @! N7 d(*InviVal)--; //*InviVal -= DecVal;; D9 H7 t! E5 v1 s- C4 w
cout<<*InviVal<<endl;
5 N& h& Y: I+ G" u2 C2 k1 m(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
6 Z! E, A- y% ^return *InviVal;* j7 H8 P9 s& c1 o
}) O4 W) O& w0 {6 A+ O
9 b0 D( n& J( ~& ]
針對以上觀念,改遊戲就很簡單,
) S% q4 d8 j1 u一開始我們先初始化數值,輸入'?',
" c6 N& h A) ^$ A接著開始無敵時,輸入'+',) C/ M& Y' U2 z& t% j
接著我們知道無敵時間會開始變動,5 g& z) c% K; T- s% r5 Q& c% u
以上例來說時間開始減少,每隔一段時間輸入'-',4 T. u, b/ [7 Y) N* F) p
最後沒有無敵效果了,輸入'!' 或是 '0'。
1 @' b& E$ d Q1 u& x5 b4 Q. j) e* i" ^/ b2 A9 }% C8 c
記憶體地址經由演算法篩選後,只會剩下幾個,1 `& U: [* Y+ X/ |
try 一下,你要的地址就出現了。3 z1 i3 e: b- p& B( [
; E1 b( y [7 ?7 [- B8 A4 V8 d$ Q
P.S.以上程式已經Run過,沒有問題。5 E1 o* Y1 P! j! d) v$ V7 w
' N/ I# u; g) `; y. q3 M[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|