|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 / k/ R/ n R, T7 H
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 , m* f0 R0 W S( I2 s' K
) P. u; ^7 p' E8 Q: c1 |6 P/ O其實修改無敵很容易,9 ^+ @. ^- ]$ b* @6 Z# n y
就以遊戲程式設計的觀點來說,# q" U8 Y: ^* p( v
一開始我會將人物無敵數值設定為0
6 q# h! Y0 ^ D1 f, qex: ) S3 r( Q& I2 J q2 J- U
#define InvisibleInit 0
3 O: Y0 M2 E5 ] |4 H( h# j5 v% p% S: [, a8 h- D3 b
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),' p L3 l9 J! h; p+ N0 u
呼叫設定函數1 x; k3 e0 i: L) @3 ~
ex:0 U% _" T# M/ N# Q: L8 U
BYTE InviIniVal(EVENT event,BYTE SetVal)3 `/ f) _5 P: k- { p( ?: l0 t
{$ r' m* Y+ r+ A6 `
//Deal event ...
9 ^) T* N. D* c0 Y
$ C$ |' Q$ A0 k* k) b4 p//Deal InitVal
& x7 [( k" h! J8 o2 bBYTE ret = 0;
+ f# B2 m7 I) i- P3 M: g, ]SetVal+=InvisibleInit;( ]6 n2 M7 J" C, }+ t
ret += SetVal ;6 M8 r) c* g6 V5 X: a
return ret;
% n) C, b! G+ U+ j}
5 O9 y. p; ]& J7 C7 a
+ l, G" R5 B- k8 K* q% E8 `0 e3 u最後關切的函數當然是遞減函數:& C6 Y6 g" L$ y: y
ex:
% S+ J5 G# X- t7 B# U- V9 nBYTE DecInviVal(BYTE *InviVal)6 h9 l; U3 j7 Y4 R$ d+ ]+ X& }4 A( |
{
( N7 u+ m1 C4 M1 t( N8 u7 N) Ecout<<*InviVal<<endl;$ a) P6 v7 Q* M4 ]1 y: N
(*InviVal)--; //*InviVal -= DecVal;
8 C- @6 X( Q2 ]( C% |cout<<*InviVal<<endl;
+ }- ^1 I5 i F; ~(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;: a# j, A8 p9 ]# E# Z4 |
return *InviVal;- g- {, w3 q& T( q9 s+ |) y
}! z T0 q; x& ]* W, R
# v& ~( T1 J, T. i/ _, ]8 T針對以上觀念,改遊戲就很簡單,
* {# T- i; H3 Q) v一開始我們先初始化數值,輸入'?',% G7 y+ Q, \ \. v+ Y
接著開始無敵時,輸入'+',
1 w# v" b" I* e. A$ Y$ C& u接著我們知道無敵時間會開始變動,
, o b. K- w# M/ M2 q; e o以上例來說時間開始減少,每隔一段時間輸入'-',- v+ A3 a* | i- f
最後沒有無敵效果了,輸入'!' 或是 '0'。
" m4 v1 |: i( r# m$ D
! T- L: I0 {* y記憶體地址經由演算法篩選後,只會剩下幾個,$ k* x" K5 q3 c& s
try 一下,你要的地址就出現了。
0 n9 J4 f) c, I2 j* e; o" U0 {, u# `. L
P.S.以上程式已經Run過,沒有問題。
2 t, @7 m5 O& H: g/ ^7 B
7 {0 J* I9 [+ G D, o[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|