|
转载
2 {, x( `# S) ~8 L; OBY SJ
# {6 k% f g6 E) a首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的) Z7 I. b- s" ?0 P$ c9 K
- {" v) t/ { N# _% dD2Gfx::D2DrawImage-10041+ A+ |% `& g, W$ I! S. e( V; T
1、修复技能的背景(不需要可以不要)# _/ h0 K/ l/ J8 c M: s9 [' H" E$ `
offset = D2Client::GetAddress(0x77AA8);
) d2 X ?3 k! T X$ oMemory::SetCursor(offset);# Q) a5 i4 q, h( m4 t2 Y# v8 J
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);6 g. h, Q, ^( \$ l6 l
) K7 O/ x2 a& d9 V3 [
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])- [3 ]$ v* y- j9 `
{( d4 P' w4 c' y$ b; Y
//Init data for print image
# G# u# ~2 @6 k8 ]9 u+ O+ ] sDrawImageInfo data;/ |3 n' _3 F4 ^& `7 M1 q* L& B
ZeroMemory(&data, sizeof(data));
( H1 m: N* } s9 Z/ q% C# h
% x+ ?6 S& D5 w! ~7 D$ c7 \ //print background- a% V, m; ~( J8 \. o* {
setImage(&data, spellBackgroundImages);1 @2 _ V" u. {3 p* K2 T* ]$ M; M
setFrame(&data, 0);0 m! L4 ^% h/ L3 R# \' j
int fixx = 511;
6 g6 F% L8 u7 l, l" A/ _, x$ M1 c% w$ a" U int fixy = 9; Q- L+ {: q" Z9 K% m# E
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);# Y* J2 K( q9 ^2 L( l/ s
setFrame(&data, 1);8 o' ?* `" W' W) @8 e
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256! R) C0 J' Y: f' s! {- E- G. N
setFrame(&data, 2);
: m4 l8 W0 C8 C0 _0 @: s3 C% q% h' l D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
: E6 M9 V1 }; ^; N, Y& z8 x setFrame(&data, 3);6 Z/ @) X, m$ Z! `/ h2 s
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
; t* |2 L* N( d1 x6 v, ], T# @: ]}5 y& V7 {/ I* C) H5 Q/ } x6 m
__declspec(naked) void caller_SpellBackGroundFix()
) A3 V! P/ u$ g, F5 }7 H{4 X7 a$ f) J5 ]9 a4 U3 C
__asm& m! C# ~2 A$ F
{0 x7 Y1 y1 F6 c- @* x7 T1 _: ~, u! O# @1 {
PUSHAD
5 l3 \/ o" D# N lea eax, dword ptr ss : [esp + 0x38]/ g6 c9 z4 S0 f2 i
push eax
W0 [' c0 H; E, X: l push dword ptr ss : [esp + 0x38] A9 g; F1 E1 J9 _( y4 c" d z3 {" o! N0 x
push dword ptr ss : [esp + 0x38]
, r. I! W$ M+ S/ F+ {0 {0 P( v lea eax, dword ptr ss : [esp + 0x38]* E/ e' H0 D' i# C5 ~, F* U
push eax
" T5 c! J) h# L# u3 @6 P- m lea eax, dword ptr ss : [esp + 0x38]/ g, d3 }6 G3 j4 e& r9 q
push eax1 y- t6 a+ x# g/ g7 E9 b7 H
push dword ptr ss : [esp + 0x38]% ^; i( O( B) J7 D, p6 L
call m_NewStatShow_SpellBackGroundFix
, P7 d$ y9 p6 @; i# { POPAD2 r b7 o2 B2 i
JMP D2Gfx::D2DrawImage
% B) T8 W, X$ X3 b0 R& i* A5 F6 p; q }2 T( \/ w9 w* A" y
}* a; B3 i C# R+ v$ Y
7 {7 b1 L, u4 P( Z5 g4 u& n2、我们如法炮制小站的背景! x) ]+ I5 l6 k2 a" ~3 T" H
9 H. m+ ? U0 ~
offset = D2Client::GetAddress(0xAB010);. A# ~0 e3 f: l9 o% o
Memory::SetCursor(offset);4 K3 S) @" H/ t. j. \4 K' Q0 Q
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);0 U! P' G2 R3 K$ n1 G" H
; W, |# V2 T8 \: j1 H! pvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
# H6 F1 q4 E, I2 k& E{; |8 @+ S* G5 v& S& X* s b
//Init data for print image
, ~3 F; f6 r, k% J sDrawImageInfo data;7 f. C S; ~# e; x/ J
ZeroMemory(&data, sizeof(data));4 J2 ^3 b# @, [) g
6 D$ g! J0 u" Z! ^$ z8 m4 r
//print background
' ^% _# z+ J8 Q V) ~9 d7 M J$ k setImage(&data, waypointBackgroundImages);2 e6 R/ ^$ C7 C# _4 P t
setFrame(&data, 0);
& r( k3 n* L/ E8 f int fixx = 0;- F) t2 c3 x* E2 F
int fixy = 9;
( }3 q5 K+ c8 F3 M, `' i6 ] D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);6 k5 y! Y, X! l" @) r
setFrame(&data, 1);
+ J" p4 l, b9 Q- H D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256) `8 C% [9 \) M: h
setFrame(&data, 2);( ^' f, ?% A5 D. `
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
3 o1 z! |" m1 j1 \8 d3 E setFrame(&data, 3);
' @4 k6 ?' q) z& K+ n D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
. W, G+ P) ^3 K& ?1 z/ v j1 D
( ^$ F7 ]( ^% w3 w& U9 l. f. k}6 W2 {( n0 \) C: R0 M
__declspec(naked) void caller_WayPointBackGroundFix()
4 a1 m$ \5 b5 @{
3 ^! q( y' r$ m4 T6 i __asm5 R! k5 c& F) G7 L
{( v: L8 P( e; j& a
PUSHAD! I' g K+ c1 A0 E. y7 S i" E) L( N
lea eax, dword ptr ss : [esp + 0x38]
$ m" G' C& w7 X G- s- I push eax
7 f4 H1 I6 F7 m! T$ Z3 t push dword ptr ss : [esp + 0x38]0 q0 t3 L y% `" r
push dword ptr ss : [esp + 0x38]5 q! R8 q8 Z) _' D3 O& O
lea eax, dword ptr ss : [esp + 0x38]
6 k! ~" a, z) h( I push eax. [, K! G' J/ q
lea eax, dword ptr ss : [esp + 0x38]
$ y- b$ c; i+ @& k7 J+ d2 Y% v1 b. u push eax
( G& Q9 ?2 h g; q push dword ptr ss : [esp + 0x38]! |2 N. B* s4 k
call m_NewStatShow_WayPointBackGroundFix
& ~; o& \' C, C2 S POPAD, o" I! U# E1 [9 s
JMP D2Gfx::D2DrawImage8 X7 }" s' f# f
}
1 ?5 ^- |/ G+ ]+ T0 \}
# O! ^5 ], j! B. m# f/ b* R8 C% y) s F4 N1 t
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
& g! y% G, {* N# r! v' F$ a4 b腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)) Q- ]8 s- F7 V/ U
{
+ s5 e4 h' B2 e& f1 }$ { class D2MultiRes : public Library<D2MultiRes>
+ ]* Q: W0 s9 @% J% J7 y6 u {
* u1 p$ Q/ i3 u2 x) f( Z3 w public:
) j$ _9 q" z- C( I. i# B& Z) d static void Init()
) b) s. x* d9 }* [ {7 a0 O5 P2 ]9 b( N0 L! }( Y
Name = "D2MultiRes.dll";6 n, f; F# M4 ^9 x7 I+ h9 |
Offset = LoadDiabloLibrary();
. p; f, h! v# c. `8 {1 c }
% E, d0 T3 K! w6 G. M };4 B. D$ E" ~* i( _! f
D2MultiRes::Init();# B: N, [5 J0 J1 i( N
D2MultiRes::HookLibrary();& R0 _: _- K8 f# w
" X! E3 Z! F4 x6 T( @5 A
, E# v7 c, S( I2 S& j MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);& a! j1 D! x' h: M0 h
Memory::SetCursor(MiscFunctionsOffset);
* N; n k6 g; y) j( q Memory::ChangeDword(0x1b0, 0x200);9 F$ L: q; M2 N5 p
J. Y/ p, i: Z7 p% {$ t8 k* q* i% j
7 r6 s$ k ]; o! _. H- M3 P, T3 w
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
& I9 K# o; v9 _5 q Memory::SetCursor(MiscFunctionsOffset);! p5 X0 a0 a# {$ ~
Memory::ChangeDword(0x140, 0x200);4 ]1 V7 }. C9 {+ H% M6 M6 k& Z
- J* h3 P2 f8 I/ g
, V/ q2 r7 _0 U% t MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
/ i$ Y9 Z7 D) l1 l Memory::SetCursor(MiscFunctionsOffset);/ S- y6 c% E- C: K7 ]5 ?2 K
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
* U% c, X1 H* \
0 H- V; p" L9 e MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);0 h/ t) P+ h: @% ^( |2 j, h, s
Memory::SetCursor(MiscFunctionsOffset);1 O. V& K7 M1 d; `1 A; }* U
Memory::ChangeDword(0x200,0x299);//下边缘 299最大5 G+ Q; G- i: w
# |2 }3 X8 ^ O MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);0 y# s" N% C. n2 E1 A) H. l o2 t
Memory::SetCursor(MiscFunctionsOffset);+ L, `8 ?. ^! Q; o5 T+ b9 p9 P' n
Memory::ChangeDword(-0x280, -0x400);//这个不要动
3 R m! {% n; Y) y& l }( i5 ]8 T! V* Y- g; g
4 u0 T+ S5 X# i6 j
4、快完成了,是不是发现金币啥的位置不对??
+ I2 \/ J1 y5 V5 p, x" u9 P" h! V5 _( C% ?
//这里修正我们的装备栏$ W6 Q1 y1 F9 x6 Q4 c+ B
offset = D2Client::GetAddress(0x99B6C);
4 K3 r. u& f/ u0 w& r Memory::SetCursor(offset);0 ~( q0 A) C6 C0 L- g, F
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
" e+ n; s! O% t( d9 A7 k6 i# D" J3 C* W0 ^1 f$ p
offset = D2Client::GetAddress(0x99BA7);
7 I; i& _+ S4 t9 v8 s" P Memory::SetCursor(offset);
% D$ R+ d% R4 l8 n Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
8 ~6 |2 b% z/ k: d0 d0 A: r/ S$ [) m7 S
offset = D2Client::GetAddress(0x99BE2);
U, Q5 |; S1 ]- }/ [- M Memory::SetCursor(offset);
0 l: E& j7 B1 T- [+ x; t- P Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
: l8 t7 {' O; h* B' f- A' P+ b9 F" u+ S8 t
offset = D2Client::GetAddress(0x99C1C);' I$ r- {0 q8 T+ a+ \
Memory::SetCursor(offset);
3 M' ? N4 \% M3 o- A" ^0 f Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);8 ~' e; j# }; M6 i2 x' Z
" |5 T& x5 [9 [ r. `- ]% f! Z _ //取消两个popup,偷偷懒不过分
% E$ L! o( f7 ?6 g offset = D2Client::GetAddress(0x9386d);
* H/ @& c8 o+ `* N Memory::SetCursor(offset);/ s4 j6 b9 N" g/ V2 D0 Y' ?
Memory::ChangeByte(0x8b, 0x33);
6 e4 ^' K$ c8 G1 O Memory::ChangeByte(0xc8, 0xC9);; B+ j1 I3 v, p) E& |+ I) K
offset = D2Client::GetAddress(0x9390b);9 [9 @/ D; G) {
Memory::SetCursor(offset);
' r* u6 j/ H% c& {/ n% d& D; k Memory::ChangeByte(0x8b, 0x33);
" T D9 e$ g% v# W Memory::ChangeByte(0xc8, 0xC9);/ k7 @! O( v& a9 y! h# b: N: Z
" b% r* D2 ^8 A( K+ s" Z
//修正提取金币) E0 |0 r0 w( E; O* \
offset = D2Client::GetAddress(0x8D3E5);
" f) `7 f7 f: g8 a9 A* @) N Memory::SetCursor(offset);& `9 v; ~/ B2 n/ ^
Memory::ChangeByte(0xA1, 0xE9);
- ]/ s' O5 x' @: b: t$ P Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
4 f$ b& S6 p2 ^: _, _
/ Z3 I! [, G$ }2 k, f2 U offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);( M* _/ ], a( `/ g
Memory::SetCursor(offset);" R; ^! k+ @4 e! Q, t" i
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);: x! e5 e, A* T+ ]: C- F
( X- R* p# z3 ^0 b8 Y
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
* k6 N h8 _! J, ?0 c4 x- P2 M, i% ` Memory::SetCursor(offset);
3 M0 \& e& B# N! ^ Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
6 a0 }( T% O$ u2 \! {" G. v( u+ \2 O& s: K) V5 L. F
//修正关闭按钮) K5 ?# r9 [6 b) \7 t: p
offset = D2Client::GetAddress(0x8BD90);( N. k9 y4 T* P: F/ \/ E
Memory::SetCursor(offset);& Z- z0 e! V1 t5 ?2 W) ^
Memory::ChangeByte(0xA1, 0xE9);
- J3 |! Q$ F, r( f Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
6 G1 ?& {& S5 S8 g
5 Q& g. ~# @# Q offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);, q9 Q/ `' q3 ?0 d$ k* X: }& |/ B
Memory::SetCursor(offset);+ r7 P& |2 V' r6 k
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);6 t' n3 C: c7 J/ }
' n- [5 O# V! X9 ^) C! X# b1 k
+ B/ u/ J; F) d T; C- o( n! Q. g) C//以下是细节+ x4 P% W' g' d2 s# u( a
#define getXGoldCoinFixBtn() RX(0x2d0)
8 R7 T$ {3 l0 R) | u) O$ y. k#define getLGoldCoinFixBtn() 32
2 V1 j. e! H0 U( P |) }5 L#define getYGoldCoinFixBtn() RY(-0x59)' s9 Y$ \ V& f* }2 O
#define getHGoldCoinFixBtn() 323 T, S9 F5 A% b2 n' ~# j4 s- `
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
" _+ u) J8 u4 B: _1 L* Y+ O! ^
#define getXInvCloseFixBtn() RX(0x3db)6 B2 o$ q6 d) M
#define getLInvCloseFixBtn() 32, d: p Y! Z7 n4 n
#define getYInvCloseFixBtn() RY(-0x63)
' h9 E) Y; M4 |1 V' t# G9 b4 ^7 E#define getHInvCloseFixBtn() 32
- B9 e$ w: L! ]#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
/ n9 D+ [1 F$ E) D" \( n0 G( r, l8 f1 B
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)( {7 @( i" J4 j H
{
/ z# q0 N5 R3 i DWORD mx = *D2Client::ptMouseX;( L5 ~; ~: N4 A9 y/ L; H
DWORD my = *D2Client::ptMouseY;
! c( I7 t8 n3 U+ ?1 U; h if(isOnGoldCoinFixBtn(mx, my))
& V3 `" `8 v# H7 m! S% L return TRUE;
3 F& i. j' I. R3 {* e% |* h/ q j' R return FALSE;# `# X# Z8 z2 G5 g4 O
}
3 b' {5 N" N; e4 Q) I4 O- x__declspec(naked) void caller_goldcoin()
2 X: S# l1 O* i1 F& Z7 c, [{- v, a7 B; i! r3 Y1 m" m
__asm
# B/ w# x& e! z# x {
' [5 |5 D7 W% z5 V$ K: T push ebx" W1 F3 N. U6 K) N
mov ecx, esi3 V/ s% v$ D+ K, S6 R
mov edx, edi
: ~$ X4 _9 i( _& m% t3 } call m_NewStatShow_goldcoin
. z; H+ D3 U. Z7 H2 u pop ebx! ?% z6 e9 _. U0 d
pop esi& u% v+ r9 o J E+ g
retn
. d7 w- `7 v3 A1 T+ `& l }+ J# g" O! j: j+ U J
}" E6 E9 e R2 x) j
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])) M# @8 N! V' q0 I
{
9 v/ C' U. x. r0 w/ P2 w& S if (*nXpos > D2Client::ptScreenSize->x / 2)# J$ F' a/ ^ J
{% |8 [$ @& J0 S+ h0 i) R4 c4 ], V1 ?
*nXpos = getXGoldCoinFixBtn();3 H% D7 t( ?' u* [
*nYpos = getYGoldCoinFixBtn();0 i. ?7 {. e7 G/ Y- o- X
}5 W6 [& H' P U7 @
}: n! C. f1 D( O; l# b
__declspec(naked) void caller_goldcoinimg()8 n- v6 S/ G7 L' {6 u% z
{
8 c9 h% ?: R G, j __asm( ~. j- l2 ~" @! ]& \- Y4 X
{
1 f( F9 D3 ^+ ? PUSHAD; |) H/ T% \( c* Y+ s# d5 L3 t# v
lea eax, dword ptr ss : [esp + 0x38]
8 M+ }. R7 l7 j; N5 B% o X7 M push eax& J8 i* {, k5 F
push dword ptr ss : [esp + 0x38]
* H! d/ _( T3 T' ?4 r( o+ h( F push dword ptr ss : [esp + 0x38]3 J+ H, N" F! w4 @1 ~
lea eax, dword ptr ss : [esp + 0x38]
1 Y6 ]1 M( k6 y$ B. O push eax J$ w7 k* @& T9 f1 s2 A) d" N
lea eax, dword ptr ss : [esp + 0x38]# e9 t3 x6 z, J8 N& _. S \
push eax. W# Y! L* Y3 t4 x
push dword ptr ss : [esp + 0x38]
3 Z4 W- I3 l3 S* ?) [ call m_NewStatShow_goldcoinimg
; Z5 }0 e0 K' u7 j* T' \# K POPAD0 f8 K: x1 S b+ B% d4 H
JMP D2Gfx::D2DrawImage
3 i2 E% Z: y, m: ` }! u. O: i% f3 u3 Z! E
}' C2 I8 W; A8 `5 V9 S" p8 I' E8 V: I
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标! ?: t8 @. I! [3 b
{
' o$ l/ Q, h% _ if (x > D2Client::ptScreenSize->x / 2)
, {- @9 J, k( W/ K4 e% x8 V V0 M {/ M% v9 C8 Y% F. i3 _
*y = getYGoldCoinFixBtn();4 {+ Q( A# p! X# y. @+ v8 X
return getXGoldCoinFixBtn() + 32;
' \+ P& k% p4 z6 d) X }' x5 [7 I& |7 K1 \- ^
return x;
$ d2 t- u9 [* G7 y- s8 Y+ B4 k}0 ^/ A( X/ ^& g0 b* E
__declspec(naked) void caller_goldcointext()5 K! I0 L5 q( R( C) E* \# Y& ^# [* ]
{% U3 [" E0 g9 k {6 ]# Y
__asm+ u" g. K9 ~% g+ G
{4 U. e& T$ w5 o/ d8 n ~: m2 o
PUSH ECX) W6 r% w: T0 G
PUSH EDI
9 L h$ Q5 T# P$ g- E4 R- E PUSH ESI5 E6 v! {4 L0 c* H3 |) T
PUSH EAX2 W$ C2 ]! R7 L
MOV ECX, EDX
1 a4 `$ d _3 V5 i; e LEA EDX,[ESP+0X4+0X10]: }* P7 ~' }( `+ x$ r3 ]$ H* A
CALL m_NewStatShow_goldcointext) y( Z8 r5 J" i( ]: t
MOV EDX,EAX
7 x; j! k; e+ U2 \% g9 a POP EAX+ P% c) F) l: j: {* f% o& A
POP ESI
( O' R. u9 \$ A! h/ T8 T- l POP EDI
& b+ ]# e$ m- {% }1 M: [3 [8 J' i POP ECX& b1 k: k1 P2 {1 {# R5 D/ D+ |: N
jmp D2Win::D2PrintString;
! X/ b7 r& V3 U7 d: Q, t/ N4 Q }
7 d' n Z) ~1 {: }2 n}0 o) c6 b" V* S/ q8 {- R* k
! W: ` t! [, T' T; ?% f+ L
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
' Z0 E* q" ^3 Y2 G+ L, t{
' y* c# t, S# x7 o% l DWORD mx = *D2Client::ptMouseX;9 z: W7 \* v9 C/ J2 h& w
DWORD my = *D2Client::ptMouseY;
# y- ?. Y5 R- f/ S% Y2 E/ C8 Y if (isOnInvCloseFixBtn(mx, my))
2 Q5 O% V& [& ~: t( @9 e return TRUE;
0 B) j5 @2 B5 @. p return FALSE;
! `9 y; h! _" h( v w5 a}
- {$ W+ `4 L6 j5 \__declspec(naked) void caller_close()
[9 G, j# N2 D{
+ C0 b6 T( v+ s4 Z/ H __asm' D+ O, w s: k3 G! z% V
{
1 v6 O7 d+ K. x6 \7 x" T PUSH ESI
" ]% j9 a. }8 i t" Y2 Y push ebx
* D5 V3 w2 h' s9 k* z call m_NewStatShow_close- k! @3 k7 I" b( N
pop ebx
. @. n W1 P* | pop esi) a/ i5 I5 K1 K, n" a2 h
retn
) D& R$ b8 g' I4 C }
$ R+ ?( l; C+ ~6 z+ d j}
; Q# }+ ?' Z3 S" j- m9 W( m4 {+ zvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])7 ~' N$ z, p. H1 r
{* D3 i- f5 u; @5 d7 D
*nXpos = getXInvCloseFixBtn();. z6 k" o8 g7 q1 E7 h2 O. h
*nYpos = getYInvCloseFixBtn();3 k5 u0 @: b1 m( u
}
' a1 x9 v( p8 I& [& T; t__declspec(naked) void caller_closeimg()1 N6 b4 F& t" j" ^4 K% t' w
{
" }% F/ n4 j/ ~- \ __asm
! P( Q" X3 p, x {
" Q, {$ i( h5 L! I PUSHAD
$ A9 c& ~8 x- y. A1 E lea eax, dword ptr ss : [esp + 0x38]
9 ~3 I, W( x# H8 z: z l& Z" G7 E push eax y5 d6 O0 {: r8 [) y
push dword ptr ss : [esp + 0x38]
1 T) t5 y1 e! z+ p" ~9 k& _ push dword ptr ss : [esp + 0x38]
+ l9 Y6 c' d- ]2 Q. d8 C lea eax, dword ptr ss : [esp + 0x38]
7 d! S) x( m* U) z* D: y9 u push eax
% E7 N) F# G3 A' @( ` lea eax, dword ptr ss : [esp + 0x38]
; n& K$ j+ e$ A% A8 w7 n- u push eax
$ |3 i7 b/ s! Y1 n push dword ptr ss : [esp + 0x38]+ j8 s2 A) H) Q% |$ y
call m_NewStatShow_closeimg* U, M( J( t' U/ [
POPAD
0 [! {: s, p) y) D4 h$ a* Y) ^ JMP D2Gfx::D2DrawImage
0 Z' J. \6 X. a% z6 X, |& D; L }7 n4 x: @# `8 O( f1 s6 ^' f" n) y
}( A8 {- G7 V* B9 A, }9 j0 F
5 N5 g/ I+ c# N& b
6 b+ Y1 B0 N+ m1 R2 M |
|