|
转载 i5 W* {4 q2 n1 z9 Z: s
BY SJ* o7 m m# D w3 ?' p7 {" a
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
% \/ r) E8 q# Q0 n
- T) d/ _) \, B; D' ?: fD2Gfx::D2DrawImage-10041- l. w) |' `& N, q1 L2 I; Q7 e
1、修复技能的背景(不需要可以不要)
; p: Z2 L' G/ J2 v/ ^) @+ F8 Boffset = D2Client::GetAddress(0x77AA8);
2 W. r2 C) J, AMemory::SetCursor(offset);
1 D8 u- W2 d5 \( rMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);. F- G: l; W+ _
) N: b( r- c+ W7 l6 b+ Q# Nvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]). z9 n. S$ u7 l, B
{$ [# Q, Q; t# r C4 p7 B
//Init data for print image
) u) j) u% F; ^' L1 n( ? sDrawImageInfo data;# n8 }7 f/ t+ H) B/ G F$ T
ZeroMemory(&data, sizeof(data));% p' J. a5 _& p; E
1 p9 Z! i$ _9 G! U //print background
' D, }- g: o$ n: D# Q5 I setImage(&data, spellBackgroundImages);
) k! N0 U7 {3 v( L& d setFrame(&data, 0);% w3 A. ]" Q4 _4 [& L4 ^ T
int fixx = 511;
+ Y; m! L* e" `3 e. x int fixy = 9;
E( X: h5 [7 I. W; F: W D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);* m: d: c _# M: Y8 _! v# [
setFrame(&data, 1);
6 v: G6 }7 n7 j3 R D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2568 p" s7 W7 S1 E2 q
setFrame(&data, 2);
# n4 f$ @6 T) u' G! c2 q, N D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4328 \2 S7 O" O$ R$ t$ e$ R
setFrame(&data, 3);
5 C6 T. i5 ?; M" ^( B D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);# v4 [% B8 }6 y7 N/ `7 R- y8 ^
}
C9 L2 d* \# l3 z q# q__declspec(naked) void caller_SpellBackGroundFix()
9 f, ]: S; n8 |; _( d/ _# a{
5 a) L7 k5 _& U& |) h __asm' Z: e- U1 X! q* P6 `% I! i8 H
{, j1 X, S# {! C; I- i
PUSHAD
& D2 ]: [ \" y lea eax, dword ptr ss : [esp + 0x38]
) k+ A$ R# t7 _+ C8 \ push eax& {: z' y* }" @, C; ^- U
push dword ptr ss : [esp + 0x38]
; C0 x8 Q% w% I0 d9 V5 G9 X, M5 U push dword ptr ss : [esp + 0x38]. |2 V& F6 m, X2 a. [; Z3 m" F" l
lea eax, dword ptr ss : [esp + 0x38]0 p% i, R" v7 j R% P& W
push eax B/ x3 m% y3 i% o6 _+ U2 r, M0 @
lea eax, dword ptr ss : [esp + 0x38]7 J' i9 j0 c m0 t) t
push eax
3 p% G5 x" x/ {" b9 R push dword ptr ss : [esp + 0x38]
( U9 {* ?0 I% q# r- m call m_NewStatShow_SpellBackGroundFix
# f- p& J( s/ z* N, o POPAD- J& S% y9 m7 f) f% d; @
JMP D2Gfx::D2DrawImage8 r1 D5 S% ]: v1 C9 t
}
8 ?/ {/ u$ [+ k" E6 h; i" O}( s5 A# l: c5 R4 R/ Q) r8 \- l, I: m
7 D, p) T/ s4 m6 J" L/ G9 C& ~
2、我们如法炮制小站的背景3 R3 T" {. d# H6 t
! O2 x& r5 ?3 Z7 G9 K
offset = D2Client::GetAddress(0xAB010);
* L$ R4 t$ g( [' [+ X/ RMemory::SetCursor(offset);
. d7 N- R3 x7 vMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
! _. ?5 H; O7 F' y* ]1 C3 r
3 V$ w8 J5 y: zvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
3 ]8 s5 Q4 d( u+ u2 \1 B{" J6 N6 W: m% M
//Init data for print image: D, d& x: @+ f' N0 [9 q
sDrawImageInfo data;
C* r) ^1 O/ y1 o$ A ZeroMemory(&data, sizeof(data));, W$ q1 A9 d$ k8 @$ g$ H( m/ a
4 t4 B, y. p+ W/ [8 c/ n3 z //print background
: C/ r7 f& D5 S, } setImage(&data, waypointBackgroundImages);
) W/ T' H$ f" Q/ a0 L setFrame(&data, 0);
% K9 ?% S, n) x2 ~4 i- X! F int fixx = 0;' i: T+ _, T K
int fixy = 9;
6 e+ y0 L" {# L D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
. v1 Q& ~$ [ @& R* v* l, i6 L setFrame(&data, 1);
% W! M5 F5 D: w D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256 J, C( e5 b& d
setFrame(&data, 2);
9 d Z8 c. H Q. K- J D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4329 D$ b P/ T' y8 g' x$ i7 Y+ ~# g
setFrame(&data, 3);
; R+ w& B% V3 G- h3 A D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
! l9 w) D0 v( P# L t. q8 u5 x/ h9 d( d1 O! g
}
& J; j- n5 T+ B. I+ j$ C' C__declspec(naked) void caller_WayPointBackGroundFix()
6 k$ U Q$ \ O+ Q. R{
& U" h6 J0 w- { __asm" h+ V# d5 \- R
{
( u! U8 q# }$ q* K4 M PUSHAD
1 N3 S$ W; v) W/ e6 R1 d% U$ Y- Q' u lea eax, dword ptr ss : [esp + 0x38]$ k, V) ~, ]3 F2 V
push eax7 Q" C, E: z1 e; c/ _3 l6 n# ^
push dword ptr ss : [esp + 0x38]- K3 L; B- w" n: s ~
push dword ptr ss : [esp + 0x38]
1 @ j. ^- c& W+ j: m) | lea eax, dword ptr ss : [esp + 0x38]
& {2 E, y% |: @) x1 {, Q push eax* C$ W# A* k j0 L5 S6 }
lea eax, dword ptr ss : [esp + 0x38]
/ ^( p$ P$ t6 ?+ ` push eax+ D1 X* ]2 ?2 o
push dword ptr ss : [esp + 0x38]' Y2 t9 u8 b6 Z+ W
call m_NewStatShow_WayPointBackGroundFix
3 L, \; J* c, A9 u$ q POPAD; f$ M6 T. R$ v# T8 T& O- ]
JMP D2Gfx::D2DrawImage
5 p! o$ ]4 n) D3 y: E }
2 T! E0 Y i: M% I}
; a/ k) X: w3 X1 o f
, Y; c1 K/ z% R( Q3、以下可以搞16*16超级箱子-腾出我们需要的边缘
' e, m7 C- ^: r6 }7 |腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)* S+ J& _+ U6 ]4 U4 q0 }2 U
{
2 R+ ~% g: X3 t5 r$ m9 w: i; U5 L2 t class D2MultiRes : public Library<D2MultiRes>) r/ K# L% [3 ?% e
{3 p( E' M' }5 B- S
public:
; Q& ^. x' p, {' u& q& R& ?; [ static void Init()5 w7 G) i4 g' K3 j: N! q+ m* X
{4 R& x* U8 m+ u/ F( p- Q
Name = "D2MultiRes.dll";
) x7 ^3 P, b# f5 J& i% u7 } Offset = LoadDiabloLibrary();5 m0 F5 W& R8 f" ], D
}
, h' k6 R+ L% T+ \ };
4 q& u0 k! y* c S; {0 Y D2MultiRes::Init();
% e* l1 [2 f! y _, A) P: r" w% L4 k D2MultiRes::HookLibrary();
5 P$ d" x; C* b! {. S Q
( B+ v- r3 H% L! S' T. E: |! M, h* }4 O+ P0 w* s3 X
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
3 P* L, d( z# E7 |8 x, ~" C Memory::SetCursor(MiscFunctionsOffset);8 [: V. U/ l& F- u4 i% N2 ]
Memory::ChangeDword(0x1b0, 0x200);* L3 {% X# |+ C
! D d* o4 z' u+ o6 P' j
: p4 ~% ? ^% Q MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
4 I( ^( s y* W2 H } Memory::SetCursor(MiscFunctionsOffset);
; v2 X$ k* R$ W/ m' } Memory::ChangeDword(0x140, 0x200);
+ \2 K- L4 r7 y5 x) r
~+ e) B! c- l5 n* a Q& S8 S$ D5 }' v4 f( W/ u) z) g
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);4 k7 ^% |( o! v, l/ k7 R8 v0 [& e
Memory::SetCursor(MiscFunctionsOffset);5 _' e1 Z7 w7 M0 w! ]
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块- A+ s. V3 |- y" m3 f
# m1 o# h6 A% q' q | MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);0 E, V( O! h! O/ t/ v* }2 T
Memory::SetCursor(MiscFunctionsOffset);
, u: o, f; L4 I Memory::ChangeDword(0x200,0x299);//下边缘 299最大
" G$ m# a. @ k2 S' E: H
( _" s$ u& j0 s l$ A9 n MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);6 j- ] Y1 q8 L) z: l; k
Memory::SetCursor(MiscFunctionsOffset);) p" X' ~. l( k. P( A, b8 T
Memory::ChangeDword(-0x280, -0x400);//这个不要动
# @4 Z# C) H- W! Q9 J }3 b, I- t2 D. x$ Y" ?: r) \ X
8 W- k' Z0 s7 _0 z! l$ A( i3 @
4、快完成了,是不是发现金币啥的位置不对??) ]% u! T+ B6 |3 I% ~' G3 C D! S6 w
4 u# n! E0 v7 C' r: o2 M$ d//这里修正我们的装备栏
i# h' c# Q! J3 E# ^, g offset = D2Client::GetAddress(0x99B6C);1 I! d" ^' w' ]9 u4 v: \2 ?9 m2 I
Memory::SetCursor(offset);* W+ |1 L8 m! o
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
" }* |- e( g) G5 f. Y- p: V
0 n2 ?- S; e. }/ C* T7 K8 H; B offset = D2Client::GetAddress(0x99BA7);
5 X/ n. w' E" h8 h! p Memory::SetCursor(offset);
& A9 d% y, [' g7 Z, b( y3 K4 C" b1 F Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
; I4 R& |9 Z2 X8 N& l, i0 q
3 d. i5 l5 m+ e6 ] offset = D2Client::GetAddress(0x99BE2);6 _; ]9 r, i0 ^/ ?) G6 x
Memory::SetCursor(offset);
: s6 D) f3 |5 f" J0 V. w( s Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);4 G/ L( x2 M" J/ A
. B) G; U8 P% @* G9 g% P; Y7 a2 I3 _
offset = D2Client::GetAddress(0x99C1C);7 b; l2 U$ u# h' g( X2 ]
Memory::SetCursor(offset);2 U* n$ u9 F, B6 @
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
1 A# r9 b5 W% E) C
' P0 i& i8 j y5 P3 C, o# t0 M //取消两个popup,偷偷懒不过分
1 v0 |; s2 s3 L5 i& P+ \6 B offset = D2Client::GetAddress(0x9386d);
4 c" ?; n$ L0 D' n. _! ?! P6 c Memory::SetCursor(offset);$ R) N3 \+ h1 x4 _* }1 {' B
Memory::ChangeByte(0x8b, 0x33);" ^4 C( r) n1 D4 P4 m' \- ^+ G
Memory::ChangeByte(0xc8, 0xC9);* H2 R- y- c& h5 A4 A0 n
offset = D2Client::GetAddress(0x9390b); i8 o) G0 T: i% y& i! b( C
Memory::SetCursor(offset);8 R$ w/ k H4 A. _9 K
Memory::ChangeByte(0x8b, 0x33);5 C; ]* |( @$ Q; t0 j" W
Memory::ChangeByte(0xc8, 0xC9);
1 H% S. N3 G/ o
C& R% h/ u) E4 _7 o O //修正提取金币0 `0 Q* v3 O4 x0 M
offset = D2Client::GetAddress(0x8D3E5);
. ?3 ]$ z. b# N Memory::SetCursor(offset);
# w! z1 K- ~) b |* G" Z0 n3 y) O Memory::ChangeByte(0xA1, 0xE9);' Z1 u( Z7 Z- g0 u3 V
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
: J/ j/ ^9 a/ u' p: B
6 i1 |4 j: I4 {4 B. v$ L; |: t$ v offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);$ }- w+ B3 p! o8 _6 o& `% g
Memory::SetCursor(offset);
. K3 Y: ?+ d- Z6 `& n Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);1 t/ T2 q# D6 g: T: @7 q
5 \& A- g0 u4 K+ L/ K/ [% S offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);* F/ f, e0 K% J5 u9 M
Memory::SetCursor(offset);
6 d }! M! H* S Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);3 I, \) \. D% u( |# W; ~
4 M7 Y- ?0 N1 ~! \( M% w9 G2 U) R7 v! r //修正关闭按钮
+ G5 U2 y" y5 ^+ @- V offset = D2Client::GetAddress(0x8BD90);
D/ F1 m4 x& G% O$ f, A0 t Memory::SetCursor(offset);
8 J2 n b0 m- T0 H Memory::ChangeByte(0xA1, 0xE9);3 ] o9 T/ A: u$ Y
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);& U0 r+ L- T0 f
; P3 c- N D) W) b
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);: a$ [) P# d* M# B
Memory::SetCursor(offset);
4 w/ `6 D* F! |9 d0 k Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
9 M4 n5 n) X( Y; m: k$ y7 R8 y% h% s" h! y
0 T* m- P z2 o2 P" ~' u& Q# N
//以下是细节# |7 Y$ M+ w! g
#define getXGoldCoinFixBtn() RX(0x2d0)0 l4 B! J- `" G! ^3 K
#define getLGoldCoinFixBtn() 32
( t: {' k3 g+ Q& d# F0 r#define getYGoldCoinFixBtn() RY(-0x59): `! a) k4 p/ p" J( @( H
#define getHGoldCoinFixBtn() 32
( r3 o5 J! Q, l u6 q* b#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())" n% k2 W3 g" O( G2 N( A
% w+ k9 \5 r7 Q- N( @* R7 T
#define getXInvCloseFixBtn() RX(0x3db)
" {2 x+ \5 s5 x/ N. }#define getLInvCloseFixBtn() 32
+ I& Y+ _% U$ {0 x* W) L" K#define getYInvCloseFixBtn() RY(-0x63)3 L% K7 R& ?3 J
#define getHInvCloseFixBtn() 32
" [( ?# z- c |! T# p#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())! v- m* A" r, v; I' b8 M+ ]" r6 k
$ Z9 H; l3 B/ z: V$ I o8 SBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)8 U5 v2 O% @' n* q6 U4 x
{) h9 ?3 J! k o) |* a& d
DWORD mx = *D2Client::ptMouseX;, |5 G6 e1 X* T: x2 g# v
DWORD my = *D2Client::ptMouseY;
: Q9 Y2 f9 }, u( @5 ^( ~- T if(isOnGoldCoinFixBtn(mx, my))
) ^1 E7 Y$ S; J0 y$ o" k return TRUE; Q) z1 @' [, E! }$ b# T6 O
return FALSE;6 W" ?% U! \% l! Y, a. d
}
. R- C( J* _$ c4 X/ A& r `+ h__declspec(naked) void caller_goldcoin()# z& L5 m7 T! Z! Y
{
; ^2 m- o/ v- T, k; u __asm; |& h3 A/ g6 u. C' U2 m
{* Y4 |$ s# _/ h, u- j+ z8 M
push ebx
$ v/ B9 t, _, q2 X mov ecx, esi
% w, d1 T* V$ K6 a mov edx, edi# s! I. {) G; u( h/ l/ |, B
call m_NewStatShow_goldcoin9 Z) V% _" { g2 s
pop ebx
2 T O7 i4 K( W( {8 @ pop esi0 Z, z8 E; ?) n
retn! M/ \. x3 p1 z! i7 j
}: Y) N, r, ~7 _0 b( b
}" t& B% b; p5 J1 ]. k6 D7 [
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
8 e: L2 L; Q) C0 m, S! B. A( r0 O6 v{, u$ c9 l- ^' E' ~
if (*nXpos > D2Client::ptScreenSize->x / 2)( \% R* z! p. [( K. Y: [/ t5 e
{: {1 ^7 D: V6 A; k0 k; q8 V
*nXpos = getXGoldCoinFixBtn();
& X- m6 P2 b* k) d& j4 t# C *nYpos = getYGoldCoinFixBtn();2 s# T% @! M! l5 R0 q# I
}' _# K% E% L- Q! w7 d8 s
}' N: w) s6 x# ?, @
__declspec(naked) void caller_goldcoinimg()2 T' Q) B- \/ b4 |, d+ Q
{
" Z- W+ x9 J3 [" U __asm
X" ?% r7 Q) v' |9 S4 _. {; Z {
: e! C6 p. b3 n PUSHAD
T# [# a& z w% f lea eax, dword ptr ss : [esp + 0x38]9 G# g% r: T9 P$ m
push eax! F9 [- {( e; U9 k# A% Y6 p9 q
push dword ptr ss : [esp + 0x38] u; @% Q8 v7 `' \3 w% F
push dword ptr ss : [esp + 0x38]. j8 _& b% Z; k; H* [/ L
lea eax, dword ptr ss : [esp + 0x38]% N, k! s3 u2 t4 T ?& ~1 Q/ i# O
push eax
; P. m7 v/ X+ _) }0 W- Y lea eax, dword ptr ss : [esp + 0x38]
. V% _ v) t. k push eax
# P% e% j1 G) @, q push dword ptr ss : [esp + 0x38]
7 U$ v9 @% B! i- M9 [ call m_NewStatShow_goldcoinimg
; l/ s7 ?2 U$ F% g POPAD
. y% I- |. ^8 I; X JMP D2Gfx::D2DrawImage$ _. n y0 m$ m3 h
}
( D2 `: E, n8 c, L}
0 M% i' g' R9 I# |4 W6 [DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
, E* p0 D1 V5 j2 \- c" O{
8 L" S, ?* F; ], O if (x > D2Client::ptScreenSize->x / 2)/ \- i) Y5 q& P" y
{* L9 H4 M' N/ N8 H5 X
*y = getYGoldCoinFixBtn();
0 k$ X! A$ U2 u | return getXGoldCoinFixBtn() + 32;. K5 d, l, }+ B4 ], W
}
8 J |& W! r, T) ] return x;
1 C4 b7 U) @. A) Y' U}/ j( o5 q+ T G L) ]7 Y: c
__declspec(naked) void caller_goldcointext()
" K% t' |# R* }# _" ?% P& A{
! j# s% W0 a$ B+ e& O __asm2 c, r* p; |/ g
{8 L I) _: P0 v! E; l I& a. k D
PUSH ECX
- M/ n2 i8 g3 ? u; E PUSH EDI8 Y; G, H' F" S" b$ x6 |) Q; S
PUSH ESI, P: _) g5 ]; i9 ]( I' E: H
PUSH EAX
& \4 Y9 ]* ~7 S- ^0 L# C MOV ECX, EDX
1 R: {4 A8 h8 y, ? V( b LEA EDX,[ESP+0X4+0X10]7 v4 s c) I* c7 s6 J+ S3 J
CALL m_NewStatShow_goldcointext |9 [* E: ]: w4 ~+ ?- }* L
MOV EDX,EAX
/ w, e4 m6 x, P8 T$ D POP EAX" {2 ~ `) J0 F: ~/ r0 g& B0 [
POP ESI, I9 s* U8 r k
POP EDI
- k; b5 S; l3 c+ }0 Q7 ~ POP ECX
z/ L9 c/ G# \1 {* l, Z2 E# T jmp D2Win::D2PrintString;; U- I5 g; ]$ | u2 V
}7 t. ] D6 r) P$ L7 j, K
}; j* e; h- B9 }8 n2 M6 E
& S+ y3 z/ U0 `) wBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
. Y Q# @! n2 \: Z: |" ?. ?4 Z{; ]; W1 q0 j8 C$ _; i2 q
DWORD mx = *D2Client::ptMouseX;
- f# ]8 h8 i% R: f' Z DWORD my = *D2Client::ptMouseY;* s) U c% {; Y5 X0 U; \( K
if (isOnInvCloseFixBtn(mx, my))/ F7 }/ ]) C7 S* `, S
return TRUE;+ N, j/ l' |) r1 f' k# c, ~7 A# l
return FALSE; `. n9 t- t( w7 p
}* Y! k0 A$ x3 k1 R) N
__declspec(naked) void caller_close()4 Q2 ?/ H: x9 x* k
{
* Q' y" G! r# l9 P. T2 p* v __asm
' F, ^3 P; b# j5 F, y {! \$ R6 q- K- ?; f' e8 x8 Q
PUSH ESI9 u: s: V: p9 q
push ebx" g( y' ~* Y. V, s
call m_NewStatShow_close
I% n1 k o8 F) {/ U* \! _" T2 F" x pop ebx ^: i% G, Z5 r% _4 h
pop esi+ _. V' p( N% O: z" t5 j7 Q0 ]1 B% H
retn
& ~1 ]! a6 |+ _( m' _9 a, g }5 }/ W3 X. h1 Q% A. k# m$ x5 U
}1 f$ V' p% R2 C2 o" V5 c3 `
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
/ [$ B! d# R; u% b( j$ Y' C{. a1 x& h3 b/ j J+ a. a3 C9 K
*nXpos = getXInvCloseFixBtn();% l' `% ^1 j( C7 f D
*nYpos = getYInvCloseFixBtn();- X n( f8 |. G- i' w' A
}; u Z' K# v7 f3 }4 D: v
__declspec(naked) void caller_closeimg()
- Z: q3 a' f0 e: M{
' `7 [& Z1 w. u Z6 `7 Y3 j2 L2 J9 [ __asm
" J4 l. y7 }" O5 U {
, ^/ z; h2 D9 X( I PUSHAD
! o/ \; U6 Y0 z, h' r& X lea eax, dword ptr ss : [esp + 0x38]
" i& h, c4 g R push eax, [+ M7 E$ @. ]4 i( u( `
push dword ptr ss : [esp + 0x38]
" `4 h* u+ p) e2 Z5 ], s push dword ptr ss : [esp + 0x38]! i8 W2 f; }0 I3 S; C% [
lea eax, dword ptr ss : [esp + 0x38], S" r5 _0 d1 l5 B) R& }' a; D
push eax2 J+ U% v% O8 P6 I
lea eax, dword ptr ss : [esp + 0x38]/ u5 O5 V7 H4 a# z! ^4 B
push eax
# M3 Q2 X$ s% R( b9 v+ h9 _ push dword ptr ss : [esp + 0x38]& s9 b! A2 S1 y( P
call m_NewStatShow_closeimg7 U6 e' \& i5 v% h+ T: B( D9 v
POPAD( `* v4 O( y, S
JMP D2Gfx::D2DrawImage: L6 p2 e; f m
}
; R' m- J+ M8 L3 o# r5 N) e% _3 v}5 g. F! X1 b+ Y: H
4 `) l5 {0 E S5 K7 [
: j: t4 l# R4 I, H* L% {5 m |
|