|
|
转载3 K. b; j" I3 v' \
BY SJ8 j8 C t( P% |8 Z) v
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)) n# Y+ D1 D9 G
}7 B' X3 n B3 p) i+ ED2Gfx::D2DrawImage-10041) P: k+ {/ H" y" d- y
1、修复技能的背景(不需要可以不要)
& u$ A' R+ t- |offset = D2Client::GetAddress(0x77AA8);
( s/ n1 x+ Y4 V+ o- A& AMemory::SetCursor(offset);
$ o# h2 [! ^( k" B7 I/ K/ a0 Z4 ^Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
/ q2 z9 f9 Y, s0 E8 [8 v4 C7 J. |: {% d
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]); }4 q+ C1 v+ F2 d1 y. i5 v+ `
{
4 M8 O: T8 _; n0 H4 B5 D+ O9 y //Init data for print image
" h# y, z) Z( F" C) l sDrawImageInfo data;
" U+ D, X9 N! |5 I0 M8 v1 h5 \ ZeroMemory(&data, sizeof(data));2 D+ \: S, Q; V# ?! {
$ ?& K+ F$ k& F9 \ //print background: f' r8 S. ]& j, O! Z+ x: ^+ O
setImage(&data, spellBackgroundImages);. R! Y* z' R+ E
setFrame(&data, 0);
( Y3 G: s* E+ G% ~ G9 K; r int fixx = 511;
8 s3 W, i9 L/ k3 O3 _ int fixy = 9;
9 `- [) }7 }' I0 X; T1 k8 D8 M D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);8 O/ R" i) e4 a6 g3 |1 m. N% m: S
setFrame(&data, 1);
4 @5 z* M) `( A8 O' c' } D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2560 N9 ?7 _; J2 m8 w4 f
setFrame(&data, 2);; A# o3 o3 y* X5 p- c
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
2 j0 L/ E7 Y% z0 H( L& w- D* X setFrame(&data, 3);2 ~6 ]4 O3 w5 `! e5 B l; X
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
1 f' |/ C1 M! c) \}
' O/ A+ q, H5 c5 f* _& N__declspec(naked) void caller_SpellBackGroundFix()
2 V6 E% j$ _8 e+ r5 x{
8 L+ p; O, S6 o3 H! d+ ^1 i X __asm) j7 P% X6 A5 [+ w4 a5 A" q, H
{
( X# ~6 r8 m( R" h9 O6 e1 q PUSHAD
9 N( Y$ Q8 B9 q; K lea eax, dword ptr ss : [esp + 0x38]/ o! l6 M. J* L: ~
push eax
2 m% e* y! I% Z push dword ptr ss : [esp + 0x38]* Q* p) u( I( \$ E/ G% A" r8 j
push dword ptr ss : [esp + 0x38]
2 D) T5 s, Y' _% T9 v H+ G lea eax, dword ptr ss : [esp + 0x38]$ e+ a- t0 _" W% d
push eax
: I5 k% Q% `+ m0 |7 B lea eax, dword ptr ss : [esp + 0x38]% A7 w: }: P7 C- u* r+ l
push eax
. [+ W1 V3 ^ K2 x+ o; y push dword ptr ss : [esp + 0x38]
. z+ ?" h- M, g% M call m_NewStatShow_SpellBackGroundFix: w( b% _) h3 j, d
POPAD+ P; |) Q) p' M. Z! S
JMP D2Gfx::D2DrawImage
& t9 W+ v A, n- }! `) F: b9 t0 Y }
1 _3 H3 u8 D B2 v& R}
k+ P/ y% R; K& o
7 Q0 ]4 i4 P! o6 `" F6 `# ~. [2、我们如法炮制小站的背景4 t/ K3 a/ a, ~) }
* N& n% ~" Y5 C4 L5 `6 e' T
offset = D2Client::GetAddress(0xAB010);
; f6 H. G% _0 P2 iMemory::SetCursor(offset);
$ z+ H: T W r* HMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
& g% l, w/ u! |& c# H5 b# n# ^
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])1 Z! V5 w0 O' O3 E
{
7 b( ?5 n$ u7 d( M! V1 | //Init data for print image2 l6 U+ g: j$ ~1 q# q
sDrawImageInfo data;
: M2 @; x, i# x2 E! t: h6 Q; Q ZeroMemory(&data, sizeof(data));, t; w3 U9 k1 ~! r+ k& G" S7 f. I
2 E* C, |& i: d/ C8 ]
//print background
8 N2 Y A- D2 T% _( A7 ]% h# l setImage(&data, waypointBackgroundImages);
4 B( X8 [) P4 h) Y Q setFrame(&data, 0);
* S& F- Y& H1 t5 H n int fixx = 0;+ p0 J* V/ r2 ]# V8 g
int fixy = 9;
0 Y7 C0 T0 m9 y- F% r) V$ a( V D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);$ A' j9 b/ B3 b, F3 Q; g
setFrame(&data, 1);
! T2 f' T: S8 g [# g D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256* o$ m+ s, a: G
setFrame(&data, 2);
8 `4 E( s A, ~. z* l* P' k; G D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432% B" }+ f9 \# A$ Y# s
setFrame(&data, 3);4 C8 l4 Q& G( @7 l' @6 T
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);5 A/ K6 d* u4 m4 w' u
8 r/ r/ H6 T/ J}+ g B: u$ d9 y5 L/ y) ]; w
__declspec(naked) void caller_WayPointBackGroundFix()
( c2 h9 O; G* T! ]6 C) L6 u{
/ P% b- f: U" Q5 p4 E+ }. c0 v __asm* a" c1 H1 }4 n- F
{
; E! l2 O% X, W. J/ B8 M9 A( y PUSHAD
0 m- K, }2 V% p- i lea eax, dword ptr ss : [esp + 0x38]
7 C' \1 l0 I% T4 E, X push eax
( X. c3 o4 n9 f4 O# ~ push dword ptr ss : [esp + 0x38]* w; N- w+ z' n3 X; |
push dword ptr ss : [esp + 0x38]
! l& B4 I: Q; U9 o7 h' R lea eax, dword ptr ss : [esp + 0x38]& E. n5 |0 `7 r/ |
push eax
/ A6 ^% X+ ]. @ lea eax, dword ptr ss : [esp + 0x38]5 S* `: k8 b) o9 `1 P2 b
push eax3 q9 A2 L$ T- p/ R
push dword ptr ss : [esp + 0x38]; b1 s; k k+ S1 N# s
call m_NewStatShow_WayPointBackGroundFix+ H3 ?/ r$ p! q/ |2 \4 ~( C/ S
POPAD
. k6 O0 u; y1 v/ ]) Z/ G JMP D2Gfx::D2DrawImage
+ w# F0 _7 K4 a) Q- g. E }4 a1 D; Y$ U X
}
9 |' o9 ^1 E4 p$ f3 ?
2 L0 G* a, [; O. X. h& }3、以下可以搞16*16超级箱子-腾出我们需要的边缘4 g' h8 \+ j/ \- a1 C& |: R
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)( O9 j/ Z [7 x# B' j; b
{- h2 H, B! p" a0 T7 R
class D2MultiRes : public Library<D2MultiRes>4 Q. N! d, e7 V" s
{
- L5 `8 X# p4 |0 K2 h public:* H! Q" g0 e4 ^+ p/ @
static void Init()
3 D9 T1 F/ B6 I. t0 _2 _! ?/ } {
) A! H' Q+ m9 f0 |( e6 m6 \ Name = "D2MultiRes.dll";/ `" J. t% S# Y5 u
Offset = LoadDiabloLibrary();5 C& R- L1 w% F6 `+ J J
}
2 t% t' B4 x- Z' j* K };, H5 H8 m5 }2 \
D2MultiRes::Init();* S$ ]# \5 {4 j, `* o8 h/ X( z8 b' l
D2MultiRes::HookLibrary();
7 h5 y6 Z/ K; b" N3 S, M8 \# P
' s D6 ^" F# _! d% J" u# G5 `
6 x* C$ T1 _" L$ a$ L; ~ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
% o% f/ \3 m2 x) I; @ Memory::SetCursor(MiscFunctionsOffset);. L) b3 `" G/ Z
Memory::ChangeDword(0x1b0, 0x200);, o8 m* C7 a# W$ G( G2 z' ?% r
9 r$ r7 p2 D5 f
7 z1 q6 C. L4 e- M0 m6 f- V3 x, c
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);& G9 V1 T7 u6 X+ @& r
Memory::SetCursor(MiscFunctionsOffset);
* V5 `9 ~, c9 z: t P3 D0 P9 ? Memory::ChangeDword(0x140, 0x200);: O7 C, l* s" Q/ m) f
' d, Z f& }6 ^4 a8 a2 P7 E9 x4 L* M# Z6 d( Q
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
' L. _1 R/ Q n( \; ?# G Memory::SetCursor(MiscFunctionsOffset);
3 R; K/ u; Q4 O6 N Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
8 e. J0 B* m. t$ r/ H. `! m/ f8 y4 O) u P; I( D" j
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);) \+ @/ c( s( q; |
Memory::SetCursor(MiscFunctionsOffset);, q$ W0 x- P r, `6 @
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
7 ]5 S6 v6 Q% l. l( K7 I
& G- g: t4 g% }* W MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);( W+ {; v% x! N, H$ g* L2 d, _1 U
Memory::SetCursor(MiscFunctionsOffset);! x4 J, e- Y: ]: ~: {
Memory::ChangeDword(-0x280, -0x400);//这个不要动
$ C3 E1 @' O [- X$ g1 ^ }
1 [) \5 `" f1 F5 Q9 B6 z
6 H: x; P4 {: e _6 z" F4、快完成了,是不是发现金币啥的位置不对??
5 _' h# H8 x' Z: \% I" t6 D9 L5 T5 h9 `7 @! }& h% F
//这里修正我们的装备栏0 t2 _2 s2 G8 ]+ j+ o8 q
offset = D2Client::GetAddress(0x99B6C);
4 G; \& L2 a! E Memory::SetCursor(offset);
, t6 O/ o5 w5 J. ?* X) O+ ]- i1 P( G Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
' `8 P/ U1 K6 X4 x8 q$ F- t) W+ _, H) W# A0 h
offset = D2Client::GetAddress(0x99BA7);: i6 f8 p! _: t* \
Memory::SetCursor(offset);
: V. |6 a/ e+ |/ x Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
7 K" H! s+ u( L$ s
0 D+ C; L- p; d! e4 x0 ?5 [ offset = D2Client::GetAddress(0x99BE2);
& r# J9 U# [# r; F: [; c Memory::SetCursor(offset);. c- Y! a" C& o& T q3 ]
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);7 a" F! p- X8 `' k8 h- K- w
4 |! x$ A. \- Y. T) ]1 V, u, h
offset = D2Client::GetAddress(0x99C1C);- B6 R$ \/ K' b9 V& e
Memory::SetCursor(offset);
/ q: W* k, F2 @* b# S9 \8 L Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
5 Z' [$ ~! M. }) m/ L# H- N4 [8 U( p/ O
//取消两个popup,偷偷懒不过分0 }0 _0 n2 ^+ K1 u$ {+ x# V
offset = D2Client::GetAddress(0x9386d);
5 ]/ I8 G& H1 S( \* i Memory::SetCursor(offset);
+ U* g, m8 _9 d Memory::ChangeByte(0x8b, 0x33);
! y: |/ D/ O5 Q! T# k* k- V Memory::ChangeByte(0xc8, 0xC9);$ S E [7 f/ J3 b* _0 w
offset = D2Client::GetAddress(0x9390b);
; e7 o7 w, b" o. z Memory::SetCursor(offset);8 u8 {3 [" u% \" D
Memory::ChangeByte(0x8b, 0x33);- L8 V2 ^, n3 S/ J ~5 q4 H
Memory::ChangeByte(0xc8, 0xC9);6 C! h0 _% k$ O' Z
& n( ]1 U V& e6 {
//修正提取金币# R2 x+ s& h' P: M
offset = D2Client::GetAddress(0x8D3E5);
8 ~: b, O+ r! I3 @- B: g ? Memory::SetCursor(offset);' E! |4 Y* M; [! h. A6 }/ v
Memory::ChangeByte(0xA1, 0xE9);, O) U/ `( m! ]" r- I, l9 a
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
* E) ^# [7 v6 N4 I% t0 R/ I" m* j+ a, U
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);$ A: u& H: |; O8 p: D w
Memory::SetCursor(offset);
5 t8 j; j. v/ o9 A5 T Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
) Z. u7 p. y2 ]) \7 I9 N$ f$ o2 S, S. N; I! N5 i
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);) t7 {9 E H- ?; L& v
Memory::SetCursor(offset);
% w$ I$ \/ L& ]9 G) [ Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
, @# V) A/ f8 K% z O# W( |
' ^ V* g }$ p+ t8 {: y //修正关闭按钮
( P8 f+ n* g% T9 d& Y# s offset = D2Client::GetAddress(0x8BD90);
- V1 q$ g# ~3 x Memory::SetCursor(offset);) [: g7 G0 s% i4 N- r
Memory::ChangeByte(0xA1, 0xE9);; R/ ?% V) B1 C; g1 [
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
0 C) O$ G! t, t" Q
. L3 R9 C3 q/ @& V! E offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);) y C/ m: g& _* I m' d) \
Memory::SetCursor(offset);
# l( `) N4 N7 m+ c) i Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);# ~4 N( [: P" B9 V! T! T
3 V, u4 x: `! k! |% z
' H9 l: W5 O; @* ]) u
//以下是细节
# x* i# x6 [* d% Y( B9 J" n#define getXGoldCoinFixBtn() RX(0x2d0)
8 p- `1 r; o7 h3 L#define getLGoldCoinFixBtn() 325 r( c i- U' `+ n; O1 ^
#define getYGoldCoinFixBtn() RY(-0x59)
/ x9 F# O, v4 v4 b7 U#define getHGoldCoinFixBtn() 32
, z' e# _$ z [( \. V h7 w( g# k#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())- P% Y: I$ O3 G
, {' h( f- T2 k5 @ m9 j2 h#define getXInvCloseFixBtn() RX(0x3db)2 _& o2 ^+ N/ Q/ `
#define getLInvCloseFixBtn() 32
! `. Q- E1 u( e#define getYInvCloseFixBtn() RY(-0x63)
% i/ t: B* ]$ |#define getHInvCloseFixBtn() 32
1 H+ E. } u) m& E" [#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())# ?$ b4 A1 `2 M. H
$ N8 X% W s! L7 v
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)4 h: y! L( l! @. z: L
{
1 ~1 ]4 I& t& w% z DWORD mx = *D2Client::ptMouseX;' ~; d0 e7 L* u$ T
DWORD my = *D2Client::ptMouseY;
3 C" z9 o; [5 k2 E( w if(isOnGoldCoinFixBtn(mx, my))
3 X4 |2 G' `% p! N) g return TRUE;
- w* G: }8 R* } return FALSE;
& g) ^7 i! D9 @; a0 B0 K \6 L: E} w3 u2 X7 ~. o
__declspec(naked) void caller_goldcoin()
1 m/ ^1 P% ]# g# v{8 z5 `; N2 c) m8 `. d/ Z
__asm2 [1 N3 ~- k$ M% d$ ?0 L. f
{9 \' T/ t& Q6 X0 {, J; Y/ s+ w
push ebx/ \ j2 U' h8 w* J* B# ^
mov ecx, esi! ?) C, l$ l4 u3 ?: Z' [( j
mov edx, edi
; d6 h- z W0 g7 c# I2 { call m_NewStatShow_goldcoin9 N: _) D. S% y. Y
pop ebx
( y/ Y/ W9 D# j& Z% u: t pop esi" Q6 H4 |; r. M* E3 t6 ]- u
retn
+ o1 [$ G. \" _; ^# L+ O& |, V }
5 { X0 j2 }: R$ _/ g- { q}5 i+ G4 H7 J- x' e8 x) ]
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])1 u) S8 h- g: \# j' T+ t" |
{
# u( C: F# ~5 }. R5 A5 ? if (*nXpos > D2Client::ptScreenSize->x / 2)
2 D1 l+ z& I- g w* [ {
0 \% m: \( s' y k* K+ k *nXpos = getXGoldCoinFixBtn();
% q2 |8 |8 h, t! @! J *nYpos = getYGoldCoinFixBtn();% X1 B; f+ j2 v: v
}& ^, C* c/ `5 K( q: V
}2 r' d/ l9 Q/ ?
__declspec(naked) void caller_goldcoinimg()3 z, h5 W- h- f# [5 c
{
0 b9 t7 h! X( [0 g! Z0 f __asm
: Q0 e: |4 r4 P% T* A {
! x' t5 U' j& _9 [' R3 L+ e6 Z PUSHAD
& Y# R6 ^) z; H, j+ T8 V lea eax, dword ptr ss : [esp + 0x38]! U! U3 W4 M1 Y0 q9 r
push eax
) f( s) A( K; y8 [ push dword ptr ss : [esp + 0x38]7 Y8 y3 C6 B/ k7 T) o: ?; q! C$ a
push dword ptr ss : [esp + 0x38]
- P! T/ }' i$ O! {9 g lea eax, dword ptr ss : [esp + 0x38]
" A2 @7 Y7 U+ ^# D9 {* E& |& w; [) ] push eax+ {9 L8 ^( ^5 E5 S
lea eax, dword ptr ss : [esp + 0x38]
$ v5 B, L# g" X) @4 r push eax5 ~! w- {" F/ ?1 ~ a
push dword ptr ss : [esp + 0x38]5 l, f* V3 v" Z7 ~- ^7 v
call m_NewStatShow_goldcoinimg
8 ]9 a0 }5 `# c5 e8 k h5 l. w7 i POPAD' R8 ^% ? a) r5 M$ b
JMP D2Gfx::D2DrawImage
0 a5 s' H. z) i }
6 R7 R7 p& i6 H* |}
; S9 o( n8 K; ~* IDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
/ w% f \9 i8 e- s$ i{% t- j3 d% G/ y( u: H! ]) G
if (x > D2Client::ptScreenSize->x / 2)
1 V( m7 a3 u; Y6 f! n {
3 _, z. v) k+ S6 h* k7 U *y = getYGoldCoinFixBtn();) Q/ `4 F4 n6 D6 C& T
return getXGoldCoinFixBtn() + 32;
. |3 C" o6 X/ I+ U }
. ~# i6 c7 A* U0 X+ z return x;3 G3 f" J1 t3 J- J) B
}6 o5 @; t- h) e2 X( i7 `5 G
__declspec(naked) void caller_goldcointext()$ p, i7 e3 ^0 ?' a C9 {( r; y
{" V J/ n1 p9 x( R4 j9 T- J
__asm# F+ P4 c( Q; N+ f! T5 Z) l
{
: j# u- X6 C9 ?. l* A PUSH ECX5 J+ c: o1 X! r# I* K# d
PUSH EDI, |% E6 f0 l5 _5 F- D# K2 {
PUSH ESI
' K: ~5 y1 m+ p) R, A, A9 l PUSH EAX" o* m# q5 {2 c
MOV ECX, EDX* F. |/ c- P, K: u
LEA EDX,[ESP+0X4+0X10]! k5 S! B0 V: ]/ E. F+ C3 i
CALL m_NewStatShow_goldcointext
: C7 {: ]3 u8 C4 ~/ t$ P9 H MOV EDX,EAX
" T- n: o7 \2 b6 k3 x i POP EAX. c% y( i6 W4 @* s. v, K
POP ESI
4 S% j# }! c* \ POP EDI& ~4 Y0 V0 s) c0 V% ?# {
POP ECX
' ^: ?* d, M, G3 S jmp D2Win::D2PrintString;- A0 _' a5 n; ^- j4 I# `
}
# X' f. l) k/ ]9 j6 l}
0 _' y: ^, e X0 O! X- F2 W. C- n4 u, ]1 s) b+ e1 C
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)' ^) p! T0 M" w( M/ I) S
{2 C0 y# O3 w1 d2 r5 v! B
DWORD mx = *D2Client::ptMouseX;% |8 V/ s( w8 l( \* Z; x
DWORD my = *D2Client::ptMouseY;
- ? L" R+ C: g4 T( J if (isOnInvCloseFixBtn(mx, my)): E9 h/ [4 T) T) e) C0 \: x1 ~" L
return TRUE;( j, g6 l7 z* c8 p
return FALSE;3 a6 ]3 {$ h5 A! M7 M+ @: N
}3 P' X( U4 t. ^ B D! Q/ b
__declspec(naked) void caller_close()( r# ~( h: R9 P6 R6 m& q" [8 x
{
1 F* R0 {7 @# ~0 l1 H& A& G __asm$ h% l! g; ?% E
{
: y* H4 k) i; e+ ]/ L PUSH ESI0 c0 A3 b# C3 P9 O
push ebx* Y. G' [* t+ ^+ w. \1 p+ l
call m_NewStatShow_close
) F, c: l0 e8 _+ s+ o- H pop ebx
4 K8 p9 {/ B3 q: y* ]# n pop esi
; n1 T$ h3 Z- \& D z retn+ B( P6 U& u+ x3 G+ A
}1 u0 p" V: h5 ~% g7 r' O
}6 ^* S* B8 q2 a0 L& n( P$ V. a. F
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
5 j: S0 D* ~1 [" G$ K0 N2 ^{
( t1 h8 F6 H ] W *nXpos = getXInvCloseFixBtn();1 u/ W9 Y% t& N
*nYpos = getYInvCloseFixBtn();
+ Y- V) }# w6 l. E}
9 d9 ^) B2 I# t. p* S7 d5 }__declspec(naked) void caller_closeimg()
- a4 N {- M; [. x3 u{
: c {3 P6 e5 g' o+ c* P4 U __asm
7 Y# ?8 ]$ |, Y- \% _( @9 a { y, u; p* ^# f) z
PUSHAD
) m; f1 a. C) }: V" c lea eax, dword ptr ss : [esp + 0x38]
1 \: R5 E& [# R& [7 g" H push eax
5 u |; e* o" }# d5 b. u push dword ptr ss : [esp + 0x38]
) g4 U5 J3 h8 e) L! a- O& D push dword ptr ss : [esp + 0x38]6 p, x x% ~- [4 E- |6 ]
lea eax, dword ptr ss : [esp + 0x38]
8 a, Y9 n* Q) Z3 F. c* B push eax. n1 S T' E+ |6 m
lea eax, dword ptr ss : [esp + 0x38]1 j6 C* J* F6 p) k5 d8 x
push eax2 ^8 o" O; h! O( U
push dword ptr ss : [esp + 0x38]* C4 n! q$ N% ?( Y, K0 X
call m_NewStatShow_closeimg
+ h8 w" R% ?% p t0 o" y: T: J POPAD+ S e' I' h6 `4 _
JMP D2Gfx::D2DrawImage
" O5 H6 E: c0 p! l3 a }
( K) S; ? `& h8 T2 c2 s f}
, h0 Y) {' D# I, G" `
( h- w& Q: v w- d7 B4 z/ ^6 F
/ B4 r% ?- X* R+ c! v& _2 P |
|