|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
: {- k( K) \; h t- j主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 ' j3 H& n0 v$ ^
! u* K. A, R) w# b' I
其實修改無敵很容易,
! K- q0 _& F% ^( {* q2 w就以遊戲程式設計的觀點來說,
* S7 T2 ]$ i3 a7 C" Q" L一開始我會將人物無敵數值設定為0$ s) a3 M2 i9 D3 v/ _
ex: ' M& f( M' l, w
#define InvisibleInit 0: y2 i$ N) o+ ~/ [4 E/ z0 J
: G5 N* c- f/ w1 m
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
+ U0 L( n1 s3 H' i7 C2 y呼叫設定函數
* T& [( J' C7 ^3 b: U6 \ex:
) c' H5 }1 a; q/ D- ~2 aBYTE InviIniVal(EVENT event,BYTE SetVal)
1 {, Y6 z, j6 s* f{! q8 a: }8 M5 J: ]
//Deal event ...
4 j) S; W/ { M0 M
; `4 [' R, }; f( [) U$ G# S9 b, x//Deal InitVal
+ R4 K- O& w/ r% G8 U5 ]BYTE ret = 0;* ]% \% y1 M; Q# @1 Z+ d9 j4 r
SetVal+=InvisibleInit;
( h" z5 H3 i! b4 o0 {ret += SetVal ;' f- l( Q6 G5 E
return ret;, a6 J) ^/ p1 C
}
9 C1 A! A" L: j5 K
0 y. v$ U! u4 L2 r6 Q% R最後關切的函數當然是遞減函數:* D7 m6 S$ y: ^! ^- v8 e8 u# [7 r) L
ex:
* d4 a! Z( U. R, d, U& W( jBYTE DecInviVal(BYTE *InviVal)
4 N/ n* j: ?6 l6 n3 G{2 T9 x* h# n5 D% |3 \+ q! A+ F
cout<<*InviVal<<endl;; \* h# H) @& B8 z
(*InviVal)--; //*InviVal -= DecVal;( I7 z4 v# E! u# x: S
cout<<*InviVal<<endl;5 h- q# L) {0 N% d+ c2 t
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;( Z; V- ?# |6 }
return *InviVal;
! J( f" r8 N x# f. k F: w}- ]! ~2 w% W; `. P7 X* O
& p! |' } i, J) d" b' e) t O針對以上觀念,改遊戲就很簡單,
% V9 Y0 d8 W$ b" O$ O一開始我們先初始化數值,輸入'?',
' |; K4 T( i3 h接著開始無敵時,輸入'+',
) _! W) D' O+ ?$ A. P接著我們知道無敵時間會開始變動,- v- I5 `* l; W' k2 I3 c. k4 E* Z
以上例來說時間開始減少,每隔一段時間輸入'-',
$ ~, w! r7 E! o5 X4 C最後沒有無敵效果了,輸入'!' 或是 '0'。
6 C/ F1 n5 y( }$ x a. w; [7 k9 n/ e
記憶體地址經由演算法篩選後,只會剩下幾個,) D' i: j/ ?. N: @, z
try 一下,你要的地址就出現了。$ a+ ^& v+ ?$ b& Q& s- o3 x
6 Z- Q( u: i" hP.S.以上程式已經Run過,沒有問題。
4 v: W$ E8 N$ C6 E, G) s, L, Q5 p2 a# R2 J' s9 P2 y. ` y; v+ s
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|