|
|
转载- {" [' l$ j, w2 J% @% u, |/ A
BY SJ
Z4 ~2 ?% N, j' g3 F首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)' B2 h& @ D3 p) [3 ~
) [+ l1 Z& x: t9 J$ A5 e
D2Gfx::D2DrawImage-10041
9 ?) ^2 C3 E# M1、修复技能的背景(不需要可以不要)
; V8 j% ^1 w9 Q9 \0 R. t' P# k( Ooffset = D2Client::GetAddress(0x77AA8);& b" I7 _; s' O! T: G7 l) r! N
Memory::SetCursor(offset);
. t4 ?# E" W" ^+ G) `, sMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);7 L$ b' u* C, {7 x q: a
2 W* ^/ d8 ~9 u6 E# F! v4 c* Svoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
% d6 ?) Y& l; f$ s{: b' y3 X* ~! j& }; G2 W* r! v
//Init data for print image& o% t! o% r }! w. ?
sDrawImageInfo data;, W) S, u0 v0 J
ZeroMemory(&data, sizeof(data));8 q& j1 s' e+ o* T4 ^
$ G2 J& i8 w& r% J //print background ]6 M& v. q, @ H8 g* l5 @
setImage(&data, spellBackgroundImages);& Z* I2 ? |( k2 D
setFrame(&data, 0);
8 F3 J; {8 M. `# p+ {. } int fixx = 511;: w. X$ s& r7 W A: M# L2 v
int fixy = 9;
& ]0 U, `7 U1 Z D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);& _. S3 D8 _8 ?- ?: ^
setFrame(&data, 1);9 }. v! G% A1 p
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
+ g% B1 ?+ o X( ]9 r! n1 K9 } I R setFrame(&data, 2);
' X8 x3 H S4 _' J3 z8 l1 r D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432 d8 |0 ?6 o8 t4 S7 c# F) R
setFrame(&data, 3);/ ]: G0 H. I0 q: R: d o" F8 U T" ~
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);# r# T$ g1 N5 G3 j2 }
}! A' G( I3 h. c8 e7 L @6 ]$ i
__declspec(naked) void caller_SpellBackGroundFix()+ Z2 d" x4 e; ]# a
{
Z, Q) r$ @% y; q2 v& f9 I __asm% t" M! D0 ?+ g) z$ ]( |- F6 C
{& j. P1 g/ u4 x* j" R( Y
PUSHAD
9 P# m+ {. {* ] ~, g& }( i! r$ U lea eax, dword ptr ss : [esp + 0x38]
9 e `; R7 e7 X( U: ^- I push eax" i, M3 u d+ f( t
push dword ptr ss : [esp + 0x38]: Q0 T5 b+ m3 i: T" G+ `7 P
push dword ptr ss : [esp + 0x38]
+ `* h7 k, \7 Z6 a4 O lea eax, dword ptr ss : [esp + 0x38]- q `3 [; j- ~1 w
push eax
+ x7 D+ q5 V8 U K' m6 T$ e7 K% z lea eax, dword ptr ss : [esp + 0x38]
3 B2 X& o0 _2 ]0 U$ F push eax
0 Z$ w8 S. v/ y# k G* V push dword ptr ss : [esp + 0x38]
6 o6 ^5 q! ^) U1 H4 A call m_NewStatShow_SpellBackGroundFix4 ?3 y% U9 g0 G9 _
POPAD" c, h; ?. e+ ^) Q9 P
JMP D2Gfx::D2DrawImage* q. r: ~. H T1 E
}
) X1 p0 ~3 G, E) H4 y1 _6 L}. k: c! }# U3 R2 C& X) S0 I
: _: e4 q& r6 Q5 _8 H! V# G2、我们如法炮制小站的背景# K1 o @. j# h, t
6 W' b2 Z* K' H& l/ k0 |offset = D2Client::GetAddress(0xAB010);1 k$ @& |5 ~) F& z* r1 V
Memory::SetCursor(offset);4 I$ p# n) U$ Y3 O. a
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);0 F( y. m; C) }* n: ~% ~( |
7 A5 U1 Q6 ]. Evoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]): r& Z/ I8 E) q8 G! E: Y, E
{+ \% T6 l" S. n+ o$ N, Z
//Init data for print image4 P: w! g/ r7 F. g4 e8 b
sDrawImageInfo data;* V0 _4 g! S# q! O( X- D. \
ZeroMemory(&data, sizeof(data));7 i, f6 b3 m0 V& A7 s M f
+ P9 A9 P1 K0 l/ r
//print background
5 [" w% h5 I/ V% ?* J setImage(&data, waypointBackgroundImages);
9 H3 Q9 }2 V' B' A# \; S; n setFrame(&data, 0);
# N1 Z$ g2 L' b- {) P; r+ X+ o: q int fixx = 0;0 C& e/ h, e1 g8 ^
int fixy = 9;0 }9 T8 ]+ e7 \
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
+ ~0 `* A1 y# C4 m setFrame(&data, 1);
( L- Z* [+ `) y4 q& d8 X D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256* g) R+ C9 T0 u: [
setFrame(&data, 2);
6 g6 X$ S/ P+ E" ?! f" H D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
7 H9 l! ~( i/ i" {, I setFrame(&data, 3);" s* S( P }* }( A; w' m# v
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
# U# b$ u% p8 z; i/ _/ s* [7 J B) G" m
}$ ]# f: }. ^# W/ ^1 w* B
__declspec(naked) void caller_WayPointBackGroundFix()$ G( N; H0 @. y* p
{9 Y, o; E9 b/ a3 K3 ^- F: g, v9 K
__asm9 u$ Y" R/ N& p$ Q! v6 i( P3 X
{
0 x* M3 k" X3 r9 g/ O2 i PUSHAD
\! Q& I# L' X9 ^' b lea eax, dword ptr ss : [esp + 0x38]: P; ?8 j9 X, _
push eax
7 y$ X3 r1 Q+ T+ o6 m0 C push dword ptr ss : [esp + 0x38]# D* c8 |" B- v+ C8 D
push dword ptr ss : [esp + 0x38]
* b* b: [2 I% I' T4 E lea eax, dword ptr ss : [esp + 0x38]- w" H0 ^1 m7 l1 A9 a9 e8 a) x' M
push eax& d- }# s' d, w h' ?0 X: c
lea eax, dword ptr ss : [esp + 0x38]; S F2 Q# y& t# n
push eax% O* V0 N0 h7 r6 M
push dword ptr ss : [esp + 0x38]: Q. O) l6 u) Y/ [7 G* ]8 T: a
call m_NewStatShow_WayPointBackGroundFix# L, G3 r4 x) o& }6 z- i
POPAD* c2 n5 T! ~/ T; F
JMP D2Gfx::D2DrawImage( M; P2 c; W9 A
}" W: a1 U$ w& A- ?- M2 D
}
4 g# G7 R( B0 ~) p- M2 _
. a& H" h1 ^: I$ `3、以下可以搞16*16超级箱子-腾出我们需要的边缘
. n! Q! D: L i& h5 j' @1 ?8 n7 t/ z腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)0 b0 N3 K: Y( S$ N8 @9 a. w& p
{
2 z! v8 I) l: `$ ^$ X; O \ class D2MultiRes : public Library<D2MultiRes>0 s; N$ j6 l0 {: e' w
{: ` l6 d5 U# n9 Y
public:
" N6 x: ], ^% C9 v7 r# [9 s' \ static void Init()# D3 | t+ p5 g3 L
{& j0 U3 l3 j' `; ^6 X7 w3 r
Name = "D2MultiRes.dll";
% |, D0 T/ v3 B1 \3 T0 \9 G Offset = LoadDiabloLibrary();
9 ~. ^- B9 H+ X }
* m3 Y! D7 m* w. u, {- ~- c: N+ E4 A };: p( E- n! t3 b; a& Y
D2MultiRes::Init();
! Q, l7 J; y/ i, r* O D2MultiRes::HookLibrary(); B C. f& @- E( Q7 m% c# P
0 t1 Z* J: y d/ ]+ n, }9 B$ Q' z
6 G( D2 O7 b8 P) C4 G% o& y. G- @; U MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);, A2 Q* i" b" G8 _
Memory::SetCursor(MiscFunctionsOffset);
1 P6 [- M# H' i Memory::ChangeDword(0x1b0, 0x200);3 |3 K; K+ c" O7 N& F0 o# x
, F, J" w% n! b5 R
" l" H* D8 c h% ]& _; p
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
0 G. t X/ K- J2 T Memory::SetCursor(MiscFunctionsOffset);( n, }- |8 M( J6 q' d
Memory::ChangeDword(0x140, 0x200);) Y3 w0 x# Z% y$ |$ { B
( d. \8 h7 R \! O/ k% t; _! Z |$ @1 I3 y- ?$ b
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
; I" A2 \! O8 n: d. s+ m Memory::SetCursor(MiscFunctionsOffset);) A( v5 Y1 a2 b, }6 Y
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
K4 h0 \2 S& z' x$ r9 ^
3 ]. \) ^% c; `" n3 t# _" o. } MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
. h0 {/ N) s9 c& G3 c( E Memory::SetCursor(MiscFunctionsOffset);) j+ V0 n" Z" P" F1 ?
Memory::ChangeDword(0x200,0x299);//下边缘 299最大, Y6 \; L- Q; D& \
: m, `1 @8 O$ |4 `% [7 D7 R; G MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
3 k0 k4 y" }7 U0 V2 [ Memory::SetCursor(MiscFunctionsOffset);
& K9 ?0 U* h5 `. g [2 A' |$ \7 o Memory::ChangeDword(-0x280, -0x400);//这个不要动8 E; ^& B( \5 s' D
}
4 J' W* n8 N7 T" `* L3 ~& F7 o/ Y# Q9 n4 i. f* h
4、快完成了,是不是发现金币啥的位置不对??
7 F& s- @3 l8 w4 ?5 \ q2 k9 L$ s6 I! F0 Z! E1 N0 z
//这里修正我们的装备栏& D& u. f( ^; h3 K8 {) z/ W1 b4 d
offset = D2Client::GetAddress(0x99B6C);
3 J) k, E+ Q6 f0 Y e+ x Memory::SetCursor(offset);
% ^( R. X+ O+ u( O2 q; h" V6 Y' I Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
) ]- \6 V; T' M: d, G" R# C3 ]6 W
) `8 g1 f0 c; i$ o offset = D2Client::GetAddress(0x99BA7);
2 ?8 O" S8 F6 d }, v Memory::SetCursor(offset);
" w( x) G) x0 o( T& T Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);) r) G$ ], U3 V% L/ i* a4 B
: z* L t, s4 H, _6 y# b
offset = D2Client::GetAddress(0x99BE2);
. \: q9 h8 A k2 B6 @ Memory::SetCursor(offset);
: w" \. T* e$ A( I Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
+ r3 t+ x7 P! N! w& i T, H$ d: a- G: V- C7 q5 ~ x, P! \
offset = D2Client::GetAddress(0x99C1C);
9 \4 i' c" i- r! B1 O$ c" Q5 z, m Memory::SetCursor(offset);3 Y u6 ]# \: k6 G
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);9 M1 R5 {# }. m6 g# v9 b" v) c
& o t7 a! o4 O+ l$ u$ a5 k
//取消两个popup,偷偷懒不过分& Z! X) Y: T z6 N3 g7 ?0 B
offset = D2Client::GetAddress(0x9386d);
( b* N; B, X5 C9 O# W Memory::SetCursor(offset);! F3 Z$ k/ l& N
Memory::ChangeByte(0x8b, 0x33);/ ^1 `& a! J: ]" K1 O- i0 e4 d
Memory::ChangeByte(0xc8, 0xC9);( S; W+ Q: a ~1 G
offset = D2Client::GetAddress(0x9390b);# Q3 R: A% u! T- _9 k
Memory::SetCursor(offset);
* K5 E9 ]$ ^; G; g Memory::ChangeByte(0x8b, 0x33);
' _* x6 H A# W; a0 ], a Memory::ChangeByte(0xc8, 0xC9);
' F: R, g: f& S+ v
! r2 C% [% q2 M //修正提取金币5 W3 O) J, N1 Z# R4 V
offset = D2Client::GetAddress(0x8D3E5);
$ T8 N6 n5 y2 t. ]+ p0 o. J Memory::SetCursor(offset);3 ]# n" w* a# O8 ^7 u
Memory::ChangeByte(0xA1, 0xE9);
& r& m0 b6 K$ `& y' m e, G3 O/ j; t Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
0 h; D7 N8 O9 u. S* z0 Y
0 {9 M" N& Z: O5 p/ W* v offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
! Z# J3 ?. P J* U" B Memory::SetCursor(offset);) p& N5 J: R( V: h
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
) x, \, }+ `6 b) h, j
! z( W7 n8 j) s offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);" b0 b1 p) k; g% u5 r
Memory::SetCursor(offset);
0 x, U |1 P& ^5 G7 R4 ~" m7 { Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
1 z: m' i% a3 P4 f+ o* y Y7 v* J1 o6 Z: o. h$ g
//修正关闭按钮
5 ^" i9 [$ P7 k) g6 L3 i; j: p offset = D2Client::GetAddress(0x8BD90);! ?% `5 x! A+ Q! v$ B, U1 s
Memory::SetCursor(offset);
# o; {$ Z$ S+ F' J Memory::ChangeByte(0xA1, 0xE9);5 n, k; O; Y y( _6 W
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
2 L0 T% j5 h9 L o% _ `- D! v e3 z
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);6 W! T I+ w( l& f
Memory::SetCursor(offset);
6 X1 m8 ~9 y; [" W& o7 b2 r Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
/ U% [9 J( N; X3 Q
$ T7 _+ ?# \7 W8 {5 B+ @/ w& h: s% ~3 \ [# z% `1 K% j
//以下是细节' d$ X7 K F% V, K
#define getXGoldCoinFixBtn() RX(0x2d0)
% l' L# I6 p# I: k R' B: Z) w1 B! ~#define getLGoldCoinFixBtn() 32
( H7 m9 H4 {' f, o#define getYGoldCoinFixBtn() RY(-0x59)
% s N2 n' S9 H m% ^, f#define getHGoldCoinFixBtn() 32
) \( r7 p: M& S#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
. b) M; v3 H3 M3 x% ]( {, |2 n" {5 X6 W5 s
#define getXInvCloseFixBtn() RX(0x3db)8 ~+ r' S5 y" q. }3 a1 h
#define getLInvCloseFixBtn() 325 Q8 p e3 b$ u# I' l
#define getYInvCloseFixBtn() RY(-0x63)
0 i, f7 z# l! h; c0 N# o#define getHInvCloseFixBtn() 32& _. |. |' N0 B* h6 L4 f
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
2 T" q$ c8 A. M4 |2 v* n0 t" n0 p: x. G1 b% q7 Q
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
! Y7 V& {! s$ o{
9 @8 D+ k: u+ f( j$ S. t DWORD mx = *D2Client::ptMouseX;
$ e; K4 @! ]0 m/ o8 p DWORD my = *D2Client::ptMouseY;
& y+ }* y% s. V; A if(isOnGoldCoinFixBtn(mx, my))
6 ^5 |$ F5 |. V return TRUE;& e. F3 c- g7 x4 {1 @. v7 Y5 i
return FALSE;
q( w; y8 N4 x( V5 ?& z7 C4 o: [}5 F- `# P" D- }- J% E X% u$ V
__declspec(naked) void caller_goldcoin()/ J" V9 ~ Y* E- L; |; f5 F
{
& D$ p! t, S9 m6 O, C9 v" l, @7 v __asm
9 }+ G3 y4 V/ y. s {
3 n7 ^- r3 [, m* I" H/ \ push ebx0 b: I) O9 S- t, x, M# P l
mov ecx, esi6 I4 V- [1 k$ Z+ b) f, `" y ?: _
mov edx, edi" i8 V. Q2 t7 j3 k0 _
call m_NewStatShow_goldcoin
2 t: C. L' W j pop ebx7 c7 _ @5 G& w1 `
pop esi$ R5 l! n! X* {' p
retn
# a1 n. n, w% F, P2 f2 G }
. {. M3 m, q& R! B8 h. |" W}
# W& K' G) F3 [: [1 ]void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])' Q _' ^2 U! v9 R# n
{
% p0 G x+ G7 R" O6 ` m$ i if (*nXpos > D2Client::ptScreenSize->x / 2)
9 K7 T9 S; t) m6 |+ m: @$ X+ o {
! G+ P8 P6 g; [. b9 ^ *nXpos = getXGoldCoinFixBtn();( g0 J& M" a! x* d5 a- s
*nYpos = getYGoldCoinFixBtn();" N# @' A6 w: A7 R( `
}
/ J5 x$ B5 {3 u/ W# g}
3 e! \! C/ W) [__declspec(naked) void caller_goldcoinimg()
1 S! X+ H' y, b( T( G1 ]{
2 x4 `& T, e% J6 a7 t& h( o4 ? __asm
) D0 F& R9 C; i3 q' j5 w/ B0 W {& p5 ]' Y& r! w6 R: T
PUSHAD
8 p) l+ x3 `# x$ ^7 C2 U' S lea eax, dword ptr ss : [esp + 0x38]
. v7 f6 n8 N, Y" Y push eax
8 H! P) Y! p1 _/ S& Y push dword ptr ss : [esp + 0x38]
# K* ]8 H. `8 L' ~, A4 J push dword ptr ss : [esp + 0x38]7 r; _3 y! E+ E/ d+ H6 p$ k
lea eax, dword ptr ss : [esp + 0x38]
% \- p1 A$ M! r" s4 P3 B push eax2 {: g6 {: y( I, Y3 R. W+ A
lea eax, dword ptr ss : [esp + 0x38]7 W. n& U Z% z. j' |( i
push eax) n# W. V: h5 U4 X3 n1 i: o
push dword ptr ss : [esp + 0x38]
" K' P$ r8 ?$ l, Z8 v, Y2 A call m_NewStatShow_goldcoinimg
9 D& P3 Y4 U, V( w" k POPAD8 L2 \( P: }6 m* R
JMP D2Gfx::D2DrawImage
# O7 }2 ^5 _) U/ A7 E }+ S: G5 \$ u1 L
} g* E0 E- {# s
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标. ?% @( P# R$ m% b) m+ ^! B5 M
{4 w. M* u) s# F# W( t z( M
if (x > D2Client::ptScreenSize->x / 2)
- O; p Q6 z2 U, y {
8 g4 e( K" M; Q *y = getYGoldCoinFixBtn();: W! _/ c4 p1 a6 A# I- g
return getXGoldCoinFixBtn() + 32;
5 G5 F+ o9 z E/ J }
4 K+ d4 Q7 {" G3 ~+ Q9 U" R return x;+ D0 `6 b- x+ d0 q4 @2 d* A5 \6 n6 ]
}2 F' h6 R V: o
__declspec(naked) void caller_goldcointext() f6 o8 S: p; ]1 U3 \8 ]
{
8 A3 [6 I( B) i0 s __asm2 |& m% |2 q) B6 m S9 T
{
( l2 @6 D* d7 R c2 ` PUSH ECX
/ q9 @" k# O$ C1 s% m& @9 b PUSH EDI7 o7 N9 O+ y8 c8 i5 W% V, l% h; ~. J
PUSH ESI! q& }1 D+ |2 O; l: X& t
PUSH EAX
: w; D7 h' I. H4 f: m MOV ECX, EDX
; D. e' i- ]4 [7 O8 L7 V( i8 ]5 K LEA EDX,[ESP+0X4+0X10]5 |4 D% J `2 f/ J
CALL m_NewStatShow_goldcointext( q* q8 H8 {3 ~& u4 l# P
MOV EDX,EAX6 ]/ A" f+ H' o9 w8 ~
POP EAX. l5 s( v& R0 j: J+ ^$ Y7 z" b
POP ESI
' d5 a1 S- j( u1 l POP EDI a/ S0 x; u: Z' q7 t5 i
POP ECX( L* V$ {# Y- {3 V) J# O8 \3 n
jmp D2Win::D2PrintString;' w! S( K. M- `7 S
}, r$ B$ y1 v, P$ l9 L6 \2 m7 d
}
6 F) r5 W9 `6 z8 C% A Y; P8 e6 ]' U9 }; ]
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
$ o$ r: Y. |+ m; u{) @/ H2 z. w! g, R8 o# Q
DWORD mx = *D2Client::ptMouseX;; x/ {) L7 B7 t: K! B& J9 {: f. e
DWORD my = *D2Client::ptMouseY;
; P3 i, g8 x" b if (isOnInvCloseFixBtn(mx, my)). `- R p# b2 w+ ~4 R, R0 a
return TRUE;; N. t7 s* I! _# e5 N, y9 R- ?+ x$ G
return FALSE;, y h7 r/ | ?% H
}7 o2 ~* a% ^: p3 ^
__declspec(naked) void caller_close()
, y! R$ n8 c3 c: }{: L j( {- Z( X1 ~
__asm
- Y" s1 y; k, q' I# W: z5 h# T9 w {
+ e* Q% u K8 p# L" p$ C; m PUSH ESI# T7 U* [$ I7 {" F. n, ]
push ebx2 R2 q" k- P" l n' D P
call m_NewStatShow_close5 r9 Z% }, [" |
pop ebx
* O- ? c0 S5 L! ~ pop esi
! F2 D$ f! c+ d. K# Q1 A retn
- z% [ u3 ]' k! x- B- @ }" a) J d8 |4 s
}1 k& T+ b& u8 X9 \2 h
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
" A+ L7 u3 {7 L/ R) M/ @{
: i5 |/ e9 R" \9 L; `+ c. f; | *nXpos = getXInvCloseFixBtn();
3 K8 {; ]% m$ h9 F" D; n( K *nYpos = getYInvCloseFixBtn();
4 Q1 l* X% L' _1 E}
e5 ]0 H$ _0 r4 T. E: `9 [__declspec(naked) void caller_closeimg()$ F4 W% P. s, n* v& w+ N# G% v
{ k, j5 l" N# e: P
__asm/ [. u' ]. W8 C; H" u- M3 ~
{4 T5 `4 b- O. ~1 U7 m4 g9 h
PUSHAD
7 ?7 J. m2 [! k lea eax, dword ptr ss : [esp + 0x38]
- O! X$ Y/ ^' W push eax
0 U4 h# f# C, w0 l2 M; q push dword ptr ss : [esp + 0x38]( D3 i- p) x3 i. u8 h3 O/ ^
push dword ptr ss : [esp + 0x38]/ }" \3 n3 d/ G6 D# |+ Q
lea eax, dword ptr ss : [esp + 0x38]) @3 W, X: t3 a' L; M
push eax
1 q) [7 Y: |- h4 x lea eax, dword ptr ss : [esp + 0x38]' r2 O& l- a: I' H; B/ K9 ^ c
push eax) U) U2 X) s7 f1 w
push dword ptr ss : [esp + 0x38]" i3 h9 O2 L; {- }0 D. Q7 H3 u
call m_NewStatShow_closeimg" [" C0 j" `$ G
POPAD
: W; x; W7 C* m JMP D2Gfx::D2DrawImage/ D) Z: I2 @/ v( n; M% m4 v! K7 p/ x% j
}
* E, Q1 P8 E4 l, @- G# _}
; N" L" s8 I: s6 m% E% |: z/ r/ s6 v4 y% g/ D% m
/ D( D% }% Q/ U; @; ?5 v |
|