|
|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 # X& n2 q( h8 |- y1 A
主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎 U/ c' `" s3 R ], O8 r+ o
( M3 o0 `$ h" j# v$ k: ~& k
其實修改無敵很容易,
6 w! r" O" L, t* }% e; n, q就以遊戲程式設計的觀點來說,. [0 D8 i6 |1 }! q5 ~
一開始我會將人物無敵數值設定為03 B+ q" J/ z" V7 S0 R
ex: 1 J6 D) X* a7 m9 P+ g& y
#define InvisibleInit 0+ h) e# s! i. V4 m
/ F" l& A% Z2 J) _3 v8 k, ~" U3 q然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),; a4 Q& D5 v0 `9 n2 c; O
呼叫設定函數4 {* Q* P$ Z, ~2 c+ ]. G
ex:8 o0 P4 G. ~' T3 S
BYTE InviIniVal(EVENT event,BYTE SetVal)
+ C) [$ C% b+ H, t/ J{
( O& `% X ^' n+ j2 Y4 v//Deal event ...' e/ q7 A8 f" _9 p0 p; k! r/ g7 W
/ b9 v& m& P- a: d
//Deal InitVal
- n/ H F, p+ ^) j. CBYTE ret = 0;# f" L' Z; J7 p- e" [0 _
SetVal+=InvisibleInit;7 r, m5 P' Y- B% S
ret += SetVal ;+ v4 \4 J- V3 ?) G+ h
return ret;
% d4 `' y" ]1 {! E2 o1 C} 3 Q' a0 U6 ^* `# T
3 ^# }; |( O% c! F" ?7 T6 }
最後關切的函數當然是遞減函數:
' l( ^; ~0 ^2 K4 sex:" D) w3 o: E2 Z
BYTE DecInviVal(BYTE *InviVal)) j1 s8 ]3 H/ n8 o" m6 H
{/ g5 c) k; L' G3 w0 M
cout<<*InviVal<<endl;
3 G- Y4 N: F+ b) Q(*InviVal)--; //*InviVal -= DecVal;
# Y' H7 j% q( L! S+ Ecout<<*InviVal<<endl;
8 d3 x0 R3 u7 N0 y7 |; T(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;/ b3 T$ W5 k9 N
return *InviVal;
; Y; K/ R, Y" { c}8 _& O3 ]: Q* D( a( }
! e8 `4 s+ W+ @) d0 N" B針對以上觀念,改遊戲就很簡單,
4 v# C* e7 p( _一開始我們先初始化數值,輸入'?',
3 S8 ^( ~; d3 L. H接著開始無敵時,輸入'+',
! H Q2 G I8 T( U接著我們知道無敵時間會開始變動,: ]; w' F2 \# X( i/ `
以上例來說時間開始減少,每隔一段時間輸入'-',( t r# F4 c/ R8 `9 f
最後沒有無敵效果了,輸入'!' 或是 '0'。3 e5 b3 c: i4 w6 @0 O/ o( ^- R" g
* }: E' n/ c" m9 g5 h2 N記憶體地址經由演算法篩選後,只會剩下幾個,+ A! `$ m6 H& J9 l
try 一下,你要的地址就出現了。
! h1 F) Q% y) ?: I8 n- v
" O/ c! S% T5 RP.S.以上程式已經Run過,沒有問題。
; L' s) I' i% Z5 o3 H- W! \9 A) U1 m- D
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|