|
|
转载
3 V4 B9 Q2 ^: n. ]( ^BY SJ" E5 R7 V6 ^: z! U
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
0 I1 N) W) ?" K
& r; I, ]( E7 ?/ l# b3 s( c0 ^: GD2Gfx::D2DrawImage-10041
* o( A# c- Z0 Z4 l3 D1、修复技能的背景(不需要可以不要)3 H8 l1 H' ~% N' A9 t) e6 P: ]. E" ]
offset = D2Client::GetAddress(0x77AA8);
( _- h5 _5 s' i4 ~0 K7 ]+ GMemory::SetCursor(offset);/ ] R" T0 F" b: Z/ Z
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
8 t8 N' z2 q( x7 p5 e" A
; x; V6 ?& J! H- Lvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
3 h2 v- t4 ^" {5 U{6 I3 Z* L. T/ A, k! `% o
//Init data for print image
8 A3 s, [ u: ?) b+ } sDrawImageInfo data;! e2 ^6 ?* ~9 L9 L, I' s
ZeroMemory(&data, sizeof(data));
( \ I" T- W5 ^ d( R! @
) w3 H! y9 D6 \. p+ w //print background
- E5 H0 b9 L$ y, ?$ d setImage(&data, spellBackgroundImages);
6 N# l1 Y: I6 @' v) f9 |& F ~ setFrame(&data, 0);
" I: w8 C0 i+ d0 O int fixx = 511; h& b- q# F1 S' B* g. t+ }/ K! P
int fixy = 9;
+ n/ P9 e( w, P: f+ F* [ D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);: J9 b6 i9 Y1 e1 b# t
setFrame(&data, 1);
# z" b) U( M5 ^ L3 f, b D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
+ Q# G/ @& N" ?2 X4 g3 N, ^ setFrame(&data, 2);# R9 X$ T, a! c
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432- b; r7 d5 s" ~8 r
setFrame(&data, 3);
* R) L4 P! \: J; a; i# w% Z D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);! J) [3 X8 h& H4 w9 H$ A2 q- N$ W
}
& @* D, c! i0 r/ `. j8 Q$ G__declspec(naked) void caller_SpellBackGroundFix()
: |, l- a7 a# d( \) ]/ l{
c8 R1 R. d: f* e- T0 R7 h __asm" U! g/ X6 y, v
{
" \0 h6 h& R1 n! A% J- o" @1 u3 s PUSHAD' i8 x7 |0 _3 N f! A
lea eax, dword ptr ss : [esp + 0x38]9 g! I5 [% w- S" i
push eax
6 {( E' T3 z! R. S push dword ptr ss : [esp + 0x38]5 Z0 \* p) d% y1 W
push dword ptr ss : [esp + 0x38]
2 }! h- _, q2 L: A! w8 q# S lea eax, dword ptr ss : [esp + 0x38]
0 W7 P+ N, c3 X$ z a# B+ u7 W push eax" C* J9 q9 o3 T
lea eax, dword ptr ss : [esp + 0x38]
P+ I; s, f" Z$ E2 Y Z push eax) U! W+ C5 o# L: m' }* D
push dword ptr ss : [esp + 0x38]
: U; ~- i% C9 F; ?9 s- Z call m_NewStatShow_SpellBackGroundFix
: H6 `9 D+ s4 ]1 W0 _% n* k POPAD5 C2 ^; w- b" n5 S
JMP D2Gfx::D2DrawImage
' a: i, Q$ j3 k; d- g4 Z }
/ f0 v, ]( X- _& I+ |, z" Z3 I}
3 x5 M8 C& q2 i1 `# X/ n' T' i6 i. |# l* `# U; r4 J
2、我们如法炮制小站的背景
0 N" g4 F6 z* U3 u2 \4 T; @, ^* \ u( O- B% z) a7 }. a
offset = D2Client::GetAddress(0xAB010);9 u# J2 h# E, U; G; I
Memory::SetCursor(offset);9 U3 `6 `5 R" L9 M1 M1 w; C1 f
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);2 @; v" p5 D. w, v4 k
/ D; m7 N3 y7 i m( x" v# A, wvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
$ P1 d* t9 Y+ N; @% R6 X2 m. J{
. {5 @( l4 P* Y3 j3 J. V" D( }8 k( ] //Init data for print image
, x" A! H7 i, W( e0 m% s( ]# l! U sDrawImageInfo data;
3 _. R6 [: v, x( f ~" ` ZeroMemory(&data, sizeof(data));
, P* f* L I8 B( ]2 j' Y- O* G q5 h1 V8 H K8 ~0 }
//print background* e l. p4 n: V# D- ]8 b2 G% X
setImage(&data, waypointBackgroundImages);# G; |0 @. D/ u% i7 x! l
setFrame(&data, 0);
4 k. c$ b5 C: H9 R int fixx = 0;
' }* Y0 g$ c, B int fixy = 9;
7 M; L1 u i# `" V( t* H D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);% t9 Q, x8 j p( r8 W2 E9 ]
setFrame(&data, 1);! ~2 P& c* v1 s
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
) `0 X( r6 K) O/ Q setFrame(&data, 2);
U: D( B; N- Z8 k( @3 b D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432+ O; L; j. B$ R) S3 T
setFrame(&data, 3);
. H. ?, y( E" G0 ?0 G; q; @# h D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
y/ p3 ^. j8 Q) l* p9 i* S% f2 B- B/ b7 u' _( @0 h! A# q, b
}
2 T8 g2 z+ ]' B; K__declspec(naked) void caller_WayPointBackGroundFix()3 @+ |$ i7 `0 b* Y
{. o6 w+ V: M" ?6 N
__asm; c( g. G) l, {7 b
{
: x: d# v! [- \, X PUSHAD' d+ |3 L8 m3 B4 P l% A" v- r
lea eax, dword ptr ss : [esp + 0x38]
6 V* T3 }* N; y. r9 i8 m- ?6 m push eax* t3 f4 f- [# B9 v' c) b
push dword ptr ss : [esp + 0x38]+ h7 q! ?7 l( H# j4 U5 [6 W; n
push dword ptr ss : [esp + 0x38]$ G$ }7 b$ _# p5 D! J* D# r
lea eax, dword ptr ss : [esp + 0x38]1 o- W9 b9 x" b5 ]' R4 |
push eax
$ b2 [: `* Z2 i% F/ o( w# o lea eax, dword ptr ss : [esp + 0x38]: J$ d5 R- w/ w0 f( z5 f$ e$ p+ q. l
push eax# I: Z4 U+ K2 j7 |+ ^) n
push dword ptr ss : [esp + 0x38]
/ n9 ]/ O6 ?$ Q* W0 w7 E! Z! d+ F7 Z call m_NewStatShow_WayPointBackGroundFix6 Y5 u' r- v K2 `' n* O2 V
POPAD
8 \' {$ M& |( ?3 a JMP D2Gfx::D2DrawImage. h% ~- Z& c* X" t6 M/ e% }
}; `7 e- [: g. E# e/ ^
}. K6 S. J- H* `! R* j; m
2 ^1 Y) b" ^( O( M
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
7 @; x! r0 }2 ~5 u腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
|1 c8 j1 V$ A: K {
5 L3 u1 b7 r4 r$ x5 b class D2MultiRes : public Library<D2MultiRes>
( x# |2 e8 z' @$ N! R {: y$ J4 C' K0 }6 Z
public:! @( ~6 d* {- G( i( [# o
static void Init()0 x* ]: p, [) C2 p8 K" E
{! w$ N: b5 n) Q& ^
Name = "D2MultiRes.dll";5 t/ V: C4 A+ M; M% P
Offset = LoadDiabloLibrary();/ a$ O6 x, ~4 x( e
}. N& q, t( i$ v. ?3 O3 L$ f
};0 Z1 ?; {6 e* p6 V
D2MultiRes::Init();
- E0 d7 `* `' s5 y0 @$ d D2MultiRes::HookLibrary();
; ?1 h& B1 t7 {$ k* M+ P( I2 _4 Y& E. x5 l* _( |
& L! A4 g: ?/ z/ `$ J+ ~# n
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
( w3 O, ^+ p/ O Memory::SetCursor(MiscFunctionsOffset);& A7 C$ r* k4 l( x
Memory::ChangeDword(0x1b0, 0x200);
X' [' |8 H& x' b' {0 Z4 K! i+ z9 E, }- \* J
$ ?, ?" x6 w" P, D MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
- o( x8 X; y x, l) N0 U$ A Memory::SetCursor(MiscFunctionsOffset);7 m( N( |5 R& i6 b
Memory::ChangeDword(0x140, 0x200);
) d3 x9 F# ?7 c! z5 ?: q- Y
0 X- j% u4 K) Z, Q/ `& }$ q, t% W# _8 B7 C* ^2 D, _/ s
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
( g4 n% f9 u- Z+ m3 ~7 @! a Memory::SetCursor(MiscFunctionsOffset);
3 m4 G% [7 U _1 M# a5 O Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块+ N1 P h; V6 c q
1 ]9 t* j5 o1 D+ b$ [& e( h MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);6 |- t8 `0 z9 w# J2 u: ^3 E, Z. r
Memory::SetCursor(MiscFunctionsOffset);
8 W* s. O% c. W3 x" ^- D* m Memory::ChangeDword(0x200,0x299);//下边缘 299最大3 B) @- C$ i6 w& O; r1 W" F! k
' P6 l9 O) Q2 N+ j, S; W- ^* Z G
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);; h4 x$ y: y7 B7 [/ K4 p; L5 M
Memory::SetCursor(MiscFunctionsOffset);
* R1 I: n- e2 `$ `( w2 [ Memory::ChangeDword(-0x280, -0x400);//这个不要动
/ L" a& V" z t. T( z }
: p* B) Y$ \% W: d2 F* A& K2 d& a+ X7 R/ ~$ T6 r5 O) Z
4、快完成了,是不是发现金币啥的位置不对??
% k. ^) }- C6 F" ]' j2 T P
/ s' m* [) l! I& l//这里修正我们的装备栏# O# C+ I7 v7 O9 U# I
offset = D2Client::GetAddress(0x99B6C);5 \8 P* w8 E Z% F# Y
Memory::SetCursor(offset);3 [! Z2 h4 @( m: ]* @2 N: T0 I
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
* w: |' ^% v$ d5 @6 t o
. A8 c6 j9 |! j5 a4 y! B; b offset = D2Client::GetAddress(0x99BA7);; T8 `6 q# v, U
Memory::SetCursor(offset);
+ j7 A, |) N0 j1 n3 f Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
- q {, H$ J- _* s) L, k, e) s \. Y. D" h$ u
offset = D2Client::GetAddress(0x99BE2);$ s( n+ r7 O8 ~- E" x7 n6 d- p
Memory::SetCursor(offset);
0 l: h. Q4 }3 u2 v2 D& ? i2 L Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
/ s6 U# _$ w7 o& l1 r8 b0 A8 R
! l% H1 w* V/ [9 D offset = D2Client::GetAddress(0x99C1C);
. o- d' C% d% E8 }8 z Memory::SetCursor(offset);
. k, s, A1 o& | Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);$ w% j, Z" i: T
/ `& m. h7 A8 j- W) n* H5 t
//取消两个popup,偷偷懒不过分6 `; r% O# r4 Y
offset = D2Client::GetAddress(0x9386d);
0 F# Q3 @5 \ k7 g$ c Memory::SetCursor(offset);2 y, m5 |' F ~; p8 E
Memory::ChangeByte(0x8b, 0x33);
1 w% z# {! A+ W& M8 o0 m+ } Memory::ChangeByte(0xc8, 0xC9);% D" ^, k P' b. H( z) k7 z) b
offset = D2Client::GetAddress(0x9390b);# j B+ n5 A3 r
Memory::SetCursor(offset);
$ _6 v' _4 `3 z. B# S Memory::ChangeByte(0x8b, 0x33);& m( E' u+ l% I; p, z
Memory::ChangeByte(0xc8, 0xC9); ^4 U6 t8 i% r2 t2 K
0 F! l3 d) z; H: o% a
//修正提取金币
2 i& r* s- Q% q7 U offset = D2Client::GetAddress(0x8D3E5);
5 _2 c0 k3 c# c; g# n: k Memory::SetCursor(offset);, m5 ~+ _' K4 u4 Q$ D0 G, B
Memory::ChangeByte(0xA1, 0xE9);
/ R: v. _8 }6 E( l8 | Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
. d- ~* Z& i$ O8 g
* h: T0 H; h, C5 O L' c offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
7 [% L( n9 p4 n6 f, \ Memory::SetCursor(offset);% }. n9 S4 v% ^+ |. ^
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
4 k# [4 Z" D2 j
# Z% U- Q" w% y% B5 j" b5 I offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);; P' E6 Q; j. t! q8 y
Memory::SetCursor(offset);
& m- _5 f6 {5 e Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);3 r$ B3 F n% L, Q* }1 J2 C
0 t% ^( T+ C$ l
//修正关闭按钮
2 d4 G5 r9 |8 A, u0 P% O1 p offset = D2Client::GetAddress(0x8BD90);) _+ l9 i0 @: ], O! F
Memory::SetCursor(offset);
4 Y/ b: X- A" G- P: k5 q; u Memory::ChangeByte(0xA1, 0xE9);3 ?& z# A4 ^" c. ^/ r7 b6 K
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);) y; L/ ` q6 f% f7 I! ?
- W5 c8 O. U" t* M4 {' c* j offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
" H7 D; R- Z6 `) w) h2 o. D; E0 r Memory::SetCursor(offset);
4 `" {: U6 s5 \. R9 t% l9 C! D Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);0 m7 C! v; b/ p' T# \
3 J3 e9 K( k0 }! ^! l$ Y
2 u9 Q5 C3 s. ?# ~//以下是细节1 D- S, M4 J% ^" |0 y# f
#define getXGoldCoinFixBtn() RX(0x2d0)2 }& \5 [0 f$ q7 t3 I. u
#define getLGoldCoinFixBtn() 32
, z4 R! g- u# u+ K! V& v7 G R#define getYGoldCoinFixBtn() RY(-0x59)
( Z( ^' z/ D# p( G7 v7 y+ Y#define getHGoldCoinFixBtn() 325 u6 u4 O) [2 _- @( B
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())2 U) B1 q+ J9 Y: E3 W/ M
3 g% F2 m4 }6 [6 g#define getXInvCloseFixBtn() RX(0x3db)
6 {: F+ o4 z4 j1 x#define getLInvCloseFixBtn() 32
' d& ~' d0 p+ A* B0 v5 T% [ \#define getYInvCloseFixBtn() RY(-0x63)& v/ M9 c: k h, @/ P4 x) y
#define getHInvCloseFixBtn() 32
/ `6 U, V. `8 T, ?#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())! b/ s; P& j/ _7 }2 H
4 J# x6 k; {- N7 s
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)7 X) T* Y: B ~! N
{7 ?' f" V/ B/ T
DWORD mx = *D2Client::ptMouseX;
6 I6 _% `! \) @0 m8 e1 u DWORD my = *D2Client::ptMouseY;0 n! j% B7 [. @/ o
if(isOnGoldCoinFixBtn(mx, my))$ w h6 q; i; {& V; z
return TRUE;4 K5 A' Q% |# N/ }
return FALSE;5 E9 y" H$ @6 {; o
}
+ r) @; E4 f$ m! u. p. O__declspec(naked) void caller_goldcoin()
& M# h9 o+ ~) Y' z g9 A4 r{
/ t1 _( x6 v1 g( o* A3 V+ i. v: t __asm1 R/ x! l0 y" Q" s, u6 i+ Z
{0 t) I+ p7 {& n) h8 s
push ebx
: `6 N5 F$ m/ u- ]: M, d) i mov ecx, esi, u/ J+ X' g, m* n8 F# X
mov edx, edi/ [+ b! Y1 r& U! A
call m_NewStatShow_goldcoin% k, m9 c3 `$ x" I, t
pop ebx
! h! X" c o x/ m pop esi
) C; a) _% c4 R/ u9 |& G retn
: {! y! P& T5 D n3 p; N& W }
" V- r& i4 ?$ A% m) k T# @}+ i& }* b+ I$ [ A+ C
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])( r1 b; _. e2 N; p$ t
{ @- ~: P+ Q* e
if (*nXpos > D2Client::ptScreenSize->x / 2)3 Y, R0 c' i& `1 C
{
3 _1 H. M( W$ w4 _( }: w *nXpos = getXGoldCoinFixBtn();
' J% Y/ [0 C- g/ \- n( B; j4 M+ D *nYpos = getYGoldCoinFixBtn();! O8 I- T' D6 S8 P# v
}
5 z% [9 d/ m* x}
' P, F# t6 h6 Z+ J5 n- ~. }__declspec(naked) void caller_goldcoinimg()4 j. D* U1 ~6 l: ?' g
{+ T1 x! l, Q" {' x6 w, o! R
__asm v' M+ ~8 l0 e/ p
{
% {1 J# I$ Z7 K; W; O PUSHAD0 {; F9 u7 p! ~; g# g; `! d
lea eax, dword ptr ss : [esp + 0x38]
) J+ L1 R i/ W push eax
9 j! X4 S G8 Z7 G push dword ptr ss : [esp + 0x38]
# v) m6 t) B! f8 ^; l) ?. B push dword ptr ss : [esp + 0x38]1 T& H- p2 G& W( O: s) I
lea eax, dword ptr ss : [esp + 0x38] f T3 j! w1 z5 O
push eax
) s1 O8 L8 M! y& _8 A lea eax, dword ptr ss : [esp + 0x38]+ b/ {6 J- E. B
push eax) G; Q) y6 w$ K) w+ f2 }* {
push dword ptr ss : [esp + 0x38]7 I2 a) \) X9 s3 R0 R- `- n8 D: O* n/ Y1 a
call m_NewStatShow_goldcoinimg
% M7 d4 z% M6 i POPAD
. S" h! R% I$ H* \9 Q) g, v6 c2 [ JMP D2Gfx::D2DrawImage
. j% N: U" G7 r* P+ @, ~$ z }3 N% j/ x9 y9 L& m# D
}! Y0 q% E; L0 ]2 W) S
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标 q# u% A: V* `- T2 U1 A
{$ r$ l q ?$ |+ O+ b9 L
if (x > D2Client::ptScreenSize->x / 2); u6 z: W# i5 y! k4 L4 v
{, m- u) t- a/ k% }& Y$ ~
*y = getYGoldCoinFixBtn();
' k R2 C' H* X1 U+ ^! J return getXGoldCoinFixBtn() + 32;8 G& o! S; K% u& O4 K$ S
}
) g7 \# [6 |( p% [1 F return x;
$ k% U: ~% I+ G6 v}" p+ X* Q* l- T# I& c% W: ?4 a
__declspec(naked) void caller_goldcointext()
- t) V( ?5 m- ^. M' v H* Q" U{
2 O0 _5 Y% W2 f __asm* m# T" b8 y2 M& F6 j4 q7 ~+ L3 E% ~
{
$ ~7 j, h; a2 M+ A+ M PUSH ECX: h3 {4 y. R4 t! _6 O
PUSH EDI
( p6 I" Z9 }4 x$ {6 y$ j- c PUSH ESI
; G& x$ X' L) H9 L. d1 `9 w PUSH EAX) s0 a* z9 p. o/ Q8 _( a. C! c
MOV ECX, EDX
( J/ M1 j2 {+ C3 ? LEA EDX,[ESP+0X4+0X10]2 E9 S* }3 a4 o; F4 v6 D' c$ D. F
CALL m_NewStatShow_goldcointext
# p+ ~3 C$ g; M MOV EDX,EAX- f# l' r& @6 ?& J! f7 s2 E
POP EAX7 F6 T: l, n; P3 o
POP ESI
4 k7 N/ |' Q! V+ @& K POP EDI
& H0 ~9 n5 ^( ]% Q( P$ e3 ~ POP ECX
: {# o( F/ _' v! O8 p) ] jmp D2Win::D2PrintString;
6 S( E* ?0 _9 ?; Y% k1 ]$ E: a% k& p }& G7 o" {* {; w4 W0 g- ^7 P
}0 J# a0 B: W6 s! d4 o+ a
7 M9 m" N) a- M1 n% Y9 V+ H' \9 oBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)- c! }8 u# N: g
{
0 f3 q8 O8 ]# W$ T& k3 r' g DWORD mx = *D2Client::ptMouseX;9 g$ Z6 I/ g. X5 X+ A8 f- G! ]
DWORD my = *D2Client::ptMouseY;2 c; X M/ W% {& h& ?1 `
if (isOnInvCloseFixBtn(mx, my))/ \$ J% J. ?+ w# `7 k. ~( K4 c
return TRUE;
% r* }5 \& J4 ]$ K return FALSE;
$ t7 _6 y9 ]* W2 r}
2 L; p2 O! D, B2 h: t; e1 E7 o__declspec(naked) void caller_close()
. q/ E- f' | W1 x" q{6 M$ K8 h$ n/ q- O @9 l
__asm# b9 C' d. r' `- n# f' f: C9 F
{- t# n, u$ I0 h$ t+ @$ p* Q
PUSH ESI V$ g! _7 J/ K A" x, q1 J. o
push ebx0 {8 s1 e: ~; Z! u
call m_NewStatShow_close8 e' }& E! p# A& M! S
pop ebx
6 y7 _/ z* M+ E/ A pop esi% e0 d/ R7 |+ r' V. D
retn
' `6 w: u1 g/ |0 u- {+ w! o }
6 Z$ f% g* I3 \}
! O& e* s/ c* `! Xvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
7 V2 z/ y5 H+ O7 `7 [6 t5 T$ Z{
( Q/ R: T& s1 U& l *nXpos = getXInvCloseFixBtn();
' T- F7 h. L2 X' [2 L' f *nYpos = getYInvCloseFixBtn();
$ C( `0 K+ O+ p& j2 D# k. G}. Q0 d0 N b% y0 n2 U. F0 P8 n7 d
__declspec(naked) void caller_closeimg()+ c$ Q& _6 H! V4 @/ n1 q
{& L, V3 q2 R1 D0 B! p( {; Q/ N; \
__asm9 f8 j- n' B% _9 w+ x$ j
{# p z. c' E" k8 t5 e4 L
PUSHAD! ?, ` ^2 G1 t5 o& B& H( x
lea eax, dword ptr ss : [esp + 0x38]$ M4 d, V* r( i$ |
push eax
1 _5 k2 K! e8 y' {5 F8 ?1 B push dword ptr ss : [esp + 0x38]6 R( d' [. u3 F1 P7 J2 t5 I3 e6 e* y
push dword ptr ss : [esp + 0x38]
. n) q7 }( D' B1 Z6 @ E& c lea eax, dword ptr ss : [esp + 0x38]
0 ~" D6 H+ J: ~2 s) H P push eax* v1 i/ ]6 e! |7 p/ e$ m. v Z
lea eax, dword ptr ss : [esp + 0x38]- {7 e% s3 ]( K) J! y
push eax- L4 t+ c0 r0 O
push dword ptr ss : [esp + 0x38]. r$ p) L! ?! H' {3 X
call m_NewStatShow_closeimg
# M+ o3 s! I" {5 O1 c' Z- k POPAD
6 H3 O1 h5 y; l. _ JMP D2Gfx::D2DrawImage
& W( o' x* j* w" q% K! g) Q }
2 ^0 d0 ]( P! O* w4 g}
- T" H$ j6 p0 d, n2 C# i
+ V3 L0 F3 p5 c- |/ y
5 H6 r* R# C" z/ u- \ |
|