|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 . J) s) E7 @) [7 B& ]) X9 }& `; G
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
: B8 @7 T, N+ H5 m/ Y2 g* u+ [% u% E& T8 w9 B- p
其實修改無敵很容易,( [$ H! L+ u$ ^" y* D
就以遊戲程式設計的觀點來說,
' p% Q4 o. Z* d! K% M4 U一開始我會將人物無敵數值設定為0
/ A/ d f9 E9 e: @6 kex: 9 T( e3 m+ M9 c; ~ h& H; i
#define InvisibleInit 0
5 g- I" L( O4 z8 M" `# y' Q
+ F, f5 [6 @- `1 r# I3 Q, x然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
' m+ z G, u5 d: E呼叫設定函數
1 ^4 A w1 x" lex:
5 L6 E" n M M/ [# X/ j* {+ JBYTE InviIniVal(EVENT event,BYTE SetVal)# P. B* _4 P2 `; E5 d0 S0 X8 \
{$ Y) Q$ G7 |8 s2 ^" S, a& ~: u
//Deal event .... D- q, @) A+ d% I4 |
5 e; g- E) j, ^//Deal InitVal
) ~( r* S+ {0 D& Z! B" D; A* R' TBYTE ret = 0;; r# |. x5 w4 }1 d' d
SetVal+=InvisibleInit;
5 j ?$ j% D! m# Zret += SetVal ; H; N$ z/ y, [
return ret;
7 R# p u0 t3 Y# G}
/ B2 i4 c: S+ h& @* u; ]/ G9 T* c
/ Y, z5 P4 o+ ?1 ?, |" p! w最後關切的函數當然是遞減函數:
- ?- t8 {& N5 ?* ?$ lex:% V! _' b6 h5 R$ j
BYTE DecInviVal(BYTE *InviVal)5 j$ f: B/ w# E; h
{$ O- O' \4 E) X& }# }8 ^
cout<<*InviVal<<endl;
: S! w8 c' Q* p* }& e(*InviVal)--; //*InviVal -= DecVal;' B; L$ q! F3 N# {( d# T
cout<<*InviVal<<endl;
! W, D4 v1 R, A; ^(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;$ O2 W" d% ]6 w( D0 z7 g
return *InviVal;; P' h* }' }/ n6 S/ p
}
2 v9 G& G3 w) @& }* V+ d2 R4 Y, \ `$ F5 a( }5 L( y9 r* T" T9 u- F7 w" L
針對以上觀念,改遊戲就很簡單,4 a) k! S2 H9 c' U2 a
一開始我們先初始化數值,輸入'?',
( X8 \( e+ n8 Y. }& K接著開始無敵時,輸入'+',: ]% B8 e: m" S1 j
接著我們知道無敵時間會開始變動,
; l/ E D5 r: e6 g3 V6 X以上例來說時間開始減少,每隔一段時間輸入'-',
; v& u& a* C# _# A* _最後沒有無敵效果了,輸入'!' 或是 '0'。6 y8 Y Q" T9 e5 U$ b8 t# j+ R
' S" u9 J! v( j記憶體地址經由演算法篩選後,只會剩下幾個,
, d% O0 I a8 D& R: K4 R% Qtry 一下,你要的地址就出現了。
4 D$ k' s+ y1 p% U* k8 R) @. c6 F" N1 l2 w a, }- |! k- v
P.S.以上程式已經Run過,沒有問題。
; i/ X* S3 I4 X1 j) T" K) U3 A7 s" m) p# d; d
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|