|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 & [" V- W$ x" o! e, @+ {9 b
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 5 _$ x& s7 B0 C D
* `$ \* {7 u7 w# g8 ?其實修改無敵很容易,
" G0 }' T3 M& Z& q就以遊戲程式設計的觀點來說,! {6 u; C; H4 K4 f8 W
一開始我會將人物無敵數值設定為0
1 m7 x/ D& `7 @9 \. Vex:
2 F! f; V6 S; |5 ~5 w#define InvisibleInit 0+ h! n2 H& K/ @% c0 W
% w5 m: N* _' \. y4 t# b然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),# l: x7 J+ ~) h/ n m y7 `
呼叫設定函數
7 R4 ~* R4 ]/ ?3 X9 u* z% dex:: j& L3 i7 `5 z% p. ]
BYTE InviIniVal(EVENT event,BYTE SetVal)
: j3 d2 H4 \4 @{0 v- L* D0 X6 ^ O1 x) e7 X$ t9 ]
//Deal event ...8 V" N5 z# O, _4 B" B
, Q! R( C8 E" Y0 C6 A//Deal InitVal
) g" p K6 P. ^2 I/ w+ c1 lBYTE ret = 0;
& c+ i& b; B# X9 _! P& @SetVal+=InvisibleInit;8 O A0 V$ x1 ~
ret += SetVal ;
0 W$ `) |' B+ O- ?) z( ureturn ret;- }/ X3 @$ `! R% ~6 F- T; W
} ' R8 U& a$ _/ U- X$ {; A
& f4 ^% p* Z$ O/ v最後關切的函數當然是遞減函數:8 l& J/ Z. w0 N0 O4 n
ex:( D, V! M$ J% E9 O; B
BYTE DecInviVal(BYTE *InviVal)) }: V1 h6 o7 f' {$ {) ?. I
{7 f3 I& D: z& l- v- a; l+ U' u
cout<<*InviVal<<endl;2 g- n) @1 L3 b3 O, o M
(*InviVal)--; //*InviVal -= DecVal;* C4 e9 ~& w# t9 d+ h
cout<<*InviVal<<endl;. z) q5 w. Q* R8 P: [
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;0 F. V- V' h1 f6 ?6 k8 [$ D, }& n
return *InviVal;
2 D, K" e& q) s: J( m+ A}
. Q, N9 A) A/ z+ |: P, W9 S0 e% h8 V6 m' ~8 J! w
針對以上觀念,改遊戲就很簡單,
- l7 j7 b. j( ] v一開始我們先初始化數值,輸入'?',. q; K5 O6 [, G" T+ @0 i3 F
接著開始無敵時,輸入'+',8 m! W) [+ M/ k: g! U7 S) o
接著我們知道無敵時間會開始變動,
6 y, y# D5 \8 v7 ]" n5 _以上例來說時間開始減少,每隔一段時間輸入'-',7 W, E, i5 u" w5 [" B$ k
最後沒有無敵效果了,輸入'!' 或是 '0'。
" Z3 r# m+ o) F K& U' g- ?4 h
( L2 U" I) f1 X! j記憶體地址經由演算法篩選後,只會剩下幾個,; Y; F+ O* J+ _
try 一下,你要的地址就出現了。
8 p1 ^8 m, V) c7 \. w
) P; F. U# y, d' b, ?1 J6 t3 |" _P.S.以上程式已經Run過,沒有問題。$ K, ~0 D# |6 ~8 R' a: A
& n3 p7 P: \; n9 @; K! e. G, B6 z
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|