|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
! | X8 {$ y9 G7 b8 K' I5 G+ Y) Q* S7 ]! n主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
d+ ~2 a7 s6 K) e6 L' Z! j, C; ]% K9 _3 c4 `$ O
其實修改無敵很容易,
2 Y! ~; y3 Q3 W$ D$ G0 P1 O就以遊戲程式設計的觀點來說,' U, m! L0 @* s# p2 b
一開始我會將人物無敵數值設定為0
! r' N8 o8 i6 P4 L$ uex: 8 {7 Q# L$ H/ H6 c' e
#define InvisibleInit 0
6 u* M& O: t5 z b; E# O3 b' J
" _& [$ j# @+ S7 H& @2 K3 i然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),3 h3 K8 \; `. Q- i7 G, h' I' _
呼叫設定函數
+ k) z4 C* z& P6 U1 @6 g+ E' Kex:
% i( ]" _# H: W# bBYTE InviIniVal(EVENT event,BYTE SetVal)- P- _$ y: M1 g
{( P9 ~" t, y# a; f5 V
//Deal event ...
5 x7 j6 s$ M0 q& S
3 x' M p. C% T& a+ C6 k+ n//Deal InitVal
4 x0 r' g: R; |1 }5 sBYTE ret = 0;
- V- G. n! |6 R6 @$ @SetVal+=InvisibleInit;
9 P) c, ]" c$ z; C5 j( v' f& Gret += SetVal ;* ~7 a7 g6 K& F4 p+ Y9 c0 {# `
return ret;
- U/ _! M" J: U$ {6 F} 3 U/ |: r4 h) f' k# Y
8 Q- n/ \1 G6 ]& N; Q# K% h7 y最後關切的函數當然是遞減函數:$ w A8 t1 E* h
ex:9 |3 X( s q) K
BYTE DecInviVal(BYTE *InviVal)
3 Q# H: Q c4 J6 j& t{- h5 H- r4 |# X4 E6 a, [/ Y6 B7 I1 Y
cout<<*InviVal<<endl;
+ H! f' p# l( e% ?; z(*InviVal)--; //*InviVal -= DecVal;
4 Y# m, }- g' n# Wcout<<*InviVal<<endl;; g+ M% p4 K4 z/ b: p" G
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;; `1 _3 t& \3 F5 i" u) a! x$ n" y9 V
return *InviVal;
`& O. T! ?/ {6 \ H" M, p9 Q7 E}$ y. a; Y0 Q* w- h
1 B) s9 w! w. g' M8 f0 ]針對以上觀念,改遊戲就很簡單,( N9 V! @' t3 C# w9 z& r1 g5 S
一開始我們先初始化數值,輸入'?',( R& \3 `% p! E [# q! S- C
接著開始無敵時,輸入'+',
, c0 E7 P4 t' N; Q; K6 R0 x# T1 D接著我們知道無敵時間會開始變動,
& o$ A4 K, [7 L e以上例來說時間開始減少,每隔一段時間輸入'-',
& k2 Y6 W" \! ~" L5 A3 Q0 ]最後沒有無敵效果了,輸入'!' 或是 '0'。( C2 T) [9 e% \2 U
8 ^# V2 S% v4 J! \, f$ q
記憶體地址經由演算法篩選後,只會剩下幾個,
. t( z/ L! ?- j1 U; P) k1 n- j0 x' W$ Atry 一下,你要的地址就出現了。
2 Z, p5 T" k, d3 H9 W7 ?6 P+ R1 f& \8 D( \
P.S.以上程式已經Run過,沒有問題。
) x. y5 q6 P3 Z, C* S* z" ~0 I0 `/ Z3 {$ ]" |8 m3 q& A
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|