|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 a" T: o/ d) P
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
8 u, N* R8 R) r# E+ ^+ V4 T* t: @6 o$ z( }! ?. `2 e5 U/ @# K
其實修改無敵很容易,
" z0 S% q/ o# q就以遊戲程式設計的觀點來說,
F/ U. g# W' G0 J8 E. k! r z一開始我會將人物無敵數值設定為0
- W5 j0 A2 w+ E- z& T7 zex:
+ ]4 V: C& c) ^( ]#define InvisibleInit 04 U* p7 x) k( G! P6 P4 h
! o( i! R; y/ d6 u
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
. F$ U2 E$ N6 ^' o4 G& C7 C呼叫設定函數
6 L4 F4 {2 ~; n' ^( i! Dex:" j2 s3 r1 S: `! H/ c
BYTE InviIniVal(EVENT event,BYTE SetVal)
: y) @( C6 Y- w2 y{
8 {, R! Q0 z5 N; n//Deal event ...
1 M* o, f( X8 J
- t# l/ ~6 } L0 X1 j, f//Deal InitVal
. ^: } Q( F: b2 d4 v2 QBYTE ret = 0;: U! B0 W0 j0 `1 }. v+ l
SetVal+=InvisibleInit;$ q$ H# N) t4 ?# {. j2 G0 q' m E
ret += SetVal ;$ Z6 P. c' w" O" \% s, N& v
return ret;
/ H) @6 c6 K& @ L) u} ) Z& |# V/ v' o
$ P: E) x+ w- K( j
最後關切的函數當然是遞減函數:
5 O. n! J6 Z) lex:
2 ~5 B) k$ y5 r' K. f7 X5 f6 K: e) OBYTE DecInviVal(BYTE *InviVal)
) F" r4 G! g% U" G{
7 M7 |9 I, w9 ]" Lcout<<*InviVal<<endl;# ~! J9 b$ s2 z* c0 e5 V$ O
(*InviVal)--; //*InviVal -= DecVal;$ a7 m+ T1 y; ]3 J
cout<<*InviVal<<endl;! M$ t1 W0 E) S1 e, n+ p
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;% Z& z5 T" u; O+ f# T
return *InviVal;
( G. e6 {0 N0 k- {}
p& c' v' Q" Y0 Q! j
8 x) W$ ~) o0 g針對以上觀念,改遊戲就很簡單,
+ X* l7 {/ }& ?) q一開始我們先初始化數值,輸入'?',+ c) e, p: W" }2 u( W
接著開始無敵時,輸入'+',) t+ N% z; R6 c
接著我們知道無敵時間會開始變動,3 i/ w# D' o1 [; A7 O
以上例來說時間開始減少,每隔一段時間輸入'-',
1 S# D/ D. j7 ]: }, N g9 S最後沒有無敵效果了,輸入'!' 或是 '0'。
* D/ D* k3 F) Q
# l. Z$ g. A% a' B! E% \記憶體地址經由演算法篩選後,只會剩下幾個,) ~" D% [- z: ~' q I
try 一下,你要的地址就出現了。 n5 v% Z3 L* |+ T7 V- _% l
% v E1 ~, [% [: k' Y
P.S.以上程式已經Run過,沒有問題。
5 p0 ] r; P+ p+ n6 ]
- @% d: U+ n9 _5 [8 b3 U8 B# Z0 [: x4 v[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|