|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 3 x) x t. x8 [: y5 n2 S
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
6 [6 j' z/ @* Q
- i# |! w3 `0 L3 E2 q7 W其實修改無敵很容易,
{# c1 e! M9 J/ D/ P8 F就以遊戲程式設計的觀點來說,
3 M `3 G8 ^, ]: [! k8 E; ]一開始我會將人物無敵數值設定為0
+ k/ \+ [; @/ Qex: : [& Z8 a4 P7 P3 v- M
#define InvisibleInit 0
/ b1 h8 I' M' J( u$ |; j9 D) K8 c3 M0 H8 a# K
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),2 r7 u G" b/ h+ `# Z& i$ t
呼叫設定函數6 T3 s1 c4 W5 f2 _
ex:
4 r3 Q# Q- \0 p: eBYTE InviIniVal(EVENT event,BYTE SetVal)% u6 f9 N) c( V
{
+ o' U/ |; v! A* B+ _ l//Deal event ...
: C G0 @! ^* R) E5 K1 N) l" Q1 n- L% ]1 T
//Deal InitVal5 Q( X7 y- ]" c- T1 O0 k! |: |9 ^
BYTE ret = 0;/ e; u: j: \ A N: l: J0 C
SetVal+=InvisibleInit;
' w. ~- Z4 s$ y& K7 `0 [. U' }ret += SetVal ;
9 j _ ?' G# F2 Z0 S6 u# lreturn ret;: x4 Z; I: s6 D M
}
1 b" J4 ? ?0 ^* H$ _# r" |, \6 @0 s. M
最後關切的函數當然是遞減函數:) |( L$ W. A: r) s" T" q
ex:, _1 V/ I; P9 S0 R* `
BYTE DecInviVal(BYTE *InviVal)
" [7 Q" X. O8 ?2 D; C$ B{
* z' K! T. V' J0 q3 z% C1 H1 p |cout<<*InviVal<<endl;
2 C, a- c! ?2 V7 d- v(*InviVal)--; //*InviVal -= DecVal;. u5 {* a! |3 _ e! I
cout<<*InviVal<<endl;
7 h2 P, t4 i, \8 ~6 W6 v(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
8 P7 I4 l& H# m) zreturn *InviVal;) w% s% d: [/ Y# i# t2 y1 d6 F
}
+ A, ^0 I$ R* q: J4 e4 p0 l# o/ O$ x/ D! K, |
針對以上觀念,改遊戲就很簡單,9 c6 o/ s$ {: ]9 @& m( h
一開始我們先初始化數值,輸入'?',
1 b7 M7 r' k; E4 v接著開始無敵時,輸入'+',+ k8 y+ R" w: Y; q8 S) H- ?
接著我們知道無敵時間會開始變動,
8 O' Y* j8 i0 }' ?以上例來說時間開始減少,每隔一段時間輸入'-',; P+ v' a7 i1 `- a3 J
最後沒有無敵效果了,輸入'!' 或是 '0'。* x( H) e; y. y
% D1 K# b x" {) d, V6 k
記憶體地址經由演算法篩選後,只會剩下幾個,9 l4 s" j5 G, E; G0 e
try 一下,你要的地址就出現了。* U5 _" p0 j S5 P8 h
7 f4 y( b$ L2 c% {& m: X; f+ SP.S.以上程式已經Run過,沒有問題。, Q8 S6 p2 U8 o$ L
9 l( z$ D% L1 w. ]
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|