|
|
转载. B* k" \" @6 V R6 V8 s {
BY SJ
' Q1 V! b! i7 T* y首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)! k# L; I& U2 N# N: Q
4 O* C3 | _/ [* b* l, C
D2Gfx::D2DrawImage-100413 [5 k3 p. j: [ q+ m5 h9 S% N
1、修复技能的背景(不需要可以不要): W, t- x; p4 P4 g; ]; f
offset = D2Client::GetAddress(0x77AA8);) y$ @; ^. C! \+ H1 P7 }& W
Memory::SetCursor(offset);
7 [: _2 s3 S( c9 X; b0 e. h# mMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
8 y% Q$ g7 @- a. I3 O. S8 h6 m5 p6 G: G [( d9 U2 K; A5 D
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
' Q' Z! a0 x0 K D2 E{
! p* f! s& T# L/ m4 ?, V //Init data for print image$ p) Y7 S- I% z# l D) z
sDrawImageInfo data;
2 s# t5 A; D" X4 ~, W ZeroMemory(&data, sizeof(data));$ l0 D) j( H( s# |, U, G
, S+ } E( F# R0 [
//print background
6 _ B& x7 W+ D E) S setImage(&data, spellBackgroundImages);
) M! [+ k% v$ }% s; }' u/ ` setFrame(&data, 0);
! A- [$ o6 t6 J) y int fixx = 511;; f" I1 |9 J+ X2 ^9 f9 E1 k
int fixy = 9; s. [4 l$ i! K# f! o4 W2 b) O3 Y
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
0 b, A( @4 k) K2 b2 ^, [5 H! Z setFrame(&data, 1);
) W! v! ^2 l* n( w8 G, i9 c D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
$ t( G1 F6 X$ _2 D3 y- i% U setFrame(&data, 2);
- v5 P4 p6 S5 v D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4329 C) v$ `' C: q# Q9 p
setFrame(&data, 3);& f: \" Q9 R, Z! a8 R5 E9 `4 M
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
3 z" A9 B9 K" B( K& X5 P( m' I}. F8 j7 Y* Q& H8 k j% F$ L
__declspec(naked) void caller_SpellBackGroundFix()/ g& F( F. b! M) G( r' I
{' i4 h- G1 n4 B8 N
__asm
0 `; C, c% w" p2 _ {5 ^( O( U! |/ @
PUSHAD
* V9 Z4 H$ p# j. R lea eax, dword ptr ss : [esp + 0x38]7 Y4 u' E( k# w
push eax
1 l$ `$ k5 e3 T# R2 F; D push dword ptr ss : [esp + 0x38]) F8 h |) g _& j& q) l
push dword ptr ss : [esp + 0x38]2 x1 ]9 J# p/ Y' O4 ~6 A# A
lea eax, dword ptr ss : [esp + 0x38]
/ o/ B( m+ l R3 G4 C1 i push eax* O7 d2 E) G6 i1 k& s" W4 |, T4 [
lea eax, dword ptr ss : [esp + 0x38]% f7 ~# ?+ l( G, d
push eax) F- `1 I/ t$ n
push dword ptr ss : [esp + 0x38]
' p" K8 j: X! e0 l) {' Y call m_NewStatShow_SpellBackGroundFix
" {7 K6 w2 o; I% G' o, n POPAD
- I4 c/ O$ d2 N9 t% C JMP D2Gfx::D2DrawImage
) c+ p/ u" S; | }* P5 `2 H) k% C2 I7 i
}
, U4 B4 G: N* H$ x
# S( W P, O) z0 d2、我们如法炮制小站的背景
7 P( B; d& Q5 M- ?
0 F8 s( [: Y) a7 }offset = D2Client::GetAddress(0xAB010);
- I2 b' S7 U( [, wMemory::SetCursor(offset);- f2 w- e \/ b5 h2 K
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);! p3 F0 \ A9 p3 o' A
0 x0 ^/ A9 }* b5 \void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
: T, I/ L$ [- O- ?+ v{$ e& Z* M, L0 t2 l/ w
//Init data for print image
4 u" c' T5 m1 N+ e8 T4 ?- W1 n5 u sDrawImageInfo data;
9 v& B+ ?/ u' K3 x& z+ \4 c2 s ZeroMemory(&data, sizeof(data));% Z) i, W) ]0 j& p5 C8 O
8 u) }4 Y! H- ^/ X$ U, V
//print background
$ K* i; i* u) r setImage(&data, waypointBackgroundImages);9 a3 C1 }# g! R, @0 d
setFrame(&data, 0);
3 w$ P- M/ F0 f+ H; l: H int fixx = 0;# t; G+ d, r5 {9 y7 t! t t
int fixy = 9;
- w" u' R c( E9 V D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
) V& ^$ X c' a4 t% @ setFrame(&data, 1);9 n" E9 c, H* Y& y9 l& C4 X$ g9 ^. r0 P
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
, W: G3 R/ b1 r" _2 f setFrame(&data, 2);. @0 {3 W4 @" l3 K* Z i& b
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
8 `+ I' P o( Q: u7 H, A setFrame(&data, 3);
% h( p- T+ l1 V D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
) f0 ^9 B3 M- e: [7 _7 y
' m8 b) B+ r9 x4 m( a}
2 d! J. u' w7 d8 |) m# W__declspec(naked) void caller_WayPointBackGroundFix() W& K& d* p7 D7 P& @2 q& h
{& W9 |; C' j8 \' I5 d/ C" k
__asm$ H+ |' A2 v* b! {- m
{" |3 {0 S" I6 s: a, ^2 u
PUSHAD
( _6 F) ?- D2 S4 p" h. Z lea eax, dword ptr ss : [esp + 0x38]
$ V4 }# J7 f% V. Y2 u0 m push eax
) v! P' k4 |' @ m( k push dword ptr ss : [esp + 0x38]
' U. K t2 u K push dword ptr ss : [esp + 0x38]0 v8 u- r6 m A* z; q# N* H( c
lea eax, dword ptr ss : [esp + 0x38]9 P5 m) }) r/ |5 m7 e
push eax
$ m [. G% ]6 q+ u( k2 V. m lea eax, dword ptr ss : [esp + 0x38]; V. I: _* X. U) O* z& @
push eax7 O3 P- ?7 C) {3 A5 s
push dword ptr ss : [esp + 0x38]7 _# R3 ]5 s8 ~& L# y! a
call m_NewStatShow_WayPointBackGroundFix) K' B. D3 v1 }/ c; E
POPAD
$ [4 x h) _" R JMP D2Gfx::D2DrawImage3 x/ A1 x7 ?5 p7 h* q: V% F9 `) S
}
. D' d2 A5 P' c! K}
L1 }3 j8 M5 F( \* d5 c! @; f. ]0 C: U- t
3、以下可以搞16*16超级箱子-腾出我们需要的边缘0 y9 l% i' M% p) |
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
4 t- J- u9 k3 j {
: o0 n$ y+ R/ O8 D6 W, I4 \0 J class D2MultiRes : public Library<D2MultiRes>) F: Y8 ~1 R9 R+ i9 X
{: X4 R' t6 t* Z+ E. j7 s$ Q
public:# D6 I# Z) f0 f3 t7 W
static void Init(). t! K& H7 n$ N& b, x! A7 H
{6 g( `: Y2 U' q9 t; k0 o1 f
Name = "D2MultiRes.dll";; t7 ]5 ^0 k# s5 z3 l8 H
Offset = LoadDiabloLibrary();
9 r4 _4 p5 B7 t7 | }7 o) n& ?& ?1 V# Y) }+ K0 f
};
8 y. Q& o# X) Y9 L# w1 S8 N+ y% _8 t D2MultiRes::Init();2 U7 w2 C/ K0 n$ ]' J
D2MultiRes::HookLibrary();% a% Z: c! D k0 C* @. F9 k
; j7 W/ G5 h7 \8 `) y' x' ?; U Q" V) O8 j
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);( w) W* _# ]" b: w* q" D, m' G
Memory::SetCursor(MiscFunctionsOffset);
6 f. j$ T, Z& e. w G Memory::ChangeDword(0x1b0, 0x200);
6 k( O+ I4 B1 r4 Z* A9 e
( v! f, D1 \1 C" \: x# Z$ q: [
" A* K, f8 R$ j9 `/ L MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
/ {1 }. i% H2 ]/ d- x Memory::SetCursor(MiscFunctionsOffset);0 E5 ^( x8 `! r
Memory::ChangeDword(0x140, 0x200);+ ]2 w/ M" b+ u/ I2 z
3 m8 L7 E' @$ h$ T% {5 ^6 j
. o) _- J+ N" h MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
t4 i+ s' \0 A" b Memory::SetCursor(MiscFunctionsOffset);
8 ~: K2 m7 V* ^2 _! \ Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
3 P+ X, ^, Y9 r1 Y4 r4 p% N: W9 K: n% }* S
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);- P0 {1 R$ o/ v# V, A' A5 Z" {
Memory::SetCursor(MiscFunctionsOffset);5 B7 @5 e0 M5 f2 l; `
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
0 j9 b# U8 s# Q* q! Q
- m9 U) n- Y4 y9 g5 a MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
6 n$ t2 G4 j* g" |) P Memory::SetCursor(MiscFunctionsOffset);& F) k* f# J2 Z0 b
Memory::ChangeDword(-0x280, -0x400);//这个不要动. N* m& w( b" C6 \% q& G* Q$ D# B
}
$ D ]1 C% C/ [# u' Y7 y6 J9 b3 n0 n# S' p( H& h+ [2 Z! t
4、快完成了,是不是发现金币啥的位置不对??, G/ R7 T# M* W* j0 s
1 E9 Y. N: h& B: _/ s( `//这里修正我们的装备栏
* g! J! ]" r8 h3 @/ [ offset = D2Client::GetAddress(0x99B6C);
0 a X7 F$ c) q& R- ] u3 \6 R$ v2 ` Memory::SetCursor(offset);# o" Y: s' w4 O6 Q$ C" Z6 p
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);/ Q1 N2 h/ O- A* [* Z
& W+ t) @3 [7 ^; n1 a8 _
offset = D2Client::GetAddress(0x99BA7);
* W# m! e1 d# {) x$ f3 P" U% x1 @ Memory::SetCursor(offset);
: k) b( X3 c- z# `8 C2 ~. F Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
, o1 U$ o5 H- {$ M6 e6 \' Y7 y' D7 B" [7 g1 ^
offset = D2Client::GetAddress(0x99BE2);8 r9 X/ \3 }& d7 C' o4 C1 s2 x/ F
Memory::SetCursor(offset);
! f( Z' ~; [ C/ } Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);) R8 M4 t' }1 ^3 O' Y
- _( o; @/ c. G, F7 U4 [' ? offset = D2Client::GetAddress(0x99C1C); r0 d, S% l) b2 O) [
Memory::SetCursor(offset); @3 Z" }5 Y8 G
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
) M) z0 f" e+ A ~* o5 w
6 r" Q, \: H. A //取消两个popup,偷偷懒不过分6 \4 S8 z) r( M8 N' Y7 b
offset = D2Client::GetAddress(0x9386d);2 K2 h( K# e+ ]% r/ h3 R0 M
Memory::SetCursor(offset);0 l" |; t; g2 ~+ n8 l
Memory::ChangeByte(0x8b, 0x33);7 c; f9 @: L! F+ I$ U; z
Memory::ChangeByte(0xc8, 0xC9);
. z) h- c1 [+ H: ^: e5 R4 D5 _ offset = D2Client::GetAddress(0x9390b);
9 M4 ~8 {& L7 i3 O L Memory::SetCursor(offset);
8 ?# ]; H* g7 O Memory::ChangeByte(0x8b, 0x33);* i% U+ j( Z8 ^. g2 d
Memory::ChangeByte(0xc8, 0xC9);/ m8 c7 K& h/ o' a
- e7 D6 o$ r3 b8 l6 [
//修正提取金币
# J8 x! h+ J. V. S- k3 D offset = D2Client::GetAddress(0x8D3E5);
( B% d3 E7 d9 v2 B Memory::SetCursor(offset);: k; k! t! A& [
Memory::ChangeByte(0xA1, 0xE9);: S9 h% Y% B+ y1 d) A( d n
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
. J# Z1 ]: A( ~7 P2 G: ]
& q0 X7 K; }9 H$ Q9 F) K/ ] offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);( B7 a) R8 L! R0 C7 m- b
Memory::SetCursor(offset);
1 Q! R% {2 X5 a, j$ F: S7 [% a Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
9 }. Y& H R: r6 _3 I
Q1 I- d0 L p2 d v offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
- J6 V7 q' `& h$ A4 m6 R Memory::SetCursor(offset);8 O ~9 f u R8 c0 R) H5 `
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
6 \( X; L2 F* Q) T$ }( h% R2 u% R1 N2 r
//修正关闭按钮; a. L* ^7 [* c) V- o5 Q
offset = D2Client::GetAddress(0x8BD90);
; I+ W1 q6 Y) W; F4 e Memory::SetCursor(offset);
9 I( K2 X) {% Z9 V8 ]" ]* _' P Memory::ChangeByte(0xA1, 0xE9);" s+ L3 K: r5 v" j
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);* W: Y( F- T' d7 t6 D# E: M, Q
! L5 J7 ]3 e4 p9 ?( f* x) Z/ K offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);0 }0 Y+ _/ G r7 Q# f0 G
Memory::SetCursor(offset);
+ E+ X/ n- I6 J5 w Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
. p. [1 i5 y ]5 B, \
. N+ \% R, M; ]/ |3 ^
. _4 i7 p3 ~" I- d/ w+ `3 t//以下是细节; p2 t( C1 J- X1 g9 J
#define getXGoldCoinFixBtn() RX(0x2d0)
9 N* v3 l2 p9 i' a: J3 O! l- E#define getLGoldCoinFixBtn() 32; a9 s, Z% |8 ~4 J' n/ g: F
#define getYGoldCoinFixBtn() RY(-0x59)) X) p/ w# h7 u8 X0 @5 F- r {
#define getHGoldCoinFixBtn() 32
9 e! ?" S! x6 j4 \6 q#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())3 }; E( N. s" q9 R
4 J. L! Y9 x$ P# v1 a#define getXInvCloseFixBtn() RX(0x3db)+ r' G9 |& e* {
#define getLInvCloseFixBtn() 327 m4 ^! F9 B: ~: G
#define getYInvCloseFixBtn() RY(-0x63)5 P% f, \- `( t8 o! \4 M( K
#define getHInvCloseFixBtn() 328 s+ Y. {8 m0 u8 K: a c9 F
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
: @& a3 l+ w" N; ~9 A9 Y9 `- ]+ @
4 }* q- c @) I; e: v# f5 `BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
9 n! C' ^# K7 r7 { V# V{
7 Z" V/ c: A! C3 `0 Y DWORD mx = *D2Client::ptMouseX;" h$ ]* r% g- N& ~$ g
DWORD my = *D2Client::ptMouseY;& d- B$ R1 A5 l/ o. ], Z
if(isOnGoldCoinFixBtn(mx, my))
7 D, I ^( G) p1 ]6 i1 W return TRUE;
h; I) T$ M$ S return FALSE;
0 q) d9 v2 W, a6 y- D1 _}
; ?. E; ]0 o8 E/ K& D$ }__declspec(naked) void caller_goldcoin()
9 D& X' H$ q# w$ n! T7 f2 y+ q8 d{
5 a8 {1 ^2 r( N, u2 A3 C. `5 K __asm
6 p3 c4 W2 M* q; u5 e& O {
7 K+ Q: t6 Z% S q, ?' V$ r push ebx. w. I- x: o: f) @5 k
mov ecx, esi
5 f& x# m1 Y: K9 \5 s# } mov edx, edi
7 w* f1 G- @! h5 ?; J' }. A* _ call m_NewStatShow_goldcoin
# H, K% T# O$ j pop ebx
" C. r3 `* [: T pop esi9 F9 j5 I B0 p- I2 }# l
retn7 y& m5 D% r+ p5 b
}
- h% V4 ?5 Z/ W- F}! b8 l/ n* R9 d8 t- O9 o
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])8 Q+ v& H% j, t. R( x/ _
{+ C+ T8 M3 r, M9 W1 ~# t# _
if (*nXpos > D2Client::ptScreenSize->x / 2)
; T- U- W; R3 U; h. J {/ D [1 [1 h* W) X1 [) T M
*nXpos = getXGoldCoinFixBtn();
# S, Q6 l' z; @ *nYpos = getYGoldCoinFixBtn();
! G% \% k! P4 B- e* m }" \9 R! W' Q$ d/ j$ W T
}1 n& V! V, B( s" N; t; {* k- O0 z
__declspec(naked) void caller_goldcoinimg()# l2 ] D4 }9 I: |3 G1 w
{
4 h) [+ @, a6 {. i' [ __asm% b! @1 I b7 r" h2 ]) u. d
{8 s6 U x2 p8 j; B. p
PUSHAD, h- A g: J! v& Z5 Z8 j+ V+ s
lea eax, dword ptr ss : [esp + 0x38]
* k2 m9 _) Q' N( h) c4 c/ N push eax4 `% O2 e% w# o+ B% u! N
push dword ptr ss : [esp + 0x38]
% Z/ s; J+ r) J; S push dword ptr ss : [esp + 0x38]8 m# o( L3 h7 @3 U
lea eax, dword ptr ss : [esp + 0x38]
8 O1 _( W. V8 Z. L( w; t push eax
5 `7 p& x# d- K lea eax, dword ptr ss : [esp + 0x38]
4 F, H' H5 P+ Q9 t; ]! ?9 Q push eax! p3 n% S8 Y* v4 \. z
push dword ptr ss : [esp + 0x38]/ j) g% d1 ~6 q0 B/ J
call m_NewStatShow_goldcoinimg/ m4 ^$ j0 M6 E& n( b# P
POPAD
5 ]! }! @" C. k% [* ~. F JMP D2Gfx::D2DrawImage
* C6 |" }; c/ L4 E& ?& h! ]' p: W }" y7 g9 i! Z1 v1 T" _+ `' R3 B
}
. A! Z/ }+ c2 VDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标$ ~: M2 V7 j" y0 \3 u( G* V1 q
{
8 w A' t1 M7 a) ~ if (x > D2Client::ptScreenSize->x / 2)
5 Q p- S0 \& }8 s' u {
( P% |1 h; K3 u3 I0 z+ J9 G3 V *y = getYGoldCoinFixBtn();
2 L. _" l- _$ ?5 b. p return getXGoldCoinFixBtn() + 32;6 c7 E+ {" D; d7 b2 @8 B- b
}" F/ W: Y3 e) _
return x;3 \& m2 [+ \5 ]3 F: `7 Y$ o( b
}
. t3 F2 |+ _# `__declspec(naked) void caller_goldcointext()
) V5 S; z a, `6 |8 M& }& E( c{
" s7 D1 h0 ?* H! _/ Q __asm
4 V8 ?8 m5 A1 J) [+ f& B& w {
& v8 h3 n' A) h; z PUSH ECX o% B9 n' s4 g3 B$ {9 J
PUSH EDI" k/ \0 L2 W3 E
PUSH ESI* g* K5 C) ]- W3 T
PUSH EAX/ t+ w7 c8 s# H. i% s" S1 n
MOV ECX, EDX
- O: G6 e: e% z4 ?5 W) k; q LEA EDX,[ESP+0X4+0X10]& }8 I& M! a. @# Z: a" v+ E) ?
CALL m_NewStatShow_goldcointext
4 A. j; Z2 O7 T MOV EDX,EAX+ M/ L5 T6 W7 a( \2 Q- F) u$ _
POP EAX/ c' d5 }7 |. w4 ?. w! a
POP ESI
/ a5 F# }1 |% h% e: x& ~7 C! u POP EDI( f6 O8 g. @/ i2 c( O5 n# x
POP ECX
# |4 x6 Y4 |( O$ `% R5 I" f" B, ^ jmp D2Win::D2PrintString;
3 ]. F" \7 i W4 Q: l/ n) s' M }. j/ M; S. k0 f7 Q a/ w3 Y0 }
}
3 d% H a, Q3 w6 ]/ L, h! ]/ A# v; B% v( K4 \* H
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)1 M6 b% D' X. r# X
{
& D! E7 ?4 O5 {& | DWORD mx = *D2Client::ptMouseX;9 c$ T. F( U' k0 I$ N o7 c4 E5 K
DWORD my = *D2Client::ptMouseY;
: `$ o/ y' w" X4 _" a( [ if (isOnInvCloseFixBtn(mx, my)). E. z7 I: I" Y, O- Q$ m
return TRUE;, |2 K6 M* Q( L& l! S6 r, \
return FALSE;
/ Q* X/ @. Z3 Q6 ?}. m5 L% F6 f5 Z( {! r
__declspec(naked) void caller_close(); U* @0 e4 D0 e; s/ z
{3 T' C: l' K1 T$ H2 c
__asm
7 |' J$ J7 q% i {
3 {' \- V/ J0 ~( F: B" g, x PUSH ESI
8 b& v3 F: T6 S$ `6 A: i push ebx
' r5 t$ Z3 z+ M call m_NewStatShow_close
. ^$ @+ n2 t1 o4 d pop ebx
! l+ e* c! E: i7 B% u# [* h8 o pop esi3 I/ a% J& G! a3 P: h. R
retn7 D- o$ u* a0 n( q# y# ]
} Y0 d+ G+ ~, ]7 b7 R9 {
} b+ f' m+ }1 X9 c9 F
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]): ?$ k9 I- [' P- e1 F q0 r
{. x! b. o0 e' Y( k5 V7 O ~
*nXpos = getXInvCloseFixBtn();
9 d" P, o/ V& E6 k *nYpos = getYInvCloseFixBtn();
2 K& r! E. a }6 w2 I}
/ g5 P% e: B/ f0 t& |% O ]) [2 ?__declspec(naked) void caller_closeimg()
& U. w9 @6 n q& `{
" i$ ?6 R, c+ I* a7 \ __asm8 f' ?) w& l: x. j
{2 W1 P0 I: Z# w) A
PUSHAD7 F; o6 W, L& V4 l9 d# l2 F
lea eax, dword ptr ss : [esp + 0x38] ?. j0 J! U$ x0 A! e0 H
push eax
+ l0 ^1 q7 C6 n/ D push dword ptr ss : [esp + 0x38]1 o8 Z1 U" r& {
push dword ptr ss : [esp + 0x38]) C0 b: q A& [/ }& ?& D9 C
lea eax, dword ptr ss : [esp + 0x38]
" o: t$ p9 Y% G$ Q push eax2 X" \9 Y( j0 K
lea eax, dword ptr ss : [esp + 0x38]+ Y" v* `3 m/ L4 f( a
push eax- }. @7 T6 p8 [* j- J5 h
push dword ptr ss : [esp + 0x38]
. g) O' O& f. P' B call m_NewStatShow_closeimg
" D: P+ i$ p2 }/ W POPAD
4 K- D/ ?/ V0 Y1 ^/ T& y i/ } JMP D2Gfx::D2DrawImage+ S* a- U8 i$ d
}
% C/ y7 z" A- [( I2 Y3 Y9 o; E( @}6 E2 d" p9 t B: O; x; p" I
3 Z6 k. l% e% |2 |+ ?- Y' ?9 b+ N" b% a# M+ n, o
|
|