|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 - y9 w/ M: [- O
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 - C$ w" @# ~ F% Q* I
0 }2 A8 N, l! M" f5 A
其實修改無敵很容易,
7 Y" m, u1 l; f- g7 ~3 ^, J就以遊戲程式設計的觀點來說,
( ? K5 W0 c' G8 N1 | `1 g一開始我會將人物無敵數值設定為0
1 U0 J/ D D2 T2 \5 [' d5 ?ex:
9 c0 t0 o- _2 Y4 K2 C- b7 `7 z3 z, N _#define InvisibleInit 06 M4 n& |8 W. |
2 k( j* a3 c/ k5 C2 T
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),
& N) D3 w; p d呼叫設定函數
: i3 f; H: a% [' ` h/ nex:
9 O A9 p. [1 L* j" WBYTE InviIniVal(EVENT event,BYTE SetVal)8 }4 Z' d% m& v+ E2 I
{: d: A; b; C9 d+ o) ]$ _ k" J
//Deal event ...
4 H" |0 w, Z- q0 x/ V" y. N3 @: ]
/ p' Q# q1 ~0 ~+ D* j& q//Deal InitVal7 V* u1 I E: @2 B
BYTE ret = 0;
# h# N' R% a3 T$ t/ PSetVal+=InvisibleInit;
$ H: g2 \7 f! `$ Fret += SetVal ;% }: A6 C! c* l
return ret;
" x# n& j5 |9 T/ H* Z/ F} ! `( A) c; G; t0 C$ ^( h
1 Q1 d: B5 y+ l2 M" P) t+ V X最後關切的函數當然是遞減函數:1 |; a& U2 v- x7 I% W
ex:" [6 Y4 F' \- D5 w$ o
BYTE DecInviVal(BYTE *InviVal)' _" A9 p' `' ]! c. h, a
{. G6 }7 V9 n3 k
cout<<*InviVal<<endl;- [7 Z* G" r: F# F+ [+ F/ ?
(*InviVal)--; //*InviVal -= DecVal;
" u0 g) u1 |% h5 W/ L! x1 y1 \* qcout<<*InviVal<<endl;2 d8 O0 Z" U. w7 s
(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;" O1 H: G0 E* Y* v& f
return *InviVal;
. e& q8 h' E6 i6 R: W6 O}
. w J: Z- ?* B: X% _0 A( j" j( ~, |# F E! l
針對以上觀念,改遊戲就很簡單,& l6 T: V7 Q9 P w1 k6 u) n3 U1 P' g
一開始我們先初始化數值,輸入'?',0 w+ T, a6 @! h: Z3 v
接著開始無敵時,輸入'+',; Y3 _9 k6 s% |: u
接著我們知道無敵時間會開始變動,
5 s. e& `8 x3 k; Z9 q以上例來說時間開始減少,每隔一段時間輸入'-',6 U- P' _0 t5 q7 p
最後沒有無敵效果了,輸入'!' 或是 '0'。
% I9 X8 Q% t; ? ` _& d b; |, z* }9 @+ }/ U) n3 Q
記憶體地址經由演算法篩選後,只會剩下幾個,
8 O3 Z+ M- ^- W% S9 ]- c$ K9 ctry 一下,你要的地址就出現了。0 D$ y4 b5 ^. L- {4 P- k. |
( p1 Z# _2 a3 D3 q PP.S.以上程式已經Run過,沒有問題。
0 R4 s1 S; a5 L2 K% ^
( m5 V3 ~( l0 O# b[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|