|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
! X% V! ? b& a1 h主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 4 D$ a& t0 n+ w( p
8 k3 `" P4 N2 o: j9 W
其實修改無敵很容易,
7 C4 ^) l& E" H就以遊戲程式設計的觀點來說,9 U8 r! Y0 F9 B% Y+ u
一開始我會將人物無敵數值設定為0
- A _7 p6 R9 G6 Y- Iex: / a: [, b- g0 `
#define InvisibleInit 0
, J5 \2 }- |, I+ B9 j# K+ a( \! |1 r( Z. W9 F+ {
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),9 i% o5 @1 c* h. t# |
呼叫設定函數
9 ^! \7 r- J- a9 ~ex:
* U4 @: H- I& RBYTE InviIniVal(EVENT event,BYTE SetVal)& H- R$ ]& {' V, t. p @( k5 _
{ Q$ S, ^4 b# ]7 v" O1 k0 `% w- f
//Deal event ...
" R2 l$ l" q* v5 z* N4 ]* s2 J" n+ W5 E
//Deal InitVal
6 t, h' J, b3 { ~6 b7 Y( TBYTE ret = 0;
6 c9 ]( i7 O/ R% |8 {* kSetVal+=InvisibleInit;/ ?: s5 P# h7 z$ Q7 q
ret += SetVal ;
! a$ G1 P2 `5 M: ^& Z/ Preturn ret;" ]: ^. v5 z9 ~" E+ |4 [
} ! u4 i% Y0 B& T
9 ~# w& s9 ?# v& P8 v- H" y3 j/ j; c
最後關切的函數當然是遞減函數:) H6 G3 m- z \8 G3 y
ex:4 Y' S C) w* k; S) A
BYTE DecInviVal(BYTE *InviVal)
8 |% z4 ~" H+ m1 A& _4 c{
" f: ], F: S; W: J( y+ N! mcout<<*InviVal<<endl;# b$ h7 z0 V0 A8 h" l
(*InviVal)--; //*InviVal -= DecVal;
* B7 S8 h( b: z% i7 e( Z" H/ kcout<<*InviVal<<endl;+ }9 J/ Z( o; ~1 {. d
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;( l! m4 f$ X1 c. Q- W. K5 l: n
return *InviVal;
& N1 Z! G6 j& `4 R3 _- I! X% x: V}' ?' U! n1 V# W& u, X$ q9 M
' B! b$ P- S( q5 c7 i' ^6 N! H針對以上觀念,改遊戲就很簡單,
6 P1 i% `" {' T4 @/ P1 _% B1 j1 X一開始我們先初始化數值,輸入'?'," s/ U/ N1 j% q6 R
接著開始無敵時,輸入'+',
( i% v) W4 b0 o! a5 [接著我們知道無敵時間會開始變動,* C8 y( b% y. A# w W& H/ l
以上例來說時間開始減少,每隔一段時間輸入'-',
1 J4 y) `8 |) d最後沒有無敵效果了,輸入'!' 或是 '0'。* r: `. L. {% g% D+ ~( W2 X% Z' _
! e; }3 N, c; T5 K# d* `記憶體地址經由演算法篩選後,只會剩下幾個,
1 x1 f% n7 G9 d0 Vtry 一下,你要的地址就出現了。, X4 l, O# f# Z9 G( N
1 ?6 n) A( N O4 ]2 a5 _P.S.以上程式已經Run過,沒有問題。7 P6 y9 e$ S/ ^* B( N: n) K) ^
$ C; B1 \" N( _, ^9 [4 |5 y6 k" k( L3 X[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|