|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
4 ]6 v; v' U# m3 I2 k( U主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 1 G8 B' C. o% u+ p
! }0 S$ U) l' m# D- v
其實修改無敵很容易,! ]3 [# W2 u Q2 H5 x. z
就以遊戲程式設計的觀點來說,5 G3 E0 N+ o7 c4 q
一開始我會將人物無敵數值設定為0$ M- m. _: Y& e+ E' i
ex: , [4 n/ d' a! q) C: E7 ^1 `4 H- C
#define InvisibleInit 0( G, u' {# Q2 p- Z0 q
9 [" T% o1 \+ k" N) b" Z然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
$ \% z: O; C9 ?3 O' F/ f$ `7 P8 i呼叫設定函數
) |( e) T7 [9 _# j( I# Wex:$ k- w2 B' b0 T4 j) s% |+ k0 M
BYTE InviIniVal(EVENT event,BYTE SetVal)1 K" h6 O/ _; |
{1 ^ E: ?' j, o4 T' e( D
//Deal event ...* N7 o/ z+ Y& a2 P
; f0 U# C5 H' P" q' Z- J! {
//Deal InitVal
f1 V, c$ x- P' z) K& c# ^BYTE ret = 0;, I7 {: j7 e- P4 l
SetVal+=InvisibleInit;; L4 K. X0 n. }2 A
ret += SetVal ;
6 O* l1 h2 n6 B xreturn ret;
! b5 V! }0 Z ?}
, k+ g1 }1 O! D8 [2 k; r M. n4 b( d z
最後關切的函數當然是遞減函數:& K, @% W7 k, \
ex:
, h+ ^- a: K9 LBYTE DecInviVal(BYTE *InviVal), F. g9 n7 u" F
{
3 w7 U% ]. e! h. u$ ccout<<*InviVal<<endl;
5 Y5 B7 A @' a E w; V(*InviVal)--; //*InviVal -= DecVal;
0 Q9 m# e, x; A/ Icout<<*InviVal<<endl;
+ b [8 V2 d) x- e3 ^(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;, f9 v" Q! Y1 S: i6 B% i' C
return *InviVal;
! a) T) \% b1 ]0 V# e" l}
+ k+ `0 ]& X! E: H5 z% u% C, O9 V6 g. n- z7 C+ f4 F# }- ]
針對以上觀念,改遊戲就很簡單,
6 E4 M4 X8 P3 u) ^& a1 K一開始我們先初始化數值,輸入'?',
9 o/ b1 o. s8 \' v6 b' x- t( P接著開始無敵時,輸入'+',
, L/ ~8 ], @* @* O8 _接著我們知道無敵時間會開始變動,) {1 T& ]1 o3 T2 U d
以上例來說時間開始減少,每隔一段時間輸入'-',
3 Y0 P+ w* s; n. B B8 O最後沒有無敵效果了,輸入'!' 或是 '0'。% n1 v( J# L) n/ ]
$ e( `+ H6 d- e! B3 r8 x! ?# n6 n: P記憶體地址經由演算法篩選後,只會剩下幾個,2 d- I- }8 R* h" Y a" g: `
try 一下,你要的地址就出現了。
8 V0 m: T. U% a. ]* z( H( x9 [- }& ] i! j% W- f) s# T: ^
P.S.以上程式已經Run過,沒有問題。
# S# @; _: w6 r! f) z# w% D5 U) }8 V6 ~: m
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|