|
|
转载( X O) Q% e; o$ F7 f: @ d
BY SJ( \# _ K2 c+ q
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)( y1 O9 b; G( Y& T" Y3 l7 U
* }, q7 l. E9 A5 S j, KD2Gfx::D2DrawImage-10041& D) C) B8 w5 E* ~$ Q; \; s L E# x- r
1、修复技能的背景(不需要可以不要)8 T# f1 s( k# q- c- G% m( h
offset = D2Client::GetAddress(0x77AA8);
. Q/ t4 M- q. n$ O' Y8 yMemory::SetCursor(offset);
4 T) Z$ K9 V# x" BMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);0 w' P# y: W' q2 g! B
1 Q1 m8 v8 \6 |. s1 o
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
$ W. j# I `; f1 i& m& I{
9 G t3 r% y Q) _ //Init data for print image6 m% u5 \; K3 W5 F' H% h
sDrawImageInfo data;. b) b! _( r, _$ Q; W6 d
ZeroMemory(&data, sizeof(data));
2 v5 }! d+ w! g7 G, U. R4 Y8 F( a$ F. V3 Q
//print background3 r! w7 Y' u1 x1 l
setImage(&data, spellBackgroundImages);
8 L9 e! @' c2 | B: P: n( l& l# q setFrame(&data, 0);. e/ ~7 _. D# W' s
int fixx = 511;
, w9 m+ }8 Q) }( M+ D! Y# A int fixy = 9;, h2 a2 Y. V3 Z: }
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
# |% N8 m, O' \5 C$ X+ u# w setFrame(&data, 1);0 \; L; ]5 F: u5 v
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
. @2 |' l6 P$ k9 l& |8 n setFrame(&data, 2);
& y& }. l4 ]! N4 E D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432& u# z# S- G" W) k3 T- I
setFrame(&data, 3);
3 Y+ N/ z" A( A4 m- d; I5 j D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
8 _, [% t9 V; c}
5 |: m/ d7 w. e__declspec(naked) void caller_SpellBackGroundFix()
A3 J" Q5 Z+ N' g d% V5 }{6 i- t% x7 j6 f0 g& L5 c K
__asm" |7 D) g/ t% L* S& D5 h
{# T5 s3 p( C P. I% M8 s* F/ \
PUSHAD
) I+ E/ m4 C- d' s: ^7 I lea eax, dword ptr ss : [esp + 0x38]2 \- {6 f5 S- ]
push eax2 e& X' I5 ]& s1 O( a
push dword ptr ss : [esp + 0x38]% c4 t+ G6 r0 I: B J
push dword ptr ss : [esp + 0x38]
8 R7 j4 e; ^6 K6 m: u$ D- u lea eax, dword ptr ss : [esp + 0x38]
+ F$ ]3 J7 P8 u6 o* X, U' h push eax
7 t2 m, c) B7 A/ M+ ` lea eax, dword ptr ss : [esp + 0x38]8 {# E; Y/ j$ m- J# j
push eax1 ~9 }3 l( s2 Z4 ]( ]$ s
push dword ptr ss : [esp + 0x38]
9 d6 P0 I9 _+ v, U! u Y+ P call m_NewStatShow_SpellBackGroundFix
7 w1 v& F: r1 N0 W# t) ~# ` POPAD4 S- K# v, x: j( W
JMP D2Gfx::D2DrawImage
1 l8 \: E3 m' Y) E9 ]5 R3 R }
3 L7 g0 @" ~ ~" q& F# q}
- ]* l) B8 ^! }% [1 W
0 `" O1 b* P3 y% d( `2、我们如法炮制小站的背景
, X0 J" `1 C7 i. k% w; B7 |, y6 O, M, @+ I5 Y R( V, t
offset = D2Client::GetAddress(0xAB010);& x' D- f6 q- u: ^
Memory::SetCursor(offset);7 w8 q7 X3 B4 `# Y0 f
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
1 W1 X- t* p) z" h9 ?8 s, J$ A& x4 p L; E
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])" T7 B* h4 u! ^* O
{+ [) W% |7 D& m+ \9 c
//Init data for print image
; k, W, Y4 D% }7 j3 Y+ H0 m sDrawImageInfo data;
3 r9 A& M! s' w ZeroMemory(&data, sizeof(data));* K1 d6 E9 n/ w6 K$ M/ q
$ l. z4 a$ {. l$ W) L
//print background
& V! p7 s8 S2 P; q$ \- a/ x setImage(&data, waypointBackgroundImages);( l9 _8 G0 Z! v p/ P( _" s
setFrame(&data, 0);
+ R4 H( }5 \& t9 F+ X int fixx = 0;
1 \9 ^' y! L+ P8 q int fixy = 9;9 F. _- O3 Q ?, u
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);( Z6 d# \! r% ^& ^3 o- B. K
setFrame(&data, 1);" b" ]7 C, v" E3 H. S
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
6 j" A+ c ^4 a" E# `0 r setFrame(&data, 2);% i* Y+ e$ t# w) B2 M: r8 e
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432; S! Z. k0 X% c0 U, d* Z9 h h# K2 U
setFrame(&data, 3);. W. d1 ~" y. m# C7 M% |4 |+ w
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
- ]; S0 d) S5 V3 ]% Z& Y9 S- Q
}* O0 n' y0 K ^- b: r
__declspec(naked) void caller_WayPointBackGroundFix()
( n( d8 p# F" h) C e{
3 Y+ A/ i4 P+ u0 ^- V/ d __asm7 I; B8 c Q) R" p0 I8 r# x! l4 K
{+ o1 V& z; T4 ^3 I( W2 ]
PUSHAD/ _3 U' n: F5 o) v& n( x. B( e+ q+ T
lea eax, dword ptr ss : [esp + 0x38]
0 M$ @3 G) P1 a0 X7 k push eax7 G9 b T- x( V7 o/ B' ^
push dword ptr ss : [esp + 0x38]
' g8 z; e9 D) v3 f+ ]/ } push dword ptr ss : [esp + 0x38]) U2 k4 X2 @& }% L8 s5 x! U5 v9 m- o
lea eax, dword ptr ss : [esp + 0x38]
5 M* J$ @+ u+ X. g push eax
8 L1 J* s0 Q6 @ lea eax, dword ptr ss : [esp + 0x38]
# f% \8 ^" z# L$ e# ^- `, ] push eax
) W5 T: k1 K4 V0 ?. L8 Y push dword ptr ss : [esp + 0x38]" H, ?- d: c% `$ A
call m_NewStatShow_WayPointBackGroundFix/ @$ h9 {+ u3 y4 E! y0 h
POPAD
# h) x6 B, o& `) ] JMP D2Gfx::D2DrawImage, U: b i z; U. ^* \0 \$ x( }
}
: q$ Y8 x" D' p- h. k9 X. |+ @# u4 j}; T1 G3 k8 l. h' W* }, ]
0 W9 g* K& @/ y9 n6 a$ t' {& @
3、以下可以搞16*16超级箱子-腾出我们需要的边缘0 y" o( o3 v5 g( \- l) Q
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)' x+ O% Y2 o, Q, [& L
{
+ m8 e9 G0 D$ _- I9 M- ]/ G class D2MultiRes : public Library<D2MultiRes>
1 ?+ u& j% A$ @- G {
) J+ g; b& N! j+ z. \% V public:: x; D/ N) C" N- F# ~9 D
static void Init()3 w" A/ O! v% Z0 c1 M
{( i: @. [/ x/ K$ M
Name = "D2MultiRes.dll";
L0 |: Q+ F7 [% Q1 _6 B- j Offset = LoadDiabloLibrary();
7 f/ h" M( m- b& n( X0 O& I/ Q }
& D$ ^6 v. F6 Q) g };
4 w" s( y9 m X O D2MultiRes::Init();
; ?5 ^- ^+ F4 f- M! K7 v5 l& ] D2MultiRes::HookLibrary();0 o- a9 M8 B0 k8 R) F
& l7 h; C3 ` P" u" A* |8 k0 a) C% y1 b* L R! ?" V3 ?
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);! S# S. O- |8 c Z
Memory::SetCursor(MiscFunctionsOffset);8 n6 p1 C7 k* v4 Y7 r2 k4 h) s8 B
Memory::ChangeDword(0x1b0, 0x200);
) ?" i5 z: n5 |/ i7 |- o5 E* ?7 _& q
' x" Y+ o" a/ Q0 J8 q* S7 K( t0 r5 {# m0 z# D& C
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);" h% C7 D( }' N' g e- a% x
Memory::SetCursor(MiscFunctionsOffset);
" Q$ X9 ]% E% ~0 c4 d. B" B& j Memory::ChangeDword(0x140, 0x200);# ^2 _1 K3 w# k. |0 b
1 h9 Q# V% Q) [, j) v1 H
: R7 ]- C: O; I3 Y0 d2 { MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
% e. ^7 c$ d7 ~3 Z* m; S- u Memory::SetCursor(MiscFunctionsOffset);) n( h/ k; C, H! {* M0 W, R
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块$ Z& }0 M3 }! P }% w- b# i8 y! b
6 \9 z( @' K3 G0 g1 f1 q
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
/ v$ \6 ~" o4 a: k7 l7 y' } `0 D Memory::SetCursor(MiscFunctionsOffset);% B7 o% a0 a: U) a3 ]5 a0 k
Memory::ChangeDword(0x200,0x299);//下边缘 299最大9 _- y/ e0 K! i+ |; s( V6 I
' l' Z% J: h/ N B% k4 x# ~ MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
5 V. d' P* o* _8 D Memory::SetCursor(MiscFunctionsOffset);
! \( C G. @8 e1 \ Memory::ChangeDword(-0x280, -0x400);//这个不要动
7 K/ L' K. V8 L T+ A+ X }
! ]7 E9 V2 n7 m) @4 b$ R" X. j5 p6 \8 \; p; i$ ?+ b. ~
4、快完成了,是不是发现金币啥的位置不对??
1 Y% d% e& z' d! H5 V1 z
0 v' w: d% m) D1 W4 f//这里修正我们的装备栏) d7 Q' c/ p4 Q+ {. c
offset = D2Client::GetAddress(0x99B6C);0 V+ d6 H5 t: l" ]! y" i# A4 @1 `
Memory::SetCursor(offset);1 K0 |3 K' H, ?5 ]
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);- W0 n; t6 M, h: q7 J
3 {" c% C2 |: q; m9 B& T5 b0 W; H offset = D2Client::GetAddress(0x99BA7);
2 E5 }5 `3 F6 N, n; \5 R8 T, h Memory::SetCursor(offset);
9 M, ^: A! E1 {. J( z) \ Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
: j$ D8 t: V4 y7 } L/ n
}$ j& W" y6 B% I offset = D2Client::GetAddress(0x99BE2);! W# k" s& c* y( e- o$ f1 G
Memory::SetCursor(offset);% R2 w/ U; W/ J$ x F) Y! k
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);+ {! ~& f$ H( S; M7 J) `7 c
8 U m1 h" s/ z% e! } offset = D2Client::GetAddress(0x99C1C);
+ O4 L% n: J) [5 h# e Memory::SetCursor(offset);
) Z9 c' r! _% X Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);& n5 }& `2 e7 L; P( U. G
( C0 e/ U7 }) o/ o9 M$ S3 e/ y //取消两个popup,偷偷懒不过分0 z- D: B! s) g% e
offset = D2Client::GetAddress(0x9386d);( J N- W& O( S
Memory::SetCursor(offset);
4 _: P7 w" d+ Q1 m) Y Memory::ChangeByte(0x8b, 0x33);. \; i4 U, A4 W/ o& V( q
Memory::ChangeByte(0xc8, 0xC9);
! l( L$ a" y) p( f* g offset = D2Client::GetAddress(0x9390b);: ^# P! c2 u" ?4 [' a; `
Memory::SetCursor(offset);
- @& z- g$ ]& \( n Memory::ChangeByte(0x8b, 0x33);( `( T+ Q0 ~2 b' p$ O. b
Memory::ChangeByte(0xc8, 0xC9);8 Q! e0 L* _1 V* l9 e3 B; \. w9 C( K1 G
8 e) u2 L4 u* ^. X2 W, ] //修正提取金币
" W2 T& n% h: h) C offset = D2Client::GetAddress(0x8D3E5);4 J* J. F8 a1 u: [9 z5 q7 O
Memory::SetCursor(offset);) z' o6 Z* n& B+ I S" _9 j
Memory::ChangeByte(0xA1, 0xE9);
% B! ?" P' ?# O+ f2 o; M Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
7 ]! u2 ?& ?# u4 x0 z) F! z
; O& p7 M( S& @8 l: r, ` offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
( c) \2 {- j2 F Memory::SetCursor(offset);
% `' g7 {3 ]3 P p* q( |" d Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);, u* }9 c: ?% W5 Q: q1 f e
$ z0 V4 p7 {4 ]) n& K. Y
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);" `- M6 l+ I( {. w( p
Memory::SetCursor(offset);
8 P- [/ U0 \+ h" h Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);0 T/ b2 s0 T* A$ \9 k% O. g. y- o
# c$ |( N8 g' U4 d5 a4 {+ z
//修正关闭按钮
- w5 [( k$ h3 L$ }3 H offset = D2Client::GetAddress(0x8BD90);
3 g3 ^' l) r; L& p3 P Memory::SetCursor(offset);
3 y; K* [- `, {) E/ m+ F$ i Memory::ChangeByte(0xA1, 0xE9);
9 @9 o7 k9 F. P& q% \, W Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);9 K: v7 n0 R) C& S3 x5 q# J
! t' _6 I; J7 s
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);# H) ^/ a0 N- E% }2 X0 D
Memory::SetCursor(offset);( U* _" N2 a' P1 k
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);) f% D0 x# K! z; e: L" x
, |6 U/ g- }" u* i( g9 D
& `: x/ c6 c: H) W. K Y S2 P//以下是细节4 V+ z2 o* R t
#define getXGoldCoinFixBtn() RX(0x2d0)5 O" M. x2 W' W0 K# w" B d
#define getLGoldCoinFixBtn() 32
9 e# U& h: F' q# ~& `#define getYGoldCoinFixBtn() RY(-0x59)4 q. Y* y% N7 e! J: ?
#define getHGoldCoinFixBtn() 32
; q8 l# `, r- b9 X#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
5 C. q: C) ~! S8 I
& K$ ?8 ]3 w5 u#define getXInvCloseFixBtn() RX(0x3db). A/ t4 e& s9 P+ A9 U9 V J* u
#define getLInvCloseFixBtn() 32
% w" {; T1 D( E4 ^# h& V6 ^#define getYInvCloseFixBtn() RY(-0x63)6 g8 @& r) t u" S9 {- c( S
#define getHInvCloseFixBtn() 32
( U+ }9 x/ F) r6 `3 R#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())( _; O }( b7 C' {9 d
' A: @4 R7 H: QBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
9 o( }) Z: U8 F( Y{
- O! }3 X9 Y) q T$ R DWORD mx = *D2Client::ptMouseX;
$ n: k/ o% h9 ?5 o7 _ DWORD my = *D2Client::ptMouseY;
# ~; L: m- y+ u8 v( d( r0 O if(isOnGoldCoinFixBtn(mx, my))5 e* s$ ]' h* F* D9 J( j0 A q
return TRUE;
$ H4 o: F5 L' o8 l! t return FALSE;
+ _! U# D' j1 ~ X& F}
2 a3 O: z, |/ V* x( h$ G4 @1 R @__declspec(naked) void caller_goldcoin()
& k% }/ m7 k9 T& _4 O' K{) u( ^7 N( B A' ?0 ^ u' _
__asm
3 c7 X. b6 T) f {8 y1 {' }/ s) v2 u8 t" `+ g) z
push ebx
; [! t. s6 C0 e9 o. _ mov ecx, esi M: i. ^. |" V' s* \! J
mov edx, edi
, I# h. |' P9 D- F call m_NewStatShow_goldcoin: D9 n# L/ z' @: x
pop ebx' p2 D# ^+ x P& H) g+ S- p* D
pop esi
1 o6 A, p% ?% F9 L! [ retn
: b7 r. F" n- b6 r$ K }( I: Y6 p/ q* y% ~/ F4 W D
}
& Q9 `1 |' L8 ?5 Avoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])) K4 V" a# n/ w0 u% Z
{% }6 }0 F4 i2 k: m
if (*nXpos > D2Client::ptScreenSize->x / 2)6 A- ?) E5 { H# t: g* q
{
G+ q( ]% \. F" l *nXpos = getXGoldCoinFixBtn();
! ]( t, p: n: O *nYpos = getYGoldCoinFixBtn();
0 v+ J s' G- J( p! }5 } }
2 c9 z; o2 y+ p+ x7 `: o}
7 r/ H! t! A5 f: D3 \) d9 l__declspec(naked) void caller_goldcoinimg()2 J2 m6 J. j5 d
{
+ L( p9 Y- A8 R- H* A$ Y3 E4 l3 Y. P __asm" X% F: ]0 h; N) ~4 O
{
5 s- E6 _" t) Q7 \* l PUSHAD
" h. g: q" x* f3 }9 Y; b lea eax, dword ptr ss : [esp + 0x38]' f5 c8 ?0 D! y/ |
push eax/ i5 ]; b0 `5 R' D) G: U+ \
push dword ptr ss : [esp + 0x38]9 f/ x4 w$ G+ o4 X1 n: Q' n" W8 q
push dword ptr ss : [esp + 0x38]
8 P6 `" h7 ^2 U% s2 m4 C% H lea eax, dword ptr ss : [esp + 0x38]
+ U. V8 Z- T& u- U1 g push eax5 Q4 Q& z+ d# Z3 B! C: Y+ ]
lea eax, dword ptr ss : [esp + 0x38]- K+ z: t* K% s" G9 i8 Y# J% L
push eax0 D, k9 h( h/ A! _3 _/ q
push dword ptr ss : [esp + 0x38]
( s3 ^1 d" E* B call m_NewStatShow_goldcoinimg+ _) Z- C6 }' N ~$ e
POPAD
]: L" r# M7 L8 {3 Q( f JMP D2Gfx::D2DrawImage
% k1 B+ a6 |" E: U+ l }: {. z' q8 U, P" [% B
}
- N Q; q% P3 Y$ E, n* {- rDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标* `9 U; T* e; T) h' |
{) z: W' n C) N* ?; I- s* a) r
if (x > D2Client::ptScreenSize->x / 2)9 n, n8 |3 H1 ~4 R7 ?/ W, ~7 u
{9 y/ V7 Q' Y ^
*y = getYGoldCoinFixBtn();
1 V. W1 b: z/ B6 H, ?+ H2 s% I4 R return getXGoldCoinFixBtn() + 32;1 r9 L5 ~0 k* r7 ^+ C6 Y
}
! j) i" n9 }$ D' i return x;5 n3 @) ?6 u& E) i1 q
}
% k4 ]) H5 o1 i( h7 N* g6 Z: A2 S__declspec(naked) void caller_goldcointext()
5 B2 @( M- z3 g7 v{
% v7 C% ]# F9 O# M+ n$ P8 `; i- C+ z __asm- ^5 M) L4 v# F( c5 y( a
{7 {1 y* o: O' ?) v+ m! q8 _
PUSH ECX/ `+ F! v6 d3 O8 F! `
PUSH EDI& R7 E- R0 S) ^ \
PUSH ESI" f% u7 D! C5 w$ Z( r+ P5 f4 v* v
PUSH EAX
4 j* K: d; J8 j MOV ECX, EDX
+ F+ K% B n) o6 c LEA EDX,[ESP+0X4+0X10]3 i7 O3 Z/ `! s( h3 E, e7 ]
CALL m_NewStatShow_goldcointext
: d- l# A* F( N; S. Q4 p: d8 S MOV EDX,EAX% P* L% b( \' N! J/ W
POP EAX
/ B, r4 ]* i1 [: s3 V POP ESI! F; g" T7 @/ T; }! ]
POP EDI
6 L! Z$ y# l ^9 W W) M/ a POP ECX/ Y7 Z& L5 o8 p# Y
jmp D2Win::D2PrintString;3 k- C4 F* O% _, k; G
}4 B9 y. A h( \8 L$ C8 w
}
. v( d+ y7 b% r' M9 a8 Q# K x
* m% N, n" a9 k3 a, Y: t8 D& ABOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
# n# Z, `: W. K6 ^& I! \: @; `5 @' M{
% ^) G8 I0 k; M DWORD mx = *D2Client::ptMouseX;: z: ]1 `6 _6 Y1 C$ m" T& s
DWORD my = *D2Client::ptMouseY;, |* f" n( a) o
if (isOnInvCloseFixBtn(mx, my))
% Q. i$ o8 J4 U6 q' C5 h5 S i; Z return TRUE;& h) Q0 [8 ]& d# M7 C+ G
return FALSE;
2 {* Y q* ] C$ B. h: d}
S/ P X/ x5 u4 l* B4 K9 l" A3 X__declspec(naked) void caller_close()
2 a' T; L7 q% V+ Q{4 U2 j+ }% m! J. B4 n# }
__asm( v; ?& i( W1 l' z) l1 J( i
{: [' X" U5 R: c5 _ M7 j
PUSH ESI8 u) l6 [% ~) y# o! x
push ebx* ]/ {% E3 S3 ` Z0 Q8 @* ^
call m_NewStatShow_close' W" ?+ W+ i, n) Y; Q
pop ebx* i# Z8 b% i7 n4 `+ _2 S; w/ o! V
pop esi6 a: Z" L: ?2 M+ s/ O4 _
retn+ e( E, K9 J! U0 o% p
}9 ^* v+ ^; E; C
}
5 g9 R: ?" I! G3 v: b4 n# `8 Lvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
5 R4 Q9 q6 a9 S/ o{" e/ y5 b$ W8 n. e& Y
*nXpos = getXInvCloseFixBtn();
3 S3 t1 ^5 }0 Y$ J# l4 ~- P *nYpos = getYInvCloseFixBtn();
. X7 N. P& r0 D$ H; m}0 u) I T% M! _/ z
__declspec(naked) void caller_closeimg()
! m& M5 L5 ~; u{
- E/ u9 ^- k8 o* Y: v, l3 v __asm
+ |" d# \2 X7 j) @/ q/ T {$ \; x' m$ A: G# z5 _
PUSHAD
* R, M$ c d8 _1 ` lea eax, dword ptr ss : [esp + 0x38]
# F$ W( \! Q2 a" {6 P push eax2 _( `1 D5 |8 b( r3 w9 H/ A6 W
push dword ptr ss : [esp + 0x38]
+ d2 H1 d2 W' C9 X push dword ptr ss : [esp + 0x38]5 T' h- n' H) \* M- a" N6 a* ~
lea eax, dword ptr ss : [esp + 0x38]
3 _3 p( L! a7 Y1 l push eax: w. i$ j& [/ n. A8 W7 a
lea eax, dword ptr ss : [esp + 0x38]; b9 _ L% h9 u# y
push eax
) u" w G3 h# q+ u' t, ^ [4 N push dword ptr ss : [esp + 0x38]
% [' Y9 |/ K6 T3 o" _ call m_NewStatShow_closeimg
( H' x% }# v$ S. }% L POPAD
0 w7 S, ^! Z2 z, `) [) w8 q$ N JMP D2Gfx::D2DrawImage% W$ d$ f! j4 ?! c$ D5 {, f7 A
}
. q" o0 D5 n) q# P' \}
9 v$ ?" {7 l/ v; \2 W, o( T* _* L2 b I/ T# Q. O5 K; w' D
: Q9 |# f4 E9 j1 _
|
|