|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 5 R) {* Y0 L- v3 T
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 ! y2 o+ n5 o6 V) r$ V
3 B. A( R e/ e其實修改無敵很容易,' K7 P1 X2 c* j
就以遊戲程式設計的觀點來說,
7 e3 a! u4 A+ C; c/ d! d% Z% l一開始我會將人物無敵數值設定為00 j/ V8 E) i2 P! Y& Y' a
ex:
) [4 i# v# j8 ^) A#define InvisibleInit 0
$ m& j% U$ @! J9 Y7 k5 O6 x5 D3 A- z0 |, U- S0 g) P
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
0 G( u+ a' h \( ^* }呼叫設定函數
" o4 {7 ~+ O' d. L2 _ D( Nex:- `! t5 f2 n0 Z5 V! x
BYTE InviIniVal(EVENT event,BYTE SetVal)8 }8 Z' y; L9 o( W5 y8 J
{
5 V# R3 p( x8 e B) M8 M//Deal event ...
& m- W9 y1 P0 w! E
/ b0 B- f* {3 ^; I//Deal InitVal( s+ |2 y* b, U G
BYTE ret = 0;2 Z# B$ x0 c9 c& w% _: P: L
SetVal+=InvisibleInit;
! C% \/ K$ h1 v8 pret += SetVal ;
7 E/ m8 J! A! O0 |/ ~: w& S5 ~0 Oreturn ret;
( }3 p- T$ m- Q% g} 3 u( }/ m* {3 S. D. J: J
* W" H5 s8 a+ c最後關切的函數當然是遞減函數:. `5 e9 a) ^: c
ex:. V7 q( v4 R$ ]1 S. V, z9 }( A
BYTE DecInviVal(BYTE *InviVal)" F/ ^* T2 O2 I0 W: t2 s! M* b
{ V! m8 c9 @5 r6 b8 Y a
cout<<*InviVal<<endl;9 i6 T& W' L) {2 O Z, y
(*InviVal)--; //*InviVal -= DecVal;! Q+ q! z. }9 Q# {
cout<<*InviVal<<endl;4 `. F% j: }0 B! H9 J1 O4 F
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
! e2 G! t: w' B* ~7 S) C2 L6 |return *InviVal;
+ Q: u4 q6 h3 n" ]* c/ @}9 B! q! c. _% w; C2 \$ ~
, ~, G' [/ T! X0 I7 l4 i" \% \針對以上觀念,改遊戲就很簡單,' i1 X3 a6 T! |+ Q# G
一開始我們先初始化數值,輸入'?',
) u; A' V( U% l7 D& ^/ O* c2 Z& B接著開始無敵時,輸入'+',# \9 K' j$ `' Z) _( g: ^+ `' D- G
接著我們知道無敵時間會開始變動,
1 t0 v5 Q% P" {7 ]以上例來說時間開始減少,每隔一段時間輸入'-'," o% M, M! Z% W) N1 d* \8 |
最後沒有無敵效果了,輸入'!' 或是 '0'。
/ W1 S0 s$ k7 {4 C* Y0 u# f% L9 ]- ]
記憶體地址經由演算法篩選後,只會剩下幾個,
+ `9 Z0 q% q- o* N' v& Z* v% Ctry 一下,你要的地址就出現了。. W6 z4 Y+ j4 S9 w& l
' _' V) H& d/ j* |P.S.以上程式已經Run過,沒有問題。$ Y6 o7 V' G& i1 v5 K0 P+ c
% L2 b a' P( o$ }( [- z) M
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|