|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 1 c! h$ A2 F8 `( H0 i9 P( G
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 # i6 O1 [% i4 y5 u$ s9 L
! t9 z4 h8 L ?% K Z/ K! B; B3 y其實修改無敵很容易,0 L. Q8 v5 k/ I3 H9 H% I* y0 k
就以遊戲程式設計的觀點來說,
! X6 y3 N8 J L8 S8 W一開始我會將人物無敵數值設定為0
, L4 T$ j/ y i5 H( B# J- ~; m1 ]. Fex:
+ p5 j8 t. a! }# X# w#define InvisibleInit 0
8 W* {2 \4 Z) _* z, u9 a* q l- i6 G) p0 v* W
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),0 }) A& X! l0 e: s0 `, |
呼叫設定函數
' z6 c; q2 j5 Z( c0 K4 cex:
1 q) i6 C3 A9 a! c, q+ [BYTE InviIniVal(EVENT event,BYTE SetVal)5 Y: l' [+ ?, d; V3 l0 R4 C
{
l3 J4 H+ S* y8 I, c//Deal event ...! Z( u$ ^9 k. i( @% G
3 J& t! M( w/ A5 `/ P' C//Deal InitVal
% t: C3 K6 V( s% TBYTE ret = 0;+ H& v* @8 r) L3 e
SetVal+=InvisibleInit;9 h% o3 t T r. g5 q( B- j
ret += SetVal ;
) k! Y* a' r( V8 ] x- S! J/ Rreturn ret;/ z$ ?- [( L/ ?5 S) d
}
& w/ a; c4 }7 ?; `/ q' s2 y3 O ^: a( C0 @3 r" P! J5 U5 T, c
最後關切的函數當然是遞減函數:
9 }! d8 ~) g) s& |- Z1 p& U& vex:
& X3 L) I( v- W# DBYTE DecInviVal(BYTE *InviVal)6 k/ D/ C3 ]+ p0 D8 ?
{/ K# m- u/ F+ j8 Z0 C" J. j: N
cout<<*InviVal<<endl;
& d% T$ x2 X. l5 z(*InviVal)--; //*InviVal -= DecVal;8 T8 F K, A( u" O: Q- D
cout<<*InviVal<<endl;$ m5 ?# Y8 D4 J; A; j# M
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;5 |' W( P. f. b% T
return *InviVal;8 Y0 B, ?, G" V% }, g
}7 ]0 _, N9 v# @, z1 h) U
) l6 m. K& x) B
針對以上觀念,改遊戲就很簡單,. m* Y" g' \- } V, o
一開始我們先初始化數值,輸入'?',
( U% O# I( X2 g+ y) k, \" z接著開始無敵時,輸入'+',9 x0 T! Z }) d% \8 ^ @% ^
接著我們知道無敵時間會開始變動,
m- [9 b" X# s/ S) o4 ^. }) O/ b以上例來說時間開始減少,每隔一段時間輸入'-',
; N' S; L- j1 [0 x最後沒有無敵效果了,輸入'!' 或是 '0'。
0 \$ Z4 n( C7 h( ~0 s
: D! b; E" P! M# V7 m記憶體地址經由演算法篩選後,只會剩下幾個,
' m% y( d$ j$ Q" I; }3 Rtry 一下,你要的地址就出現了。
. ]7 D* H/ W/ |( G' c/ V$ u7 A: z& V1 B/ S
P.S.以上程式已經Run過,沒有問題。
5 E! d/ q/ j* J0 K! A; w, A+ d+ X1 x# a" Q5 t4 }
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|