|
|
转载
0 @" O1 f: z& v7 N: Z9 ?BY SJ ]3 t9 {( ]4 O( a6 @, ~
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
- S- ]4 f- \# `' r+ ~7 \1 u9 }
; z& t! {- \; KD2Gfx::D2DrawImage-10041
+ \4 `1 C" _) c: s5 E3 q1、修复技能的背景(不需要可以不要)# I8 q" j; s! e
offset = D2Client::GetAddress(0x77AA8);, ]4 f! E( d* V* S' r
Memory::SetCursor(offset);
0 ~+ A9 l0 o& m/ c/ @Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
+ P7 w% n) f+ `9 @( o
+ l8 ]& v9 G# w% e) h- X! G" S2 gvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])" u7 o; w z1 q; B4 Z0 M
{* a2 K* p$ [" @' J9 i* g
//Init data for print image
, ]" W& M7 X! n9 W) }4 F. G; V sDrawImageInfo data;/ d4 r m* v) O8 q5 ?" K8 h
ZeroMemory(&data, sizeof(data));
+ b& Y& Y" r# Q5 u- @) ~9 p
! J* X. u4 C- B; J //print background. j, d' S7 z2 _( Q7 J
setImage(&data, spellBackgroundImages);5 T+ l/ m' W4 d# B; z8 {- f
setFrame(&data, 0);, Y* {# v/ m% ~2 f: [ F
int fixx = 511;" E) r* D* K' u& W" i, q" S, ^
int fixy = 9;
; O1 u2 I! B; {3 A& @ D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
* l* D E U1 C( m" [7 w9 z( c" z9 R setFrame(&data, 1);' t# g: L& ?3 g
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2564 x* ]) q& F) L
setFrame(&data, 2);
o1 w, I2 h5 q5 z/ t% t7 E; T D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432( W! H7 y9 w: P/ F5 ]) J3 o2 H3 k
setFrame(&data, 3);
/ g) C; b- @, Z1 u: S D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0); Y% t7 g: @* U/ }: ?7 N, \
}5 ]; C' Q" ~5 D+ i) H% d
__declspec(naked) void caller_SpellBackGroundFix()
6 T. P; d3 _5 p. l. ~{/ C1 l( [2 m$ H4 T) T
__asm
$ y1 n# ]* Z) q7 z. I$ e5 L {
8 X M$ Q. Q2 M4 [ PUSHAD; w. C; {, c0 _" s( d! Q0 x% _
lea eax, dword ptr ss : [esp + 0x38]
+ t& M3 ~: M# V9 [5 \! m$ R$ r% f push eax
3 [' n* v' l9 h9 F push dword ptr ss : [esp + 0x38]9 L9 T8 T# i; z8 n! ^
push dword ptr ss : [esp + 0x38]- ~' B: Y; T! s' \: a- R# N
lea eax, dword ptr ss : [esp + 0x38]
/ e; M9 B4 J- h3 r( M/ d% r push eax
% K+ Z; V+ o0 }+ X( X& A8 k8 d lea eax, dword ptr ss : [esp + 0x38]
" h% x# K0 O, Z$ v, b( L/ g push eax
- o9 y) C% h( z push dword ptr ss : [esp + 0x38]- c3 t7 G! u" ?: g! C6 R/ w
call m_NewStatShow_SpellBackGroundFix i n, I/ ?" v
POPAD
, o# @: ?! R3 R& B2 } JMP D2Gfx::D2DrawImage
2 X) w$ L2 I" J7 Z( ~5 S n }. Z+ ^# e. T$ `8 A# i7 B' }
}- F" r5 d& b6 y* q7 j/ e6 Q2 b; H: j( ~
+ ^5 t6 n5 |% t; h: H
2、我们如法炮制小站的背景
f* \, c+ q* `, ]6 l$ W2 z9 ^; R* ^) u1 E9 {7 d" _( n# {
offset = D2Client::GetAddress(0xAB010);, A* Y' X P* V/ P1 R
Memory::SetCursor(offset);8 j$ B: S0 _. q4 L* Z+ w! u
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix); O5 z! Q2 ^; M
2 P+ K8 H- C; z0 a' O! \2 O. i$ Uvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
* D, e9 d5 S) s7 T{, Y% @0 d! ~" L! z4 O4 N$ x
//Init data for print image
6 A0 C" z# W; T+ |# w sDrawImageInfo data;! ^+ ] Q- d1 s0 M2 I, p
ZeroMemory(&data, sizeof(data));: D6 Y( _& F% k
- F- X+ Q* _, @& w& b. g //print background
& S5 H1 \' S' K5 Y0 \8 q" f setImage(&data, waypointBackgroundImages);0 `. B( K' \: F0 O8 Q( H
setFrame(&data, 0);
1 f# o) l% r6 w/ x! q int fixx = 0;
; d1 |) U" ?' q, o* i/ c9 S+ B) r int fixy = 9;
; N" n- Y, n4 U D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);: Y& j! Y* {% }$ Z- e* {
setFrame(&data, 1);" V# q& F' t/ V1 K. H% U
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
3 G6 \% d {1 u0 k' c setFrame(&data, 2);6 a9 z: `& S: [* s
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
& u$ Y- p! }8 f$ b0 b setFrame(&data, 3);9 q/ y1 O' q/ k: `) O
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);, e2 @3 G/ c0 k+ b# ~0 g3 X; O" S0 [
% h9 a4 C6 i( t# V/ x/ N# X3 s}
$ c# z9 ^1 `2 l! {__declspec(naked) void caller_WayPointBackGroundFix()' l7 u3 c, ^ \* W* a
{% V/ Q1 G' n/ h( I4 p5 R
__asm
; [# w* J; M3 t+ t {
4 G; B& \4 Q8 B9 ?9 l9 \1 \ PUSHAD2 \0 v d% f% i$ b6 ]6 t" t
lea eax, dword ptr ss : [esp + 0x38]
[3 c! v L* T( d# g push eax
& f% b7 l0 k0 R7 X# t push dword ptr ss : [esp + 0x38]
7 h5 e; U; J+ ]' t: I& O: j/ i push dword ptr ss : [esp + 0x38]+ O" I1 M& R7 X% h: l' m' Y0 h
lea eax, dword ptr ss : [esp + 0x38]
* W! X- J' F) v+ Z. b, U8 ^- U push eax5 g7 v$ q5 ?$ d' a
lea eax, dword ptr ss : [esp + 0x38]
; Q+ T8 y( ]+ P( V7 f# ~ push eax& ^: L5 e2 e; d7 P
push dword ptr ss : [esp + 0x38]
( M( w" x/ z0 O8 ?0 `% z9 d call m_NewStatShow_WayPointBackGroundFix
" ?5 S# g. \7 G' o' p. |4 N" { POPAD8 E8 f# {( P7 a4 D0 q
JMP D2Gfx::D2DrawImage
7 V+ C9 ~2 Z' |' [8 F* O* f }
' L) Y) y3 E) [2 x3 G. A( H( _& _}
4 h7 q8 B& P) E+ `( m8 c; |
. l; `& W# H: I: |0 G; X- a) E9 u3、以下可以搞16*16超级箱子-腾出我们需要的边缘
, g/ j. Y2 J* _8 ?. B腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)3 d% I2 X n# f/ y/ x
{
6 x: L1 U" Y- V( U* p j class D2MultiRes : public Library<D2MultiRes>
( c. K' {7 \# r9 j+ M {
3 V5 v# a4 i# h! h3 j" w public: w( B( d8 x( G+ h" n
static void Init()( ?2 v9 M0 l4 P# J! s; e8 H+ ^
{
5 q! r8 Z7 X$ h; z Name = "D2MultiRes.dll";
, ~4 [1 B ~0 B) Q Offset = LoadDiabloLibrary();
: P* Y& r- J; T9 o) P }: u1 L7 b' \+ I; I. M3 t. ]
};
" k5 M! l" Q+ a }; Z D2MultiRes::Init();. }" b, R) l. `( |0 m! d, l% u+ ?
D2MultiRes::HookLibrary();. b9 |6 p7 {3 U6 }
; C: [0 } c6 A/ O0 x6 @% Y, P5 i1 W3 {* A; f
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
1 t% k" J4 H. w0 @ Memory::SetCursor(MiscFunctionsOffset);2 |! ~! I0 M9 n5 @" G3 R
Memory::ChangeDword(0x1b0, 0x200);
- y2 ^6 p" e! O8 q' C
b4 g3 r7 K1 l: [4 P- L1 `! v- w$ ]6 {; s
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
% H/ L( i3 a; A7 t$ L: `' }3 o Memory::SetCursor(MiscFunctionsOffset);
1 P, ?% p$ F' T6 Z" P- M Memory::ChangeDword(0x140, 0x200);2 r! P1 e, A3 R, o o1 T; g' Q3 j
0 _8 _; d( K& T8 {6 y [/ ? I I M- C0 D4 x, }% A6 ~3 z
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
% E1 J& r8 B: E+ B: t Memory::SetCursor(MiscFunctionsOffset);) W" w Z0 _3 f! k! \
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
% K5 @' ?4 L4 }! I( x2 e
# [: C1 R. X$ S9 k( K MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
$ }$ U2 ]% y# H3 g) b Memory::SetCursor(MiscFunctionsOffset);' o6 {* ^* u; ?/ A% p
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
3 C: m: ] Z2 O, ~; f1 e9 e# N) {& j; m' @/ \( u7 V
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);4 ?" e# D2 b5 H7 W) l( R: d$ g6 O
Memory::SetCursor(MiscFunctionsOffset);5 A6 R, X: X- f; _
Memory::ChangeDword(-0x280, -0x400);//这个不要动, s: W) J" Y# t( w H
}0 ? ]3 f$ j- F
) D% \' I) \6 R8 I
4、快完成了,是不是发现金币啥的位置不对??
/ b$ x, m s" ]+ O" t, l% p! X) ]- c6 W9 P& ~' T9 s+ f2 O9 k
//这里修正我们的装备栏5 b- c9 t/ |' S+ ?3 H
offset = D2Client::GetAddress(0x99B6C);
3 ?, l+ W: v4 A Memory::SetCursor(offset);! |1 u0 D# M6 N) Y
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);' p# @* i7 o. R( j# i: W" E
! \- T& {/ v2 s/ \! n% P/ c
offset = D2Client::GetAddress(0x99BA7);8 c A7 j! K0 F* O$ ~
Memory::SetCursor(offset);0 h$ l5 P7 @& D$ D# `: i; u9 A! F
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
7 f# z {( W! J# Y& V3 y
' [; K, n$ f* D: _( u5 m% c offset = D2Client::GetAddress(0x99BE2);! j H) J' ]7 [- W
Memory::SetCursor(offset);
) q6 L3 v; q/ A: s- w s! V0 g Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);5 W0 h5 C6 G# i$ o1 q: `
# K( ?- f9 q" ~2 { offset = D2Client::GetAddress(0x99C1C);4 f" i& m/ t6 z
Memory::SetCursor(offset);$ C& D v' Q. E* \
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);9 K( w: b7 H" W/ g a
7 l* _8 ^9 k. R+ |, y //取消两个popup,偷偷懒不过分; G' t% d8 V5 D* Q
offset = D2Client::GetAddress(0x9386d);
& D# s( F Q, V3 P0 m: R, E. r7 Z Memory::SetCursor(offset);
: y5 a2 j% j# _! v9 V) ~ Memory::ChangeByte(0x8b, 0x33);
" f) W7 K `) `/ m" M& u& e6 S Memory::ChangeByte(0xc8, 0xC9);
) U2 J1 t- @& y$ c4 T" `2 P+ T; E offset = D2Client::GetAddress(0x9390b);5 M- ?: |( L: q, }
Memory::SetCursor(offset);* r+ x4 i: j; g' w" o- }
Memory::ChangeByte(0x8b, 0x33);1 Z# w3 L( L) P, W5 O; ^; M* m) H& a( |
Memory::ChangeByte(0xc8, 0xC9);( M: L W; v) N" G
0 [, r. }/ ~ V: c. H //修正提取金币7 ?: q9 ~' r% o9 |
offset = D2Client::GetAddress(0x8D3E5);
`9 k0 j! e! ^ Memory::SetCursor(offset);$ y) P0 j0 w' ?$ k" ?7 ^
Memory::ChangeByte(0xA1, 0xE9);
" [( {) S) {; r% b' P6 l0 m Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);- c v8 K |( z& ?4 d
! R0 V9 ~" C- y4 A }! Q offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
4 c4 S, U( e; l/ A Memory::SetCursor(offset);# y. ?1 W r0 s; B4 b% ^, A `
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
- r2 s) R* D8 I& s1 D
* j4 j( R1 I v* }# G offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
+ l9 b) A) e% U Memory::SetCursor(offset);0 l$ V& t5 Y$ h, q! o' G
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
* k( L5 l' f4 \& e$ [: d6 u, q p/ a3 W8 f3 ]+ S" p1 W! S/ Y
//修正关闭按钮
% n# S' j; c8 g, F; W offset = D2Client::GetAddress(0x8BD90);
7 |9 s3 V: d( { Memory::SetCursor(offset);% V9 n5 G/ p8 P/ v7 }
Memory::ChangeByte(0xA1, 0xE9);5 C4 b J, j, p5 M
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);6 ^+ d' x7 ~+ N
7 a+ t, A2 f$ a) S" a- R4 Z8 b
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
' B; a" s5 R0 G Memory::SetCursor(offset);, E; _& i/ f- @7 |( H1 \4 z
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);. K7 F. Q: g' E2 c" n
5 Q+ Q; D7 T; I* Q/ Z% ~- }( W! V h r3 b
//以下是细节
" s0 k0 ^6 ^4 X* J% Y+ \, y#define getXGoldCoinFixBtn() RX(0x2d0). a- K& p* N: l1 U
#define getLGoldCoinFixBtn() 32
* H2 }$ S) E2 n- P! p6 ~5 A#define getYGoldCoinFixBtn() RY(-0x59)
) Z1 g" K' A3 W6 H* F, \. e2 M' W- F#define getHGoldCoinFixBtn() 321 O% V: j* |3 h' b
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
1 G& r" T8 }) e# u+ ?* q$ ]# g0 r1 f* u2 [2 d$ T% R
#define getXInvCloseFixBtn() RX(0x3db)0 E5 }' a5 F+ t& _; A+ W
#define getLInvCloseFixBtn() 32* Q" I$ g' E1 ^' H# r( {
#define getYInvCloseFixBtn() RY(-0x63)
+ g. c9 r5 ] F9 J#define getHInvCloseFixBtn() 32* `( g1 D3 q& t
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())" _4 S2 a* L* g+ a; {: S8 h+ n0 L
; `1 a# @1 ~5 JBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)( d1 c2 }1 [; X3 U7 X* k4 J
{; K3 x. m* t" {, Y+ h
DWORD mx = *D2Client::ptMouseX;
/ }1 D( ^6 K" t2 p DWORD my = *D2Client::ptMouseY;. X; x0 d& ^* x6 e, S7 d6 @
if(isOnGoldCoinFixBtn(mx, my)) C y' m9 F2 c7 N b8 l7 X8 A. C% b
return TRUE; ]3 s' I1 t D* g; k/ Y
return FALSE;+ i+ C1 t: \* x7 A/ W5 P
}4 J0 F# r; x5 j/ U- M" P
__declspec(naked) void caller_goldcoin()- x. h5 B0 H4 @8 @( ~# [& z5 t! Y
{) N3 ~" ]4 \% O/ z' X4 P
__asm" O" {6 i( |. U* N' f2 O/ v
{
4 ]3 v1 D/ a% W- l push ebx
7 e, x" S {0 K6 X mov ecx, esi0 s+ [" ?, x) k) J4 o& G/ o5 Z
mov edx, edi: N" r# u$ F1 |, b$ u6 {
call m_NewStatShow_goldcoin
, M5 {9 W, r5 N" N. o" Q7 R4 K pop ebx
- o4 R/ d2 k0 G( R$ F* n/ f pop esi
# Y H" \% N6 h! A/ O, u retn( b" ^1 V. ?; `. x( ^
}: D; Y5 Q1 I$ o3 Z. p+ p
}& H! Z$ F! f6 U
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]), p8 m) A6 M- I8 E+ Z
{3 d5 s" e4 P" i: F2 T. H9 N4 r
if (*nXpos > D2Client::ptScreenSize->x / 2)4 @+ D/ Z% l1 c. }
{2 z9 U4 ?: _( O$ V# V: e
*nXpos = getXGoldCoinFixBtn();
/ a; B5 \( d7 @8 J; E3 B: P' R# r *nYpos = getYGoldCoinFixBtn();6 [7 v$ U3 J; S/ H" y
}
" a+ b. x6 C n+ d7 P& a}
# c" u5 |$ c7 B7 e$ U$ z) A" \__declspec(naked) void caller_goldcoinimg()5 A. ] X0 G" f* g$ E
{
2 e3 M0 g2 z2 Z0 ?. b; [ p# {/ b __asm
6 ~, `9 K. R ~5 Q1 U+ w {
' ~$ {4 N+ |3 n PUSHAD
q4 ?) _+ `2 ~+ o( A lea eax, dword ptr ss : [esp + 0x38]
$ G0 ~% ]% `1 V push eax
& e& n, K* ?5 W push dword ptr ss : [esp + 0x38]
& U; u& p# Z9 [2 q- }6 n push dword ptr ss : [esp + 0x38]/ F0 p) k/ I* U; k; D% W" p) D
lea eax, dword ptr ss : [esp + 0x38]
' D/ s, v" {# B0 S push eax: w/ Q2 r r3 l; P! ~4 {
lea eax, dword ptr ss : [esp + 0x38]# n( r" |* X* [( x2 Y: z% J! h
push eax% P4 G; A- H# I7 k& _1 B
push dword ptr ss : [esp + 0x38]
' A& K9 t( g' [+ o+ c6 F7 D call m_NewStatShow_goldcoinimg
& e9 v; v; w5 F( p. H6 k8 ^: A, \ POPAD
/ C/ w4 v: N0 f; R) j3 h9 n% c1 _* _0 G, H JMP D2Gfx::D2DrawImage+ w- t! M: Y: I
}
. I) G7 c9 Q+ |. e; J3 [}
/ S; ?' O4 Q) n' b+ FDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标' N& s* O* Z4 ^. P2 {
{: f- C" K/ x% v# O
if (x > D2Client::ptScreenSize->x / 2)
1 f1 r# U/ q" y {" m& c/ Q9 }* V1 x8 m6 `
*y = getYGoldCoinFixBtn();
2 q( j0 F$ t/ p5 y U( O return getXGoldCoinFixBtn() + 32;
9 a, |0 G: m1 @9 o, P }* I' e. B4 n" z$ m
return x;) e. a6 T! P+ ~3 \# @8 F
}
1 [2 O4 L- i+ X. a3 L$ c/ t__declspec(naked) void caller_goldcointext()
$ y+ e5 K1 h* ?) V{, {; a6 d" ]6 w+ X1 m7 \
__asm
6 Z4 ]& d% _: e& r5 Q9 R* O {
- C; g$ |0 G v/ x u9 }% W! C9 D PUSH ECX
) j$ T& w8 I4 s: [7 W5 p PUSH EDI5 [ ?5 l, l+ T# f
PUSH ESI
7 P5 t7 g5 E& O/ y1 i* X1 y n9 y PUSH EAX
& s- s* h) F/ [: f8 f MOV ECX, EDX
" s! W3 d3 @) L0 \5 I LEA EDX,[ESP+0X4+0X10]
v1 O" f5 L2 x: n CALL m_NewStatShow_goldcointext
1 G1 b3 l' h: x' d' z MOV EDX,EAX p( k3 t* R7 g9 X( G
POP EAX
) O: r+ N0 A) |2 o1 F POP ESI, A: ]! ^' r- }; L6 o+ p
POP EDI
1 n5 A8 x3 y. \0 T+ J. | POP ECX# u; R! _; H- w# j) b" B. g
jmp D2Win::D2PrintString;
) t) k: g0 G2 l+ A }
7 E- Y8 f& Q% D. |8 d; P" P}& E% C7 V7 B( a
6 O0 ]; i: q M, d3 u3 [ g
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
4 A& w- _7 O# P& H{8 V8 m% x( w8 C c9 e/ x0 S
DWORD mx = *D2Client::ptMouseX;. t4 [9 F3 C7 D) j6 T: Z5 D
DWORD my = *D2Client::ptMouseY;, C- a: A/ T! g9 U2 r' `: O; ?
if (isOnInvCloseFixBtn(mx, my))" `4 i) M' s3 ]4 E0 G
return TRUE;
8 M8 V! t8 G `" t9 u" H) l" s return FALSE;. ?8 W$ M+ s/ h2 `1 {: A
}
+ N1 [) V( z/ a/ t7 e__declspec(naked) void caller_close()
- [2 @; m6 @" _% u/ x: I, F- P{
# ^! U; M! \. m9 _6 i% d" B# J: O0 s __asm
) S0 U' l5 i% l2 _* i4 ` {
2 Z+ Y% s" T- Y4 h" Y PUSH ESI- G" g# z) Y3 v$ L! l# G* J
push ebx1 |. Y; m! N, z7 i# J
call m_NewStatShow_close
' I$ R& u9 D+ R9 _" n8 m pop ebx
% R% ?1 x, C' H1 A pop esi% F T% \& J3 C6 C6 k
retn
9 E% n* N" Q# \ t3 X }# s+ G" Y u8 o9 ^+ ]) l, i% e
}
% R& [- q/ J; ] R# I& Jvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
1 ~( I, k) e5 |6 ?5 x! F{
' G. D: s# p ~( {* S, a b *nXpos = getXInvCloseFixBtn();
) J( c9 }+ P9 t6 U& m9 _ *nYpos = getYInvCloseFixBtn();
+ Z1 h4 _0 P) A6 M: x}4 C l) H* V- L! n$ f* s& v/ ~
__declspec(naked) void caller_closeimg()5 {4 K. u- F1 _. R' w/ _
{
9 N. p; v' b8 C* O; b& G4 R __asm
& V% `$ r" y+ v {0 L2 x5 k. u( ]' M, E4 T/ K6 [! z% `: ~
PUSHAD
# H T3 a4 |$ y( ]2 T* l lea eax, dword ptr ss : [esp + 0x38]' C: _- {) M* J J' @8 d6 [$ t
push eax2 i/ j2 P, R- w x1 ~- G# k
push dword ptr ss : [esp + 0x38]
* O3 x" y t5 a6 Q push dword ptr ss : [esp + 0x38]! Z' h3 M5 Q* ~, [* f1 H) N" s
lea eax, dword ptr ss : [esp + 0x38]
* e! |) _' [; |+ i) q* u R push eax
0 a. R1 n3 c3 C lea eax, dword ptr ss : [esp + 0x38]
3 q# A# L5 p5 R! r5 T push eax
0 G. g) u5 X$ L5 e l push dword ptr ss : [esp + 0x38]# u, W/ D; m% [" p. A
call m_NewStatShow_closeimg* @7 Z# L7 b% z* q/ `% L
POPAD
- m) S$ z5 b4 l1 i: j JMP D2Gfx::D2DrawImage
% Z6 @& Z) J7 G. Z }' H; U- [- X$ C& q/ p
}2 D& ^$ [* A4 I$ c; |% g7 P( a
3 |, p* `, _8 w+ t
6 ^! D5 a% Y1 ]
|
|