|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
1 }4 |5 \0 `. M# j5 Y; D8 Y主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
0 l5 G6 L) m T, F) ?/ P+ H3 y; y) N4 q8 |. Y8 t% r9 C
其實修改無敵很容易,
* i! o/ v r: f. h就以遊戲程式設計的觀點來說,
' C& C- Y' P9 W/ _/ q一開始我會將人物無敵數值設定為07 U. f8 l, l8 ?% w3 f. j" ]
ex: % i4 O. a! U' {) U% J
#define InvisibleInit 0
" F! `9 C! w! h& Q
7 C9 w N+ K4 y9 i4 F然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
/ ?- I' Q* Z$ Y8 N呼叫設定函數) o" B' K7 m3 z0 B# Q* w
ex:
+ ~4 S) o6 Q1 C: N& Y4 ?BYTE InviIniVal(EVENT event,BYTE SetVal)
6 J5 \: M3 I3 d& ~$ b2 _{
% A2 s8 A- M3 s7 A//Deal event ...
% }1 Q. b4 E- A$ e4 u
6 d. H) \% G: G//Deal InitVal
G; h9 a) v4 Z. PBYTE ret = 0;1 l: n: L( J/ z) ~
SetVal+=InvisibleInit;1 S' j' v8 X7 Y% q6 r
ret += SetVal ;
( n" S$ c5 r7 H) lreturn ret;( J8 N; L9 x& x- Z1 |( t
} ) {- l! ?1 [# I8 j) ^7 c: A
; G* @% t) l: E V+ Y最後關切的函數當然是遞減函數: F0 {1 H3 L4 B+ [$ z
ex:( D; T1 v# [* d% G1 d
BYTE DecInviVal(BYTE *InviVal)
- v+ {) B5 u- ^( f{
% f% O A$ C3 \# `cout<<*InviVal<<endl;
1 f" J- Z$ u) N% j/ v8 s6 s* r# F8 |(*InviVal)--; //*InviVal -= DecVal;% z- w4 Q4 U6 t5 c' b
cout<<*InviVal<<endl;: j9 C" J1 ?& d
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
( ]3 ?" u6 l! V6 E( T4 Treturn *InviVal;
' w1 q7 u% e4 Z% P, c}; l" j0 n/ {! D2 P- V
q& F( F/ w& D- F/ i* c針對以上觀念,改遊戲就很簡單,7 Z' S- Z8 T! P" N" M$ p
一開始我們先初始化數值,輸入'?'," G, y4 a# F( O, O7 \/ H5 |# U: d
接著開始無敵時,輸入'+',2 j0 L$ C, Z( p: N3 z/ J
接著我們知道無敵時間會開始變動,) G: H1 j. c L7 ~7 c4 O9 ]
以上例來說時間開始減少,每隔一段時間輸入'-',
; i! R) ^" F8 S5 f最後沒有無敵效果了,輸入'!' 或是 '0'。+ t: d( M- D2 p( x8 Z0 Y* ?
# c$ X2 d. B8 Y9 ~) |# P( U; e記憶體地址經由演算法篩選後,只會剩下幾個,
5 i- _) ?/ k) a0 ] W0 wtry 一下,你要的地址就出現了。, P7 r+ F' Z2 h) g( h* }0 M
7 @: i5 u) z3 R* N7 Z8 G
P.S.以上程式已經Run過,沒有問題。
]- e% M! Y. W
: M8 P8 G, |5 \' o7 ]) ?/ ~; x[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|