|
|
转载! M4 Q% O) J0 C# u
BY SJ
) l' z* p- P6 [3 e首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
' }8 {0 b+ T5 }6 y l7 K# R- H( ~0 I! P6 A
D2Gfx::D2DrawImage-10041
: w% Y) }: s( @! D1、修复技能的背景(不需要可以不要)
9 \ D1 S1 p1 [' P0 Ioffset = D2Client::GetAddress(0x77AA8);: b& P+ |0 }# G3 c0 z
Memory::SetCursor(offset);8 e# N# |5 _8 O) p b
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
$ U' v. l" T3 A. |2 B3 H; k0 D! K" E4 v) Z4 C8 U) Z: t9 Z
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
* h+ S u2 H7 _# y+ y8 y c{
; F. ?! f( v: f" \9 K //Init data for print image% P' v1 f2 J3 ~0 T: _7 {
sDrawImageInfo data;& z5 n8 q4 s9 a- ]
ZeroMemory(&data, sizeof(data));
& D2 \9 y# M" h# q
9 \ L6 B0 s# E //print background- c/ T/ @5 s6 F+ a4 q3 f+ E) u, ~
setImage(&data, spellBackgroundImages);
9 s# O) L: u9 ^/ q* y6 D- b setFrame(&data, 0);
5 ~3 |. a. c5 r2 q int fixx = 511;; m3 x& C, o2 O, s- s8 q
int fixy = 9;
: ^5 k5 B* M$ Y l2 y! N D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);8 @9 w6 I1 h3 S. C
setFrame(&data, 1);& E6 Z: D5 i7 y8 [+ H1 s
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2563 _! Z' [3 P0 s* ]7 I8 g
setFrame(&data, 2);
9 h3 { x/ i6 r* \. ` D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4320 V2 D, R& M) f q6 I
setFrame(&data, 3);; v/ I; x/ V* R( J
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
& x3 y9 z# F7 G \" n4 R6 J A: w}, p- L4 `6 \) g: h' _
__declspec(naked) void caller_SpellBackGroundFix()
; N' g+ x) K/ O" k% P3 K{
. [" X0 t" T/ O* b8 y __asm/ z) I' B' m( N1 M7 h/ p
{
r! ?# L) m4 {2 c8 o H PUSHAD
- A6 l7 D1 E. p3 m0 a1 M9 V lea eax, dword ptr ss : [esp + 0x38]6 v5 H/ ]8 d& ~& b. V
push eax
7 Y: e8 K, K0 l& N* o2 f push dword ptr ss : [esp + 0x38]" X8 K. Q4 R) U! \! z" P- V$ c
push dword ptr ss : [esp + 0x38]
. |: x+ k' T/ S; l7 |4 Q lea eax, dword ptr ss : [esp + 0x38]; e4 N4 |7 u* U: y1 Y5 c
push eax
2 f2 M) q' D' I: [1 v0 c lea eax, dword ptr ss : [esp + 0x38]
0 d* X; Q6 b9 J# | D8 L push eax; T, f, F, y0 D' f+ _
push dword ptr ss : [esp + 0x38]8 @$ q7 Q; ~9 x: e5 B. Q
call m_NewStatShow_SpellBackGroundFix
. ]; F& {. ^" r POPAD& J0 ~! c" G* K0 A; J
JMP D2Gfx::D2DrawImage
/ y* |5 M# C. x$ T }1 b# c: U# C7 S$ I
}; Q; @8 M3 Q' T* i! d1 T S
9 F8 }+ z. j1 ]6 J" ?/ {; s& K5 g
2、我们如法炮制小站的背景5 G2 B. }" x( I5 D" M( g
, A H I8 n2 g* soffset = D2Client::GetAddress(0xAB010);0 x5 M- D# D4 ]
Memory::SetCursor(offset);
& O' b8 @/ U$ i! X |Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
9 _6 a- C. ^9 g% j6 S( J0 \( R
0 h7 N$ O$ f- p* vvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
/ a6 [# I2 E* h{# U0 P7 N$ ~/ G. }2 i2 r- R
//Init data for print image
d) o6 P$ k' W7 D) f sDrawImageInfo data;
. i/ w' {) y$ u ZeroMemory(&data, sizeof(data));
$ `: K! t0 K% V, T
: u, L" g5 P! q( ]% X: h9 U ~ //print background; F4 O5 h7 ?- l- N
setImage(&data, waypointBackgroundImages);8 R$ h2 ~4 Q3 }. q) ^: o
setFrame(&data, 0);
+ _0 B3 j- R8 b" B5 z int fixx = 0;
, [' F* l2 [1 r; e int fixy = 9;
% w _+ j1 ~8 V% ^: f7 b3 k$ T D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);: R9 }$ g2 U% p+ L/ b( H
setFrame(&data, 1);- o" L- W! K' ^7 ]+ k" d1 A
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
2 B# D3 |* ~& [. R5 n( D setFrame(&data, 2);
1 ^8 v1 m. o4 P0 M& y8 V D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4328 v( C8 I4 @0 e6 [
setFrame(&data, 3);, H& d# u$ h( j8 b' Z
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);& I3 e! B7 l5 G- ^
{8 v& h: I( v: N# u" k
}. o# t8 z" p* @ I: m% W0 J
__declspec(naked) void caller_WayPointBackGroundFix()
6 K) H5 B6 P8 I- Q{; P& Z, S4 P" W5 `
__asm
; ^$ I& `5 a& q. O! p8 O {
" j- t+ r3 f J8 L& K8 s9 Y, a' f PUSHAD+ n; @( @+ K( Z3 \3 s# E/ Q
lea eax, dword ptr ss : [esp + 0x38]4 x% Z# Y- {' x7 U9 c0 G
push eax
+ _) o# T- P/ k% g; F3 I8 G# b1 b push dword ptr ss : [esp + 0x38]
8 Z* G; ?0 q6 d$ T/ X& ~ push dword ptr ss : [esp + 0x38]7 X! u% X9 G/ m, X0 `8 l
lea eax, dword ptr ss : [esp + 0x38]
: I8 e- N: F+ U5 z" A% p0 d% I push eax4 t9 ?" o1 p8 a4 P; h; N
lea eax, dword ptr ss : [esp + 0x38]& @3 k3 D: _5 s7 l, `
push eax
6 Y4 `6 m5 S Y/ D push dword ptr ss : [esp + 0x38]
2 ?6 M1 F1 @/ K9 R call m_NewStatShow_WayPointBackGroundFix
! o1 _; W! G* _5 @9 [( T POPAD2 D; r1 F* D2 g
JMP D2Gfx::D2DrawImage" u! A- C. c* |5 g; A) S9 Q5 V
}& ~# _# [8 T$ }9 b0 ?* K
}
7 l" ]1 G F# b- ~+ k# }
9 _* L& Q2 f W2 _. ?1 e8 C* i: \3、以下可以搞16*16超级箱子-腾出我们需要的边缘
' }6 T! O5 t* ^+ T7 V9 v# O+ I腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
?# G( Y. a2 {6 j0 U% H" ^ {
! N9 \, d4 D% p& a& k9 i/ z7 H+ w F" x class D2MultiRes : public Library<D2MultiRes>+ p& v2 Y/ l1 K; a
{
' {# b( W3 {1 W; f y% X1 h- M* ? public:
' W( G: T4 Q7 ]( W; |& b static void Init()4 D4 ~! j( N6 O C
{
9 b8 u- t \+ B' C1 ~4 k: T7 c Name = "D2MultiRes.dll";
" w; R1 z; `' l/ G, @; U: Z Offset = LoadDiabloLibrary();
6 p1 g# k4 s: c8 m. @ }
9 H9 \; y' }* U4 ?1 z" R };
1 d; n2 J3 F9 C, l+ a+ O! H- Y D2MultiRes::Init();
! w+ O& R- m$ ^# W D2MultiRes::HookLibrary();
, i$ \+ h' R H" N [3 J: Y
0 x* ]+ Z) t, f+ k
4 K8 S! R+ n2 ~, w) O! @8 q* X4 v MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468); {8 K' S& r c/ q1 q) x1 x5 c
Memory::SetCursor(MiscFunctionsOffset);4 R4 C; O( d2 e
Memory::ChangeDword(0x1b0, 0x200);, m% T6 |( z' F$ |; u! N5 |( n
5 G: J w+ _0 R
, R- v! g' i% N% s; \: S: N+ [ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);: |4 y; F3 |7 Y9 k& [3 g8 L
Memory::SetCursor(MiscFunctionsOffset);
' N N+ s% F. `. x Memory::ChangeDword(0x140, 0x200);
5 [, P. V$ Z! r, Z* u3 T' j' J8 _9 q
- |1 D4 e# e4 | m) g MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);" }1 i% R. x% N
Memory::SetCursor(MiscFunctionsOffset);' b( K; \: w- v% f& [" H' E
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
) k4 T$ K/ G2 S6 p
. D3 ^4 L, ^( j" A" ?: d# ~ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);! \6 _. n- I- L# r2 j; N9 |* q/ W
Memory::SetCursor(MiscFunctionsOffset);
7 Q. _2 t+ D+ ] Memory::ChangeDword(0x200,0x299);//下边缘 299最大
' _! X4 m' a; | n- ?
: S( r7 o; ]/ L0 O/ b MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);! }3 D; O& m. E, g) n' l
Memory::SetCursor(MiscFunctionsOffset);9 a: G6 j; m! w8 Q8 \; t
Memory::ChangeDword(-0x280, -0x400);//这个不要动- e1 p1 b3 |3 W$ k" P' T- S$ v; {
}1 q y' j* H* N5 S# T/ W( [
/ @4 L2 \; o/ K3 W5 H, R3 d! L
4、快完成了,是不是发现金币啥的位置不对??
8 x8 f" K# d& y' J3 s! _7 s6 X7 S* I% o% Y1 ^: d6 Z, t
//这里修正我们的装备栏
- |) \ U; l7 s0 m7 z* {8 V$ b* v offset = D2Client::GetAddress(0x99B6C);
* v" G5 {, `1 V Q# P! j Memory::SetCursor(offset);# B; T& k% X3 a5 o5 ]# o$ y: `
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);5 h$ ^+ I) j8 O, _8 A* V
4 K- A" R9 m5 M4 i offset = D2Client::GetAddress(0x99BA7);3 `. c. d6 e0 d& F: v) i
Memory::SetCursor(offset);
1 b; q s* y2 s Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
A- F: A' q7 a$ H5 ^0 w) w8 Y' R
: z+ O/ t n# h' O3 d- k: k offset = D2Client::GetAddress(0x99BE2);
7 \* M' f2 Q2 B: y0 [" F Memory::SetCursor(offset);
0 A8 O8 n2 m { o Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
) b* _3 l! u8 U, }5 q' v3 a5 J! D+ `' ^: @' X( q$ Q j% }5 h
offset = D2Client::GetAddress(0x99C1C);
; E+ r! t8 x& W! X Z Memory::SetCursor(offset); B% e; U0 p5 R8 U K; E/ m# |! _
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);. u9 ^! S" l7 ?0 g+ U2 c3 \5 ]
7 g% o6 M) e9 m* Z' s //取消两个popup,偷偷懒不过分' h7 P! O4 d. D0 F% k3 i. W
offset = D2Client::GetAddress(0x9386d);, Q+ q& s( J: y9 m# u8 E
Memory::SetCursor(offset);
2 o0 }, w; D) k Memory::ChangeByte(0x8b, 0x33);
7 [! T# B9 R$ \6 t Memory::ChangeByte(0xc8, 0xC9);
; L' h/ c3 F, s& C offset = D2Client::GetAddress(0x9390b);
: l9 ^$ ^4 J8 R. I( G* I Memory::SetCursor(offset);
1 J1 y) n( s. s Memory::ChangeByte(0x8b, 0x33);% p! T' ~. l: q& ?; _: |( g/ J. {
Memory::ChangeByte(0xc8, 0xC9);! q! F2 B* S. h# g+ k$ x/ a
1 ^% B8 I& ~% R4 O3 @ //修正提取金币
* p) i8 ~0 u& ?) o2 K; i6 O offset = D2Client::GetAddress(0x8D3E5);
0 k! S& j: k8 ^ Memory::SetCursor(offset);8 i3 j2 y& e5 c$ }# F: a! N
Memory::ChangeByte(0xA1, 0xE9);
% N$ p. F! R6 {* @7 M Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
. c, H$ D# o4 y4 m3 K$ |' u& D8 o
; G( o! A# e( N2 {$ e |3 n offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
5 M/ k7 M2 \1 C/ c4 b Memory::SetCursor(offset);
7 N) W U( f4 I; F, S T Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);' s) S" x- ~, w1 I4 e, E
0 A4 K. A2 e' E' x offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);! `" ]! e0 `- W% k/ J% O8 X4 m
Memory::SetCursor(offset);+ C. Z& @1 `% x% U( |% i
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);. N7 a# L% p7 _8 R
6 D% ^& K+ G! C$ M+ A7 w' K& x- O
//修正关闭按钮
* ?; Z1 a1 u2 p offset = D2Client::GetAddress(0x8BD90);
' p4 J. }3 A% ?& y1 X Memory::SetCursor(offset);
, |3 p+ O& g7 ? Z! G. b7 v. I Memory::ChangeByte(0xA1, 0xE9);" b8 I6 {. h: v: I1 S. v* v1 N- ]
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
: P( g4 B6 {0 B/ |: Z' a/ ~) I; ~2 k6 @, ~ R
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
% U1 Y- l4 w- N3 O0 @: J5 y* a Memory::SetCursor(offset);. o% F6 O- I4 `: S* K
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);4 u. s4 l% M U( F9 V) w2 D
; @ Z) z/ Q: x
& H( z% L$ w# W" S0 H3 x//以下是细节% e& E1 R& q6 y; t5 j5 T' X
#define getXGoldCoinFixBtn() RX(0x2d0) I: b0 e. S+ {1 I) q
#define getLGoldCoinFixBtn() 32
E& l! ]" O+ o" ~* z#define getYGoldCoinFixBtn() RY(-0x59)! Z* l Q5 p6 c* a( `5 m- w7 r+ G. A
#define getHGoldCoinFixBtn() 32
5 A' _" u0 N P7 A) m, c' C#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())$ J2 `4 u* o' N' O; N% Y
( ~$ u& _- J' R* x( _1 J
#define getXInvCloseFixBtn() RX(0x3db); k. c, R9 M0 H8 X1 H+ a
#define getLInvCloseFixBtn() 32. u2 U- }+ f- g8 R; \
#define getYInvCloseFixBtn() RY(-0x63)
' M9 f8 |) z9 B' p2 b3 C#define getHInvCloseFixBtn() 32
% I+ b6 m' A8 k& }#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn()): |3 r5 j" \/ P S7 X* ^" G
( k3 l3 K5 U5 K( i9 UBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
& h5 T" s j+ C; B{
" k1 `7 I3 I- R6 b: o* I" P DWORD mx = *D2Client::ptMouseX;( c/ s( J; p( x: @$ n8 E6 Y' ~
DWORD my = *D2Client::ptMouseY;
6 V6 v1 a4 b3 u& i% R6 k: v if(isOnGoldCoinFixBtn(mx, my))$ H7 K }0 t" ?2 y n8 k+ Z! X. C
return TRUE;
5 w# O% l8 o- M9 j" U& T1 w return FALSE;0 n- Q! e+ h; o5 V
}
. h! b& v3 ~/ D__declspec(naked) void caller_goldcoin()
/ Y& [/ d6 s7 J/ m: P* c{
' v& I" f6 l. x1 c( D1 I) V; q4 | __asm
: L7 E+ h- }7 Q/ ~" o/ T {
1 s. N: v' g6 } push ebx
9 c2 F) B; S6 `7 r: \ mov ecx, esi
: j7 y5 M9 o$ L( l7 F' V mov edx, edi1 Q" n- j2 k8 q+ X- a
call m_NewStatShow_goldcoin& U f# V1 z! V/ X1 ^8 D6 B
pop ebx! M. e2 n9 k( w! V$ s( D+ s6 P
pop esi- X& G$ B% F$ ^3 T1 M: {) V: A1 R- b( r
retn
8 [% J) s, u1 L& `" q7 A9 l X3 S }
/ V$ _( L) C/ r+ p/ J2 x. X2 D& I}
# t4 T4 n8 z3 M$ Z. O( I4 lvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
/ V; J1 ?$ X7 T" \- I{
1 u3 v4 C- @+ ?9 I6 E: L if (*nXpos > D2Client::ptScreenSize->x / 2)' c$ f. x0 |! @( s" h6 W0 ^
{
$ Q, x! P# v: x; G1 Q *nXpos = getXGoldCoinFixBtn();
) n% t: B2 f9 M H4 f% [ *nYpos = getYGoldCoinFixBtn();. g8 |8 Q+ l% B. `8 o
}
# |, V; L/ w6 G3 k, O; x}
( d$ D: Q4 b0 X__declspec(naked) void caller_goldcoinimg()
$ x$ V, L0 X4 \5 {/ X{9 t1 A! D0 G, ]- J- F/ x9 |
__asm8 H8 `6 I9 E6 r( P. c/ b# t; O
{
! `2 X$ X& T5 G3 x6 R PUSHAD4 d0 r; f/ _# i3 o9 D
lea eax, dword ptr ss : [esp + 0x38]
) I& |- u7 Q9 D& L push eax+ S5 K: u4 \* V5 q# |
push dword ptr ss : [esp + 0x38]% I: m0 |5 T& ?* H- ?. u
push dword ptr ss : [esp + 0x38]
1 P9 e5 V3 l, p# }2 Q X4 V3 l lea eax, dword ptr ss : [esp + 0x38]
" `. N F: u2 d7 R push eax0 g& J! M5 V- t
lea eax, dword ptr ss : [esp + 0x38]0 @' r' s; F- G; f+ `# }7 a2 D
push eax5 `# K, _& @- `( ^' u2 A
push dword ptr ss : [esp + 0x38]* r. l1 G' [6 O, T! Q. c% Y1 g7 [
call m_NewStatShow_goldcoinimg7 A- v# q8 w. {0 ?
POPAD# b$ P1 E1 `6 D: K# R- i
JMP D2Gfx::D2DrawImage
# T* P$ I9 Q9 f: U }$ t3 x8 [3 ^. a# I7 k0 L+ P
}
& F, ~7 N& c5 H5 D zDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标0 Y% d7 v0 K Q" l, i1 }
{$ N; d* Q7 T$ O2 H
if (x > D2Client::ptScreenSize->x / 2)% s. M! T+ c7 \, E; C
{: ^$ o! o% X5 [* S
*y = getYGoldCoinFixBtn();
; j. x4 ?) ^, {% o. z return getXGoldCoinFixBtn() + 32;7 c* }9 f3 l3 u/ j% ]
}3 A: x) d _5 P# [
return x;+ Y) C7 U$ M5 _ y: h: M1 g6 U3 l( `
}1 F. k7 w6 M7 A x. ^
__declspec(naked) void caller_goldcointext(): M E$ m; x ^( t( E
{. l- K. V- a' U1 V
__asm
# o( q, ]# V. C0 g+ K ^ {
& g. I0 `0 c) S- ]6 E* Z8 g PUSH ECX
|/ P* [( x& \7 c% U0 | PUSH EDI
" [7 J; c ^2 P/ \0 Y" @ PUSH ESI/ t. R% ]( {6 h: S1 p
PUSH EAX
7 U# [7 Q, `, O# Z/ Z* e3 G MOV ECX, EDX9 w9 P& ?# `" [2 |! k: e+ |& j( _
LEA EDX,[ESP+0X4+0X10], s) s- L( s5 O! h
CALL m_NewStatShow_goldcointext: }0 _3 r3 b, l8 c( V X0 i
MOV EDX,EAX2 O5 z. z) @- Z- s2 E$ O# E7 g
POP EAX
5 d- x& ^* b0 D' H# b5 W POP ESI
/ V" V! L/ f% w& M POP EDI
8 K2 R* _; k8 |. x3 w8 h POP ECX, @6 x4 f/ m- L6 ^( t! }
jmp D2Win::D2PrintString;
: g, C( [" O4 [9 I }
8 X! a! ]0 x/ J& S% ^! s; \}2 J# \( `; l3 |
/ h+ P: [9 ^( C) i2 ~3 t+ s% L U
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)8 K5 Y$ _- C. u
{
: j3 ^6 s2 i t9 K DWORD mx = *D2Client::ptMouseX;
1 d) m7 `7 L! c, T3 u DWORD my = *D2Client::ptMouseY;
! T. o; R& K w2 M if (isOnInvCloseFixBtn(mx, my))
# Z1 ^8 u$ P0 s$ J return TRUE;
) @4 L3 D) ^6 m; | return FALSE;3 `0 d& G+ S9 P
}
3 V5 E; k1 W; F6 I% p) f1 ]8 T__declspec(naked) void caller_close()
G2 _: c" Q# p5 @* f/ N" q$ K7 R' @{
. O4 `& a1 N% ]% v" g" }7 B __asm# @* T9 X2 }# P( l8 D5 g* m
{
1 m% r2 I6 L" z- ^+ t9 m PUSH ESI* S- }* C" ~3 E# h
push ebx
A. l' @ c0 Q# e8 @ call m_NewStatShow_close6 i4 Z( q6 C8 C
pop ebx [5 }, E3 ?) D3 h4 u* P- X
pop esi
9 ^( _8 P6 Z# S' S/ `- ` retn$ |& U2 R4 D3 g- T! f
}& w3 M. e3 T* p4 \( e
}
( a4 @6 o" P8 ?( S- ]7 Uvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
. k! r2 ?0 K9 V+ o( }% ^{
. O$ O9 @' i3 i9 d1 J0 ~! K9 i% M *nXpos = getXInvCloseFixBtn();- v- t( }; p* [" K0 N
*nYpos = getYInvCloseFixBtn();$ g5 s, a; i- ~
}% f% Z @* |( ]& x
__declspec(naked) void caller_closeimg()9 @: A, e/ L5 D3 B8 ]: L
{
0 z$ Q3 H/ s* @! v2 ~2 ?4 q __asm
$ z# k6 B7 W q* A" s {
& R; O/ q; j Y, K2 H9 P0 ? PUSHAD
8 ~" C5 O! X$ Q: u0 [9 ~ lea eax, dword ptr ss : [esp + 0x38]! a$ R0 l/ l. f) T( S
push eax
# s3 |7 r( ]: n push dword ptr ss : [esp + 0x38]
P3 H. W! Z; i5 d push dword ptr ss : [esp + 0x38]: ~) ~+ V; `* E. [8 q
lea eax, dword ptr ss : [esp + 0x38]
2 R, _& E4 J" T, J+ f5 E3 @# k push eax+ V. k( \9 J" N9 {5 G7 O1 x" O
lea eax, dword ptr ss : [esp + 0x38]
4 \1 d8 c: `4 F9 G. I7 M/ ?. q push eax5 M, x" u! r' M9 C
push dword ptr ss : [esp + 0x38]7 G$ i( V) E1 u4 x$ E) w& p* ~. j
call m_NewStatShow_closeimg
5 w+ B* p, Q* | POPAD4 Z7 }: t* e0 A( M1 e D
JMP D2Gfx::D2DrawImage
+ T0 N4 j/ K' t7 B }
$ D7 l w. l$ Q: s, i. ], \: H}+ _0 w8 W# ^, Q J$ f' C
, f; Y# [2 t$ B- r9 q1 ?% ?8 z( e8 |& Q; ^9 V
|
|