|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
3 }( j z( b/ u- G主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
( D' Z5 A) M3 F% [7 ~$ V, \
2 @- G2 B0 p# k6 T8 J; B; g其實修改無敵很容易,% i n% y' t" x, K) y3 N
就以遊戲程式設計的觀點來說,6 h, D. M* H- ?
一開始我會將人物無敵數值設定為0
5 R0 r5 |( }: T6 {( K+ F' uex:
+ v1 N/ \* p. O0 j#define InvisibleInit 0
0 r' m) F3 y! I6 f/ s1 M4 w1 D# o- W& `3 l
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
$ ^3 X7 N/ M: a$ v; O {9 w3 F2 _呼叫設定函數
* y% [# v* t0 }- }- _ex:% D3 B$ ?# j4 M# B/ o. ]
BYTE InviIniVal(EVENT event,BYTE SetVal)3 i' H& a+ y/ g( F ]0 @, l
{3 ?9 o% j. K- m: B9 A
//Deal event ...
6 L8 S& k m& J! E" [$ n5 a3 p4 W6 F. p* ~- g& k, p
//Deal InitVal, E) I& }; k% E2 K3 d+ S8 x
BYTE ret = 0;
3 N8 ?5 n; J& S& bSetVal+=InvisibleInit;) U4 Z9 d/ i/ c
ret += SetVal ;3 R; k& P6 m @9 e; Z, g
return ret;
3 J I5 v" L4 w, o+ A0 [" k$ [3 u}
) S% o! e* {" a; S0 O
- H0 i1 ~: d" m最後關切的函數當然是遞減函數:
: E. Q4 E: C# R' S" l/ fex:6 f* E. ]4 ?3 \) f
BYTE DecInviVal(BYTE *InviVal)
! Q# q) o+ @9 u( B( i{. g4 S0 Q& A- t" _% s: Y. X
cout<<*InviVal<<endl;
6 q1 F( I) F; J; H) N(*InviVal)--; //*InviVal -= DecVal;1 P7 E% m; a2 R6 L2 }8 U. T& n
cout<<*InviVal<<endl;
/ E( Y4 A; ~ F9 v! V- d* v(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
$ r+ w. C2 Q8 |5 {- K( W# a4 yreturn *InviVal;; s% X( u6 ^" r0 @: F% Z8 _
}1 h; l5 D/ m% Q2 q, ?( s8 i
8 ]0 N; }# V' E6 f! |
針對以上觀念,改遊戲就很簡單,
4 l ~/ ?. B2 l$ |: Y0 X一開始我們先初始化數值,輸入'?',
; S" P1 n d2 D$ w8 N3 Q, Q4 q8 m接著開始無敵時,輸入'+',
9 r- h( u7 u5 ^接著我們知道無敵時間會開始變動,
$ M0 `% b( y/ h以上例來說時間開始減少,每隔一段時間輸入'-',
: L& A* ^& O) ~- ]. ^ ~9 ~0 Z0 f5 J8 Y最後沒有無敵效果了,輸入'!' 或是 '0'。
1 u' H" U/ l: N1 @) U& I
5 V8 J( Z1 k Z6 i/ w記憶體地址經由演算法篩選後,只會剩下幾個,) n" O/ D8 f( s; [/ c' R
try 一下,你要的地址就出現了。6 L- W/ v! X( {5 w5 ]( R, \5 ^5 D3 P
: L4 g7 d1 y) j
P.S.以上程式已經Run過,沒有問題。
p5 j6 k) D9 @' {& W( R1 h+ N6 {# x: s
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|