|
|
转载
; Y$ A# u. f, o5 H6 x2 m9 sBY SJ
9 Y$ W! u% O4 L( D& S首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
& H0 U6 F7 o6 H0 w, Q$ h/ p3 x5 G# d: _% D
D2Gfx::D2DrawImage-10041
2 R( [' l9 [; p: a* R( j# u6 i6 K) A1、修复技能的背景(不需要可以不要)- f8 c- P0 E, U3 z) T
offset = D2Client::GetAddress(0x77AA8);& f6 C0 ` b& L& U$ Q# E: Q! u
Memory::SetCursor(offset);
6 Z6 |/ ^$ i! R" LMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
' q; n6 A1 E1 o/ t$ T
! F* d# J: C: N8 X8 |void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
# m- u" |& K+ E3 a5 M{
$ v1 i r2 j# L, T //Init data for print image8 V3 Q; x. y) M/ g
sDrawImageInfo data;
; m& ]8 t- g/ ]# a3 ~4 P) ^ ZeroMemory(&data, sizeof(data));+ V4 G( ]8 F) z$ i! I0 K( F, b+ r
; H, b8 r" u4 a //print background
% k) j1 K3 u; I$ G setImage(&data, spellBackgroundImages);- ]- c9 F8 K$ y$ J" j8 J
setFrame(&data, 0);
6 b7 F$ T1 B5 {; z6 U1 X1 G int fixx = 511;
" U v. [. ^: ?+ _ int fixy = 9;
( P I, s O( m D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);/ K6 z3 y6 Q* C* ^" T. e
setFrame(&data, 1);
4 g4 \& t8 ^0 G$ C4 s, | D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256* X5 x% s$ ]" ?/ o# @
setFrame(&data, 2);1 J' r/ G* e, | Y1 |% P
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432- }5 d7 l. o; [* A
setFrame(&data, 3); [+ q# u0 ?3 u1 ^3 k: I. ~2 j# q( R
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);; b# p, Z! a% v% V. r7 N
}/ S7 F$ [& ~9 `$ k5 Q; u
__declspec(naked) void caller_SpellBackGroundFix(), I: L. [3 D( m9 b) n& y
{
b! d* j; @: a9 `! ]% U __asm
* w* K- }4 i+ x' @ {" Q' ?7 c" O- D9 W+ y/ f! L4 S! T
PUSHAD3 N' f" s. i/ c6 M$ ~9 E
lea eax, dword ptr ss : [esp + 0x38]
* G9 ?' Y' C) ^! u push eax, z9 G* [, k" E. S
push dword ptr ss : [esp + 0x38]% g8 G2 {! j- ^! s+ \0 v
push dword ptr ss : [esp + 0x38]
( ^* J( h( L8 X4 e8 j1 k8 k lea eax, dword ptr ss : [esp + 0x38]
# X$ i! p5 ^& M push eax
" `* R) k+ ], Y3 y4 n7 L( n" L lea eax, dword ptr ss : [esp + 0x38]) F: Z3 w: p2 A9 Z9 R$ }
push eax2 o9 b" T" o/ q) n8 }
push dword ptr ss : [esp + 0x38]! ]0 N; [- ?4 x+ a6 L& q
call m_NewStatShow_SpellBackGroundFix
8 k, ?+ z( a3 k& R$ r3 b POPAD8 c( e% n! ^3 E# D" L _6 n; D: B
JMP D2Gfx::D2DrawImage" C0 K- _3 A7 `4 _6 b, b1 u
}4 J4 w% L- h5 n( b& S
}; Q" S* V: M: @0 F2 d% |6 ^
9 x- O5 P/ h4 J% N- s
2、我们如法炮制小站的背景& K% @5 Y/ }; P- T' k& @; X
3 i. V( p3 P& d# o
offset = D2Client::GetAddress(0xAB010);
0 g) F% n# E2 P- oMemory::SetCursor(offset);) v* ~/ B P+ n$ H; c
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
! |, r. _; T6 D- b
3 G. T; `4 b+ N. ~3 [# Lvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
0 e2 ]. z0 z! {8 N. p; i{% ?( F8 m/ U% ~/ f
//Init data for print image$ u" W; h% n. R3 I. f
sDrawImageInfo data;, W" g# a/ ?# w8 m, [& p
ZeroMemory(&data, sizeof(data));0 p( b7 E4 q/ u7 A. @/ F; ^
3 {4 \* l" Z: o; x1 Z; i //print background' p) v' ?8 ]4 X6 w3 j" \
setImage(&data, waypointBackgroundImages);
, G g& k, s% V0 C7 J, r% [1 | setFrame(&data, 0);
2 a3 x I) g \ s" n5 c int fixx = 0;
4 p1 w% _5 x$ a+ f int fixy = 9;$ X$ F) u" ]4 ?/ X0 ^) b- e
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);2 A5 |/ \# c0 W' Y6 v
setFrame(&data, 1);
8 N }# H3 R, b+ U0 O D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
# I* n5 e9 \) Y Q7 D+ S: E+ `+ O' e setFrame(&data, 2);9 l, Q/ ]$ n6 [1 z! p& [$ A
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
8 G& X% c, R% U+ H2 m6 W* h setFrame(&data, 3);9 d b# q/ j9 n: M$ [5 c
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);5 |" U2 z1 |3 `0 {3 z
5 x" a! q8 a- e" ~* n7 z0 o}
1 f3 V9 H4 Q7 m3 D__declspec(naked) void caller_WayPointBackGroundFix()
+ a. I! O7 A1 q6 A8 Q/ X{/ [& u% D4 x7 D' D2 ^' J2 _# g' t
__asm+ X! H) g' p4 q. N
{
2 ^1 s3 [, Z" Q: A8 z2 \0 M PUSHAD6 s: L$ q- P/ @' T. S* Y
lea eax, dword ptr ss : [esp + 0x38]0 K2 z1 F5 g$ v9 f+ X! c
push eax/ h, y/ o$ [0 f7 R1 i5 S
push dword ptr ss : [esp + 0x38] n2 {, i) ]4 d' Y, h
push dword ptr ss : [esp + 0x38]
7 [3 T/ F6 X3 `& X2 x: d1 ~3 y lea eax, dword ptr ss : [esp + 0x38]: C1 t& D6 }; Z& d
push eax
: l9 `! V8 k ]9 V4 _& B+ \! ^ a lea eax, dword ptr ss : [esp + 0x38]
! G5 }: Y0 t- C) D4 d o! l: R push eax$ v& c9 n y0 F9 E, Y2 A, h
push dword ptr ss : [esp + 0x38]
g* _) a. j: \! S call m_NewStatShow_WayPointBackGroundFix; x9 K1 p% b$ i9 h" K5 v
POPAD
+ V( y) p* }9 M9 b5 W7 `" M JMP D2Gfx::D2DrawImage+ m, O& h, ]+ R/ X7 G6 G
}4 w* |# `3 X ^. W( o
}& _3 `) q% C+ ?( m8 M3 g
& H& ]" {" E$ q$ _$ o% k3、以下可以搞16*16超级箱子-腾出我们需要的边缘
; W" Y7 k# N, E9 M8 g+ w7 @腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复). M" h: \( }( C: t
{
% K4 j/ L1 t/ D" d' r3 t class D2MultiRes : public Library<D2MultiRes>
' Q! B& s6 b" q {
$ w I$ H0 Q3 w4 R1 E public:7 n" c4 k& i% J8 i5 |. p* G* x: Z
static void Init()& K/ v! i9 k0 O' s
{
9 Z4 V0 t. B% g7 l Name = "D2MultiRes.dll";9 j6 a) c) t& I9 P9 m4 P
Offset = LoadDiabloLibrary();7 c, \- G& T! J. |3 y& ?
}
8 a% z0 R$ E! c! ? };
+ w. ~8 X; C9 m4 y& a D2MultiRes::Init();" a5 w; ]' g4 |
D2MultiRes::HookLibrary();
- g+ z K5 k$ W w- I# F8 i' j5 B$ a" H: E( J9 B$ v
2 K5 d* k$ N9 D. t7 J. ^- p; v
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
9 Q% |2 x! y0 Q6 i Memory::SetCursor(MiscFunctionsOffset);: \0 h* g; p* u m. e
Memory::ChangeDword(0x1b0, 0x200);
/ h" q: D) ]' g! Q3 V
B3 K! u/ |& R/ L& s3 ~% L( X! H' U
! M$ p, O6 p- E$ ^ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
3 y6 `* C& ^5 D8 E1 r Memory::SetCursor(MiscFunctionsOffset);. v( D& @ N* _" Q1 }" B. Y8 i
Memory::ChangeDword(0x140, 0x200);
, f9 |& K: @; y. X$ t$ p) H/ i0 @5 ~5 H5 g1 b$ a% H
8 T' ?7 s& z+ ~- s" |4 s7 F
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);& k' R, D W7 r3 } F
Memory::SetCursor(MiscFunctionsOffset);4 `6 M3 D" u0 }3 b; M
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
" L3 C# i- n: D* R/ U$ J
* z" h4 c, o( L: C* D) s MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);4 w; J/ M1 I2 R1 ~
Memory::SetCursor(MiscFunctionsOffset);
6 W8 t9 i) K$ s. R! J/ U Memory::ChangeDword(0x200,0x299);//下边缘 299最大
8 R& ]9 h! N! |$ F
- c! A1 Z5 L$ r8 W/ Q MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);- _' [' T8 d7 y9 m
Memory::SetCursor(MiscFunctionsOffset);( j! Q+ h( N- ?
Memory::ChangeDword(-0x280, -0x400);//这个不要动
- ?1 p, A' T/ V5 F6 t$ P" f }+ ~; `0 A3 v9 ?9 z0 ?' R- m3 O
( G8 U* K7 _( A& M9 e! ^0 u* |
4、快完成了,是不是发现金币啥的位置不对??
* z% C6 f+ i. M5 v! r' v
/ K4 \% v3 O- ]: O# l, j" I//这里修正我们的装备栏 D/ y! X5 a5 k; Z7 }/ T
offset = D2Client::GetAddress(0x99B6C);* Y: G. X2 |8 M
Memory::SetCursor(offset);
7 G+ l8 a' v! L5 s/ h2 J0 j Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
5 o0 z* h. q9 M
% b" j+ D8 \3 Z; b' F6 O offset = D2Client::GetAddress(0x99BA7);
1 j# ? [# Y' }+ Y Memory::SetCursor(offset);
5 a" b) ~" v* p6 n9 y Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);8 Y, B0 B6 e9 B) Z
1 Z/ ]* c1 b3 G- R. c offset = D2Client::GetAddress(0x99BE2);& l+ Y6 Z, R& C% J* I4 C
Memory::SetCursor(offset);
; Q; P6 V; X$ q Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);" b. x; X4 X- a: C! l2 i
5 d5 [: M" E2 |/ h/ C9 P offset = D2Client::GetAddress(0x99C1C);, D9 Z+ z4 C0 ?- t
Memory::SetCursor(offset);
4 l- V8 R1 Q: X: e/ y Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix); R( T5 l# F' v9 G$ Z' d
( t) T2 t4 W& }' r4 q b. ?
//取消两个popup,偷偷懒不过分
B# a. V; P: T8 P4 x# | offset = D2Client::GetAddress(0x9386d);) _- G* X6 U& Z) d2 \
Memory::SetCursor(offset);
4 x( f3 ^3 o+ `, Y$ G Memory::ChangeByte(0x8b, 0x33);
& b9 C2 Y6 g! J# }! a3 e Memory::ChangeByte(0xc8, 0xC9);
& G. B$ s! b# Z$ X/ e offset = D2Client::GetAddress(0x9390b);0 p+ N5 @! _* \1 V9 S: D$ Q8 |
Memory::SetCursor(offset);
/ w' Z4 e0 x- b& a% o* O Memory::ChangeByte(0x8b, 0x33);4 s5 D: P# Z: W- b% b
Memory::ChangeByte(0xc8, 0xC9);
( i2 s# x2 k0 D: N y4 s, X
8 l9 b! N: ?3 A6 T; V //修正提取金币7 u# S9 v, a+ X1 d
offset = D2Client::GetAddress(0x8D3E5);
2 h# A+ j0 c7 x' o Memory::SetCursor(offset);
4 H& r9 Z6 E. h: d- I$ t Memory::ChangeByte(0xA1, 0xE9);
8 \ U& y; X6 g( F0 U" r Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
# J, U/ q* `+ q9 Z+ B1 J8 @7 H, t. P: ]- O# J7 m7 k
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
! r& K* S: g ^% ? Memory::SetCursor(offset);: a5 j1 B, p3 d" d8 T8 H+ j
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
& K- ?7 T$ Y N" i% | L, C$ L' ^* U- s
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);8 y4 E8 R/ e3 S; W v" u
Memory::SetCursor(offset);, B8 X' T: a( N/ `( ]
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);: h3 N' [) X; ]2 s' l! }/ U
( D7 v$ g: h* C& j
//修正关闭按钮' c6 a3 W% H& j
offset = D2Client::GetAddress(0x8BD90); ~) j) N& y3 R( S* a
Memory::SetCursor(offset);
' _: G# H8 V& z4 X, ^, | Memory::ChangeByte(0xA1, 0xE9);) M% ~6 k" y: B
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
}+ F+ @# t7 O) _# ~
- h. Y7 Q | b4 @) ^7 } offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
+ T1 }/ e* {8 Y/ k Memory::SetCursor(offset);
7 Z' M0 Y4 P8 N0 H$ A Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);1 |6 Q, V1 F- a9 l6 }8 u" z. t: N
. J, Q- e8 |+ y: G1 M- ?7 `; {; W* O; e
//以下是细节0 t1 H+ J7 D% n8 d o
#define getXGoldCoinFixBtn() RX(0x2d0)2 R. t7 z' C0 A' B" I: \( D
#define getLGoldCoinFixBtn() 32
% U/ r- M4 ?" N- A) j8 w- F$ ?8 Z% {#define getYGoldCoinFixBtn() RY(-0x59)
" v/ Q+ z5 S/ o#define getHGoldCoinFixBtn() 32
. V3 @/ {& D: x# m N#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())0 k: `% n- h1 V# Q8 x3 t- g
% o; \1 v9 Y3 l5 p& O( ]
#define getXInvCloseFixBtn() RX(0x3db)& X- v! ]# n4 b
#define getLInvCloseFixBtn() 32! M4 m( E3 Q6 g) n" L! s0 r1 M: V
#define getYInvCloseFixBtn() RY(-0x63)
" I- g5 h$ Z$ i5 O/ {' s# \3 S#define getHInvCloseFixBtn() 32
q: d8 K5 }+ b/ u0 X* t#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
6 U! J' M. Z' a& c& d$ u3 }! e8 k: Y1 D8 X( x' d
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)+ h- C6 V/ e2 P9 Q
{0 ]6 N1 K7 G& b; O
DWORD mx = *D2Client::ptMouseX;
9 y& K. Z8 W8 s% L( @" o9 W DWORD my = *D2Client::ptMouseY;# u% ~. ~3 c( W7 ]3 Q
if(isOnGoldCoinFixBtn(mx, my))9 h- u1 u7 E/ x
return TRUE;
! v7 h D# I4 M7 h return FALSE;- K+ Z: q! d& U- o4 d$ b
}
* [/ K! T5 ]: t& s# Y+ ?, _0 ^$ q9 Q__declspec(naked) void caller_goldcoin() W! o9 d! P& A2 K3 ]
{) ^0 i3 ]. t! B" p
__asm0 q" f6 O( L; W8 \ P/ }% g2 j
{
2 U( g( l7 Y; F# e+ h7 i push ebx6 n1 o' @4 {0 v/ z
mov ecx, esi4 r1 S; ~& D* b$ i
mov edx, edi
# n$ U8 [- `( J2 y/ E) \5 p g) | call m_NewStatShow_goldcoin: R+ O5 [# t4 `0 d6 z
pop ebx
7 v3 s8 m$ j u# v2 R& p6 _. y* Z! H ` pop esi
3 C! y d: a# E3 T6 t, v1 h" x retn( a; x" U' s; p+ e. B
}# ]1 u5 t w, J4 \& Q2 L, f
}
0 c0 x O" j) `* S; Pvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
& {5 ?; m; D( w{! T+ d* q! I$ q9 R! h8 _
if (*nXpos > D2Client::ptScreenSize->x / 2)
6 S/ K- N: w+ l& F: R, p* n {
, @# P! V/ ?; C9 F, H( N2 Z. O *nXpos = getXGoldCoinFixBtn();
' G) w/ Z/ N) I% d0 A" P# ~ *nYpos = getYGoldCoinFixBtn();) `* R4 }: a7 O& Q- H6 [
}2 q9 [% N E& P7 Z: l
}1 |3 s2 m! R; e' k0 {
__declspec(naked) void caller_goldcoinimg() K$ W0 J# v& o! R# M
{( ]4 i% r/ K! C
__asm
6 F# M# q8 F2 T$ M2 i {8 r$ D+ S8 y. l" ~& e
PUSHAD' _: b, ~, q6 i. f
lea eax, dword ptr ss : [esp + 0x38]# [7 D6 d0 \5 P2 J7 l
push eax6 |, \3 E1 z( a4 R- s/ x+ L
push dword ptr ss : [esp + 0x38]
% q0 f% x& e& C push dword ptr ss : [esp + 0x38]: |$ E! Q# p) M0 d* @
lea eax, dword ptr ss : [esp + 0x38]
0 M$ e3 u3 y1 s7 w _- B( Y push eax
+ p. t2 n1 K% l, }" n, s lea eax, dword ptr ss : [esp + 0x38]3 j% y+ q5 n3 y% ?# _3 D& S
push eax
" B3 y, F* B2 O3 T9 X/ ^/ |; G push dword ptr ss : [esp + 0x38]
2 F; v) w$ ?3 L. B2 T) ~% ] call m_NewStatShow_goldcoinimg6 N& N6 z1 ]7 q. A5 u
POPAD2 w2 p# G3 x4 D: m. k5 l
JMP D2Gfx::D2DrawImage
. h! {+ ?4 c: z, `6 b } w5 L- P. s9 j* k$ f+ N
}- ~! V u. h7 R( U8 r$ P
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标 s' b" }$ t9 ~9 s1 `% S
{
4 d) M$ \+ Y6 r5 H if (x > D2Client::ptScreenSize->x / 2)7 i- p6 T2 T/ d& c
{& t @: M8 L' L3 U6 `( {
*y = getYGoldCoinFixBtn();
" R2 s- g. d, O1 z+ D1 B return getXGoldCoinFixBtn() + 32;
4 ^4 O$ j: K8 u! R0 p, q }
2 @/ J$ h% R7 `- F% i" r return x;
/ i' ?# }+ u4 L: L2 a} e% O9 u, Z( W0 Z. z
__declspec(naked) void caller_goldcointext()! [( U& s6 Y5 Z
{0 S7 r! w4 W+ Q+ h" D! K3 t' @6 ^
__asm
4 `9 U+ i( j! T {) ~! M1 d7 f. x+ F/ f
PUSH ECX
, t) D1 x2 y. v2 B PUSH EDI* z- g$ Y. J" J! o9 L( I+ j( ^
PUSH ESI
6 Z, f- J% F8 z4 ^' @& J! S PUSH EAX
# T3 l! c2 E4 m2 D. K% r. a& V MOV ECX, EDX
" Q0 M% \# r$ G5 q LEA EDX,[ESP+0X4+0X10] u2 n1 G3 n0 W& p1 T! P9 g1 H
CALL m_NewStatShow_goldcointext
8 z2 b9 [0 h; M1 i9 q E MOV EDX,EAX: k1 B3 T" w- S, J: f
POP EAX7 ?4 b0 ]5 u. Y& Y4 U) G8 Y) _
POP ESI
, B; [1 z7 N5 q. D! W2 h: C POP EDI
8 U. D6 v$ K' a: F& M* Q6 L1 k/ q POP ECX
1 W% S& t4 g f* u jmp D2Win::D2PrintString;& q* {8 T1 @5 h3 R7 d. v2 k
}+ ]8 W$ r8 G# K+ Q9 m7 Y
}
; y0 c& Q* A; [, p5 \4 f3 W; U
9 J& T# J8 y% B4 Y5 v2 vBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
9 K* l# Y( z; f! I: d- f{- l2 ~4 T" M3 v5 C2 U& M
DWORD mx = *D2Client::ptMouseX;
% y2 Q, j' w3 s% J/ M5 r DWORD my = *D2Client::ptMouseY;1 c5 E/ _/ ^2 Z$ [8 S0 N( [; O
if (isOnInvCloseFixBtn(mx, my))! ^1 v/ g* q3 {1 t" G) r1 \
return TRUE;
, ~7 r: i5 }* P return FALSE;+ F( ^9 D( ~, p( Q
}! N5 E4 U/ s7 P, P7 ~. I
__declspec(naked) void caller_close()/ w! f. V* ]! ~, j4 ^9 r) ~$ F: z
{
" z% \& `5 d/ `; p+ J9 W __asm- \3 c# ~6 k9 H
{
! N; _3 O/ H/ S X6 s PUSH ESI8 L/ h( T6 ^! Q
push ebx( Z3 l1 T1 m1 q& g, g) Y$ u
call m_NewStatShow_close
& M: I! Z& Z* t+ H7 r pop ebx6 i1 G0 y; a( m0 i: t. W( N @2 k
pop esi' Y6 g) z0 J9 m" h7 t, U
retn& l r: ]: _2 E* q" D- t
}" E W/ _" J% ?+ u
}
. z( ~' Q3 D" s* l% z3 a# K- ivoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
/ L& z: d/ x4 p1 O; f{( ], l/ x7 \" t" O/ h9 D5 B- @* z, u
*nXpos = getXInvCloseFixBtn();! U& ^4 }& L1 B3 v
*nYpos = getYInvCloseFixBtn();
' R' N$ K& J9 `}
. @& J$ X& d% a; O4 M% W__declspec(naked) void caller_closeimg(); j; N+ f# w* S5 Z! i3 P
{
1 C) R$ I H" W7 I6 } __asm
# t! [. z5 `0 {0 x# H {4 r P7 ^9 c7 ]- d8 _4 Z1 j
PUSHAD4 I5 W" I+ s. V+ \: `3 J
lea eax, dword ptr ss : [esp + 0x38]' I2 u' }2 I* P: l1 j. u1 B
push eax
$ O$ Y. g* Y" Q! E! k. F$ e push dword ptr ss : [esp + 0x38]6 p4 I7 ?$ K3 c5 D4 s3 g
push dword ptr ss : [esp + 0x38]
7 t, i) y8 _) j" U% @ lea eax, dword ptr ss : [esp + 0x38]
9 w$ o5 k8 u4 s2 ] push eax
% m6 i5 K& M: S; u lea eax, dword ptr ss : [esp + 0x38]
. L, @/ L% `2 y! P1 w+ O push eax+ p9 D8 ` e0 |8 \9 P& [9 |& p
push dword ptr ss : [esp + 0x38]
2 p9 |# I% l+ K' H call m_NewStatShow_closeimg
& J N# a% F3 {) o POPAD
* e0 d4 B( p$ M4 `/ K JMP D2Gfx::D2DrawImage+ G, @7 Q4 P! L9 A' r
}0 s' d" k" i- v/ j
}
5 n3 H9 q. S2 B9 o# j3 G. P9 m' s* k/ b Y- B ?( X$ c
7 W8 |8 y. r# l/ C( o |
|