|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
7 q3 e, z' l+ H5 ]) v主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 1 t3 ?2 b7 F: m5 U
/ q; Z( `5 @* x; B$ K1 m
其實修改無敵很容易,2 I# ]; p- O2 [1 [# X! J7 y
就以遊戲程式設計的觀點來說,8 w% {4 }7 u. P7 k2 {& N- |! |
一開始我會將人物無敵數值設定為0
0 ^- P: r$ [3 Z) S" _- Lex:
# F5 k$ b6 Y# d! |#define InvisibleInit 0( O0 h6 t7 e! x
" x* v- j2 b# k x9 s
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),) Y) j4 `( [$ W" E% S. Y
呼叫設定函數
8 m* n$ @" V9 x( q; V2 H aex:) Z3 }& x8 y$ b5 a- x9 o
BYTE InviIniVal(EVENT event,BYTE SetVal)2 L" t& F2 w$ l7 G1 W0 l
{/ V s' y+ P& {' O
//Deal event ...7 q o& l8 H. x/ p0 n: ]
' @2 X0 ?/ ~% U& L- _+ E//Deal InitVal K7 J; r4 t7 J5 X3 s* G2 R
BYTE ret = 0;# c7 g: L; @% S2 P! f7 A7 S4 s5 x
SetVal+=InvisibleInit;
/ D! E- y6 ~% Zret += SetVal ;
6 R8 Y. i3 T# S& \. n! Q0 N Breturn ret;" W- b6 x$ A3 @+ ?$ V. l8 Q
}
3 Q, c+ N$ P8 u* V6 r9 |9 _: }/ u
( d u% |" \- f0 n. V, m$ j最後關切的函數當然是遞減函數:
8 q |5 ]0 }" R' b( x7 {! qex:
) a% i- z" u% R( Z# hBYTE DecInviVal(BYTE *InviVal)
E' s" Q0 P* P- }{$ b; |! B+ T G$ a2 K4 ~0 W
cout<<*InviVal<<endl;
. \# M K7 F/ H& T' t/ a2 x/ b) L(*InviVal)--; //*InviVal -= DecVal;0 Z0 \1 e7 y+ e% b6 t
cout<<*InviVal<<endl;
5 i' V# n# r: i1 E h8 K(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;, e* f( m& I. a+ R2 e( b; f$ @4 [
return *InviVal;/ ?2 C5 s; g+ Z* E# g3 B
}/ ^4 Z1 t/ k$ ^7 q& D. `) l+ Y
, n. n( \8 J' l" ]
針對以上觀念,改遊戲就很簡單,
8 _) `/ X0 k: o7 M! g0 |一開始我們先初始化數值,輸入'?',5 z1 j1 V1 V' f" B
接著開始無敵時,輸入'+',9 q( Y$ e2 V( B2 Q$ z* w9 i
接著我們知道無敵時間會開始變動,
- p8 d0 Z0 X- B3 S( @+ D' ]3 w以上例來說時間開始減少,每隔一段時間輸入'-', a/ L. j" x: }5 Y& F
最後沒有無敵效果了,輸入'!' 或是 '0'。: I4 X* \! m* w# N
( w* M0 |0 P/ p5 T! g1 A; {) B- A記憶體地址經由演算法篩選後,只會剩下幾個,
2 ^5 o- h* A' I6 t" }! q) Mtry 一下,你要的地址就出現了。
" o6 v) c& `# K [
$ ` H! f6 b b* w0 w7 I" sP.S.以上程式已經Run過,沒有問題。
7 O4 ^4 y, K, u% Z H) J8 M& W, [: g o h/ F8 y' z! k: m
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|