|
|
转载. a* ^& P% e8 U/ `( r" E
BY SJ: y8 @7 X- g; q2 O
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)3 B Q( E6 [5 l8 s$ i, t
+ [7 I2 s8 m, [! Y E$ N& dD2Gfx::D2DrawImage-10041
% B" f/ P5 e9 F" [$ `1、修复技能的背景(不需要可以不要)
! [8 j f# p; X0 A) X6 Xoffset = D2Client::GetAddress(0x77AA8);3 C3 F, K+ z4 J9 t& v& J: V
Memory::SetCursor(offset);
% k8 r% \: G/ Y# G9 nMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);4 X; `/ a% I+ j" N+ L& B
$ l& h6 M- b2 r# Ivoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]): X M5 C h, I
{# |8 j+ @, F6 S( B( w' S! c: D1 K- J
//Init data for print image
1 B' w, m/ {2 v* u sDrawImageInfo data;2 A4 a; A+ o. d* [4 D
ZeroMemory(&data, sizeof(data));4 z! Y& R, l+ r# s$ w& t
( q: p4 w6 i- r3 Z5 F$ |
//print background
% d/ \" L- T7 ^( S setImage(&data, spellBackgroundImages);( |0 d- ~& H- |( ~9 Y+ M
setFrame(&data, 0);
# Q+ O( s( r7 j$ S" @ int fixx = 511;, w* a7 U4 \1 D ~. `& N" ]# ^
int fixy = 9;
. D+ }: d! d1 ?3 c D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
# v: ?- ?* }; n% j g. X setFrame(&data, 1);
: ~. Z* E, Y- f% ]( A D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256. y8 A0 x2 | `( r
setFrame(&data, 2);
! W" g5 G4 F1 D- f( ` D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
+ ?$ ?. x @* R- }# ^2 J setFrame(&data, 3);
- b- S, K* U! m& a2 ]& p& e D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
0 t' D- ^$ v: w9 N |}1 u; _( g2 c/ B: k& |
__declspec(naked) void caller_SpellBackGroundFix()0 j& K) { o* j- S
{
! `% o" G" O' d0 f( S" u- K9 z __asm
: N& p( m8 ]2 u6 t" D {# H. P* W) ]: [! ` g! n* p! I
PUSHAD3 J S$ G6 K* z! y: f
lea eax, dword ptr ss : [esp + 0x38]
( N4 C2 K, x% s, g5 S: M push eax
; H1 A( B8 ?) {1 z _: m: v push dword ptr ss : [esp + 0x38]
# q0 v) T7 ]4 I$ P9 m" f push dword ptr ss : [esp + 0x38]
( O1 z4 _, v/ j7 Q/ t t lea eax, dword ptr ss : [esp + 0x38]" M- l/ X& y( @- n4 \& C
push eax3 u* A$ z- [5 Z# L
lea eax, dword ptr ss : [esp + 0x38]" H3 L# ~. X" j! p
push eax" e6 i V ^ t3 o8 z& A' L9 e8 i8 ~
push dword ptr ss : [esp + 0x38]
# }9 C h/ |, m0 ^! E, d& l call m_NewStatShow_SpellBackGroundFix& I+ C& e" b/ [% e
POPAD; D5 _) h0 z' `
JMP D2Gfx::D2DrawImage
0 {) }0 q$ X# y2 Q, |. f0 D4 G }
, ^. ~% F) Z% a5 U) w}& M/ ]% }( _ y
; L4 N' w5 o) }- l3 ~2、我们如法炮制小站的背景
$ Y+ W. L% C% I. a8 W1 s
% A7 e8 X- E# W( q4 hoffset = D2Client::GetAddress(0xAB010);
5 q& R" z3 i, c# h% @/ GMemory::SetCursor(offset);9 A1 N+ [2 H. Z+ i8 _2 `
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);# }/ K( H: E6 m) L
8 L0 V' J9 _% f3 y+ R# n
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
0 z) Z5 ^- y/ d9 m{
% M7 S/ O5 f' k, S1 l) g* S: V //Init data for print image
2 Y# ~( K, \6 ^4 [7 P8 m4 d' F- W7 ^+ q sDrawImageInfo data;
0 `8 {; Q$ Q/ @% O9 n- t) t& q! d& ` ZeroMemory(&data, sizeof(data));
' N0 `7 F' n; n/ f
; |) T# T5 L8 \( N% T E //print background
5 G8 F4 d- |3 e$ w% C; A3 j setImage(&data, waypointBackgroundImages);% c. f) B6 S( e8 Q
setFrame(&data, 0);9 S) \& |8 T4 k: u- a
int fixx = 0;
# ~" K o2 a# o0 j8 n4 u. h int fixy = 9;* {* ]6 V; Q& u9 m6 q5 o4 `
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);: U* w7 x4 [4 Q* a, ^ l6 f" O
setFrame(&data, 1);
: {% C3 M9 H# v$ ^ D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2566 |; Y# W. S* W& E* B
setFrame(&data, 2);
. |, k4 O+ s0 ~. M9 V D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
5 w: F9 ~) ^+ \5 e3 k& D7 d setFrame(&data, 3);
4 n# D6 b6 B; y8 a8 J D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);) ?0 g! v( j0 W4 U
# k& ^; b( t& Y" W2 S
}$ Q. b+ ]" K; Q+ x) e* w
__declspec(naked) void caller_WayPointBackGroundFix()
Y7 e- f; k! [: p9 k; O q{
% C. R& E* b6 q2 q __asm% E- a9 C$ b! `/ D# _& m F4 j
{
$ q: O* B9 H; q* |3 _6 F PUSHAD2 U1 P" B3 H# n7 t u6 P
lea eax, dword ptr ss : [esp + 0x38]
0 @& i. C2 H! b6 U0 z push eax! p5 q- Z9 i M* E% ` P1 Y
push dword ptr ss : [esp + 0x38]
- l: C2 l- D; t% {; r push dword ptr ss : [esp + 0x38]1 A: f' ?9 z1 m4 J7 o# m B( `
lea eax, dword ptr ss : [esp + 0x38]3 J' f$ U. _: S
push eax
% Q3 N' b- \( g# W, T lea eax, dword ptr ss : [esp + 0x38]
6 k9 V9 e& |6 n- u, g9 A push eax
, B# k( ]6 s2 i# a push dword ptr ss : [esp + 0x38]
9 x. |7 ^% E& j6 { call m_NewStatShow_WayPointBackGroundFix0 Q2 @. N v, n8 Z/ W- m( e& E
POPAD" p, G. }( O8 b6 N' v$ {; J
JMP D2Gfx::D2DrawImage' O+ z9 f( i9 w @& w' w
}0 @1 ]- e/ w+ i( [
}
. w, e& W o {, q9 t8 J* ]
) [8 r# h2 u; S2 i: k/ s& }3、以下可以搞16*16超级箱子-腾出我们需要的边缘
: l9 V/ M& M) C" q腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
& H1 u+ a2 H- H/ A0 Z {
( @' ~# F& Q" j' Z! _/ { class D2MultiRes : public Library<D2MultiRes>
6 S0 I) C5 g; p) o8 ~" @ {% K" F* f+ @1 s) }' F0 L, K0 t( h2 ]
public:
% ^% y- ~; M9 i! a8 f, |' ^& @ static void Init()
4 ]+ w) X" w5 p" s {( D( h; r. _/ _ r) A' M8 g8 S0 ]
Name = "D2MultiRes.dll";6 s& Q' A% ]* ^7 f8 F
Offset = LoadDiabloLibrary();
1 A1 |( z' D1 r6 d4 Y8 t8 E7 Z }' g4 W2 |; f. f( t6 S
};) G- c& y4 A& R
D2MultiRes::Init();5 W/ R ^* n& z! E! n
D2MultiRes::HookLibrary();
; }" {3 M0 f: v
F2 a7 E% [6 K- x7 `) L. I% R1 ?
: J" Q0 @3 f( L- N MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
. ]6 u# ^; E: k5 {4 { Memory::SetCursor(MiscFunctionsOffset);
& i& _- m) N/ D' Q. f Memory::ChangeDword(0x1b0, 0x200);' _) r8 Z+ P8 |3 Z+ s
+ }0 _8 O7 q& \) D+ \$ |$ T
% |, u8 G' D# P( d4 l7 I MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
) x% O- p8 Q+ ?- p2 F* ^3 ^- Q Memory::SetCursor(MiscFunctionsOffset);
# `/ z9 j6 D/ L Memory::ChangeDword(0x140, 0x200);# p2 j$ c% \% b0 p6 E5 [
1 y6 Y# w; }& S# r
2 a* G0 ~* K% a2 v, P# K/ q7 h MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);* A4 O" d9 Z' v% R) j
Memory::SetCursor(MiscFunctionsOffset);
* P( V2 S+ g! t+ d2 n Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
% W2 T" u' R& [6 {
# n* f5 ?# r' ]9 E( G MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
) B( t6 j$ B2 M: z Memory::SetCursor(MiscFunctionsOffset);
' [: y1 }% i" R% }3 w L4 f Memory::ChangeDword(0x200,0x299);//下边缘 299最大
* N7 |1 K. |; Y
" c8 S7 g: R4 {% @& H MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
/ ]* j [! H5 q& G; n6 g- m Memory::SetCursor(MiscFunctionsOffset);
7 k, j; G5 F9 Q7 O0 k9 d Memory::ChangeDword(-0x280, -0x400);//这个不要动
: g1 O g" n: j. _$ S5 t }) z3 @; d; k- n1 O4 {; n! m
! H$ l( w' Y4 O) Q4 k" C4、快完成了,是不是发现金币啥的位置不对??5 Q/ ~( q. Q; p9 k+ i
( C4 y* F8 O X0 C# {
//这里修正我们的装备栏0 [2 b# u7 J. b: T3 j) h5 d
offset = D2Client::GetAddress(0x99B6C);- y; Y% d1 M: Y) e& D
Memory::SetCursor(offset);
- h/ @( M R: M' W% I Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);( n. |' O. S' G+ b0 M0 L. v
9 Q3 B4 |6 {: M7 P1 g4 a
offset = D2Client::GetAddress(0x99BA7);
5 A( o1 K, |1 B Memory::SetCursor(offset);
- V% x8 E3 u6 h# @0 v# @" F1 Z Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);% p3 C2 r n# T2 L- J& v" p
$ t* W8 m( `# m8 O6 l" a" i offset = D2Client::GetAddress(0x99BE2);
* G' F9 N- ]" v* a+ K Memory::SetCursor(offset);
1 H4 E2 U, g P Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
& C" q1 j% Q) |6 d" ?# D8 C4 s$ Q1 z l5 b/ R& P
offset = D2Client::GetAddress(0x99C1C);* V p) Q% |' e+ i8 W4 v( y; H! C- k
Memory::SetCursor(offset);- v; v2 h9 H; c# {" A! Y
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
" A$ {* F* L0 ], h, \" v- ?" a [5 z+ e
//取消两个popup,偷偷懒不过分
# T4 J( _6 e1 G, ]& J( { offset = D2Client::GetAddress(0x9386d);
# A+ q2 c( N6 q+ v- b Memory::SetCursor(offset);
/ k2 G/ f6 W9 |1 R Memory::ChangeByte(0x8b, 0x33);6 Q3 L2 ?3 M$ K, W3 ^; e5 T% f
Memory::ChangeByte(0xc8, 0xC9);: s$ C9 [ }/ ^. a
offset = D2Client::GetAddress(0x9390b);
+ U; W* A' A" J& E5 f- x9 f, E Memory::SetCursor(offset);
- I! {/ _) k7 f6 M" r) V0 h- [ Memory::ChangeByte(0x8b, 0x33);3 x1 U# p5 d- s8 L2 j8 ?
Memory::ChangeByte(0xc8, 0xC9);
' K9 d- s8 g$ a0 O" A/ q( y4 K* l& g! |5 T1 j& d
//修正提取金币+ i3 i; o$ Z& I. K
offset = D2Client::GetAddress(0x8D3E5);. r4 @( {( B' j; s4 x
Memory::SetCursor(offset);
7 j& O' F( ?0 `5 D% I, r Memory::ChangeByte(0xA1, 0xE9);
/ J* W. J; K0 E! c+ e6 y Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
. Q" A8 f7 Q/ V1 u% n0 ^% N/ K5 L% Z6 C0 Y4 N: q, v1 G5 ^ V; U
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);4 l6 {7 S8 a& l, t% ]$ \7 m* s
Memory::SetCursor(offset);
8 R2 P0 C9 A4 B' r6 d$ Y$ i3 A Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);+ E; v/ i4 G9 n8 u' w) @: ~
L0 G. c( m1 V) Q1 ^+ x offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);2 L! ?/ Z& |* E' `' P9 s2 f1 t7 e
Memory::SetCursor(offset);
8 _! X& P5 T% z% z3 l Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);% r, n1 ~8 p0 Z; n( o2 y. W
( P( i7 d2 P! V. f //修正关闭按钮1 e% S+ c: P/ j9 K
offset = D2Client::GetAddress(0x8BD90);5 |0 }$ |1 e5 L$ o- H
Memory::SetCursor(offset);* {! W5 J8 y( {) p8 o8 L
Memory::ChangeByte(0xA1, 0xE9);
* q3 ^2 m7 I" C" B. m" E9 k% Q" e Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);7 H8 ?, v1 s# ?5 |4 j( Z
: _0 ^* c M6 U offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
8 q9 d/ [/ W: d: V0 I Memory::SetCursor(offset);
- E+ b+ a; ]2 A" K/ Q- C Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);$ H# h) L/ l/ k K4 a% N. R5 ^8 P
- F" ?( B7 I% |" r# U- W, J3 t
2 M! q7 i" x" q2 U9 @" T
//以下是细节# @( D) ^; H5 A
#define getXGoldCoinFixBtn() RX(0x2d0)
# E# d; t- c' q1 s1 v9 }. w#define getLGoldCoinFixBtn() 32
8 g" J4 o7 Y9 |- J#define getYGoldCoinFixBtn() RY(-0x59)& G9 @: [3 M+ h) g- T3 L0 O0 z
#define getHGoldCoinFixBtn() 32
* ` |3 W- r. D2 T#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
, o* i+ b$ t5 r- w
0 h- J8 @+ n% D, Q s% j0 O- a#define getXInvCloseFixBtn() RX(0x3db), {9 ^1 _! H8 e% M2 X! Z
#define getLInvCloseFixBtn() 32
- y/ y4 m3 C3 s# r: o" {#define getYInvCloseFixBtn() RY(-0x63)
9 M0 g0 V1 H0 G, A& v#define getHInvCloseFixBtn() 32
3 k' f" q! y( x0 D#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
- m2 q, ~$ T5 U" X6 q. p3 L5 `/ G. N: R9 u$ u9 s0 ]9 u/ {
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
0 s% B1 A5 W# d1 ?$ n{! s- M6 Z9 `2 N) }) v9 J( V% R
DWORD mx = *D2Client::ptMouseX;9 h! Q4 i1 F& y: c4 I: _
DWORD my = *D2Client::ptMouseY;
- b0 P4 s/ D/ S; U7 L: |- _; } if(isOnGoldCoinFixBtn(mx, my))
1 z4 d$ {% ~$ J' K return TRUE;
/ D$ y, A Q" I' D. o return FALSE;
4 c) i( Q H5 }# N: D- K}% R7 x( b, D& c& s( N7 w
__declspec(naked) void caller_goldcoin()
3 z2 x4 l8 Z8 x1 [{
" G+ T c# S, ?" u& g& A0 a6 { __asm
1 u" O5 O1 [6 N1 ] {: |' p. [! O6 f8 F7 Z4 Q
push ebx
- C1 l( j# H% J/ a; c mov ecx, esi
, r/ o; K' i2 E- Y/ a mov edx, edi
( l6 y5 F8 J7 f8 E; d# F" s1 h: D call m_NewStatShow_goldcoin
+ O/ J0 R& m% k- n4 i. V pop ebx
: g7 k% C7 O1 g% _' u. t3 O pop esi
3 _0 }, ?" p5 g; F& w& ^ retn/ K5 y$ J4 u1 s2 d% |# H+ A! Y$ T; L
}& r9 e7 O j: p9 o4 ~& n8 a
}
8 w2 N: L8 ~, K4 G5 I2 j6 fvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
9 W6 f/ m/ u& N. w8 H{
4 }" q5 h5 u+ Z2 v2 i if (*nXpos > D2Client::ptScreenSize->x / 2)
. `9 i1 ]$ |2 G% S* g" @4 S { V0 W8 W: c8 J& t/ k
*nXpos = getXGoldCoinFixBtn();8 q& P B- p+ @6 ?& W. _; y7 I. e
*nYpos = getYGoldCoinFixBtn();1 o" G2 Z+ V T- @' o0 q
}
( F9 w: S. ~) I2 v}" E; L% H0 W! J8 y0 t7 e- \
__declspec(naked) void caller_goldcoinimg()
7 u& k! f# Y9 T" b: ]{- i+ r+ z+ r. E8 ?1 e$ Z- b& n, t
__asm
: a# n. t5 H. M- B% e# i {
$ Z9 n3 O' a, a: Q PUSHAD
# p/ Z; c0 U5 ^. q lea eax, dword ptr ss : [esp + 0x38]
4 E( S* E% x3 o push eax
8 N+ }4 |6 r2 j: U push dword ptr ss : [esp + 0x38]
1 t$ {4 ~) G4 L$ j+ w push dword ptr ss : [esp + 0x38]
! y4 E$ k, {1 B0 J: t( } lea eax, dword ptr ss : [esp + 0x38]$ U2 Q* B4 G G* C
push eax
+ \! D/ A! l* S8 n* O9 p lea eax, dword ptr ss : [esp + 0x38]7 E+ j1 v" b `9 N) ]7 h3 {$ `( ]
push eax
* Z( e1 [8 L4 x, N3 B3 Y& G5 G Q9 X2 ] push dword ptr ss : [esp + 0x38]
% K3 { o3 U. O' }( A. D i" C call m_NewStatShow_goldcoinimg$ t' Y) u7 h& T! G% M
POPAD
& k7 |7 N! O3 V4 \8 `$ _$ ~+ C JMP D2Gfx::D2DrawImage* P8 d# h% Q' { T! q$ {( W
}; T% m" G$ z* A g: [
}7 w! G2 `0 }! m2 R d) K2 n- L4 {3 ^
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
3 \3 J$ a6 b# D2 b& H, r0 w. i) [{9 s4 m3 z M" u! G* U
if (x > D2Client::ptScreenSize->x / 2)9 Z1 D$ x2 O C9 P; X9 o7 ?
{) _5 i% b; `! e+ y+ a1 P: j
*y = getYGoldCoinFixBtn();. w6 X3 I, [, _9 ] Z
return getXGoldCoinFixBtn() + 32;+ j0 z* }2 G0 ?' D
}/ Q7 n2 G) s' j) q+ \+ u$ v
return x;
. U( ~; K7 T7 Y1 u}6 } n7 R5 S+ e6 I
__declspec(naked) void caller_goldcointext()# f9 |7 L: h4 g e% `" l; f( u
{
# p7 V& v [$ w7 J __asm& G% S1 d8 l" v: [8 x7 ]! q
{+ h& ]+ G# V. E( X4 L3 A: D5 z
PUSH ECX
3 m u( x$ X) c; k6 N3 r, k& z PUSH EDI$ J' E) a4 l$ a& C9 C- p
PUSH ESI0 p7 q6 h- u! J- W
PUSH EAX. M) _- q2 y* m( `* x" V* `; z
MOV ECX, EDX
K3 b" P# R# @) H& \$ T; m LEA EDX,[ESP+0X4+0X10]2 x) }2 {. h' m' X% s' R0 Z# \3 L0 }
CALL m_NewStatShow_goldcointext d4 U7 N; v6 w8 P3 v
MOV EDX,EAX& d3 X- E- G7 f- I" C
POP EAX' e& |1 q3 K! P( E( {
POP ESI8 }5 |; o/ L, G( o& Q* B, W9 P2 X
POP EDI2 ]( g# }: @- {. S+ Z- `3 z
POP ECX8 C* _. y% u! x
jmp D2Win::D2PrintString;
! E. F9 L# ^+ }2 x }1 B4 O; \1 j; G6 u$ X& w) S
}
- z' r* i$ L4 F9 b4 D' A- ^5 A+ z
( P- M$ I' y2 [5 e# S5 }3 EBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
( b' @) b# W% M: s, ~6 C2 y7 H{
2 K E2 Y O6 U, M2 K DWORD mx = *D2Client::ptMouseX;
/ N6 F; a" i9 V! `) b/ R DWORD my = *D2Client::ptMouseY;" @3 T" q- \- O2 ?5 T
if (isOnInvCloseFixBtn(mx, my))
- k0 x+ a9 I% C9 w return TRUE;
2 t" |) B9 g7 g7 P4 U return FALSE;
/ G% f. u' k0 f' X* C}0 c1 ~% V- o* t2 [; Q o
__declspec(naked) void caller_close()5 _9 E: B; c& g. d* @
{, t# }1 m' q/ X0 l3 O9 f( X
__asm, H5 t1 H" ^, n$ _% @- k
{. E7 b- l( d, \5 x* {( |8 w1 U
PUSH ESI' F$ N- R6 m+ }) y0 U- O$ U* l; s
push ebx, N- t) Y, o+ D' n% N
call m_NewStatShow_close w0 g& d. s1 W" S' Z! W2 v$ |
pop ebx
- n! C. F$ v- [. F6 _5 `+ W& W pop esi
5 H7 {8 T+ P) y8 {- y( E& ~( ~ retn
( _- k- f# Z) j% U }
, h: T* o. w2 X' U x# e}
% q2 ?; w, t: ]7 @* ~void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])% m/ r7 b8 _6 [# [
{
1 ^6 ]0 r6 D; T2 l2 g *nXpos = getXInvCloseFixBtn();3 X( f0 k5 f6 B. G( x
*nYpos = getYInvCloseFixBtn();
4 ~4 {( j* U" F8 i5 M4 c- b9 P}* U0 Z, Z. s7 K% A; c% g
__declspec(naked) void caller_closeimg()
5 K2 n- R: v" @# y{
/ G, S/ d. r7 k( l# N# a3 S __asm$ v/ f9 u4 M( E) h; C, Q
{2 O. P4 f; N- \
PUSHAD
; c* E% N2 ]: F7 F" J, V2 E lea eax, dword ptr ss : [esp + 0x38]- ]4 |& E& o4 y3 S
push eax
$ S5 H4 y( q- N8 F# z push dword ptr ss : [esp + 0x38]
$ ~% y) j* j; D8 f push dword ptr ss : [esp + 0x38]4 o3 A; M7 R2 L4 Y
lea eax, dword ptr ss : [esp + 0x38] t5 B% ] D" V# j
push eax7 b# z7 M I7 Y- r2 h: h4 }# Y; Q
lea eax, dword ptr ss : [esp + 0x38]8 z1 K3 W; I- S( f0 d" A
push eax* @6 |$ X: }& l4 \: H4 `3 a0 [7 R
push dword ptr ss : [esp + 0x38]
' S6 Y& B$ _0 _: F$ I1 }" k call m_NewStatShow_closeimg
2 H, ?" W9 H! D- Z, y- e POPAD% g1 K" o; q+ e% X2 p
JMP D2Gfx::D2DrawImage/ i9 p, h. }8 d8 S! a
}
/ Z- R0 J9 T9 n8 c, i! K}
5 T7 x3 M, y6 _+ q5 p0 C' z) W- o4 V6 {
4 W6 j4 z0 s6 Z6 x' U
# ]2 N1 k" n& m |
|