|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 : u+ ~ f. w: ]( K5 p0 A$ Q" X
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 " }1 y% S4 X3 O# i5 q- H
5 F! |" E$ O2 z4 D4 l2 D5 C3 T
其實修改無敵很容易,
$ d; H+ I" w+ d" k就以遊戲程式設計的觀點來說,. d( v, e D4 |- C' C7 r
一開始我會將人物無敵數值設定為0
& u- ? F, ^% @9 C4 j! T' Z+ tex:
; U; t3 {! z" c4 C4 C#define InvisibleInit 0
( H6 M' k- L* V3 `0 ~6 S# U" N7 x. r6 ~" T3 H# ?
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),& k" h1 I' C5 L/ s
呼叫設定函數3 m6 V% A3 L `- \+ z" \ ]! |
ex:
0 c9 ^# `7 l6 [7 q9 _6 {% LBYTE InviIniVal(EVENT event,BYTE SetVal)- k1 e) F6 H- `
{
+ p! r! x- O8 |+ A1 u//Deal event ...) j8 L1 m4 h3 ~( y
! @$ G+ F! x N- u1 C* n" E* J//Deal InitVal
# T: w% w0 [5 r( J& QBYTE ret = 0;
9 N( t( a, G1 R3 T! FSetVal+=InvisibleInit;
) f2 W! }! l) R+ N3 ?/ `ret += SetVal ;" F, L: O# W5 @2 k5 \4 o9 w
return ret;& J- z2 N: C( n; q
}
0 i3 z0 E% d$ W9 Q- V R4 A/ \& f5 j9 p, C v
最後關切的函數當然是遞減函數:
5 {+ Y, M. z; i8 U' Aex:
! i4 E: p* T' L. C/ Z) FBYTE DecInviVal(BYTE *InviVal)
' |3 z/ z- | P/ f* {{
3 C0 S2 q- Y) }cout<<*InviVal<<endl;
g$ ^4 y; b( S; ?" ~4 Z Z) r9 d6 ](*InviVal)--; //*InviVal -= DecVal;
- R+ [ [+ x: Ucout<<*InviVal<<endl;
( m, s b, t7 ?(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;5 w- l+ P2 ^( k7 D: u
return *InviVal;
/ Z6 P" @" x! y S. R" @7 C) H- b& ~}6 j% B7 c" Z0 I& X( [( [
) r) A8 }6 N1 H! V9 w4 g6 a- o7 |針對以上觀念,改遊戲就很簡單,* c5 s; E$ a) Z5 P
一開始我們先初始化數值,輸入'?',+ l% q4 w4 m+ z/ ~
接著開始無敵時,輸入'+',% U) W+ I% J* Y2 ^) f
接著我們知道無敵時間會開始變動,
" @5 @! _. {0 v! Y/ [以上例來說時間開始減少,每隔一段時間輸入'-',
% i$ o3 P/ S2 j) E+ N4 e最後沒有無敵效果了,輸入'!' 或是 '0'。
* P+ H ^& e9 @% c6 B- }
7 X9 z3 R0 u! @0 f記憶體地址經由演算法篩選後,只會剩下幾個,
! Q+ K$ e0 k4 }- ?try 一下,你要的地址就出現了。
+ s) u* t. F4 O* @1 g. @3 V7 [5 F7 ?6 W0 g! a
P.S.以上程式已經Run過,沒有問題。3 p- y/ Q* ^- i8 K
# S0 l% Z+ \- ?( B9 a" y9 I
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|