|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 1 T: H- y# S% z( R% g. B6 @
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
4 t" z* I d% D" v! [# s& g7 ]: h
其實修改無敵很容易,
( `% W% y+ ^; X3 `5 l$ r) u就以遊戲程式設計的觀點來說,
2 q( j& s7 t, x/ L' m一開始我會將人物無敵數值設定為0
- n1 H8 z: M2 }# Hex: u- e% c' a9 [. {2 l
#define InvisibleInit 01 f6 K O" O3 h
D" Q# P1 W/ J$ c1 n然後當觸發特定事件,例如受到敵方攻擊(物件碰撞), n' M* d7 I: d! P# s( h
呼叫設定函數5 p3 @- t: I7 Z8 Z/ Z
ex:
9 Z+ b0 z& w; g0 U9 Q& M3 }3 xBYTE InviIniVal(EVENT event,BYTE SetVal)' @! l$ A2 w1 I3 X% M* s
{6 z8 i7 N5 |% n3 X9 w
//Deal event ...8 O9 O! [$ P: p$ O
+ U8 }8 o. R: r//Deal InitVal' s5 l) z& Q3 l* q; D% t
BYTE ret = 0;; E$ L# l6 m9 @" v- z9 H
SetVal+=InvisibleInit;
; k8 }; i+ [* D3 u4 p$ ]- Qret += SetVal ;% m& u! f. M+ v: C6 g0 }" s
return ret;
/ J3 x- n, O8 R" M4 z, O} ' o$ w+ ^3 U4 f. {+ I& p
! v5 {4 A; _1 d& Y. U6 ~5 Y
最後關切的函數當然是遞減函數:
a- F/ \( d- l$ Y) U! jex:
/ n3 }8 T& w6 p1 ]; t0 oBYTE DecInviVal(BYTE *InviVal)5 N$ p6 Z( Q2 i% c+ t
{+ ]9 m1 D5 X' h8 H; d3 T
cout<<*InviVal<<endl;
% P6 t2 p* E) }7 i, T: j(*InviVal)--; //*InviVal -= DecVal;- K5 }! o/ j0 P
cout<<*InviVal<<endl;
3 \1 c w+ G8 L: x8 [0 @(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
! A% D3 ^( Y$ W9 Ereturn *InviVal;( [5 y$ m9 W- [1 \2 `$ u! |
}% H6 F8 g I+ W8 {
8 A9 J& b0 C, K( s1 W針對以上觀念,改遊戲就很簡單,
4 [4 J" \$ Z: D- @一開始我們先初始化數值,輸入'?',2 g" s8 {! x7 C$ ~# A5 m$ O. N6 Y. }
接著開始無敵時,輸入'+',# X: \: r( d8 C9 a8 `5 J
接著我們知道無敵時間會開始變動,
* y; T1 h! Q, i0 h8 j( d$ ~以上例來說時間開始減少,每隔一段時間輸入'-',! M+ T2 E8 S1 {% F/ y% d, {/ Q
最後沒有無敵效果了,輸入'!' 或是 '0'。; X, u& ]$ T/ ]7 E
3 w d& U$ h% M7 b! M, @
記憶體地址經由演算法篩選後,只會剩下幾個,
4 C) [# j5 f. S# |0 V/ p! Ytry 一下,你要的地址就出現了。
9 m/ o* F+ m, e1 n# q2 u
# _ C% [7 K( [- z) p2 {# }P.S.以上程式已經Run過,沒有問題。1 o5 t; K% @8 l
1 m3 q+ H7 ?! Q: b[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|