|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
' F. j9 U9 C. B. w" p主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
" S+ T% H0 w( ^* \+ V& u6 c( l: D* r
其實修改無敵很容易,
( Y3 Z: W2 A# ]' G3 P就以遊戲程式設計的觀點來說,6 p1 d5 J4 |( K3 U
一開始我會將人物無敵數值設定為0
" K6 X* k5 h& h9 Z: ~% K9 Z8 Pex: 4 X5 G1 `4 X0 y4 i: P" _
#define InvisibleInit 0- l8 r1 b. L% \2 U+ {; l0 o
: C4 t5 F/ }& ]+ v9 S
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
3 m: _9 ?* G* ~( b0 t# E呼叫設定函數
: V3 R. [- o9 {7 T3 v) e( yex:
6 S% D$ s# P- z9 S: U/ ~" j9 mBYTE InviIniVal(EVENT event,BYTE SetVal)
3 ~! E; g0 j5 Q" h0 P& m7 x( ~{2 }- E7 c+ c; d
//Deal event ...
* q4 \- o0 \3 P! j: L1 Q# |# j# R5 [. k
//Deal InitVal
8 W( k0 K$ `# ?$ c L wBYTE ret = 0;( r8 F" W2 W- z
SetVal+=InvisibleInit;# j3 l3 O# W; L1 j+ x. n
ret += SetVal ;
% Y. G* W( _2 H6 creturn ret;
8 O8 p ]) Q, N* H3 t} 6 y2 i% a# z5 M3 Q! H
/ l6 g. }, M$ @1 d3 }$ f
最後關切的函數當然是遞減函數:
" O2 n, y* Q, [; w* Bex:0 P$ c/ M: L v1 A4 g" F
BYTE DecInviVal(BYTE *InviVal)6 h+ \- l* O9 `$ Y) t; S
{
5 L; l& s9 ?, l2 F# t; o6 qcout<<*InviVal<<endl;
% a0 W% }9 q# b0 z(*InviVal)--; //*InviVal -= DecVal;& G. @& N" K$ `. s: Y
cout<<*InviVal<<endl;: D! ~+ K/ g4 N( g/ R5 b+ J i1 c; T
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
: R& O+ K- K& h ]- p& @return *InviVal;( W* s- F) W; e; t: W" E" B
}2 I+ v; @+ s/ F0 F. V& }$ Y9 z
2 H! V/ D$ S; j; Z' o針對以上觀念,改遊戲就很簡單,/ j3 T' s* d P: t+ C3 g
一開始我們先初始化數值,輸入'?',
6 d2 U! v) \/ j接著開始無敵時,輸入'+',* R9 B$ f3 L$ N$ Z" J8 e
接著我們知道無敵時間會開始變動,& P9 B$ b$ P) n- [5 p
以上例來說時間開始減少,每隔一段時間輸入'-',
: o; p: ?6 ]( @) b3 |0 R% S" J最後沒有無敵效果了,輸入'!' 或是 '0'。
9 J' z8 A; y' x. m. ^* e: U& y
記憶體地址經由演算法篩選後,只會剩下幾個,+ A! [, U& J( h2 F9 i6 {3 j
try 一下,你要的地址就出現了。
" V- \! }$ w$ `; }5 l6 K' B- T( y4 \' l9 x
P.S.以上程式已經Run過,沒有問題。# h) O: G( s8 L# ?) `( d! C
F9 D% L/ E3 @3 \5 s. \# o[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|