|
|
转载
8 {: O8 V4 [0 E1 XBY SJ
3 h& b- S4 f& l首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)# F( m7 H5 V5 V+ z T# f
/ `) T( e% z( A* OD2Gfx::D2DrawImage-10041
. O6 N0 L- K1 s$ b K, G E1、修复技能的背景(不需要可以不要)( p! m! p6 B/ c) N
offset = D2Client::GetAddress(0x77AA8);% w! b- f9 Y# o# g, E& V7 y6 X( t6 t
Memory::SetCursor(offset);
+ w% ~0 Z3 j; q2 Z/ H& zMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);* Y) P+ C, C$ j
( ~! ^& h7 ^( d7 Pvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])! K+ p2 `1 |6 c$ V) s4 l5 s9 o
{
0 b: ~/ |9 G0 R X+ s; G' ?9 S //Init data for print image: ^- P4 \: a6 Y- z
sDrawImageInfo data;8 g% v3 Z2 @' a4 ]1 J# J
ZeroMemory(&data, sizeof(data));
$ ~8 l R, r4 K7 J1 T( ?; K% H6 H/ E2 ^ {* W2 y7 H3 d
//print background
* b* l$ n6 c* i setImage(&data, spellBackgroundImages);& I5 b( Y) B+ J7 h. o- i
setFrame(&data, 0);
- Q- y* s( p( x# w3 k. P/ H int fixx = 511;: ?* O4 E$ ?1 l+ N8 t
int fixy = 9;
( C7 w5 e: a U8 ?' o, O D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
; a" ?4 N4 ], d setFrame(&data, 1);6 L ^. C3 i8 G* I" i
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
! ?! J/ A/ A0 }+ @ setFrame(&data, 2);
% r% t F. y3 I" y D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
9 ^% Y7 H0 L: r- z% M, e, o! R setFrame(&data, 3);
# L# t3 K9 l9 l D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
* g7 A/ J8 |+ ~3 h- M7 C}
% n" s8 |, ]; E# b' q__declspec(naked) void caller_SpellBackGroundFix()) C! q+ X" u( i4 _* @
{
: I" u: s8 _' J3 ~, Z: M, g __asm
% [: L* M3 R$ p1 g3 z& t' p1 Z {+ E+ ?& i! w a& n
PUSHAD' U2 X* m2 w: g
lea eax, dword ptr ss : [esp + 0x38]
' y: j4 F# n( h0 P push eax
7 K/ R8 ]) ?& x8 V push dword ptr ss : [esp + 0x38]
3 N( b2 f/ c' f! V push dword ptr ss : [esp + 0x38]* P5 E3 X; T; m: ]6 U% J* m
lea eax, dword ptr ss : [esp + 0x38]
& |& y! H) k& \ X push eax
, c) }, n$ s. b' d q5 w lea eax, dword ptr ss : [esp + 0x38]7 V" ~" p: T! M1 }; O% L( d
push eax2 l3 ?- M7 r/ u
push dword ptr ss : [esp + 0x38]
; R, S4 V* F; ~0 u1 h call m_NewStatShow_SpellBackGroundFix* t; Q5 g. }- d l
POPAD1 _9 e# ]& P, \; d! H' |8 n
JMP D2Gfx::D2DrawImage/ K5 Y, G. W! L a( X( z
}) y5 m! a U- y# p
}! `' U$ x- e; z. t) K/ b; t M
1 n( q5 N1 w/ e( k* Y8 K; m
2、我们如法炮制小站的背景( C6 G4 k, P. F7 Y- E
8 Z) B4 Y+ r3 }1 J5 ~( ooffset = D2Client::GetAddress(0xAB010);
4 F9 { r1 f/ J0 Q5 ]Memory::SetCursor(offset);. {! e7 l: F3 i7 ^ l9 O
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
6 R: T! r7 p1 t/ G' _! Y- m+ c g, q1 k, R7 i: v
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])6 y) a0 ^: t* d$ {, h6 n+ K9 |4 b5 m
{$ R6 G! Y/ P$ j6 }2 P' l5 ]
//Init data for print image
2 `5 v' s3 D* j$ g sDrawImageInfo data;
6 @( u! U" P, U. O( f/ e* y, N ZeroMemory(&data, sizeof(data));$ a6 k$ o3 _$ H% J
' p# e2 M* ?) H F
//print background8 ?. W0 P9 s- h/ l- [
setImage(&data, waypointBackgroundImages);3 ]* q9 }% @" g; S% d) ]
setFrame(&data, 0);
& |6 F7 i1 B% D/ [/ N k int fixx = 0;
% d( X7 Y Y |3 v int fixy = 9;- B8 E7 H S9 \4 ?' \- E6 A
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);- ]+ Z& a1 ^2 M5 V2 W' b- e
setFrame(&data, 1);" R o, T3 k: g; @7 y
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256- k9 O3 t' T5 m9 X
setFrame(&data, 2);
" i: i) v0 j! V+ C, f2 O% Z D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
$ o/ q) W S1 t6 ^& L$ ` setFrame(&data, 3);
. s1 S5 V) a. y0 Y* N' D6 x; v8 E0 x D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);# h5 M: J; {4 d/ Q9 A. T2 `# Y
5 D- l9 Y! |" T, r' O& d0 O
}
( ~% i7 e) W1 _* u__declspec(naked) void caller_WayPointBackGroundFix()
4 U9 }1 Z8 Y/ j5 k{6 t$ D+ m' f! A6 s3 N
__asm/ I" t( C7 R, q: n3 ~2 a2 v1 q- ]
{2 @( a" p9 h1 M, }
PUSHAD
# s7 L3 |: `3 X6 U# B4 v8 g lea eax, dword ptr ss : [esp + 0x38]9 Y: h. N; K$ Q5 f
push eax
0 D: e( y6 n+ M3 p7 { push dword ptr ss : [esp + 0x38]3 w' t. C0 T3 C; K+ v: j' J
push dword ptr ss : [esp + 0x38]
7 I M0 a# a0 r9 r9 t2 A$ z lea eax, dword ptr ss : [esp + 0x38]" d) n1 H8 ~0 ^+ r# {6 Z, E
push eax
0 [0 [4 ]' t# w lea eax, dword ptr ss : [esp + 0x38]; [) N5 k& P/ [$ R
push eax
& M/ c1 l- K# Q+ t" o6 c( R push dword ptr ss : [esp + 0x38]
8 A' _/ y& E( u, y call m_NewStatShow_WayPointBackGroundFix
2 u. k$ r2 @# k) E; r4 V POPAD) P+ P: y) R, a2 D0 r i
JMP D2Gfx::D2DrawImage
, h- M$ [# d$ c7 f$ a& e! K }4 h5 ]: M3 s( ?; ?6 b: I
}) I- `6 l2 j7 ]4 k7 f& f
, u! \4 W4 L, w4 J* u3 s
3、以下可以搞16*16超级箱子-腾出我们需要的边缘: m/ w" X( R7 m! d* m1 U0 Z" `) n, O
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)$ f) |! d/ m7 I0 i
{
- P; H$ n: {+ d0 P7 l/ M) z class D2MultiRes : public Library<D2MultiRes> T& G1 L% C7 ]( a
{3 \8 A; `8 y8 j7 k+ S
public:! r* j7 t7 d/ P
static void Init()
: ?4 O' p% O3 b0 ? {, f+ d0 b3 N: N1 {
Name = "D2MultiRes.dll";
1 m1 v; n, o% o5 P' Y. k$ Q4 V8 v Offset = LoadDiabloLibrary();
& k9 Q. m3 j" {7 R1 Y }
8 v9 m9 p8 E0 z2 F8 `! l) K0 s };3 ?+ C; t; Y8 D3 M- L
D2MultiRes::Init();* A+ ]0 L- n- s7 k0 @4 p A
D2MultiRes::HookLibrary();
. K+ z8 Z2 L" O7 V& g) c$ P3 K" Y8 b1 [5 n9 Y
. ]% W1 [ a. S/ X' \* ~$ A O6 }9 b
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
8 Q4 o: |/ w- ?1 q Memory::SetCursor(MiscFunctionsOffset);
) }2 X* Z+ ^, Z+ B" P Memory::ChangeDword(0x1b0, 0x200);" C+ i$ Z, c' I4 @
4 S* s! ^& q, W. j. t8 ]9 J' v
: A7 c$ ?4 n1 {: Z- q. | MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
8 _2 i* L3 R3 J0 |% t% H Memory::SetCursor(MiscFunctionsOffset);
- e8 H7 m1 H! i Memory::ChangeDword(0x140, 0x200);
3 ]4 p* S, B+ h, O, G; ]( {
' e- M7 V B6 F; d# g: u" D' s) V) o* ]- R
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
, h: Z/ M% U( T$ Q Memory::SetCursor(MiscFunctionsOffset);" U9 C" Z3 U, L' p/ G E
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
2 c* {9 o* @$ w0 _5 [6 \7 I4 t3 F3 D) h6 h% ]/ n
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
# V, q8 Q' X% p; S+ z9 b( w: Y% } Memory::SetCursor(MiscFunctionsOffset);
! H3 s& Z5 _: I/ I) Z# |1 f. w+ ^$ s8 O Memory::ChangeDword(0x200,0x299);//下边缘 299最大7 ~" b: |/ L, K8 [, b
) d; T+ L2 Z. T. a5 }# o8 x) l) r MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
- N( d6 G$ _8 M5 r9 W. Y9 b Memory::SetCursor(MiscFunctionsOffset);! s) ]% V0 L+ z
Memory::ChangeDword(-0x280, -0x400);//这个不要动9 E3 e$ }' i0 {( C4 L
}* K# C4 y2 ]9 |1 A* D
8 Y) q( R$ Q0 a( E, s7 \ @- ?
4、快完成了,是不是发现金币啥的位置不对??7 d8 J0 o0 E6 Y& ?
9 V: F9 W7 j1 {- |$ K
//这里修正我们的装备栏
( Q1 u/ c, O- {) k/ Y offset = D2Client::GetAddress(0x99B6C);) i& K9 c; u0 w$ |: k6 t% u
Memory::SetCursor(offset);- F% S k+ V- r/ G/ c- g7 M2 U' C
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
: I- Y8 g: t* K5 T8 X) z
! B% \4 y- o( I9 ` ` offset = D2Client::GetAddress(0x99BA7);) a; U* o. P& Z4 P
Memory::SetCursor(offset); _1 B$ z$ f+ l' N4 M- c0 k$ H
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);9 b" a" J. A# M: k6 Z( y
' c v( o) e) g& l6 E0 C offset = D2Client::GetAddress(0x99BE2);* \0 o& ^% L9 Q1 K- N' @/ ]% y
Memory::SetCursor(offset);1 x- K& M$ X, L5 A
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);6 u3 B; h: D' L
9 r9 y/ o7 |& o8 N [
offset = D2Client::GetAddress(0x99C1C);
( w* V! n, W! C Memory::SetCursor(offset);
7 y; c: s* K3 n, _5 @" \0 q/ l, H" T Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);1 k; O3 t& g$ ]- Z. |
5 _( G% ?, [+ F5 M* [5 z //取消两个popup,偷偷懒不过分
2 k# x: Z: Q3 n9 n. _3 N) | offset = D2Client::GetAddress(0x9386d);
, \8 Q& E! H" G: t* W Memory::SetCursor(offset);) O$ h" K% N. j: y: N( i$ `
Memory::ChangeByte(0x8b, 0x33);) R* Q, O5 [' i4 r, e" u! G4 R
Memory::ChangeByte(0xc8, 0xC9);: z1 p! T' H% e; H0 a1 E- c
offset = D2Client::GetAddress(0x9390b);& U3 J# Y! b- [/ L1 v, b
Memory::SetCursor(offset);) Y$ l' ~3 I3 H
Memory::ChangeByte(0x8b, 0x33);# M- E9 r+ F* q+ F( S( ~! Y, }. P
Memory::ChangeByte(0xc8, 0xC9);# m6 f% |7 g Q; T
; Q9 E g; z- E
//修正提取金币
+ W, B5 ]8 y+ F8 h! U0 h- u+ q offset = D2Client::GetAddress(0x8D3E5);. J0 B" A. e0 g
Memory::SetCursor(offset);" T; k* ^4 c" S2 K N) q- L4 C
Memory::ChangeByte(0xA1, 0xE9);
6 }* ]9 F$ d4 ^5 p! q4 J/ c* ` Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);' |7 U+ L$ j( ^$ j: J$ c6 u
; O0 K* w1 j- L) k. N9 i6 h j" U
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
( Q* t" L- s3 |; y1 J( M Memory::SetCursor(offset);- t; j# {9 B9 }
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
5 ?. v; F- |, y2 k* n" [4 C% K6 X: Q% \1 d" r8 n
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);- [* a! L3 Q7 L9 r8 D
Memory::SetCursor(offset); P, ?6 y8 {$ Q5 [) _5 s
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);5 w1 |. o3 e) _) b Y: m$ B% |4 C0 Q
3 i" z1 t) `0 k q+ K //修正关闭按钮
7 x J% _/ ]! W+ w! ~) F5 Q offset = D2Client::GetAddress(0x8BD90);
# y6 w& Y) M$ R" a: ^0 B& u+ I2 i Memory::SetCursor(offset); g2 y2 M4 n# X) a# D
Memory::ChangeByte(0xA1, 0xE9);
/ v/ e4 B8 W7 `0 i Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);6 C6 Y7 \% q9 R, H: w9 D$ [
5 C5 Z) @) Y# u! x5 G offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
" y6 O" {0 C7 Y( z' K4 \$ x9 N Memory::SetCursor(offset);
0 o) c' n4 I: k5 i: ` Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);& D* i4 \! z& Z( h4 [, h
7 Z4 {! T2 P! d, H1 z$ ^7 {& ^ m- z: C% R# L: t
//以下是细节
$ Q2 ]8 q6 M$ c0 {#define getXGoldCoinFixBtn() RX(0x2d0)
$ t3 B* R6 Y* h2 A#define getLGoldCoinFixBtn() 32
* `' E+ k- v# {6 Y6 ]/ W#define getYGoldCoinFixBtn() RY(-0x59)! F1 a2 Q" I) X7 v: n& K) R
#define getHGoldCoinFixBtn() 32
( ~; L3 L3 i6 k% @! N: t6 @: T# \#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
* ^3 _% b4 E! S' Q. o+ ~
/ u, I' C: ?# C m+ e#define getXInvCloseFixBtn() RX(0x3db)
" t3 ]& \9 v) p#define getLInvCloseFixBtn() 32$ @3 P9 v! N( N' W* U
#define getYInvCloseFixBtn() RY(-0x63)% i5 q! S4 F, G8 W) C
#define getHInvCloseFixBtn() 32( N9 n# n0 V; `$ V& S# ^9 E/ ^
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
9 c8 I9 P) S- a( h4 H4 H2 N( ^$ i
0 I$ `9 j, \: H5 U. iBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)8 B7 b& T! z7 q
{
4 G: w+ N7 _. z DWORD mx = *D2Client::ptMouseX;' D" e8 W) A2 j! C2 z& x! X
DWORD my = *D2Client::ptMouseY;
- P- Q6 l& ^% E/ ` if(isOnGoldCoinFixBtn(mx, my))
2 W; ^6 }, i* r C) O0 q return TRUE;
( w9 Z6 |0 l+ d: |' | y return FALSE;: G2 t) t. k/ r/ o9 Z. ]7 v3 m d
}
4 P3 g! e0 P1 J! c! m+ }8 ^9 V__declspec(naked) void caller_goldcoin()
. f- p/ Z# `0 `0 b0 a7 L{$ E0 O8 M: i& `& k
__asm& P4 N( O4 I" }% b3 c. h
{
- X# [% \5 Z z9 h5 h/ O push ebx
* q9 b' J( {# v5 P O9 t h6 W mov ecx, esi
4 O* `) O, s! E8 K mov edx, edi
( t3 `( @2 i/ j, |1 M5 T7 J call m_NewStatShow_goldcoin5 [1 o* O7 I1 {" n, h2 l5 I
pop ebx
& u8 X, x5 R% @1 r5 o* \, | pop esi( U: E( j$ U9 J" v8 m: T6 J+ k
retn
% F; g* w8 P# {/ D }9 f$ r+ }4 f: ~% b, C) r) G& g
}$ a$ y% T4 A/ p% o6 Y' @
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])0 n8 H, a3 p8 s
{
$ Q e) w& u0 K7 D* _; w- u if (*nXpos > D2Client::ptScreenSize->x / 2)6 p. }$ V, ^$ r$ v+ [( N N% s
{5 `; G& }" ~5 Y8 v
*nXpos = getXGoldCoinFixBtn();& Y. ^, T2 G+ F# `! M
*nYpos = getYGoldCoinFixBtn();
; W" a4 T# K Y( M0 ` }
3 ]( N( y7 o7 S' H7 k; ]}' N7 w5 f) m8 s$ S+ Q6 m/ _* Z+ a
__declspec(naked) void caller_goldcoinimg()4 ^2 ^) U3 D5 b8 H% J6 J% u
{
$ s& @) V* e) f( D1 p __asm
; F' l4 {+ R+ B( v% F {/ k$ Q& T; P6 l6 |! j8 U$ W
PUSHAD" d! |! I: g/ x( G7 R$ U
lea eax, dword ptr ss : [esp + 0x38]
0 U2 g8 w" k) P% }2 z Q push eax" p; M6 j& {8 C+ G
push dword ptr ss : [esp + 0x38]' a8 q0 }; U2 \
push dword ptr ss : [esp + 0x38]
; n: v0 a, {+ U' z lea eax, dword ptr ss : [esp + 0x38]
5 C. A' L. p1 R- _+ ] \ push eax2 I9 f# R1 a0 Z' A
lea eax, dword ptr ss : [esp + 0x38]
5 e4 J8 R! {, B4 b0 b- ? push eax5 W7 i$ [0 F5 B% ^! T* \1 J1 b
push dword ptr ss : [esp + 0x38]. a0 ?$ ~+ J. D# C
call m_NewStatShow_goldcoinimg
# h) m; F% j$ R POPAD) U) S: q/ u, M4 o4 {, a
JMP D2Gfx::D2DrawImage* _. f7 i' b7 }8 G" ], P8 Y! r
}
$ }7 ]$ B; [* U' D% r+ b( K4 V, n}
# ~ `* e, ~& T! BDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
) h5 {8 I" i1 K: M{
- i0 V I) Y/ h* u2 j if (x > D2Client::ptScreenSize->x / 2)
8 X+ x5 F' t2 v; M2 ^; u {+ K* m$ R0 T) e" f4 B
*y = getYGoldCoinFixBtn();# C: Q" E& [9 _; i
return getXGoldCoinFixBtn() + 32;2 n" a: V$ O) S
}, K0 H3 {' f1 I& n
return x;6 y# {+ m6 [4 X1 d' E7 A6 n
}
9 X4 G4 @. `5 Z__declspec(naked) void caller_goldcointext()2 z( B- M1 T- a" `$ a
{
' t" V# U5 h+ X. l2 J __asm, ^: @1 F* G! Q4 h' R: @' J; _
{, Q' T' K& I |+ c# p) c
PUSH ECX
5 T" }* I5 l; ~$ o) F- V PUSH EDI/ l; ^6 v3 D9 `: Y( Z5 B9 F |6 w
PUSH ESI
: d1 o- |& |3 b* d9 a2 w( i PUSH EAX
$ R1 T5 [/ l4 F MOV ECX, EDX
( ]% E7 A$ L {: n* ]% F- n5 d9 N LEA EDX,[ESP+0X4+0X10]
7 \0 N0 Q r8 E; r: s CALL m_NewStatShow_goldcointext7 h$ p( z! A% o/ z
MOV EDX,EAX
; C! \9 m4 d T. n/ |0 u- L# `0 o POP EAX
7 I# X8 |' f( }5 w POP ESI& l* Q% ]) I) }9 R% p3 p- Z
POP EDI
- Z4 r" a3 ^ B9 `) ?+ H* J: v POP ECX' ]. |+ P3 A. q2 e* R5 g0 n7 m5 s
jmp D2Win::D2PrintString;
0 Y1 g/ G* W: y# h( `! q2 r: [( o }% D5 S/ ~. U, `- g; ]) N3 r4 c
}
) s: J) i4 e3 y9 e! u U' m9 \6 e4 I2 s# T
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
7 R2 z9 o; [, z u5 E, k4 H{
6 s" M ?7 I$ ~1 r3 ^ DWORD mx = *D2Client::ptMouseX; C+ W) ~2 ?: ?# ^0 s
DWORD my = *D2Client::ptMouseY;
1 ?+ f8 ~& R3 s! k if (isOnInvCloseFixBtn(mx, my))
5 q$ n0 D6 Y) Z8 o2 [1 ]% s return TRUE;% r0 V% w. _. g! Y
return FALSE;( Z) @2 ^ m% g1 o' }2 R- v; _1 P' C
}
* y8 K0 h: }" ?0 o- p__declspec(naked) void caller_close()
+ f6 _- E. ~( f) l1 C{
3 r$ Z6 E7 }& g; n! C: Z __asm8 s" L3 }; X& d d) q5 ^
{
l- [8 F% D$ P+ ^7 i PUSH ESI; }/ U q5 _8 Y, P6 G* q$ D
push ebx
7 N9 H1 `2 P- k2 X# @ call m_NewStatShow_close
3 c& r2 o3 |- F' k pop ebx8 R: q" f ]7 F g: B f: X$ Q- T
pop esi
4 U0 n: w, u2 [8 x/ M* ?! G retn
& k+ y! {* j- b. p }4 U+ u+ g7 \4 y- X$ C# A
}" n3 }! N" d F. z+ h- ?1 K
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]) {" Z+ |2 h/ P" V
{
+ {! e% ^8 h: A m- B! u. G& g, ^ *nXpos = getXInvCloseFixBtn();8 M' O' ^1 w1 X. \: r- i$ |9 H
*nYpos = getYInvCloseFixBtn();* P6 X+ T7 a! P- u* [9 h, S
}) T o9 E. c* l: M8 G2 V
__declspec(naked) void caller_closeimg()1 \: |% G3 T( [ n, p
{
. E" l0 M6 T- \: k0 X _ __asm+ N. d" i6 ?0 j9 |( p* O+ ?8 n
{2 j; b% Z9 L9 ~( `2 H+ }8 u
PUSHAD9 V5 g- W1 t6 m: ?2 R0 C; b
lea eax, dword ptr ss : [esp + 0x38]2 i9 a/ O! P: @6 P. b+ e
push eax
* v( ~* a7 k3 C% @ push dword ptr ss : [esp + 0x38]+ r6 S8 P; Z/ O1 i# g
push dword ptr ss : [esp + 0x38]
9 O% F$ A/ V1 {9 c lea eax, dword ptr ss : [esp + 0x38]' Z( g) y) b, k. @: o u
push eax
) {* M7 r! Z2 V1 h. g% ?+ J2 W* u/ C lea eax, dword ptr ss : [esp + 0x38]
& p! K) L5 F' F+ Y% [0 A3 q) } push eax" G3 |# H. }3 N
push dword ptr ss : [esp + 0x38]& \6 t: P7 f/ u' V0 N, S S. d4 R
call m_NewStatShow_closeimg
5 w4 i1 ^3 [1 L$ `: o5 H POPAD/ U0 g! U& z- S# {
JMP D2Gfx::D2DrawImage( s+ _8 K0 L3 m7 s; K0 l! D; x
}9 F& g+ G' `- K+ k
}
$ U. H. r$ }# {% {! L, {4 k
9 H7 u. J" b8 K/ |6 h% |: T9 v) u) d
* z- r3 q2 F, C6 O/ c* g$ X2 i |
|