|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 v2 q9 A) F7 n* p9 }" U9 K9 M$ {5 C
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 5 @5 ^& R) j' e( L7 L7 I
9 d+ q4 ^& |) [, \' M3 s. z
其實修改無敵很容易,# v A+ Z0 g6 ]
就以遊戲程式設計的觀點來說,
# ?/ I! k: O: k _( D4 J" W$ C6 u3 `一開始我會將人物無敵數值設定為05 h" r# C5 |. ?$ V4 L) b; o. \& ~2 o& v
ex: - w5 \# q. e% [" g. @* U
#define InvisibleInit 0' }* \6 F6 S! D, F/ N
v- S* q* i9 z- H& i然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),4 ?0 _/ F* y: E" v8 `4 o
呼叫設定函數/ q/ _% i8 L! E+ h8 B
ex:
, a7 ~1 z7 \8 |- vBYTE InviIniVal(EVENT event,BYTE SetVal)
, | G5 h" t* E P{' X! W+ ^- V& y- }1 X
//Deal event ...# L2 y( K4 ]% `$ a
* _+ x( h- r: O: ]) K
//Deal InitVal
1 i! R3 m' |) R* q. R6 eBYTE ret = 0;
+ D0 v! H9 P# {) Z: t# k% XSetVal+=InvisibleInit;. _- \/ ], O9 Q3 K! o+ T' ~
ret += SetVal ;
$ h8 q, k w5 Z. o. S/ h; _9 ereturn ret;
: l& a/ p2 i$ p}
, }; W' u+ R0 \8 t/ A5 @( e* `- Z H
最後關切的函數當然是遞減函數:3 I2 C- j1 M/ L
ex:
0 T% s8 k7 S6 U4 N" aBYTE DecInviVal(BYTE *InviVal)7 K, H& m- j, e4 u! j
{
1 Q) ?) C3 b* S7 l' Dcout<<*InviVal<<endl;! K, ]- d0 j) ^5 m& x
(*InviVal)--; //*InviVal -= DecVal;: f, z) _9 E$ C. s3 t
cout<<*InviVal<<endl;, q& t+ O( q; \ J# ^
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
' y. k m @( ]return *InviVal;
- b }8 D% m- T7 @% O0 f}' { A6 @, K6 l8 d4 ]& b; W
( x' Z0 R# |0 h. S3 F針對以上觀念,改遊戲就很簡單,8 U1 B% Z& H( O, E
一開始我們先初始化數值,輸入'?',/ B0 I* c+ j: m8 W
接著開始無敵時,輸入'+',* ^& c' ?: Q+ I+ L
接著我們知道無敵時間會開始變動,
4 z( T* G6 ]+ Y5 [& @6 i' y以上例來說時間開始減少,每隔一段時間輸入'-',: J$ M C; Y0 R: b* m) n
最後沒有無敵效果了,輸入'!' 或是 '0'。
; A7 R# T8 ]% {# N. z* y+ D- l$ F, F) ~; X, t& a! T2 H
記憶體地址經由演算法篩選後,只會剩下幾個,' `. ]$ Y# d/ I! j
try 一下,你要的地址就出現了。0 b$ x5 v6 L3 B# k; |4 a E
n+ J% Q; r3 T0 u- n' G. O
P.S.以上程式已經Run過,沒有問題。3 n4 E9 N# Y5 X) ^0 w
- M9 g* U& O, a" k3 B N& U
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|