|
|
转载
( W4 }& m/ A' |3 jBY SJ9 u7 }- T1 a; ^/ E
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
8 b5 ?) ?( ]0 S( U' e' L0 [0 ~' ` O" I7 Q* z5 i
D2Gfx::D2DrawImage-10041" ]/ M( {0 Q4 [" e6 s
1、修复技能的背景(不需要可以不要) f& K2 A: N# A
offset = D2Client::GetAddress(0x77AA8);
, s1 J) ?. Q5 lMemory::SetCursor(offset);1 v! t0 U6 b7 M' T) I9 m: g. s; U
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
) H I9 `3 L( k7 I' ?# i
; Q# _7 P9 p7 X6 P+ F& pvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]), S" h7 u: ~, s1 `, G4 ]$ ^1 x
{
* u7 m' k q" g- C1 y //Init data for print image
4 p1 j3 J# P+ m, S$ l sDrawImageInfo data;4 B% n0 W3 Y1 M9 `
ZeroMemory(&data, sizeof(data));& Q8 p' H+ n- N+ a! A* o
& X0 k- I. G2 R1 E7 C# l y; \% ` //print background
: ? D* p# a! J: \1 \ setImage(&data, spellBackgroundImages);, u/ u1 q* r1 Y% Z2 d! P
setFrame(&data, 0);- e! v- }# k8 ~
int fixx = 511;% R G- g" ?: k* U a& i; w
int fixy = 9;) @* _. ^) Z2 Q3 K, G% h
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
: X* c! `- ]: x4 M' O' {0 |% | setFrame(&data, 1);
# Q( f0 a1 m- I$ P D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
3 t; K6 D; \7 ~; n) b8 g/ a setFrame(&data, 2);
8 H4 q0 A5 J( D7 Q& d9 W D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432! h' V' o" x3 w% `
setFrame(&data, 3);
( Z; T# y$ \& W+ e4 j2 r; K D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
- p+ c% N( X7 q9 J E# |7 |- \2 R}
- g! O$ r3 [0 d2 d__declspec(naked) void caller_SpellBackGroundFix()( L3 i5 E; @4 j* m5 l( J: Z( G
{
! c& h t+ \6 q I d __asm
2 A! l: C9 L/ X" n {
5 j: ~, Y3 ~' g! f% h PUSHAD
, Y/ i g7 X" \) V* c) l( \ lea eax, dword ptr ss : [esp + 0x38]- W' D1 D; y# w; J" |& V( i
push eax. j9 ] W& ^' U1 ]
push dword ptr ss : [esp + 0x38]- G0 e3 [9 l/ L3 j4 O
push dword ptr ss : [esp + 0x38]. O6 m' w3 ~* p8 p, t: [( O+ a
lea eax, dword ptr ss : [esp + 0x38]
5 `" l3 \8 `' S$ ^+ c2 d7 w6 r4 G push eax5 z/ s }; t! Y7 p9 n0 I: z
lea eax, dword ptr ss : [esp + 0x38]7 ^/ N- h: f2 Z4 C9 ]& j
push eax
: `/ w) g2 q7 h* r4 s push dword ptr ss : [esp + 0x38]/ _% `. L* |! d* a6 F
call m_NewStatShow_SpellBackGroundFix
2 Y; X, A7 g5 X7 m9 n" t" t6 U0 | POPAD6 }3 Y( \( u7 ~5 n9 p% Y8 r$ i! y- y
JMP D2Gfx::D2DrawImage9 Q% r0 f, i# j/ V" p
}0 p, d+ j2 t( L- ]; m# Q
}
$ W% X7 t# {0 i$ V8 \5 M: y _! ^; W' B+ @
2、我们如法炮制小站的背景
# M$ d( \; F9 s, c6 `# d! x+ U
" B4 x/ f9 r8 v! C* Z( Noffset = D2Client::GetAddress(0xAB010);
7 ~' i6 P) ~' L. C1 D& R0 kMemory::SetCursor(offset);
) d% G, k* {& P' R: B, w6 gMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);5 P1 @6 j3 [# ?6 R2 {: h
, X, o8 V4 _' S/ @void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])' F$ u! r4 v; s: G# N
{
- q0 Q1 L" [0 T- k( l. `4 y //Init data for print image
, x7 b6 o4 H6 {& z8 d- s sDrawImageInfo data;
) }8 t: `4 _3 }2 z! v0 V; g* I9 R ZeroMemory(&data, sizeof(data));, v! ]+ G7 L# o& a
* n d6 w' F0 I. a* y' `3 p
//print background
$ z& x6 X( G" Z, |6 [ setImage(&data, waypointBackgroundImages);
" {8 u# X8 @/ u- y- \0 f setFrame(&data, 0);8 x' r$ h- h% G) X9 A
int fixx = 0;$ D/ a: s) [2 e6 b: k3 E4 H
int fixy = 9;
" N4 u7 X* J' m+ ]3 x5 v: n6 j D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);8 C! l+ L) P% W' v5 X# q
setFrame(&data, 1);/ G. i9 [+ `: t* ^, ~! k$ @3 @
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256$ ]) u% c8 @& b/ P% X1 p3 ?4 R7 L
setFrame(&data, 2);: C' Y2 N. [6 [; Z. Q0 X; [7 L
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4328 @" l f$ S, `& M0 j
setFrame(&data, 3);
; {0 }8 u" Q0 I% i5 e# b D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);4 t# ]7 W7 N6 ^" T! q5 W3 z' Z# O
3 ]6 t O) l5 G* ^; s# n
}5 _7 G; O1 m# a) }9 _3 y
__declspec(naked) void caller_WayPointBackGroundFix()3 O1 E) W) H% \0 i$ g- M p
{9 w0 Z& l j( D+ Z8 y4 N
__asm
! X3 v) l+ K% U& P6 v& y4 y {( S9 L' [. K( \1 Z
PUSHAD. L& ]2 H" p4 m/ S; U9 l6 @
lea eax, dword ptr ss : [esp + 0x38]& F& Y* x \% `) M) c
push eax" c- t9 Y, |6 V% r8 w* F% F" d! r
push dword ptr ss : [esp + 0x38]. j* |6 q% M/ B6 L4 b- }0 X
push dword ptr ss : [esp + 0x38]6 E6 a4 u9 U( J0 q+ s+ A
lea eax, dword ptr ss : [esp + 0x38]+ s' `) f3 k1 S& v
push eax
' }/ v0 b; F) ?) U8 ` lea eax, dword ptr ss : [esp + 0x38]
& ]1 w$ W" ]7 c( {5 s6 v push eax
- y4 _: ]9 ?! z push dword ptr ss : [esp + 0x38]
- O! P7 r+ v6 i+ c2 M7 e$ G call m_NewStatShow_WayPointBackGroundFix
5 v8 S8 I: O6 q; t' i! M POPAD/ k$ n( h/ s5 f( X4 @+ ]
JMP D2Gfx::D2DrawImage* ~ i+ g) y- S/ K4 A' i, D
}# p! M7 _( U2 C' e2 l& O- I
}$ b" E/ M" J; i! f0 t
: [( v2 n1 n6 L; ?" V3、以下可以搞16*16超级箱子-腾出我们需要的边缘
* m8 g4 M& Q; g0 Y腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
* Q5 ]% K* e* t/ e4 v0 i/ S% I {+ u( V+ q2 V m
class D2MultiRes : public Library<D2MultiRes>6 k) P# t! L: X% @, P
{
. W$ P0 o& y" R) M4 C) g+ j3 | public:
: J7 O! {9 k4 s+ m ]) g static void Init()# G) F+ W$ S$ J
{* L2 O6 ]$ B6 k- q, x% X' A9 a. z
Name = "D2MultiRes.dll";
# G, h. _- m. y3 c+ V | y, g Offset = LoadDiabloLibrary();
. d3 l- N; Q1 p7 { }& e/ B3 I0 H8 }9 N$ q
};
1 v. @2 h3 Y" X5 }! H D2MultiRes::Init();
( i" w; R& t! {" c D2MultiRes::HookLibrary();
+ T- C$ V6 ^. ~2 f4 Y# w% W4 L9 R+ K8 h+ q
7 S) f. u! b; H/ [ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);3 L' z9 ~% D. H9 X* Z/ H/ R
Memory::SetCursor(MiscFunctionsOffset);
7 _5 y+ s% G; ]8 N. e1 C1 b* M Memory::ChangeDword(0x1b0, 0x200);
$ X# _' Y8 f( {7 h) O# F% S0 O2 i) |+ O X
- L' V9 o. n E5 }6 ]2 Q
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
) M( x9 X3 E _8 D( l9 {1 M Memory::SetCursor(MiscFunctionsOffset);
: A ?/ G! X% N# X# D5 @5 |3 {2 O& T Memory::ChangeDword(0x140, 0x200);. t$ J( H3 g$ P( L! K& U- D
) n3 b! x! F: W7 R$ x. {3 w* o: M8 U8 e
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);8 c1 _6 z8 a9 X" ]6 A5 w/ c
Memory::SetCursor(MiscFunctionsOffset);
# V- O/ T% Z d Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块# c* r* ]; U6 Y9 ~7 W' j
/ x7 E4 L) { }# u" \3 f
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
' _1 S; d. G/ j3 X Memory::SetCursor(MiscFunctionsOffset);
1 t: O) f; n( ]) B# o4 \ Memory::ChangeDword(0x200,0x299);//下边缘 299最大; u/ V, _7 c- [' n" Z* ~ b1 c: J/ a
+ {2 }1 K3 D+ M* v% w; l7 a' T, ^ MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
1 _ i4 w$ y0 Q( ?; h" A Memory::SetCursor(MiscFunctionsOffset);# [4 E/ Q2 A* D2 X* X
Memory::ChangeDword(-0x280, -0x400);//这个不要动" t8 P0 |( w! p# H0 c
}
& v, r3 H( c3 ]5 ^" W
- i( F) Z( B: b, c; l! `! C4、快完成了,是不是发现金币啥的位置不对??
1 l& I: |' [6 B" o' l% I$ W2 @# L9 l! D- G' |: `4 Z# ?6 }9 S% u5 D
//这里修正我们的装备栏% A& i9 a( F. m' R9 Z% r% X
offset = D2Client::GetAddress(0x99B6C);; f, K. @, x; t
Memory::SetCursor(offset);' L' N- D, p5 S* J+ E# E; p6 d: p, S
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
$ P& b. \! c6 I' v
. M) I( f1 e) g* C' s offset = D2Client::GetAddress(0x99BA7);3 [7 G& b9 R4 |+ E$ a! D0 y% i
Memory::SetCursor(offset);. F s2 p3 B" ?0 J; k
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);8 f" a0 {# G! x0 x+ M* W O
/ m; S3 z- E% a5 a1 g
offset = D2Client::GetAddress(0x99BE2);
: V. a. E v# l3 V" \* s( r. K6 Q Memory::SetCursor(offset);
{; b* w7 E, q: i Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
! `1 ?$ D( |( W8 D/ t4 O# K k' |8 ^. ~ B" V. F+ ?( |; M2 O
offset = D2Client::GetAddress(0x99C1C);
) X0 f/ Y! }/ j1 X$ d: \/ ? Memory::SetCursor(offset);
0 L8 o6 n. X! z/ Y Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);# ?$ h6 u# A/ a F# S1 q" @( t& b
3 K$ ?+ q' h) y. |0 D3 G* \" }
//取消两个popup,偷偷懒不过分
8 E A: G$ Y4 g9 H& m+ T5 d; M offset = D2Client::GetAddress(0x9386d);- _' [& [2 s2 O$ d
Memory::SetCursor(offset);$ h" U5 H; s4 R
Memory::ChangeByte(0x8b, 0x33);
( L* y- ]+ G, g: l, R4 {/ U A Memory::ChangeByte(0xc8, 0xC9);
2 V4 b# b1 [+ E) p# w! m' V offset = D2Client::GetAddress(0x9390b);8 \& G7 u3 s( a9 q! X/ u) ^
Memory::SetCursor(offset);( m& |' B7 G1 Q3 F: E, ]
Memory::ChangeByte(0x8b, 0x33);6 x L7 b( C/ t8 Q. Q
Memory::ChangeByte(0xc8, 0xC9);
% N' t5 G. @- S; p% w) Y$ e4 Y- w0 l8 P1 S/ b4 [4 I |
//修正提取金币 a4 m* @! D! d7 {8 P$ [9 M; v5 n
offset = D2Client::GetAddress(0x8D3E5);
* s* }- c& v: W2 ?5 z+ T) o Memory::SetCursor(offset);: Z/ j$ ^0 I5 I" f3 |- J+ f
Memory::ChangeByte(0xA1, 0xE9);+ H& z3 r) C' S; j
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
! N. r1 k! g, k5 X
! _0 ~& j( T" y: X b offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
s4 J1 C! J2 | Memory::SetCursor(offset);
0 i% p# X9 v, z, C4 X Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
1 C4 @+ B% A% w
" h, W& U- o% W ? offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
* N) m7 r* J! x6 T4 f Memory::SetCursor(offset);
. n l9 F w5 ~ Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);8 o. U( h% o5 z3 j: g
9 l3 E1 m9 e @7 n
//修正关闭按钮
( T; ^7 {+ p. D1 R. g8 ] offset = D2Client::GetAddress(0x8BD90);
# I* k+ n' ~) R& `: M$ ^" i. [ Memory::SetCursor(offset);3 a9 q+ b* B, y: h
Memory::ChangeByte(0xA1, 0xE9);5 U% k4 `- H; Z; B
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);% F. H( ?0 e6 m8 }: \
8 v9 O* @% ?% [, v offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
" }0 L8 p, Y) y( r( p. u9 } Memory::SetCursor(offset); ?' n2 u" Z: m
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
; ]% c) @+ t( n) D& U a' [4 o+ H ?$ M2 {5 x
8 u* ?9 x$ O6 t0 Z' Q& n
//以下是细节8 y# _1 q2 @$ L- ~
#define getXGoldCoinFixBtn() RX(0x2d0), J/ a( u( o" F! \& b7 j9 v
#define getLGoldCoinFixBtn() 32
% A& M3 f" [9 @' `#define getYGoldCoinFixBtn() RY(-0x59)/ G" V- R! o+ u, }1 I! f; \
#define getHGoldCoinFixBtn() 32
$ h/ B8 a; o5 v: P3 @$ Z: Y#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())0 l7 i# P _) i, m
1 `# Z3 ^7 V; G; M6 F
#define getXInvCloseFixBtn() RX(0x3db)
3 Y" B3 }' F0 [8 L$ C+ U6 K#define getLInvCloseFixBtn() 328 }! ^- D1 D$ x! \" @; v* Z- [
#define getYInvCloseFixBtn() RY(-0x63)
! R; _9 P8 P; v% K#define getHInvCloseFixBtn() 32
# O/ Y0 s- h& Z6 d0 R- G3 L7 A#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())/ N- {6 O0 d8 U" t! I
% P& `/ A( c, w8 z
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
6 Y4 z% _" I5 R; T. c- k1 o{3 K. p: g' h$ d e, O
DWORD mx = *D2Client::ptMouseX;7 w( o. b+ P2 M0 b( t0 Y- D( ?
DWORD my = *D2Client::ptMouseY;
( u, x3 W \3 G if(isOnGoldCoinFixBtn(mx, my))- y5 |" ?0 e6 F5 p$ {6 w0 Y! v
return TRUE;. h4 Z( ]# l: y! P
return FALSE;! O" Z2 L. M" J- p
}$ T. Q, f1 s$ c: r1 Y
__declspec(naked) void caller_goldcoin()' A" e5 J* T% u
{
# h) k/ p1 [4 a" U __asm
/ h: O: k* L, H8 G {* Z6 ~& h$ m# A7 ^6 e* W0 s0 f
push ebx3 j2 f' F& y) R1 x9 z! Q3 P
mov ecx, esi6 f$ v- K+ l. c2 m/ e2 Q
mov edx, edi
. @2 @$ H2 K% k' k+ k call m_NewStatShow_goldcoin
/ ^! H+ N" I& h8 D9 a5 ]6 x; q pop ebx9 ] o7 ?4 m) H1 g
pop esi. \- I& l. t' m7 H7 x/ y% \
retn
1 b- T) e2 {; E; b( F }1 M, S% A% P. m; o% v) C5 u
}9 R! ]9 m6 j6 `) D1 ~
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])/ [# ]7 j5 `8 i' E1 V5 _
{6 y* Y8 M7 c' o* Q
if (*nXpos > D2Client::ptScreenSize->x / 2)1 c X4 q t" h( `- J
{
( {2 u) W9 l4 U *nXpos = getXGoldCoinFixBtn();( e ~8 |' Z' v' R9 D" j' D
*nYpos = getYGoldCoinFixBtn();
4 I1 l- a9 P# j+ f O }+ L( }3 B! |2 J' u0 c
}
S3 K6 V$ q$ P5 V( Y; ~__declspec(naked) void caller_goldcoinimg()1 r) Y+ p7 }, x, x( `4 ]# F5 |
{. S5 t4 ?# N$ Z: \. J$ c
__asm% D) E$ W9 P2 J) ^" M0 c! Z
{
; I1 ^/ w; g3 e7 I' ^5 `. ] PUSHAD
' [0 G' i4 t6 T$ l3 W) x lea eax, dword ptr ss : [esp + 0x38]. X5 [/ t! I4 W( {5 U: ~
push eax
! c. X& i+ A9 m push dword ptr ss : [esp + 0x38]0 a8 N# w9 v# \6 o5 t/ F) `4 U* m
push dword ptr ss : [esp + 0x38]' }, ~$ u; D) G& g8 e
lea eax, dword ptr ss : [esp + 0x38]% }/ Q0 U; {/ t* ^/ L; G
push eax
$ |& u; B- e! e( o7 q; `$ g4 V& v2 ] lea eax, dword ptr ss : [esp + 0x38]
8 M2 o( y4 |' x+ B% O) q push eax
y6 ]% z+ g) r# \ push dword ptr ss : [esp + 0x38]4 U7 p1 l$ G- t; p7 B
call m_NewStatShow_goldcoinimg
) b( [( z; K2 Z5 Z2 x POPAD
2 V# U$ X1 X6 \& u JMP D2Gfx::D2DrawImage8 J; N/ E2 B; ^* P! v) j+ H
}& t* k7 K4 X/ h# U- ]
}
$ L% O3 w9 k5 M8 t! T7 q+ eDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
* P, T6 W, J) X, l{
% z9 W0 E8 P, B7 x. P if (x > D2Client::ptScreenSize->x / 2)4 {5 a9 k r& r
{
$ E; o+ m3 L7 F: y( _ *y = getYGoldCoinFixBtn();& `( P& e9 h7 d" o. I! U
return getXGoldCoinFixBtn() + 32;+ D% Z* [8 u2 b; t( Y5 B
}2 q0 ]+ @0 c3 X, ~9 l2 k4 ?
return x;
+ |8 w/ ~+ n# @% n}# \& z+ {, ^& I# U, P& A3 Z
__declspec(naked) void caller_goldcointext()
9 v2 z Y. J' l2 K{
, U( P4 D6 o) o: {% j3 B l/ J5 f __asm8 [0 ^7 d: u8 ~( [3 k) n
{
# R; N0 w7 c* h; T1 S6 R C3 H PUSH ECX Q: n. K5 b1 l0 V
PUSH EDI. B$ Z* O5 ` o1 z
PUSH ESI! B" M( z4 b8 P- J) {0 F
PUSH EAX: d* J, T, w) o
MOV ECX, EDX8 `9 B6 k& {" v: ?6 K
LEA EDX,[ESP+0X4+0X10]3 ^- ?4 M) K h8 j- c0 m
CALL m_NewStatShow_goldcointext, p: W( J7 h; m; C
MOV EDX,EAX% i: r4 W$ {4 _2 A
POP EAX" ~5 [7 Q# C3 e! p# m& ^
POP ESI8 _$ R2 X5 J% v: p' T
POP EDI& T5 N9 D" O) ^' P' B
POP ECX
2 |. e5 i) H9 V& M2 ? jmp D2Win::D2PrintString;+ d G4 A0 r! E3 [: X9 C5 Q9 W
}8 k: j" u5 x8 i. R9 c$ s& Q1 u% D, u
}
" B* Q( U8 w9 k+ d: r1 e ]9 e3 |& {3 S
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
. g4 f1 \( q3 R4 T/ v{
, a7 |4 N+ k. }, I. v DWORD mx = *D2Client::ptMouseX;
( y! X7 \3 u5 n l DWORD my = *D2Client::ptMouseY;
! B4 g6 q' b! N, C if (isOnInvCloseFixBtn(mx, my))' S% L8 v; X$ a; g6 L1 H
return TRUE;
: W* T0 W; X% F( w( J! u return FALSE;
( J# N, M F. L+ o' i}
: L9 K: k+ a8 I a! ~+ R6 D5 f__declspec(naked) void caller_close()
# P B$ Z6 [6 g2 b{
2 C: B& ^+ y$ a( v$ }3 J5 w( @ __asm
2 { X; z3 E; l! A. y {
0 t' n' i( i/ V9 J/ I PUSH ESI% ]9 k5 J5 k9 _
push ebx
, I* x3 t( _% d) h0 T call m_NewStatShow_close
# M3 E4 s/ i/ I, n5 b, i pop ebx, G# l! j* n( C
pop esi" y' B+ `" |$ ~ }0 \) b
retn, F4 b: e4 I( q2 q/ Q- A
}
# V8 d) r: O. a0 z}
4 Y( P, }# F4 l' G2 O' fvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]). ]! ^( M' j- Y, {- B4 x% k, L1 J1 \
{2 h5 `. P7 ~$ I! ~5 p
*nXpos = getXInvCloseFixBtn();( k; Q4 r Q3 A) u5 _: z& `; ?5 Z7 j
*nYpos = getYInvCloseFixBtn();
* ^( |2 A0 c/ a0 v$ r7 p$ b. K}* B2 C: O# r9 K7 ^
__declspec(naked) void caller_closeimg(); c( {/ _' n. e% Y# i& O
{1 T# n/ H) [! ?% B7 _; l
__asm
6 y8 l5 x1 @* B1 s+ o {- s- a9 |6 |+ b( t
PUSHAD
- E( v# f: [/ q2 b( K" ~ lea eax, dword ptr ss : [esp + 0x38]
" ]1 L( k8 T& c& {5 X. Q push eax
7 l5 a$ c3 J: i, J4 o$ y; r' f# _% X, b push dword ptr ss : [esp + 0x38]! i5 X$ D/ v7 ^& i; X1 u
push dword ptr ss : [esp + 0x38]
1 _: B z+ q0 X lea eax, dword ptr ss : [esp + 0x38]
( D$ j0 O$ W2 Q9 q# { push eax
! K6 `6 x& ]/ e+ s) O: O lea eax, dword ptr ss : [esp + 0x38]5 R5 C: z/ X3 R# @4 s
push eax3 v/ U" o) K4 e+ f# v# c
push dword ptr ss : [esp + 0x38]- F- x8 _+ a7 Z7 ? O
call m_NewStatShow_closeimg
1 i& G1 _4 s6 |2 w/ ^% C1 v POPAD
* y$ H3 [; T' w" l3 M JMP D2Gfx::D2DrawImage
; q- K' U! `. }. S }
: ~- p: g5 b$ q# s/ \8 B}
) ]1 D* e7 P7 I4 q: }: Y' }3 N1 q6 V* a: q" f; n7 P
6 U8 p0 j1 F3 O+ f& g3 m1 p |
|