|
|
转载( U' r. Q( V# j }/ ?* A( Y
BY SJ. y: Y! v# j& @
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的). o/ X3 J1 [5 Y* M: i8 r
: e( Q; L6 u0 o9 k5 E9 c( K1 g6 [D2Gfx::D2DrawImage-10041# B# _ @$ D# g* e, V/ \
1、修复技能的背景(不需要可以不要)
: K! e" [: J) N0 uoffset = D2Client::GetAddress(0x77AA8);" ~9 d, O2 k2 C' x: x- O' k
Memory::SetCursor(offset);' X. t; r3 K! ]7 s( A" R! v' @
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
6 k% ?7 A5 o% Z/ {% j
% Z' \$ N- \" Q' t: h. }void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])% S3 R# R0 [& |% X
{
; ~1 u0 @9 z% U) m; Q //Init data for print image) c" Q9 S9 g+ O+ |/ p
sDrawImageInfo data;: p" u! @( b1 q D5 w& y
ZeroMemory(&data, sizeof(data));
- h7 F4 o) d' Q* e6 Z
2 x4 X5 P4 d- G* b! k; ^ //print background
& A" d5 n8 y; B- y5 f7 j setImage(&data, spellBackgroundImages);) g) j: V, d9 K1 ~8 b* n0 Y- Y
setFrame(&data, 0);
/ Z9 e' _% g) @* U( p( x int fixx = 511;# L4 l' ~" W) U1 x4 G5 @% {
int fixy = 9;
: l1 Y X; N$ l: s D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
. h6 p/ @: I8 Y setFrame(&data, 1);- k$ L0 ?/ \* F6 y% Y; ^7 X" S5 l/ Y
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
m3 b. J0 A- ^ setFrame(&data, 2);6 {8 t- U- k1 U
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4320 ]9 @* a2 C: C
setFrame(&data, 3);
; I! Q9 R- e+ g0 K3 F) g, z D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);! `6 T$ Y N* `" A% x- c, ?* X, H
}
* B% c# u( D. x" a__declspec(naked) void caller_SpellBackGroundFix()
! F0 B6 R) z, t6 y. u{
) Z6 Z) t6 m! x# n1 S4 D ~2 g __asm) j% F1 v/ {3 D9 \
{
: ^3 F9 a+ H* d0 a& k4 y PUSHAD
* }$ T8 A2 L S* f- r% ^& u1 G/ I lea eax, dword ptr ss : [esp + 0x38]
/ H4 y5 ]7 E/ I9 q" }# Z push eax1 O( z5 ~% t/ Q7 K% c. |
push dword ptr ss : [esp + 0x38]: h: Z8 B! `: o8 F
push dword ptr ss : [esp + 0x38]
) E1 X$ J& _+ K$ P lea eax, dword ptr ss : [esp + 0x38]. d0 u+ M: `0 s+ N3 X
push eax- I1 E. j; _, I, [' T$ t. L! L* _
lea eax, dword ptr ss : [esp + 0x38]
4 H, X2 n l0 Y1 J q push eax3 d+ r5 L9 i" `& N, q; c$ b
push dword ptr ss : [esp + 0x38]9 s# `6 X3 ^8 \3 R, {& o
call m_NewStatShow_SpellBackGroundFix
. j- X, I: D8 k {6 b5 Y POPAD
. o. q8 H$ y2 h( M% i JMP D2Gfx::D2DrawImage5 v' ^" v e" [: D( x# w
}
; r; z) a$ S" f2 q) t- U1 A}
* |( ^- v9 M* L' ~. t8 |, R7 Z+ f9 e+ a- n/ g( \2 X8 z4 k
2、我们如法炮制小站的背景
2 A) R" v- g- F# d( K9 C
8 N/ r" k! s8 Z, K. @' {) m) Woffset = D2Client::GetAddress(0xAB010);$ N/ q8 f- O2 v
Memory::SetCursor(offset);
4 ?4 D; _2 l) t/ Y1 T E" RMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
+ W1 r3 G$ C. ^$ g! l" G- c' i% Q7 v2 X0 Q q; O3 G+ h3 T2 _1 P r
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
! ~, Q9 W m8 e' f9 Y4 f{
" u( H+ }. U! r //Init data for print image
5 J) s2 m, D0 F' W0 t sDrawImageInfo data;
4 L' m1 N% V j- `3 w2 M: { ZeroMemory(&data, sizeof(data));1 R* M# K: O0 D& T5 {; \
8 ~$ v7 H8 {. E9 R# P q //print background
* T6 @* W! ^' y% U: Z( ~# k setImage(&data, waypointBackgroundImages);! u: W0 w5 H( w$ m0 I* V1 c/ _
setFrame(&data, 0);) d. h% d# a" [* e; R) m5 O; j
int fixx = 0;2 |8 W0 v& ?, Z* d8 u- J0 k8 T. D
int fixy = 9;: D! p4 {! U9 R! e$ f
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);' X6 X8 i& N$ h7 B6 n
setFrame(&data, 1);
; I6 C( v5 A$ y D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
5 h" d0 Z& A s2 v* }/ f setFrame(&data, 2);, y! h* U: z; |7 j: \
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432) v8 M: g+ V& ^0 y2 v" [( ?
setFrame(&data, 3);: ]' Q# i, ~' I4 h6 ~9 s
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
$ Y3 z; G! X8 ~* f% p9 Y; D9 X) x2 j! e1 B4 R$ M
}
' t8 A% M/ ]; s' w7 n6 d__declspec(naked) void caller_WayPointBackGroundFix()+ b; D$ J5 L% O5 z u
{
/ g; D2 V. f4 d6 n __asm* p s: e' u$ U( x* O k
{
" b6 q1 Z$ o, a& S$ z1 e* \6 a PUSHAD
& G: ?% j6 M! n+ O& j, O lea eax, dword ptr ss : [esp + 0x38]
( s$ X# i" L3 H push eax
; s) \6 g2 a8 z3 M6 ~9 q push dword ptr ss : [esp + 0x38]
7 C+ e! m7 g. L7 V0 p5 x7 h; W push dword ptr ss : [esp + 0x38]
! ~# f5 g5 N9 L3 q& ~2 Q lea eax, dword ptr ss : [esp + 0x38]
- }# i+ @; z+ F& T push eax
2 A9 j0 a- J# |6 N+ [% a& r lea eax, dword ptr ss : [esp + 0x38]
! b( `" w! Z/ t6 f- U" Y q push eax1 I* a s9 i4 { |/ ? y
push dword ptr ss : [esp + 0x38]
8 X2 F1 T7 T( B$ ]. `! z+ w& s call m_NewStatShow_WayPointBackGroundFix
( ?3 S( L; R' n1 W/ S0 z6 O# H0 X! a POPAD
6 C c9 ~0 _2 J( G& O JMP D2Gfx::D2DrawImage
* X8 g8 T! j9 G6 u2 A+ c }
! G1 A- N, H2 A7 j8 M4 k( ~}
+ p0 z, \2 O8 F, X) F6 }% x& Z: J+ k. j; g( A$ @" Q
3、以下可以搞16*16超级箱子-腾出我们需要的边缘2 t9 \/ X* h- c- g5 M9 H0 s
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复) v! }9 J. m0 U f
{# I/ ~% j, ]( N( `) k
class D2MultiRes : public Library<D2MultiRes>
% `8 u( E- I9 k% _) m) v) h {
3 K/ Q, f' t! L/ F public:
: F" V+ u7 G6 j0 j: Q static void Init()6 U! @7 t+ f- j1 D) t1 G
{. }3 @! u8 I: q( A: w
Name = "D2MultiRes.dll";7 X- @1 t* y: M% R
Offset = LoadDiabloLibrary();2 v. N# A% ?' X3 E
}3 f& E6 ^8 A6 r/ k W5 m) p
};8 ~0 `) e I5 f4 `1 d: r
D2MultiRes::Init();
( W4 W8 q3 M9 V4 n4 ] D2MultiRes::HookLibrary();
: I- `( v4 c0 K4 m2 \. P) Y2 a7 S2 m
$ @0 b! q3 A$ x& t" u l9 X MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);- d' k7 F @* w$ C6 Q8 l& E
Memory::SetCursor(MiscFunctionsOffset);- [6 @! T0 j5 F$ q4 w$ Q
Memory::ChangeDword(0x1b0, 0x200);+ M, E$ \* S; ~1 T; }
# E7 `- J1 W* f
4 M. y$ D1 j+ i% ]" k" I. L MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
9 ^: y \9 | f* @! a2 B" l Memory::SetCursor(MiscFunctionsOffset);
3 |2 q4 }# p: Z# j4 x: F' C Memory::ChangeDword(0x140, 0x200);
, D- T* I4 D3 u0 S- n. \
# o8 k( z% D. D! L" o- U+ M1 O% q0 W( u
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);9 `% A) M: X" H8 h K' p
Memory::SetCursor(MiscFunctionsOffset);) x2 \: w* x+ P
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块; f9 B4 T( k0 F6 S8 D1 Q
% s! u* l" F+ q) V# D
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
, H- f1 Q. O2 W1 [# n+ B3 H8 y Memory::SetCursor(MiscFunctionsOffset);
4 Y; ~6 b* h; ?) c4 H Memory::ChangeDword(0x200,0x299);//下边缘 299最大
5 w& N+ c4 G' U' m- T- l4 u4 J
! T/ S# @2 }, A1 l0 F MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
$ H( A0 x8 _9 I* u7 t4 w Memory::SetCursor(MiscFunctionsOffset);: G6 S/ r5 |9 ]5 j1 F# ~+ t: r v
Memory::ChangeDword(-0x280, -0x400);//这个不要动" Q* U h2 f, }5 d- t
}
+ p; \0 l" x8 z! g, @: w+ v0 v# ^, I, d+ s+ o- ~4 o/ O( Q/ x$ Y) p
4、快完成了,是不是发现金币啥的位置不对?? Z2 O% f; E) K$ h
. x- C0 z- U* I
//这里修正我们的装备栏
- d7 `! ]# b. {4 v! E1 L offset = D2Client::GetAddress(0x99B6C);2 v) g6 n; B8 G+ X& Z
Memory::SetCursor(offset);
" s. G7 x3 \, U o Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);* }5 M5 [# a+ O: o6 j- J) `6 a
6 B5 o1 A5 O1 Y { offset = D2Client::GetAddress(0x99BA7);
! [4 ?) l6 K D2 w: w' X0 G Memory::SetCursor(offset);* M# G% L0 K* Y0 n; w
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);3 b! Z! H& _: u
; C; _1 E/ z; J
offset = D2Client::GetAddress(0x99BE2);6 s! }2 I6 U4 G# B) J D _
Memory::SetCursor(offset);/ l3 P$ o* F: q; P$ H
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);, M" L! F9 W( a: l' V$ ?
5 p) c5 `8 y' y: }3 b% s, ?
offset = D2Client::GetAddress(0x99C1C);2 `1 ~" ]5 k! ]! g: v
Memory::SetCursor(offset);
. d3 L& }+ ?' [) ]) u$ D5 M Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
2 s" O) M* Q* i+ X' n9 \
7 e( d" R0 c; L" p6 E, I, @/ g- d5 Y //取消两个popup,偷偷懒不过分
( U5 }/ r; b+ h. `* E$ z7 N3 t offset = D2Client::GetAddress(0x9386d);" e+ c1 L9 B# x8 P
Memory::SetCursor(offset);7 L: J( ] |3 O. W% l0 D
Memory::ChangeByte(0x8b, 0x33);% X: ?' S3 e* _* V" B3 c
Memory::ChangeByte(0xc8, 0xC9);
/ ^7 @ {8 \& Q) N* l offset = D2Client::GetAddress(0x9390b);
C. f1 |) u/ d7 B2 d Memory::SetCursor(offset);
. p! o* m' G$ W7 u0 X% B! w Memory::ChangeByte(0x8b, 0x33);
4 Q1 b! W. q' S1 d6 [: N$ t Memory::ChangeByte(0xc8, 0xC9);
# J6 ~) [6 [3 h+ s; i3 j1 e1 C8 a& R& l# w* w" l! ~: m
//修正提取金币
5 g( C# {! e* N$ j' e! V0 }; l offset = D2Client::GetAddress(0x8D3E5);! Q: I5 F, G$ ?5 ?9 ]# U3 M' e
Memory::SetCursor(offset);
2 X8 X# y/ t* {7 y( g7 ] Memory::ChangeByte(0xA1, 0xE9);2 k/ F/ r$ l# c, G1 ]8 Q
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
! J- O" G% I( r4 D$ T, k
$ Q1 l7 v, f7 g offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);) c* Z$ U$ {0 t/ G7 \/ F9 D
Memory::SetCursor(offset);! O1 j% U( g7 I
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);- l% F* h7 s6 h- R1 C
, U. R% n: P7 w$ h
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
) J9 h6 \ r; a9 f Memory::SetCursor(offset);
/ p/ P& p) {/ i* a6 W# M5 [ Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);$ W5 l( G, l9 M, }# ]( x0 V
4 [" n) n; u; ]
//修正关闭按钮
: _9 c b$ J' {" G offset = D2Client::GetAddress(0x8BD90);+ F+ d6 J! A' W _# d5 e2 ?9 ~" r9 N
Memory::SetCursor(offset);
' ?: u. ?6 H" K* Q% ?3 d1 @7 H ^ Memory::ChangeByte(0xA1, 0xE9);
M0 C& G- M% L7 N ~ Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
/ B) ]. C4 K: n; a
" h4 r$ p* j* G% _ offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);1 H! Q' B' ?/ B* A# j4 ~ r
Memory::SetCursor(offset);" u5 V# N( S4 m: Q
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);; H. w0 H. f/ {* y3 o8 h, \
- J! Z; g* A9 E3 h" ~1 t4 W( P# u
/ q, Y4 O4 ~; z' g
//以下是细节& ]/ I$ {9 C$ c' S G# e- ]
#define getXGoldCoinFixBtn() RX(0x2d0)
$ x5 V( K$ q! g* @4 R5 N#define getLGoldCoinFixBtn() 32
! a0 U$ a/ L" U X#define getYGoldCoinFixBtn() RY(-0x59)
) ^$ z% Z+ j5 q3 K- N" y* z" q5 b#define getHGoldCoinFixBtn() 32
2 F. B" f" @1 N% C$ J#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
* d8 D# @( K; t4 B# u1 F/ P0 w# y( \& y6 x" } ^
#define getXInvCloseFixBtn() RX(0x3db)- G, a) z, |) e, p- u
#define getLInvCloseFixBtn() 326 e* d4 G! ]" b4 E5 U. c5 B
#define getYInvCloseFixBtn() RY(-0x63)
1 t2 g" Z6 j: l5 g#define getHInvCloseFixBtn() 32
0 r f/ o* Z5 z. |! i% F#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
5 b+ d( l9 A [, M. ^6 w; c- b
% k7 e- N% ?$ N4 b4 vBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
/ d- R5 [' t% v! o9 A$ X{
; a3 i5 d# b8 B c# B DWORD mx = *D2Client::ptMouseX;
' E; B/ \/ m$ a$ @/ a* j DWORD my = *D2Client::ptMouseY;
7 @7 |( m' c9 J6 p- e; D- C: e w( x. W if(isOnGoldCoinFixBtn(mx, my))
4 x- }6 j$ h) ~; I! j4 E6 B return TRUE;8 N( M" f/ H9 U6 Y6 o- T' A# i8 }
return FALSE;7 D( m r% y3 x4 N+ c
}
! r$ x3 j& S+ c7 c' z__declspec(naked) void caller_goldcoin()$ x* _0 ~9 R: r3 T
{2 B( H5 r3 H; i, t0 B) g, `
__asm1 s9 b4 b V8 }- X P
{1 b5 l# \6 j) k# n! _, Q3 H
push ebx
& d' \/ c$ v7 D) ^3 k$ E mov ecx, esi. v. F5 \. a3 E* ]2 O6 x
mov edx, edi$ s, `' W# j- c4 z. b
call m_NewStatShow_goldcoin. [* |. _' J1 \' ^
pop ebx
0 [$ Y, s, l4 F1 h! U. T pop esi
. `! o. ]4 h: a% m, `/ { retn5 v- F& e. V5 g$ e$ H+ K
}) J" W; N6 K% U- F" W+ }8 b5 ?" v
}
# N( e4 E A4 r# _void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]); L# P8 l2 J9 C/ \8 _$ R
{
% I9 S" j' }3 M/ V% T if (*nXpos > D2Client::ptScreenSize->x / 2); v+ e1 n O. A" p0 _
{
( o! W0 y! H; o' R) L- B *nXpos = getXGoldCoinFixBtn();8 e2 D+ O$ q% e" A0 L3 Y0 I
*nYpos = getYGoldCoinFixBtn();: ?* Z5 `6 d: j, x5 ~0 i! _
}
7 A% m( Y. w0 Q$ E5 u8 a}
9 e6 A; r# I( P' i7 r m__declspec(naked) void caller_goldcoinimg()/ W* k% U; |! ]3 y: a1 g
{( ~4 U. v F& S0 a! `- b8 O
__asm
/ [9 A5 Q2 [$ G6 R. a {
: D9 L) p# n1 L$ {+ i; }- H PUSHAD
8 c$ n2 J& L9 u" a5 t9 r lea eax, dword ptr ss : [esp + 0x38]% `$ }& |. I. d( ]# q8 J# V7 h
push eax
- B' q0 S( l+ |5 h. F1 {$ N push dword ptr ss : [esp + 0x38]
3 q4 g& t7 |: _& S. o8 @ push dword ptr ss : [esp + 0x38]
) \3 s5 k2 Q& w4 @$ z lea eax, dword ptr ss : [esp + 0x38]
; t5 k! [+ z3 ?2 g( F @2 e push eax+ F" X4 m, N# Z: V: h
lea eax, dword ptr ss : [esp + 0x38]: k5 ~$ A: P7 ^. } B5 Q; u
push eax
~3 u8 n" u1 t' c) k push dword ptr ss : [esp + 0x38]
. [ r- i# g) Y I- t" s3 x call m_NewStatShow_goldcoinimg9 p8 F" B6 O9 c
POPAD
1 J& \' b4 ?! k4 d6 q1 W* Q JMP D2Gfx::D2DrawImage7 A0 Y% Y0 y) J/ \
}+ f3 m/ Y, R0 ^4 l! p; U/ |
}; v ?: \9 b1 }7 u
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标- O3 Y# @% r+ }/ k) b# X8 L4 c( j
{+ _% B2 X& J2 r% ^- M
if (x > D2Client::ptScreenSize->x / 2)5 u1 K4 P( A. Q3 V; h
{
8 @$ c" U, I7 K3 k! y *y = getYGoldCoinFixBtn();
8 O. i1 _2 l1 q" z% G4 x& F return getXGoldCoinFixBtn() + 32;
; C5 g" V1 `1 i }
) F. W# G I. y: `2 p return x;
0 D" R7 }6 \( n}
9 E2 ^4 {1 E8 d' Q, x__declspec(naked) void caller_goldcointext(). \0 [/ C( f/ e& z/ [6 R# X) T% P
{4 p! T/ b1 o; Q
__asm
9 i& f7 D) T1 g( l- y5 H {
# A7 p) p( w, U# q) s PUSH ECX
: |3 n; X7 d/ u( X PUSH EDI
" w, C8 @' [! v; L4 m: [3 d PUSH ESI+ {6 T0 }" D, [ |* |
PUSH EAX* K% K; g1 F8 V, H, W
MOV ECX, EDX
* Q3 Y9 ]% c r LEA EDX,[ESP+0X4+0X10]
( ~; B" Y4 \0 I' {% I6 w CALL m_NewStatShow_goldcointext/ ?9 r K1 a$ q* O# @
MOV EDX,EAX
" _1 o. S+ M% l; O. I9 ?) }1 @ POP EAX
4 F9 G& T+ {- f, x, Y# O1 M7 M, y POP ESI4 [( l% k% b: R4 y& W
POP EDI
; E) s4 f$ m# @ POP ECX
+ V6 `$ N7 A' y8 `3 g5 A jmp D2Win::D2PrintString;$ q! |+ v3 ?" C2 x6 p# k/ S
}
, k( e: V# ^$ Y& L+ C4 s}
6 F* u+ _2 a) G9 U& T# l; m7 \' X; A7 w. s' A7 Y; R+ i- F
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)# p0 Z0 O z- X
{- l2 U$ v& p& F
DWORD mx = *D2Client::ptMouseX;
: d" D: m% A8 {% E$ {, w, g DWORD my = *D2Client::ptMouseY;" s0 Z6 v/ O' s5 o: K- t8 D4 g
if (isOnInvCloseFixBtn(mx, my))+ {# B& `3 ]6 y' F% k0 p) l
return TRUE;
" s2 I% M l3 g: M# X3 J return FALSE;
9 `- k& V8 N' v1 a4 t& V3 s8 o}; W: O. F: C0 O. t6 F
__declspec(naked) void caller_close()
) ?# @4 r, d( N- a2 m: Q' y{* h/ A2 A6 Z x% T
__asm, T8 {$ Z& X. E. n/ f' {
{
# F' T& ?2 s1 i2 D PUSH ESI. L0 g z9 N8 @9 ?: O+ t3 o B
push ebx
' P2 g0 N4 [+ Z4 o call m_NewStatShow_close
: f7 f0 F" Y# i( N- }2 i. s+ H pop ebx9 @( l% ]+ U# K
pop esi+ [$ g7 s5 V$ w, ]" V
retn8 C' h+ m' ]( L' M* d7 j
}
4 n- P3 L T4 u0 G}
: y0 M6 W S& I1 {5 V- J' D; dvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])) |5 ^5 N" l( J1 @7 _' R
{$ ?- }: K7 c: h1 `2 o2 @( [ B5 c
*nXpos = getXInvCloseFixBtn();
1 p" Y+ I/ ?- I *nYpos = getYInvCloseFixBtn();$ j9 V- Q: t8 J$ y5 u5 u* d8 ]
}
2 z! B' v; x7 m: c% F$ W__declspec(naked) void caller_closeimg()
( f- c1 l0 a, q6 v/ b& G* N{
) D. y: o, N& B4 { __asm/ U3 I+ F1 _& U n+ u
{
" j' v1 V _8 |& i2 T PUSHAD- P6 A, E7 e0 D$ o" E$ |5 Y' S
lea eax, dword ptr ss : [esp + 0x38]! d/ R8 [0 J# p5 a2 _5 l( s1 @% Y
push eax# V! ?: U2 X3 h% x
push dword ptr ss : [esp + 0x38], ^/ Y6 n6 L. }: `/ b$ F
push dword ptr ss : [esp + 0x38], L: w2 I: M% H- }7 }; L" L% i: r
lea eax, dword ptr ss : [esp + 0x38]
) w2 ~0 {$ h" c" e6 A7 \4 K* h5 ? push eax* y- m/ r' F3 ^( v6 b
lea eax, dword ptr ss : [esp + 0x38]
7 @+ P8 U( [5 _( w! H push eax1 N$ B( L0 T: l; u, `! c% r
push dword ptr ss : [esp + 0x38], J. { w8 P1 ?7 P( Q
call m_NewStatShow_closeimg
' ^+ N; g5 |) l4 B) z4 y0 Q POPAD
6 e" ]& _* x! W% J# z JMP D2Gfx::D2DrawImage
6 W% d7 L5 ~! E' y) P/ G8 R" M% R% r }
9 E& Q. {( t: d}# T/ H/ W( |/ c N/ Z# M# C% V
- g, @0 k, m3 u( S# t
8 o2 T: \# d$ z d1 ^" r% {( o
|
|