|
转载3 X% n) F: \2 s: B. f/ k: H& J. f
BY SJ8 s+ @; U" z4 q+ W) R2 a
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)$ `4 |. u4 x4 ^ s4 F
" n; |7 s. |+ n% Q5 n5 e
D2Gfx::D2DrawImage-10041
8 ?& k X- ]5 h& q: \6 j6 \1、修复技能的背景(不需要可以不要)
5 ^8 W+ Z5 R1 Ooffset = D2Client::GetAddress(0x77AA8);* Y$ @; n) ^9 K9 t
Memory::SetCursor(offset);1 m, O# Y# v+ {
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
8 O) }8 J! d* a; G' O$ ?4 @( X8 _# P. ?. W2 ]# d
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])1 O6 Y+ B q& C' Z# y
{ m' f F! V, b( b t, |
//Init data for print image
. [: m' i" s4 i sDrawImageInfo data;1 q( j2 `' U6 [6 Y5 r" A
ZeroMemory(&data, sizeof(data));& t) f3 L3 Z" a, | `. e
% B0 z6 ^* F& ]2 J" ~
//print background2 S# E" V: x! t% `6 p
setImage(&data, spellBackgroundImages);
* i. R0 m" O6 J( H" P/ `6 R setFrame(&data, 0);5 m% [7 c R. K' S4 z/ g
int fixx = 511;
B' _# y `( g9 V4 p* w int fixy = 9;
7 l, z7 e8 \- X# M- u$ ? D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
& l% f# O8 k+ U. |1 a) O4 _2 u setFrame(&data, 1);; j7 @% x2 [2 y' E
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2568 o8 X" B' y- u& K
setFrame(&data, 2);- z: i# s5 {6 M9 L( D: [
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
+ ~- V* e9 i& i" A4 ^. X9 m setFrame(&data, 3);
9 i+ J& U/ p5 p D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
6 }. v4 B9 D4 `/ j+ O; f}. c* ]: O2 Q8 X$ p: w
__declspec(naked) void caller_SpellBackGroundFix()
- \# ?8 @) Y7 B' \( M{1 Y( v" O# e) ?& U& w/ F
__asm5 S$ R' j+ S+ q
{7 H* @' s; r$ u1 c& f' _( Q
PUSHAD& Y% x( w/ Q. N
lea eax, dword ptr ss : [esp + 0x38]
0 D- ?+ l6 s" i1 _3 D% y v! i1 S push eax' [1 e! C9 H* {/ j# [+ Y9 M1 B
push dword ptr ss : [esp + 0x38]
. {4 c' j. O& o/ o push dword ptr ss : [esp + 0x38]
' c6 t7 f6 F# p2 w lea eax, dword ptr ss : [esp + 0x38]
- Z5 P+ d- i1 z7 g6 l( z push eax2 T# @4 X( d W) _ L% ]) I M' v; A
lea eax, dword ptr ss : [esp + 0x38]/ O/ K# x6 Y' d. F8 c* T. N# T
push eax
, @" `3 o5 X2 [8 M- R push dword ptr ss : [esp + 0x38]2 d4 j+ F A6 C' A% w6 ~
call m_NewStatShow_SpellBackGroundFix
+ \* i, _% u1 A1 n# @6 }5 V3 A" v POPAD
2 d, _* M- k" l2 ?' C; B% C# Z JMP D2Gfx::D2DrawImage0 n6 N( Z5 ^' i1 t c
}
7 {7 M2 C' U$ R3 F9 L+ B, m' C( a% U}% q7 g& f2 g9 h8 N! a
8 z7 ^# t0 L4 j4 Y. b2、我们如法炮制小站的背景
: p# s8 [# E# x! x0 u8 K5 S! ^% f2 c, A6 C8 I, k- q6 t3 Q
offset = D2Client::GetAddress(0xAB010);
' t, L+ o1 q- W( y2 yMemory::SetCursor(offset);1 h* V/ c; R9 `4 F; a1 w" f V" t
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
& e# w! u; t3 b1 m& @% I8 Y# H8 {
3 n, k4 c ~9 Kvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
3 c; ~6 s/ l2 U; J3 P, v( I/ I{
, M) q+ M$ o9 \! o //Init data for print image) H: E- n# G8 S7 t
sDrawImageInfo data;! i& c! D: H* {9 y9 [5 N9 K
ZeroMemory(&data, sizeof(data));
' X% h8 U' y9 Y9 {! d$ z; a* o8 a8 Q
6 k. O# x2 U5 I* J //print background
5 Q$ ~0 x. O/ b* a setImage(&data, waypointBackgroundImages);% Z8 C# {) F- x/ @! z
setFrame(&data, 0);
: I1 R" J4 K5 ]* [/ t3 ~ int fixx = 0;
6 H) E6 i! E8 U6 p0 }( B4 Y int fixy = 9;
8 |( C' t E4 z2 ` D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);9 @/ G% e: _* \4 c( o4 m
setFrame(&data, 1);
" j0 d" ^2 ~& D- ^ D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2563 `( E* {) S1 u
setFrame(&data, 2);# j8 V9 X) F% S
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
& M: i- A4 G" Q0 j* X; ^: r6 H9 ^% `, y setFrame(&data, 3);% J8 o! S5 n) u! J- c G
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);$ m5 G2 o3 i* U) l
" H% ]6 f9 {$ W( H1 g}$ z6 r+ x' a- t' ~7 y2 t& A5 F
__declspec(naked) void caller_WayPointBackGroundFix()0 ?+ f& A7 g6 }$ h6 X5 P. L
{
: O( }" G q9 M3 `' Y: x __asm# ~' v9 |6 h Y2 [
{" ]' f# D9 W/ r
PUSHAD9 [2 p; B8 V: x1 g& K
lea eax, dword ptr ss : [esp + 0x38]
+ O9 I8 t" i! W0 \4 ? push eax& _$ q/ t! f. t9 a( T/ m! z
push dword ptr ss : [esp + 0x38] {" L8 L- W! S
push dword ptr ss : [esp + 0x38]
- }, i6 Y d8 n. m0 r: @2 P lea eax, dword ptr ss : [esp + 0x38]3 M6 V& A4 o2 J$ F5 @2 {
push eax- O6 q0 Y( Y; D0 _" W
lea eax, dword ptr ss : [esp + 0x38]0 v' g$ W1 X ~& e/ r0 O- i7 p+ G
push eax
, }# E& Y" W& m$ Z) ^: w push dword ptr ss : [esp + 0x38]' X! G. T% s, m i$ J7 {
call m_NewStatShow_WayPointBackGroundFix
0 y/ ?( z4 G; G: Z T4 S POPAD* j$ @, W n8 v9 Y8 d
JMP D2Gfx::D2DrawImage
9 B5 H8 I* m ^% Q0 y+ K( D }
) N- f5 M4 L; _* _7 q' l}
% [5 i( O5 Z M1 E# [# n( C" v6 x1 z6 k0 s1 y
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
4 m) f8 F6 F4 P# u: D/ D2 _$ w腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
0 _( s1 J- i: A) s" g- q: k& s {
4 w' g( H2 V0 Q: {! T( X class D2MultiRes : public Library<D2MultiRes>
; Q! H6 ]' P4 k- W* `! m/ O# l# Y3 R {
8 `3 R# [0 c1 L8 Y+ g; z7 W2 g, R public:
& V# F- K# T# t c* v% w8 C) L static void Init()
; Z- i$ X' F2 `, u) e: P; I {' f$ j% f# J8 m# G; m0 J# v6 E- {' S
Name = "D2MultiRes.dll";
6 F3 r" u* `% c1 ?# ]/ S. _* L Offset = LoadDiabloLibrary();% A% z. E/ R w! R* x, G
}
9 g2 G- k6 a" O% s& y, }- ] };
! {" ~1 ^6 C0 P; r: @7 X; } D2MultiRes::Init();
* X! N. ^7 H3 U; b, r9 { D2MultiRes::HookLibrary();* ]6 r/ Y H4 S7 ^$ d
* ? }4 r0 {, Q9 [
/ V) ^1 c& ]+ j MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
- j4 r3 }* s: F. \- V, c/ x Memory::SetCursor(MiscFunctionsOffset);
8 `9 v- d# u/ n8 k Memory::ChangeDword(0x1b0, 0x200);
4 T1 a( ]( M/ u8 v
3 Z$ V7 H. o& u: t$ v. R. r) U- W0 s) N c
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);# c9 Z* O) F, D/ H+ @* C7 I0 |
Memory::SetCursor(MiscFunctionsOffset);
. F1 H1 T( G& d. D Memory::ChangeDword(0x140, 0x200);4 e! v' d, T% Q! |
& E6 L' c" [: x7 i' a+ j$ I" h0 i {& w) ]3 j
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
6 Y- z6 u7 t' F$ n Memory::SetCursor(MiscFunctionsOffset);
, t( f8 n0 \. y1 e4 h( X* D Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
7 e1 M0 T3 F' K: @
% ^8 m7 _* [- _' z7 C8 o# m, ]7 f' H MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);0 l b2 J4 _& W( J7 {1 j' o) ]9 V- H
Memory::SetCursor(MiscFunctionsOffset);; C% ]- L% r& r! [$ J: K$ C
Memory::ChangeDword(0x200,0x299);//下边缘 299最大; E/ V0 D9 N+ S7 W9 ]3 m; W
( A8 d" ^. t) Z+ G1 {6 u MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
6 w" F3 [" y/ B0 \4 ^ Memory::SetCursor(MiscFunctionsOffset);
7 F# P* Y8 A8 ]6 U Memory::ChangeDword(-0x280, -0x400);//这个不要动# o" s* E/ g# M
}+ H; b) N" z# Z& w; U
; @2 H$ L. ~- F- Q- e* B$ m4、快完成了,是不是发现金币啥的位置不对??
' @$ Y9 ]$ `3 h& `& E. Y! }) J4 w( p
//这里修正我们的装备栏
& B% M/ [2 C8 }8 \9 q! N# w2 g offset = D2Client::GetAddress(0x99B6C);# M/ s- \4 n; Q+ R9 D- h
Memory::SetCursor(offset);* ~* Z( L4 N4 ]
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);% L0 }0 b0 a. w" u* C
3 b; x0 w: ~' f+ E# X$ s offset = D2Client::GetAddress(0x99BA7);
( x& q/ \2 `# K' H Memory::SetCursor(offset);
w; A% B7 X, g& B2 Z7 x Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);, k: H V' _8 i/ x; |: |' C. F
& w& a9 ?$ b1 f* ~! S' w X& p0 ^ offset = D2Client::GetAddress(0x99BE2); [: C G* b; W4 K
Memory::SetCursor(offset);
9 x+ x$ a+ J- s4 [ Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
0 ?9 x9 e+ M, j% b& t: ^3 _
7 P: h" d4 w9 q4 K, n z offset = D2Client::GetAddress(0x99C1C);8 h' ?; s3 f$ S: H
Memory::SetCursor(offset);
7 u" \! p: L( v4 P, e Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
5 \8 Z1 w# r6 ?5 g
1 w! c8 i+ X6 ~! ^ //取消两个popup,偷偷懒不过分, r# j& M0 g4 M: O0 Y
offset = D2Client::GetAddress(0x9386d);4 X+ E& f/ i( z3 W* n3 t
Memory::SetCursor(offset);
8 B) W: d. W' _; |- m; b$ [6 ] Memory::ChangeByte(0x8b, 0x33);
# H8 l/ ]( @4 O4 l$ Y5 y Memory::ChangeByte(0xc8, 0xC9);
8 O: g! [ K& f. i+ B1 H$ k3 B offset = D2Client::GetAddress(0x9390b);
) P* Z8 S+ Q2 x2 A. r Memory::SetCursor(offset);
1 o5 }( w% R; {) g# k# {; E7 c* g Memory::ChangeByte(0x8b, 0x33);
( ?3 L/ |4 R+ w: S- U& B Memory::ChangeByte(0xc8, 0xC9);/ @0 H8 Z4 h( L& `
6 I/ I+ z3 s: n7 d: [ //修正提取金币
2 A( Z) O3 X0 \$ k+ V6 R offset = D2Client::GetAddress(0x8D3E5);
; f2 [# N, x6 }$ `) q6 u% C: S Memory::SetCursor(offset);
8 F) G: k+ L8 t6 S9 _ Memory::ChangeByte(0xA1, 0xE9);
" K) _1 O3 t- K G Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);% \- T) ~0 _7 r1 D% I
2 T# L/ S9 Q, m5 S0 { offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
. I% t3 R7 C+ q' _ Memory::SetCursor(offset);4 q7 b+ s/ M- i- v/ ?2 ~
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);/ I: c7 [& f* u8 O1 D# I
+ P' O# k2 J Z% n+ ~- H z offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);0 ?* J& h9 {8 s! h
Memory::SetCursor(offset);
8 E0 Z2 S2 ~$ ~/ v k& V Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);4 M5 V+ z7 J7 }
* |" i+ \; m' M- @7 r& v+ @( K2 k) D
//修正关闭按钮
7 _- w, X2 v+ N7 z offset = D2Client::GetAddress(0x8BD90);
' e6 e5 Q a: f) t+ z+ D8 S! l Memory::SetCursor(offset);
: J/ I g0 Y. x/ Y; A2 }% D ~ Memory::ChangeByte(0xA1, 0xE9);- W) X p- [$ {! f
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
; P7 f, j1 K' c7 V
; B7 A: z2 b- A7 k M6 l% ?2 r offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
8 {0 v$ n0 e/ w0 r% G3 @- ]+ [ Memory::SetCursor(offset);
1 c! `* V2 c, m; Q1 F. C C4 J Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
$ F2 }5 h$ K/ A4 v, z8 N, f- J$ M0 [& m) m* l2 v3 @
/ X* d0 {2 f+ ~//以下是细节( p& e& i' O) l( E o8 k
#define getXGoldCoinFixBtn() RX(0x2d0)* w$ |; S0 l9 T4 {6 L' k/ m# _3 g
#define getLGoldCoinFixBtn() 32
- ^, \4 X. z$ R8 P' I2 e( G6 d#define getYGoldCoinFixBtn() RY(-0x59)
- k8 R: j+ S# T6 n#define getHGoldCoinFixBtn() 32+ d5 R2 i% Y+ E: O! w! u" E* m
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())! y) [* l- I- r* ~% j9 Z1 e
$ q/ y. _: _9 _#define getXInvCloseFixBtn() RX(0x3db)
/ `6 C7 P0 B/ i#define getLInvCloseFixBtn() 323 s1 y6 `5 [6 z8 c% _9 V R
#define getYInvCloseFixBtn() RY(-0x63): u' U' G$ `6 Z3 O% r8 ~: `. C
#define getHInvCloseFixBtn() 32
6 a7 e' J6 j( w+ n2 u3 ]% O#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
. t/ r- s& x4 C8 R+ V* i4 T+ D- J; e4 D0 M6 b! T
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)3 G2 A* v! z' c
{
4 D9 m) ]2 l( K. F& ^ DWORD mx = *D2Client::ptMouseX;
3 z7 i) n+ ?2 I8 T( ? DWORD my = *D2Client::ptMouseY;
" R4 L9 k6 g* S5 F2 L- w3 ? if(isOnGoldCoinFixBtn(mx, my))
& j1 [' T6 @( u8 [' @, |3 t return TRUE;' I+ p, [6 _& ^9 G8 @
return FALSE;3 Q# i$ ]) n" s2 n
}* ]6 X T7 u, E9 Y
__declspec(naked) void caller_goldcoin()0 W) c. P' t. c$ i. G8 F# q
{
# |% o, @% W1 M1 k5 I __asm3 n/ @5 b. b$ v0 N. }" o% e
{0 q! a# M* f# i2 v. a& q; O; w
push ebx
4 X2 D8 H! `$ ^) B5 L% Y mov ecx, esi& U6 k4 z7 Q2 t" K/ O2 C
mov edx, edi1 U0 g# ]+ K y7 d @8 I, G$ R3 l2 c
call m_NewStatShow_goldcoin
! E! f; j/ q6 Y4 ^2 d pop ebx
* r( p5 P6 Y- b* ^) }* ]$ _! Q( g5 | pop esi
. x3 m1 X. W; {* m% Y a, M retn f( V& }3 ~1 K9 _5 I4 h0 \$ X
}- n9 M9 i5 q$ L1 i% d5 q
}
" i2 s2 E$ @6 w/ Zvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])# Z6 G& v p+ a5 E5 Z2 n+ ?: T
{
6 d& G3 z& B# a. }% R if (*nXpos > D2Client::ptScreenSize->x / 2); u/ g9 S H* X
{
1 N: U! B, ]0 I *nXpos = getXGoldCoinFixBtn();; j5 p. {( c" e
*nYpos = getYGoldCoinFixBtn();
; }# D0 F5 @' R' g } W& y3 _$ \+ j* r3 @/ D9 X
}' S8 R1 Z {: k5 s) x! g7 G3 U/ }2 e
__declspec(naked) void caller_goldcoinimg()
4 c b- @" B) r. q{
% X o" M" @ U6 E4 h/ ? __asm
# D) D! U# p; U" |' V2 X% Y# A, ^ {- B/ Y1 v) H& @! D" I
PUSHAD5 X. j/ f0 O' \- b5 w9 v3 O+ b
lea eax, dword ptr ss : [esp + 0x38]1 V7 V+ F5 H$ O0 J' V0 B. E/ V
push eax2 i Q9 @8 y2 a4 u; V9 o
push dword ptr ss : [esp + 0x38]( A6 R# Z; O4 o
push dword ptr ss : [esp + 0x38]: ~- @& o* h: z. P, {$ w+ m
lea eax, dword ptr ss : [esp + 0x38]# o$ ?* [( [+ t! {3 P2 i
push eax
1 `" ^" g" |: q1 z lea eax, dword ptr ss : [esp + 0x38]. z8 B+ G: W5 i2 Q& n# i! M) |* o% _
push eax# z7 J& h3 Z9 p. Z
push dword ptr ss : [esp + 0x38]# |$ U- {( U1 X; o
call m_NewStatShow_goldcoinimg$ A1 f: [' n1 r+ a5 D
POPAD
0 f) f1 ?; j& B/ D JMP D2Gfx::D2DrawImage
. H4 b# p( q+ _8 D6 P$ D }
: I6 X3 Y! [# Q}
0 `3 X' ]- E v j: `0 m' JDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
! Z: b! Y% q5 N{
0 J$ `; G5 [% l8 M3 a if (x > D2Client::ptScreenSize->x / 2)& i% n# a( o) ]3 G% U
{
4 g% q9 U) }; \: W2 \ *y = getYGoldCoinFixBtn();4 n, H7 D3 [& o3 Q
return getXGoldCoinFixBtn() + 32;0 _) D& s' ^0 ~3 |1 M
}
8 n- l: K, W3 V' A/ j2 _2 j return x;7 V4 E4 `0 R- K7 c3 s3 @
} r+ a% y- \# [/ I
__declspec(naked) void caller_goldcointext()5 A# B9 ^1 V- n# V
{1 U8 R/ u Z8 {+ f
__asm6 G* {" U' m% w$ T) U* t. ~& B
{
; g' c1 i# J) o: g$ m# ^0 u' c; F PUSH ECX
8 g" u8 B/ F' r& E0 B7 ?4 J( \ PUSH EDI9 s6 q. H& q' V" h
PUSH ESI
. k3 U) }& v# d PUSH EAX, X9 T2 k6 K9 O3 E+ C
MOV ECX, EDX
: h* _; D I9 \ LEA EDX,[ESP+0X4+0X10]+ q" f7 ]3 A: R) `% _3 z5 G3 E
CALL m_NewStatShow_goldcointext1 W+ i/ o! |3 ?
MOV EDX,EAX
. L6 F% B1 K% ^$ ?. e$ e) W POP EAX0 S4 u n- N d5 m7 D; A5 q- T1 V
POP ESI
( x8 H: O% Y8 Y; d4 k POP EDI. U+ p+ b3 B0 g/ g' O4 f+ z
POP ECX( a; s/ Q6 ^0 q c6 C: @
jmp D2Win::D2PrintString;
$ |0 H/ o. A0 C0 I: y7 q0 m# a }$ @( \- N9 s+ U% L! t
}
, C) I9 l" b# c6 a# }1 ]& r. X; A; t F' l2 b4 g
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)9 d& g; |) h. A. ^4 P2 F: \. L- Q
{
" e. \# D7 p7 a9 H- X% ~- M DWORD mx = *D2Client::ptMouseX;( [. a! L7 `& U% k }
DWORD my = *D2Client::ptMouseY;
3 C6 Z1 y8 e, q5 r: Q( \3 S if (isOnInvCloseFixBtn(mx, my))1 B' Z X- F8 a. L! a. R6 b
return TRUE;) X3 Y2 x6 k3 Z3 U' @
return FALSE;
' [4 `* m) r" m! `/ M; b+ K}/ E6 }1 W% c, x3 O
__declspec(naked) void caller_close()
" A4 t& G3 R7 `7 t" k% p K{+ k! R. P5 F. x0 o) Y
__asm
. L8 |3 v( t- W" N {3 [' F z2 G, Q! x# I' m; ]0 I
PUSH ESI# q$ ?+ U0 K4 S/ M
push ebx
! ]( D- a# k5 ?9 j5 ? call m_NewStatShow_close
+ Q2 u3 _$ Q9 c pop ebx4 p! h W, s9 K
pop esi; ?7 g" G6 l3 ]/ E7 a0 w/ m
retn
: A! t+ L6 Z% w/ b$ T" e }
1 W, v' v3 T* x3 t9 b}
$ j% T, y* F# |6 s9 |) j1 S4 ^) }void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
6 D$ b- w4 W4 Z9 K& _! c{% X z- E- c+ \
*nXpos = getXInvCloseFixBtn();7 p; a! ^ N; R* g' { N% A0 k
*nYpos = getYInvCloseFixBtn();
& }; Z+ Y* `% H7 k3 c/ r4 x}
: U; U3 E3 H* q2 ]. ^. B% J__declspec(naked) void caller_closeimg()
( C2 R6 k1 J& o{
e" y. i& G. _ K5 V2 S __asm
6 M5 Z: X; f" y e {/ A8 X9 _+ I3 a2 ]7 {; z" R
PUSHAD' W2 T4 D/ G5 u9 W
lea eax, dword ptr ss : [esp + 0x38]/ w' e3 G# y4 D
push eax# l- x6 J' _# q/ |
push dword ptr ss : [esp + 0x38]
c5 J. E/ H8 E push dword ptr ss : [esp + 0x38]7 H" {8 T3 s0 l2 ^
lea eax, dword ptr ss : [esp + 0x38]
% ]: \5 k* O0 Z" b9 m% L. m push eax
/ Y" M0 D Y+ x' G& _2 ~ lea eax, dword ptr ss : [esp + 0x38]5 E! I- f! S/ I% |
push eax
9 t* n+ ^) H' b T push dword ptr ss : [esp + 0x38]
6 s P$ F7 G9 V4 }' ?$ O5 c call m_NewStatShow_closeimg W3 o I- W/ T! M5 B5 g
POPAD; p+ V1 F/ H" j' r6 u Z1 r% s* h
JMP D2Gfx::D2DrawImage
, c, T' d) x: `- q6 R, I }+ m: O: y6 h4 t$ f+ y
}$ P5 s5 b( E R
$ L* J( R" i# h; R6 Y. F" u' Q( H/ F1 S, o) [- P( n
|
|