|
|
转载) \) E2 @; @7 S! G/ \% D% U1 v
BY SJ6 J o7 r, O$ r/ [- o
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)9 f6 R8 ` {9 @/ Y* A
2 f2 ~) T$ @1 d {( p& h0 N! _D2Gfx::D2DrawImage-100413 a: _% {1 T! j# @# B
1、修复技能的背景(不需要可以不要)
3 K2 Y1 [: A6 T' X$ W2 S% Voffset = D2Client::GetAddress(0x77AA8);
, m' A" ~1 i1 f; u g+ s2 HMemory::SetCursor(offset);
: V! F! q0 d7 P8 y1 H! iMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
6 G( W1 }% B6 ]8 X/ C7 _
+ z9 r% G) f6 |1 ivoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])6 Y9 C6 q ?; T& c( z' i
{
! N2 ?& L' F- s. |6 F //Init data for print image
. z2 B* L8 s$ _( d( d sDrawImageInfo data;
; f7 B+ r& ~ \# O( N7 n0 I ZeroMemory(&data, sizeof(data)); b6 Q8 E; }& j
8 R# b3 r' N& p' w3 a& ]2 M
//print background
3 i! a [+ k) |0 j" K! N setImage(&data, spellBackgroundImages);7 |' d% A" o; N- b' a
setFrame(&data, 0);6 H0 f; W$ }: @% ^4 g# \4 F
int fixx = 511;1 d1 F2 Q9 A* F4 b% v: R) p
int fixy = 9;
; c* r* X: W# {4 I4 V5 y D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
' M0 P! `% I% i7 Z, {. Z9 ~2 e* k setFrame(&data, 1);
( X3 A6 i v9 [) V' Y# b3 b5 E) M D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2566 Q* n* k- K: D! n; W
setFrame(&data, 2);* B' P! r1 B. ?# b1 P& G4 w
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432& h. ]7 S* A3 I; U8 {
setFrame(&data, 3);8 {; |+ a1 h6 C/ b
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
# M3 ?$ ?: ~" B# D4 U0 R4 ]}. b" q; d( p6 K, w2 h2 k
__declspec(naked) void caller_SpellBackGroundFix()" m' m& a! H' c' x" B9 R
{
+ X# R2 ?" z! O( p9 T __asm
1 G: a1 Z4 P8 Y3 C' l {3 G. W) D, P5 P+ U
PUSHAD5 r9 m0 j/ }1 X/ f2 Y/ s
lea eax, dword ptr ss : [esp + 0x38]+ }! G- D8 j8 M6 H
push eax
& V4 @) Y5 y8 z, z push dword ptr ss : [esp + 0x38]: o0 g* ]7 c X
push dword ptr ss : [esp + 0x38]* y( M2 m- W9 K/ L
lea eax, dword ptr ss : [esp + 0x38]
6 E* K' n/ h- A# ?7 b' E. G push eax8 M8 B0 y8 B+ B% @
lea eax, dword ptr ss : [esp + 0x38]
4 p' A& a6 U; Y4 p8 ]8 m3 [: n push eax2 u: [+ `) r2 [& z: _1 j/ J
push dword ptr ss : [esp + 0x38]8 R* `9 ]; G) G4 L; ~$ b8 `
call m_NewStatShow_SpellBackGroundFix
; M- f' r% |8 M( Y" i POPAD0 X6 k- [: n" R# s. |4 e& F* h/ [: E
JMP D2Gfx::D2DrawImage
1 R; U) B5 Z+ _- \% _, Y; u% S }1 Q; f& m* |& |: X, y( U3 T
}
% C: ~( g+ B5 |( e" @, p$ W
9 A/ w5 W+ r5 s9 R3 o2、我们如法炮制小站的背景7 P, F0 H. ? C' J6 e/ s
* a- B3 [/ D4 B* B
offset = D2Client::GetAddress(0xAB010);- R: w/ `2 D6 p) N2 z7 B3 I) R/ X
Memory::SetCursor(offset);
5 T* D, P. ~0 b5 Y, w3 T/ [Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);4 H$ b/ {( K$ I( `* ?1 A
2 U- U6 D) N# E9 b( y# [4 k$ N+ G
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])4 j7 U0 u9 |# E# P' s
{% T& _6 G. `4 F% Q( _0 w, `
//Init data for print image# q* G9 A7 q0 G: L9 r( A9 r
sDrawImageInfo data;6 S( x/ B7 o5 K$ f7 U
ZeroMemory(&data, sizeof(data));0 D. R! i/ y, [" ?+ ~! n9 J6 }
- L0 H7 O2 F6 n* n) {; P& @
//print background
2 K/ O7 a: E5 g8 \3 S setImage(&data, waypointBackgroundImages);- Q9 z! Q0 t) } G2 J+ w& ]
setFrame(&data, 0);( t# W2 X5 A! j1 M" ~, D
int fixx = 0;
+ j4 E+ |9 V6 X. Z3 u int fixy = 9;5 I% d8 W& l6 D7 S X; p4 y& t
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
+ T: i6 S* ?! q setFrame(&data, 1);1 s0 r: e/ B$ [0 V
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
& a9 a/ ?- v/ v6 C setFrame(&data, 2);' f: y8 I' s n6 {
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432# g9 d8 x; Q6 R( a* I& d
setFrame(&data, 3);
" e% O# e( S+ D7 Z/ q4 p _ D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
! h9 Z% z; y5 M2 J
0 M0 b: t( B' b}
0 l; F3 K \* X) y1 r0 j8 [__declspec(naked) void caller_WayPointBackGroundFix()
3 R3 {* w7 c) B d, q3 x7 m{1 A+ ^% W5 `% x0 M2 R. X
__asm
+ e9 f& A4 G( A {( e1 U- o& e( t4 B3 c& w
PUSHAD% [ z( m# D$ K7 m0 t; Z# s i
lea eax, dword ptr ss : [esp + 0x38]
( b3 {. J$ |/ y* i# ^1 h! r( M9 \ push eax
$ l1 D9 A- u% Z0 N2 p push dword ptr ss : [esp + 0x38]
& ^' P- |5 y; Y& G push dword ptr ss : [esp + 0x38]3 {/ i' j0 O. I2 I
lea eax, dword ptr ss : [esp + 0x38]
1 ?! u4 t: b( E7 Q, D push eax5 L/ Q3 @: `* a- M
lea eax, dword ptr ss : [esp + 0x38]
' Y4 _! \6 z9 x! r7 \# F push eax# }2 I8 ~6 u5 q; Z4 b( O
push dword ptr ss : [esp + 0x38]7 c! ]* T/ Y) u7 S* n" X; D
call m_NewStatShow_WayPointBackGroundFix$ l o( v9 P( I, b1 |
POPAD
/ e( F3 \, X, P JMP D2Gfx::D2DrawImage& ?( u# Q& M4 ^9 u. D
}
9 o s, z# B3 u( Y( L, Y}$ f+ G* N7 g: S+ T5 ]' G) ]
$ p& _# \, P8 q* O5 C3、以下可以搞16*16超级箱子-腾出我们需要的边缘
j# J# g' v& `2 {: M/ P3 C腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
6 B# G) ~1 e! N7 _0 t {
" r. w1 v/ D! h class D2MultiRes : public Library<D2MultiRes>% d5 d) @$ W' k* c# C, [6 m
{+ T$ u+ v- b4 v. R) E: s X
public:
7 y+ d! `4 D$ \9 n; x0 A static void Init()
% m; j0 ?' Z( T* C9 X. l {
8 T4 i8 b" j) K9 X" A2 C Name = "D2MultiRes.dll";4 @2 @% X* M8 }! Z5 z0 Q2 |
Offset = LoadDiabloLibrary();0 R5 B. a* \; T9 H
}
( H4 _/ C, f z y4 T };
- d' p1 ]" {7 X" m+ f. b' m! N0 a6 Q D2MultiRes::Init();, c5 \- b* `- P0 ?" c! }1 r
D2MultiRes::HookLibrary();
* ~; h" [; [* u2 N7 w+ W* ^3 @ |
# d: l0 h9 H3 z5 h6 n6 ^ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);, {" Z7 s" z" Y* D9 ^
Memory::SetCursor(MiscFunctionsOffset);1 L" H* W% G4 D/ H
Memory::ChangeDword(0x1b0, 0x200);* \% A N' j- \" K
: S2 M$ `& {! w. X4 U+ y
1 q4 Z' F/ i* L# J* o+ e+ r3 v4 A MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
% l" Y& K" h# D3 k! U5 V+ F7 } Memory::SetCursor(MiscFunctionsOffset);3 ]. }4 A6 L6 N/ H
Memory::ChangeDword(0x140, 0x200);* d- T! f+ ]- T
+ g3 J, U; b. o/ P
3 u& }/ C0 ?3 w1 ?4 A+ m. h MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);5 D8 U) x, t3 l: S7 X
Memory::SetCursor(MiscFunctionsOffset);
2 K2 v* ~" H- f M1 o Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块0 I# @. }9 U8 {! T& S
: Y5 K2 B+ g; Y$ N$ I
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
; n/ S5 Z3 a0 ?' g; l a! {* P% L Memory::SetCursor(MiscFunctionsOffset);
9 L: h2 |$ r) b7 P9 K Memory::ChangeDword(0x200,0x299);//下边缘 299最大
* ?/ s2 H; e: |8 E3 H
) Q( {6 K; H4 Q, s: E0 l MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);4 g2 |5 J' f; g! y3 \% Q
Memory::SetCursor(MiscFunctionsOffset);5 `, V7 n6 ]/ o& K" V
Memory::ChangeDword(-0x280, -0x400);//这个不要动* s5 o) M1 R' m; i5 Q
}
0 m/ N: a C" b& [5 M
6 [' C$ Y' H9 h& ]4 ?4、快完成了,是不是发现金币啥的位置不对??+ A1 U9 @$ P5 Y' H' K; r: |; ]
, @2 L! A) |+ j2 L
//这里修正我们的装备栏6 d: j9 \+ u4 p* \& ~& \: e
offset = D2Client::GetAddress(0x99B6C);. }7 l J( q$ A8 k( G% x5 N% ?
Memory::SetCursor(offset);
/ G6 I5 i( C# S8 ]- X2 N Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);3 p' N3 `2 u; y+ R; k3 W0 D( G8 C
) E# }7 e- ]2 }# Q. Y offset = D2Client::GetAddress(0x99BA7);3 k8 V1 @% f q& C
Memory::SetCursor(offset);
: F* N# C, J% d- ` Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
. [; r4 S, W' F5 \6 O% n0 n$ v( L7 V, C' f% H! z, B- p
offset = D2Client::GetAddress(0x99BE2);* x$ Z. C/ D+ `- I7 P) K
Memory::SetCursor(offset);6 J; W% d. v8 I F
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix); D$ y4 R4 [$ Z" X9 v" Q
& h& T- S- g. }& ?3 T5 T offset = D2Client::GetAddress(0x99C1C);
R5 h" D- K3 c( x, ?! T Memory::SetCursor(offset);
! k5 [1 [& \1 @- \5 V Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
+ u' w Q+ s" o
1 W! c: ^0 j. m& y# S A- X5 z2 [/ H //取消两个popup,偷偷懒不过分+ @- f0 R. x6 _& U9 K1 g6 a& ^
offset = D2Client::GetAddress(0x9386d);
& i! G- }0 j L Memory::SetCursor(offset);& S6 I& n) G' J7 n: X# W
Memory::ChangeByte(0x8b, 0x33);
4 \9 ~' Z. U8 Q2 Q1 j, ]) Z Memory::ChangeByte(0xc8, 0xC9);
' }+ C3 z4 m! A h. o5 |, E offset = D2Client::GetAddress(0x9390b);$ B4 d7 ], x0 z
Memory::SetCursor(offset);
1 U2 ?: s* V) s7 X4 R7 j Memory::ChangeByte(0x8b, 0x33);
7 G' S* j6 B0 } Memory::ChangeByte(0xc8, 0xC9);
. [8 J2 F1 \% G5 _3 }! _: X2 n
9 Z3 o! Z1 o' {5 _- y0 b //修正提取金币
J$ e1 u) W: f* y& _ offset = D2Client::GetAddress(0x8D3E5);
. K: I& a$ \ v" [! `" Q Memory::SetCursor(offset);/ g5 K) ]6 G5 K6 o% U; @# L- d. v
Memory::ChangeByte(0xA1, 0xE9);
( L- `8 q2 O' _6 Z# y) g Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
5 i0 |+ M9 s/ O B4 @& K; B# ~7 ?0 X5 ^4 y* \: @
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
6 ?% h2 i2 U9 K; g+ W6 [ } Memory::SetCursor(offset);
) B) t2 ?$ g! ]2 D5 J Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);3 t% W: ~" m7 K$ M+ D8 w& Z( @ Z
, _- R- i* e' p) s3 \8 }
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
5 O& L; |# ^! y7 Z. n2 |/ m Memory::SetCursor(offset);
" E$ f- [; n) s( _+ c" p F Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);* o9 j& B. u( m* h& }, a+ O+ |
- n- |/ D* Q+ N- T1 O* E6 k ~! q //修正关闭按钮
7 q i5 j4 [$ b. u offset = D2Client::GetAddress(0x8BD90);
D( ^: d7 Q2 I# A Memory::SetCursor(offset);
9 z- L* y p0 p- X4 I, | Memory::ChangeByte(0xA1, 0xE9);
" A+ z. N/ A" Z0 I Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);, I4 i7 m A% E1 f) n7 D
2 t5 y5 Z) M7 V2 L offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);1 ?1 s& {* c r' \
Memory::SetCursor(offset);- _8 D+ F$ L7 H+ g( i
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
, W5 c- F1 _( ?/ [2 J3 j/ f3 ]/ t. k" H4 ]$ M
; ^2 q4 X% }4 ?* I/ A6 k3 W, R
//以下是细节% v( j. C( Z# s# v
#define getXGoldCoinFixBtn() RX(0x2d0)
8 B% r- m+ r; a7 k" D/ x4 J#define getLGoldCoinFixBtn() 32$ s: E9 u: g# H% R6 Z
#define getYGoldCoinFixBtn() RY(-0x59) d0 d: b2 `7 p# u' e$ e
#define getHGoldCoinFixBtn() 32# `' R) N9 I2 g1 U( g' F
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())1 _5 z/ C& s/ `0 C' x1 a; z
$ G9 h3 z r. q0 \9 i! G, h#define getXInvCloseFixBtn() RX(0x3db)" ~" i- N9 p/ `( |3 Z6 k2 E
#define getLInvCloseFixBtn() 32
5 T! ^6 i% q7 [#define getYInvCloseFixBtn() RY(-0x63)
) K' E1 v: B7 g0 `! ^6 N" Y#define getHInvCloseFixBtn() 32
, X5 u" h+ O; B7 y#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
6 E+ G" s( k$ W% \5 _" I, Q( V
3 W" J' j; f; P4 l4 z3 x) {8 W8 i* Y. RBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
) Z" o; F4 b( t5 X{! q! f9 _0 s0 H, ]/ K
DWORD mx = *D2Client::ptMouseX;
8 [6 r6 h7 x# C0 @, K' a DWORD my = *D2Client::ptMouseY;* j/ A! |+ [, f" k2 m4 [' I# o
if(isOnGoldCoinFixBtn(mx, my))$ R$ k* h2 W7 i
return TRUE;
9 {9 R* x0 S7 [; n" [" E return FALSE;. W7 {( |. E0 k0 B
}( Q" ]: A2 b+ u3 _. H/ n. Z7 ^
__declspec(naked) void caller_goldcoin()* I) n1 u( I" w3 Z4 g; f
{6 X8 H4 b# W/ `: m
__asm6 Q, Y; Z z, S2 P
{+ Z4 k' `* Z, p$ ~4 N2 s$ _7 ^7 N/ p
push ebx
+ f! x) S; |6 n2 i% H/ \! y mov ecx, esi) m+ J; c8 {- H: T* f/ j5 Y
mov edx, edi3 j8 j& i) X( E& b% n
call m_NewStatShow_goldcoin
, d+ z7 b8 l1 Z pop ebx
. a: G2 o* c1 g9 w pop esi
( o: K& L: U: o7 Y# U retn( A! j" E4 x" f+ x1 \0 U% H
}
' _2 d3 I( I: s+ O}
) x. K3 ]% o( Q' O ~* Cvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
3 j6 q& }2 W* D1 h{
( z$ y: T! ?, |' P1 X t if (*nXpos > D2Client::ptScreenSize->x / 2)
) i' p- v2 a3 L: s9 G3 B {
/ ?# q, X M4 n* I, b% z; L *nXpos = getXGoldCoinFixBtn();- j2 t, O9 u6 W$ s5 N, k+ c) y
*nYpos = getYGoldCoinFixBtn();
( S& i, {) g5 u5 @% l& g }
( X: k0 m. U: V7 o2 Y}
8 b- @4 ?9 G+ y" G: h__declspec(naked) void caller_goldcoinimg()
* q* k8 _1 A% E/ m# r' J; ]{
% m' B P2 ^ s1 V __asm/ ?9 U) E7 t( O8 J
{6 N a8 \" v' `+ v7 h/ ]5 K
PUSHAD
, M+ s2 _' Y5 B; h0 o lea eax, dword ptr ss : [esp + 0x38]7 M. O: z+ W1 |& ~+ x
push eax) s- |7 }$ \5 Y8 f( t$ w1 Z
push dword ptr ss : [esp + 0x38]
) i, q: l+ V$ ^4 J M push dword ptr ss : [esp + 0x38]* t. F3 o1 c& F2 M
lea eax, dword ptr ss : [esp + 0x38]
; T8 T5 Z; `& k- G" n7 I push eax" @1 {7 k$ I. J1 o8 [
lea eax, dword ptr ss : [esp + 0x38]
1 a, H3 _# T( x& ]4 q push eax
8 i1 E/ s5 Q }! t( N" J push dword ptr ss : [esp + 0x38]" J" a$ S) W) p$ B/ M) n' |
call m_NewStatShow_goldcoinimg9 Q. j& T8 @' L6 x; J
POPAD& m9 c, \5 b! E( h1 e& \" [8 X" w
JMP D2Gfx::D2DrawImage9 t/ P# e3 k2 E0 E
}( l" L* Q1 K$ E
}
* n4 l3 k }0 ^0 F7 ]3 U* i# UDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标3 y, u: Y6 E4 n- ?4 l
{0 P$ t! Z1 v: P* H5 V
if (x > D2Client::ptScreenSize->x / 2)
1 Y" ~' [1 X" t5 Q {# h* u/ J0 }5 ]) D* U
*y = getYGoldCoinFixBtn();
t. ^4 P8 n2 p1 X2 L7 g return getXGoldCoinFixBtn() + 32;) d' k7 c9 X% w2 l2 ]- M) R0 `) h
}6 \" i0 B; y: R$ b
return x;7 @& l' E' h1 V) q! P5 ]
}
& x" I+ @1 E( @) @; w__declspec(naked) void caller_goldcointext()5 @! e# m1 _) p( t
{) `& f. c# V+ T& i
__asm' t( W1 h9 ^( X6 W
{: [9 [) w2 P. h: G4 b
PUSH ECX
$ A, w2 W+ E( V. h" R8 i" q* c/ { PUSH EDI
) K" W- E1 \% o( y$ t4 d/ U PUSH ESI( N% M" w/ |2 v9 l6 P% x1 d
PUSH EAX
/ }2 H8 a/ T, A {. I; y# M0 u MOV ECX, EDX/ K+ ]: ~& G; f, [5 P; y" l
LEA EDX,[ESP+0X4+0X10]6 [( `% d: i/ M( m" m
CALL m_NewStatShow_goldcointext
6 C P7 j, ^- f MOV EDX,EAX/ g5 p {% z, m3 r& V8 E! ^
POP EAX! z, }: M6 @- m% _: e
POP ESI+ c" \2 M* u+ F" l; m5 r
POP EDI
7 i2 n H9 ^) R& U) |7 B5 K( b! ~2 I POP ECX" z" A9 C/ t+ d' V6 p$ A7 |. l
jmp D2Win::D2PrintString;
9 A; A! a9 F H% E }& a7 ^, J+ }% @5 r
}
7 d- `1 ?! b3 a5 f' f- E- S6 S" Y0 z9 W8 Z* @8 `6 G& L
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
+ O4 x z& Q" I8 U. p/ Y/ l{( j9 O5 T/ X9 } `* y
DWORD mx = *D2Client::ptMouseX;
+ n) L' w, Y! H/ V& M8 a* j DWORD my = *D2Client::ptMouseY;7 J0 p" @" D/ J) M3 e, G
if (isOnInvCloseFixBtn(mx, my))% Q8 p& ^( u2 W K* R. N0 r
return TRUE;
6 z3 w6 u0 R0 l0 z3 U/ U: x7 u return FALSE;0 `3 C# D9 H+ G& M# P
}9 w% X) k0 J- D+ \0 f) X
__declspec(naked) void caller_close()
' r6 G* I. d& b0 W6 m$ |{
& B- b" v7 q) k" { o+ c2 V __asm8 I; N4 f. ~$ b H( {5 M; o3 H
{
4 g4 [! [& H+ t% Q PUSH ESI' l# q1 u0 S$ Q! S5 }; h3 h
push ebx
% A+ L9 p5 R3 v call m_NewStatShow_close
$ m" i3 G, `0 V1 D: X3 ?$ e. { pop ebx, a; d; N! w3 o) E6 Q
pop esi
4 v4 H( @0 B/ f2 B a retn
! {- i; e) l- q$ U- ^; K; Z5 T }
( P. J+ q. I2 r! k+ g}
( a) U5 X7 A# p9 I V( {void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
6 A( \# r6 H4 O& H8 r" h) N{
* Y5 l1 t) h( h$ G; i: y# k *nXpos = getXInvCloseFixBtn();) f9 ?7 U% T* V1 C
*nYpos = getYInvCloseFixBtn();
{* I% _# e9 i) I+ h, K}7 K+ p# a; ]4 S! x0 L$ Y `
__declspec(naked) void caller_closeimg()
" D9 d" | p! \, ]2 M{, L2 O7 h3 E, D3 |$ L( s4 K: o8 N
__asm
! b6 }( C6 ~6 u- ?. K6 p {8 Y1 ?# N$ o9 @9 q+ B v
PUSHAD5 f$ e8 v9 t& {9 \0 a
lea eax, dword ptr ss : [esp + 0x38]/ A$ W& e+ w, ^1 T2 {; X4 z
push eax
& c$ V# n; h# P, M8 D2 k. H' ~ push dword ptr ss : [esp + 0x38]
3 a5 u! n6 P' r. H push dword ptr ss : [esp + 0x38]5 ? Q; `% r& @* M
lea eax, dword ptr ss : [esp + 0x38]2 ~5 ]0 S$ c( a1 k5 L' }
push eax
' c' s' \3 l* ~0 j% @. z5 V lea eax, dword ptr ss : [esp + 0x38]
; @3 L0 O! Y; a n+ A' E push eax5 s' Q9 J6 x9 Z) A# I' e
push dword ptr ss : [esp + 0x38]
( g8 q4 ]% n4 _' ` }7 o call m_NewStatShow_closeimg
$ z: G3 T1 Q, }/ `3 t1 p POPAD
) ~; D% o" w6 q9 L JMP D2Gfx::D2DrawImage4 H. U* {1 A, Z: G8 T$ [# `
}
( X( v8 P) _, J5 t}, R) y2 k2 h. u* {/ S# a. s
7 x, d8 O2 k8 ~8 j
& o, s4 v/ D+ {/ [
|
|