|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 I- y0 J2 |- k- W9 H S& ]4 V
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 & K- e/ v8 n3 S# Z- n
) T, T1 P2 \ o+ f其實修改無敵很容易,
* m. T# E8 G1 n1 `; C就以遊戲程式設計的觀點來說,; a. A& q. h$ D- p& V
一開始我會將人物無敵數值設定為0
l" m5 D# A2 k9 Q4 \ex:
/ E" Y9 G7 H* j+ Y! C" h! B9 p( n/ t#define InvisibleInit 0) \" M+ m0 k" [+ x5 P5 y
( U( Z2 F7 V. l然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
3 X: ]& R( n: h! R z: `呼叫設定函數
- p& q" I2 d8 L5 U, vex:
6 \4 s7 K# I- p( hBYTE InviIniVal(EVENT event,BYTE SetVal)
0 w' \( R/ u5 V% p) z* m6 Y{. _. r3 R' E9 o
//Deal event ...
& a- K- G# q' G- M$ r7 j# ]" ?
+ r6 k0 l5 {; ?3 S* ^//Deal InitVal/ n! W# G8 Z* `: F8 d
BYTE ret = 0;
# m, r% c5 x2 oSetVal+=InvisibleInit;
$ h# ^/ s! ]4 {7 h- C% [2 ]ret += SetVal ;: d/ x$ H6 J% n/ M
return ret;
. K. l6 O" p4 l: D" L/ ^* e3 o} 8 n0 }. C2 D8 R: U; H
5 @' N9 [- G; b# j' N最後關切的函數當然是遞減函數:
. |6 ?4 E7 F3 x. W2 H/ @9 rex:& |. s% w( }" F. L, n: t! c
BYTE DecInviVal(BYTE *InviVal)7 J" g9 D0 U( c0 p4 e1 H: X. o
{
4 }) P e! j% H: V" y; ]cout<<*InviVal<<endl;
8 }) g4 x$ ~) P+ F(*InviVal)--; //*InviVal -= DecVal;9 k- p1 W7 f1 u& g
cout<<*InviVal<<endl;
2 p0 m, ~0 w8 l: l0 x& p% z, \' g(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
) K( d2 I* A* W# o' w5 b0 o! ireturn *InviVal;; L6 {# J9 W! F4 l0 ~# m7 ^
}
$ G* T" `7 F; l
+ D4 j4 L+ R: x4 l針對以上觀念,改遊戲就很簡單,
8 I8 f. f" L$ F+ n/ S& O一開始我們先初始化數值,輸入'?',3 T3 f6 r7 l5 \% A1 v$ c2 Z
接著開始無敵時,輸入'+',
( w/ Y* Q( |2 c) Q; R5 R0 @接著我們知道無敵時間會開始變動,
" ]: l' Y, O% b9 ]% l0 |以上例來說時間開始減少,每隔一段時間輸入'-',4 E' s# ~7 ]# L+ v
最後沒有無敵效果了,輸入'!' 或是 '0'。
9 o0 [8 i( C0 t# s
6 d( |" n7 s& |; S: F: j5 g2 ]& X記憶體地址經由演算法篩選後,只會剩下幾個,2 S, s% }& q* K, u3 Y; F, X! Z: o F
try 一下,你要的地址就出現了。% H$ M% Q# C( `- S
: f0 y, y& K, eP.S.以上程式已經Run過,沒有問題。
+ x8 O @8 h9 V9 y" g
' y) {8 K6 H o[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|