|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 ' B1 u4 i+ P/ t* J
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
5 H: G9 u3 I" C7 ~; I
9 C" A; ~% Z0 b2 i% K其實修改無敵很容易,
8 F! I. a7 i! m就以遊戲程式設計的觀點來說,8 D" e, B6 P+ f7 m$ u$ F
一開始我會將人物無敵數值設定為0
* r# ], r. Q& s1 Fex: 1 u! T6 n* t' \
#define InvisibleInit 0% n: o2 _" W _" h
" t+ A }1 {1 m" v5 h$ M/ U5 z) l2 P然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
4 P# `6 p9 a& _呼叫設定函數4 _0 f) ^2 S' g, `
ex:
! K- Q: E2 j3 T! D' p" I- g- X. HBYTE InviIniVal(EVENT event,BYTE SetVal)" L! F$ r& t" Y3 T/ L
{
. f4 R$ K9 v! S$ i' K* ?9 M//Deal event ...
, r8 r h) N. g* V
: z1 A |) B9 x, `+ a//Deal InitVal3 ]" N2 w( y9 N4 c! X
BYTE ret = 0;
3 A# x I; e' ~2 KSetVal+=InvisibleInit;
6 O ]2 \" p4 M; B8 O7 \; Uret += SetVal ;
# g3 }- g; {' M5 u8 Lreturn ret;+ t) ^ Z2 I0 @/ l C( z0 X1 T
}
) ]) I6 l/ u+ k. H& H0 g3 V' f, e9 b' `7 ^0 A% K
最後關切的函數當然是遞減函數:
6 |" G5 I+ b% q2 W" a v- }) Nex:* |! Z7 Z# q, N4 {4 y; h- T/ c
BYTE DecInviVal(BYTE *InviVal)
1 K- o' z$ w/ m( V{
4 Q/ ^7 r/ n( m9 lcout<<*InviVal<<endl;. g* B1 I& Q2 T3 M& Y0 L
(*InviVal)--; //*InviVal -= DecVal;( Q, j4 O+ O ?- v. J% H {
cout<<*InviVal<<endl;* K* s% C) k7 d ?: \1 v: N+ A( X
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
' ~9 C% e9 q1 W' V" ^return *InviVal;8 k6 N: W: W$ F2 F/ ?) x
}
' p6 @! J4 S3 R1 o
7 E `6 ]3 ^" }" ~9 q3 F' W) a6 c針對以上觀念,改遊戲就很簡單,
: g# N& e1 `2 s: `, r一開始我們先初始化數值,輸入'?',
# X4 B$ ~3 d/ E5 h接著開始無敵時,輸入'+',
& M9 O& R2 V! L% `接著我們知道無敵時間會開始變動,
5 a: t q' x* {以上例來說時間開始減少,每隔一段時間輸入'-',: V+ L }9 T" m# \
最後沒有無敵效果了,輸入'!' 或是 '0'。
4 U* t, o. i; B3 \- ^4 R5 J3 G. E0 L/ P! f
記憶體地址經由演算法篩選後,只會剩下幾個,
5 ?8 e$ Q# E1 @$ k- W. ], h6 ~0 Itry 一下,你要的地址就出現了。% Q' I5 H E+ H' X% `
, Y: Y/ e! v0 @- h6 uP.S.以上程式已經Run過,沒有問題。
$ T, A, X6 j* g- d$ U3 I; A+ |5 K1 @
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|