|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
( c! F4 \: ]6 n/ S- ]2 f3 B) ~主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
. F/ X7 i, Q$ [% E5 V: e4 f
1 ~1 I$ P7 w9 Y9 n其實修改無敵很容易,
$ M( V* R$ | L就以遊戲程式設計的觀點來說,
7 n4 }4 G: \" C) e! P一開始我會將人物無敵數值設定為09 H7 \. e' U# i3 O
ex:
+ u% {+ \$ K" _" H; X8 E9 J#define InvisibleInit 0$ S6 @/ A$ A4 c
$ U0 ^8 E0 O! I" E& F- F. S$ S _然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
9 J3 e) n4 `' b d呼叫設定函數) E7 ]7 Z U' a. R1 [1 ^
ex:
0 e4 {8 |8 f' O0 iBYTE InviIniVal(EVENT event,BYTE SetVal)
, @& @6 U" t9 b- z# Y{ X% Z9 C* G" j# y3 V( z% e
//Deal event ...- i# F. M& N E9 G4 E" i* h. p+ |4 g
6 w# q% B" W4 g
//Deal InitVal
k! n$ f. h+ Y7 WBYTE ret = 0;4 D3 C3 h4 K' I' m/ O
SetVal+=InvisibleInit;
6 e& O$ T& `9 K4 ^, ?ret += SetVal ;" x* |6 }8 |5 i. x3 V! M8 V, l
return ret; M$ S! e. A' M8 F! Y
} 4 v& [' \" o9 i* `
2 R$ A7 D& n( O9 p( P* A
最後關切的函數當然是遞減函數:
, g. N' g# \& d/ Nex: W" o- ~. G. M
BYTE DecInviVal(BYTE *InviVal)! }9 G/ Q& w, |1 f# @
{8 Y$ P: e& X7 D7 [! ]
cout<<*InviVal<<endl;
8 O' t3 _- E# }% N: o(*InviVal)--; //*InviVal -= DecVal;
4 M* J% ^6 J- Z' wcout<<*InviVal<<endl;
0 _' B' y% U" ^) n8 \! e(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ; j+ n& m7 k: U. K5 s
return *InviVal;
$ ~: o' F7 M5 z6 `) r}( x( H% D$ u# R
* S' L1 |9 d, O g# H& r
針對以上觀念,改遊戲就很簡單,
( k r( f. D6 i一開始我們先初始化數值,輸入'?',' H3 o/ _) b: c/ H
接著開始無敵時,輸入'+',) W$ t+ i, W' b5 Q
接著我們知道無敵時間會開始變動,
0 S# u' n' L) D以上例來說時間開始減少,每隔一段時間輸入'-',
% z: ?$ G/ C* c; F最後沒有無敵效果了,輸入'!' 或是 '0'。/ |: U, Y. g& _8 C
E p! U/ U- N9 F記憶體地址經由演算法篩選後,只會剩下幾個,
2 j3 \6 q% m8 {0 J* n6 gtry 一下,你要的地址就出現了。
9 A9 L& a7 n j+ G# B4 ]$ L. f
8 Y) M S: n! v+ JP.S.以上程式已經Run過,沒有問題。 M) x# Q% R# D1 Z+ t( a
2 p0 C( r2 N: \" R$ E( B1 `1 J, G3 A* |
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|