|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 & c4 E) s" ?9 F. a E" U0 s
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 * s( k2 W7 \ L8 z$ O2 O
4 Z1 G- W" m( _: V其實修改無敵很容易,3 m8 S, h. L: U; M+ y) K/ k
就以遊戲程式設計的觀點來說,
* ]5 Z( m9 T- M8 R% g一開始我會將人物無敵數值設定為0: W& q9 Z( t& R' ]! N) I4 r
ex: ; \. R7 I" s: F( _/ f
#define InvisibleInit 0
$ q" O+ [& t, J+ s2 O# R5 J
0 Q: y) R! I/ G4 G1 U0 U然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
+ [& c L3 T+ k& n! e呼叫設定函數
6 J' U4 c* `' u. F3 p9 B6 wex:
% c) b3 Y* [7 `# i( xBYTE InviIniVal(EVENT event,BYTE SetVal)
- R1 [% D" W2 j6 H8 w7 N& t{5 @) b6 }9 Z6 C' [. V) G! |
//Deal event ...7 p6 f0 e+ G) @0 Q0 c2 h; ^
8 @4 P- V+ C ~8 s
//Deal InitVal
0 D1 l: P" Q3 o; u) |7 c7 U" yBYTE ret = 0;4 U) t/ p3 Y/ o9 x! r
SetVal+=InvisibleInit;
4 R+ z Q; |# K' j9 vret += SetVal ;
% g+ ~3 j: ^) ]7 \/ R% {return ret;
% g# |+ \- n! ?! S: `0 B9 S& M+ ^}
G- l1 `- D, q' t, G$ F9 y! C; V" @+ S7 [/ ], d! ~; a/ p
最後關切的函數當然是遞減函數:
# Y* [, z. m" c* o) mex:, H2 T/ n1 g7 S7 h6 \+ C- c5 a
BYTE DecInviVal(BYTE *InviVal)
/ s: A9 f; Y& T{1 u! |1 d0 K; g* n
cout<<*InviVal<<endl;# u; R7 g. h% i' v0 s+ `% Z7 e5 G3 b
(*InviVal)--; //*InviVal -= DecVal;
5 D A9 O7 w/ U# ^: q' G4 X5 O- ycout<<*InviVal<<endl;3 l2 S3 T( a N9 j' P# p
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;. X$ d8 v4 p! M7 {# p* ?
return *InviVal;2 W, a4 K8 c$ `; H9 ?, K
}
1 Y3 e3 |# \& s
$ o( a2 ]' G6 r針對以上觀念,改遊戲就很簡單,
; q0 v8 l l9 x) G) R4 S- A9 A一開始我們先初始化數值,輸入'?',
3 @7 E' ~$ t s4 n3 R0 s+ E接著開始無敵時,輸入'+',. [0 z. T. U! j: I; r: N
接著我們知道無敵時間會開始變動,, G/ O, c& d0 G4 F
以上例來說時間開始減少,每隔一段時間輸入'-'," k/ U. ^6 u* H4 y$ O3 @/ d
最後沒有無敵效果了,輸入'!' 或是 '0'。
3 S* V0 S# V( N3 v+ o( [6 m5 U/ O3 w0 c3 f4 q, l* _. \6 d
記憶體地址經由演算法篩選後,只會剩下幾個,# g7 \' V6 r* c( c8 ~# [
try 一下,你要的地址就出現了。
$ I. J2 }; E1 W. P% E- q ?. S5 D0 N0 [
P.S.以上程式已經Run過,沒有問題。: F2 R# |0 b8 J P- T
# Q# V8 t* ^, ~, Z
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|