|
|
转载
, u0 q$ T# K/ j9 pBY SJ
5 l5 ^) _5 t3 W4 ~2 g: w) H- l首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
+ v. h4 O3 K6 X/ G6 ~
4 S0 p7 d7 W' ZD2Gfx::D2DrawImage-10041
# a9 E6 B$ w4 O1、修复技能的背景(不需要可以不要)( l8 k2 ?1 m+ l/ L; t; O+ K8 Y1 b
offset = D2Client::GetAddress(0x77AA8);
6 K. r/ W. l9 l: U7 M dMemory::SetCursor(offset);7 ~9 G" x7 u6 S5 I
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
( l2 ^1 o- x- a" H p
) @0 @3 c) @3 @# A, j [void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])/ I. A4 h& C2 _& C7 W- p
{
( P2 \) G+ W2 \ //Init data for print image, g7 Y5 B' \$ ^$ N8 Z) U
sDrawImageInfo data;' q" I& V" s! W" C* n
ZeroMemory(&data, sizeof(data)); U% ~& z9 ?9 u. r4 S A d
6 ^* h' i2 T; @( \
//print background1 Z* G# [$ O" o
setImage(&data, spellBackgroundImages);
; b2 P& W: ?- e& L, G setFrame(&data, 0);# u1 N I! @3 n4 q% b2 r* p+ E" ]
int fixx = 511;
4 S% h9 K; @$ ]8 D* C0 J& y% ] int fixy = 9;
6 d" ]. s7 {. W+ z4 i) S8 @ D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);& l4 [% N9 H2 |
setFrame(&data, 1);
H3 _* S- i8 ~( L D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256* @ @# V9 T& d% o% s; P. T+ v- P
setFrame(&data, 2);
; V) Y6 x; Y' A& W, _1 m. H7 ]9 `3 a D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
1 H* y5 u4 B; I4 Z2 j/ q1 D setFrame(&data, 3);
; a! z$ M% S" b D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
+ u* v# u3 G# n* `- k" f}# X4 M$ I: c5 [3 _) |# H: S* M
__declspec(naked) void caller_SpellBackGroundFix()/ U- y* _. a8 y8 B: i5 s. z0 k
{* q2 ]/ z" Z8 T: M" A2 c
__asm5 w2 r- s* [1 E6 O
{
0 @ x1 w5 c" }- q3 S% @ PUSHAD
% m }5 {; K# U. a4 @ lea eax, dword ptr ss : [esp + 0x38]9 U/ [% _9 u1 u, ^! k
push eax
" m: f8 [5 _0 m/ ?2 e2 ]- W push dword ptr ss : [esp + 0x38]$ z; K5 p- ~# U/ n. G; w
push dword ptr ss : [esp + 0x38]. `) R3 d( k3 v$ k! q. {
lea eax, dword ptr ss : [esp + 0x38]
0 N% a0 i/ \! _0 c8 f9 C push eax2 r. i( ?8 m; q L0 I! L
lea eax, dword ptr ss : [esp + 0x38]% f4 h6 ?5 M w6 f7 I
push eax
5 m8 {" q! W& L) D0 R( l# R push dword ptr ss : [esp + 0x38] G3 N" C9 [3 S& x. \
call m_NewStatShow_SpellBackGroundFix9 l+ j0 o) S- t6 O* C! X
POPAD9 V: m+ E2 @- }) N/ h) y: y* M
JMP D2Gfx::D2DrawImage0 o& Z+ K5 [( q h+ y2 G3 o
}
# C$ T$ `" P: G, C5 R0 |. e}( l g3 I# V( z- Y" R# {
k$ Q# T; C( i2、我们如法炮制小站的背景/ N5 a: T% ]* T u/ {6 y3 H1 k
$ j9 h. J6 f$ t) \8 m+ s
offset = D2Client::GetAddress(0xAB010);
0 O/ e- A2 r5 `* ]/ r n$ @Memory::SetCursor(offset);( m9 \ [0 C3 O! p6 D
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);% o" a0 ^8 z" \
' E. A F' { `; S; V4 x3 s2 C
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]). @3 K9 O9 N) G1 r- m T6 M
{
- p4 M; M h/ e) o; I //Init data for print image6 j$ c, k5 l6 _) w( L- m/ o
sDrawImageInfo data;# L+ ?; X3 V* X
ZeroMemory(&data, sizeof(data));4 A1 ^) o6 L) Z g) i: W/ L
# U' H) [$ C' V8 V& \5 }9 G //print background4 t; X$ F. V+ g7 Q" m) C( @/ C7 ]1 g) N
setImage(&data, waypointBackgroundImages);
+ ~7 k9 ~0 I0 G4 g6 ] setFrame(&data, 0);3 {: I) J; O4 G
int fixx = 0;
/ B- s; M! J1 D8 p6 r7 r0 q int fixy = 9;& D' l8 `5 p, o2 @" c6 N: X- O: p* q
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
5 M( g# g/ T- p/ W- w setFrame(&data, 1);
6 [2 G/ j4 b, y( o' D$ s4 W6 y# r D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256. i# |6 e" d1 d9 A, P% W/ Y
setFrame(&data, 2);! Z$ t4 ?" Q$ \: Z0 T1 [8 U1 R3 N4 |
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432; c1 M6 _3 E6 b# E8 [1 R. l
setFrame(&data, 3);" ?1 J! \3 m+ t/ d
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);; J7 v3 X( E; ~7 m Z
% f: ~- [. Q" W8 k& C1 c* q" L
}
: Q8 F+ V% @% ]5 \( n( }& \' z__declspec(naked) void caller_WayPointBackGroundFix(). v6 Z) f+ r$ w- v! \" A% j
{
! \# N5 e, |( l __asm
8 c# H2 k$ l0 v {
1 ]5 ~: a4 I3 ?' N PUSHAD
' y" w1 X2 R6 F8 O: p lea eax, dword ptr ss : [esp + 0x38]* P/ a; a5 V5 D0 R2 ]- D2 j( g
push eax
$ }0 o$ P7 ]; x: e push dword ptr ss : [esp + 0x38]
2 |/ @3 N- p( F, v) o: ?" [ push dword ptr ss : [esp + 0x38]4 W3 V" j8 c3 p, E" S& R* ?
lea eax, dword ptr ss : [esp + 0x38]$ v6 k, g9 W6 j: b1 {6 V- ~: s
push eax# R1 E" J6 t" @; |; J' M- r
lea eax, dword ptr ss : [esp + 0x38]
1 ]+ W: ~( c% ~/ E3 D push eax; V$ H8 H) N8 ~( G% P
push dword ptr ss : [esp + 0x38]
$ x( P: Z0 g" o# C' s call m_NewStatShow_WayPointBackGroundFix3 w1 d f* b G& D1 b, \; K
POPAD
$ r; S2 l) ]& j9 N$ ]$ q4 N JMP D2Gfx::D2DrawImage
7 e2 b& Q7 l/ `4 \" f3 W2 r/ J }
% A, z) Z! e- H! _/ m}
5 D* O6 ^0 ^! n/ X o6 j4 F( d' s! J5 C$ z+ `
3、以下可以搞16*16超级箱子-腾出我们需要的边缘& f" y+ {4 @( z- D# S
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
$ _# o4 _+ u$ o" q& r2 _8 z {1 t; F& H/ d# Z+ _1 H
class D2MultiRes : public Library<D2MultiRes>
1 g3 R1 b$ \. r K# I% i# ?4 S {1 K" x; }1 x. j) `
public: o* C6 R, w7 d0 q1 v( ` A
static void Init()
# Q5 `' L- ^- }2 O- ]- ]3 r { g, i9 u! Z+ k
Name = "D2MultiRes.dll";; d* y' e- M- B# d9 m* u( V& j
Offset = LoadDiabloLibrary();
}% h7 B+ F5 n* p0 C }; |0 ~: H8 s5 w4 U
};) w2 Y, F B5 k7 J! [
D2MultiRes::Init();
. _9 F: \! f$ {, u; j D2MultiRes::HookLibrary();. Q8 X9 H# U0 E( z9 b7 s) ^
* X) A$ H4 S6 Q: `% s
/ @( J& B W; e MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
: l$ H2 L# U2 C6 @ Memory::SetCursor(MiscFunctionsOffset);2 f: w5 x2 a/ B
Memory::ChangeDword(0x1b0, 0x200);2 [1 U7 g1 p8 w$ R& e
' R) T7 r4 y8 k* q" |; g0 v" J
& k! g/ u$ g" f; S$ g MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
5 Y2 q9 B$ A' R6 x( ?; B% w Memory::SetCursor(MiscFunctionsOffset);; H( h, v+ {+ ?9 H0 z+ D
Memory::ChangeDword(0x140, 0x200);
9 R/ ]$ W- N9 w$ N" c F. m! X, K5 _4 u# U% r
9 {0 }# B' i6 ]/ l) c
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);& i! p S4 L/ \3 K8 v/ k3 s
Memory::SetCursor(MiscFunctionsOffset);
$ k! Z/ v( j+ k Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
* W4 B+ g- m7 }$ u) M! F0 ^6 x( B
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
" `2 w+ ?/ l, q" ]4 w Memory::SetCursor(MiscFunctionsOffset);5 H' F) K$ e+ P7 ]
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
* q1 Y7 D G. J1 f9 P% @0 Z/ T. G
+ I0 ]- L6 _3 [8 n. C" @ MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
5 y4 W: `; t0 |1 c; y Memory::SetCursor(MiscFunctionsOffset);
5 m' A! v% d- M# @# d" \ Memory::ChangeDword(-0x280, -0x400);//这个不要动$ y5 G, }8 ? R0 `) q6 ]
}
1 d0 t; a# |9 H& G1 \" b: t, l# a& o7 g4 U" ^! \* i% }8 P
4、快完成了,是不是发现金币啥的位置不对??
* o6 i: p; |1 Y* v" p
1 l: Y. {6 z0 [8 u, G3 [. ]//这里修正我们的装备栏: |2 Q& Y; C$ K
offset = D2Client::GetAddress(0x99B6C);
0 o; K; K- X- u# K7 U8 b h8 Z- h Memory::SetCursor(offset);9 o/ F* d; \# j3 i, W7 e. x
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);6 M$ o% o$ V; q+ h# ^
6 X/ x0 o% q1 ~- t# @ offset = D2Client::GetAddress(0x99BA7);
, M6 f( I4 k0 w Memory::SetCursor(offset);5 l' M; s1 l* e
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
( {( [: p3 P- `# f$ Z5 N9 t6 Q( P" o ?( R$ a- x6 o
offset = D2Client::GetAddress(0x99BE2);& J+ \, {1 R) I/ y9 ]* I4 z
Memory::SetCursor(offset);+ V3 B& T+ E. k6 ?% v/ ^4 o0 J! I9 v
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);& o) Y6 v9 |, Q& Y/ S6 V
. n0 l) q. M; [. {8 M( b offset = D2Client::GetAddress(0x99C1C);3 x7 I- r8 S! w( h4 w
Memory::SetCursor(offset);4 g6 ]/ M4 E& B: b0 U! {" l( p
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
9 _$ J1 Y) ]: W5 {% f* f5 C% A M' R. C; F9 G
//取消两个popup,偷偷懒不过分 i( x# w4 t& O5 l
offset = D2Client::GetAddress(0x9386d);2 @( F' w6 c4 \% s3 ^) p5 I5 F/ f
Memory::SetCursor(offset);
$ m" N9 `+ a- b' L; k+ y" Z Memory::ChangeByte(0x8b, 0x33);7 W2 y! Z6 {! L& Q. Z# ^, X k
Memory::ChangeByte(0xc8, 0xC9);
/ y) G! C9 j) c offset = D2Client::GetAddress(0x9390b);
* ], t" |# Q/ E2 o$ _& | Memory::SetCursor(offset);0 E0 m% V+ w8 s. A( W3 {7 t1 r+ W( L
Memory::ChangeByte(0x8b, 0x33); Z6 |9 `1 L& [$ O: F
Memory::ChangeByte(0xc8, 0xC9);+ ^! v8 t8 N- I7 F3 t. G) W
. f$ M& T2 X; ~
//修正提取金币' Q. \* |& p# [ m
offset = D2Client::GetAddress(0x8D3E5);) d1 L# K1 y0 N/ P
Memory::SetCursor(offset);2 s' B! A6 T/ d4 a
Memory::ChangeByte(0xA1, 0xE9);
" F! _' b0 d! c4 Q- C1 E: E Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
3 l/ R3 [' q" p
5 _3 o9 H) G$ y6 x( I offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
. e& t8 Q! V7 _- s( b1 ~ Memory::SetCursor(offset);
8 a2 x2 G8 n9 ~, [7 _0 O$ K( A Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);1 {' M$ s: r3 u. Y( a2 O
" q; l7 b V; B. S offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);6 n& V! X3 @% o
Memory::SetCursor(offset);
* w6 _( D6 s% F. X/ A' e Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);3 s/ e- {0 i% E# n
S5 A$ P/ i/ j( ` //修正关闭按钮* O% t2 j4 q* f
offset = D2Client::GetAddress(0x8BD90);
. u e5 E) g. M' ~ Memory::SetCursor(offset);+ E2 N2 R- E1 n' i/ Z# b
Memory::ChangeByte(0xA1, 0xE9);) ^+ p; q; B: r- }
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
+ i: m& q: N+ B7 u/ i/ w0 s: E
" G% K9 a, b3 @- _ offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);+ ~( \* p# T% U
Memory::SetCursor(offset);
- K; Z) Z1 c4 c) H" v" L8 l; L4 s Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);9 O2 ]1 e0 o% X0 v
. A/ D; d7 t' m9 _# N; x1 l
9 w" ~- ^0 I( R3 K5 Q4 y
//以下是细节0 i: }& z* l9 D* m/ R% j
#define getXGoldCoinFixBtn() RX(0x2d0)
& f+ e+ i n% q* `0 ~- w7 {8 o#define getLGoldCoinFixBtn() 32* s6 h( i3 f3 [! {" n" G9 h5 b
#define getYGoldCoinFixBtn() RY(-0x59)
1 \$ T; d" u) n! X' w#define getHGoldCoinFixBtn() 32" W# @4 ~0 D' p
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
4 H* |; t6 I4 V3 g+ G9 x1 ?. c+ X$ g$ ?, `/ }
#define getXInvCloseFixBtn() RX(0x3db)0 ]1 m* W" c9 a# A6 F) D
#define getLInvCloseFixBtn() 32
" U" G# w9 U) U$ b! y& s) Q#define getYInvCloseFixBtn() RY(-0x63)% v; K+ |: R& X0 V
#define getHInvCloseFixBtn() 32
. \6 X6 n1 I$ v, E/ b3 n#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
9 S7 n; O8 `( ~$ I N& W6 l0 i: L p, g! @/ ?7 B' @
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
6 d0 ~/ f6 `' X g) i{; I0 ~7 _1 O( z3 w$ P3 h- w, R# [* J
DWORD mx = *D2Client::ptMouseX;& M2 }7 ~! U, R) C* R# d) s
DWORD my = *D2Client::ptMouseY;# q- O$ L" ~+ i5 s d
if(isOnGoldCoinFixBtn(mx, my))# r: g' K1 j# K. S1 Q
return TRUE;/ A3 D% a) H6 ^3 q6 z
return FALSE;7 F$ L, }' ?/ B% n j) M4 D
}3 o; L( v' D" v
__declspec(naked) void caller_goldcoin()
0 P3 z% U) V; }' X{
$ Q4 n" c) B* c4 z' N. i __asm
; D0 m. e) p7 z( M" t e {
J* [5 ]: n3 l1 p1 ~- E push ebx
2 @) O" S/ B2 ]& _8 J mov ecx, esi3 c6 e) V( q& q$ @
mov edx, edi) c( c) U3 M! K1 D8 \$ e
call m_NewStatShow_goldcoin
8 O! Y, x! m+ p! D* b pop ebx" }9 P' _8 R+ B \$ h
pop esi
/ B3 v( J7 W, X retn
5 [4 K2 @( M5 ?6 \ }
# g* }3 r! K5 N9 p}( r- g, w! t, @' ~
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
$ V) @- b7 C: }8 Z3 p% n{# R; J! G* u; C; f5 k& T! U
if (*nXpos > D2Client::ptScreenSize->x / 2)9 q& R! e/ ?+ _* W/ x
{; x5 c! l. V% z. @( a* }+ w" M; O% q. B
*nXpos = getXGoldCoinFixBtn();1 X9 l; r2 X$ r. P& R$ w# }
*nYpos = getYGoldCoinFixBtn();
( w1 d. t y- Y) N0 E% O }
2 u+ Q# \6 p, q. P}4 _) W. ]' Y M
__declspec(naked) void caller_goldcoinimg()) T& @& d9 m4 D3 z
{4 q# n& T: Z, z! f% u' d; Y: w a
__asm& f8 C# U; r+ M+ ]9 h0 }4 P* U7 B( M
{
, M$ P9 L+ C, }% G$ g. R; R0 l PUSHAD
5 M4 d7 H" g9 J. @ D3 ]& B lea eax, dword ptr ss : [esp + 0x38]
; h+ X. j' |: e0 ]! O push eax
1 r+ A. L8 u7 |1 J+ F4 u push dword ptr ss : [esp + 0x38]
" V2 I$ F5 J; C1 u8 _. U push dword ptr ss : [esp + 0x38]+ E: ~) X( f$ ?5 L( U+ _
lea eax, dword ptr ss : [esp + 0x38]: U p6 `8 o; L# |, j/ f0 r
push eax
; M/ |4 \% f+ N. D; J lea eax, dword ptr ss : [esp + 0x38]
3 w5 U% V# U, F& N push eax( u% [3 ?+ U3 M5 Y
push dword ptr ss : [esp + 0x38]6 m+ B" f& i& D. f
call m_NewStatShow_goldcoinimg H A9 Y. E. D1 }2 M+ F
POPAD& l; T& T# }, `& |" W+ C ?
JMP D2Gfx::D2DrawImage
8 ^; {! O: B9 \. x5 |: L( Q }
4 t* Z% [; x9 o% k9 K2 ` i# D! r}" [! I; n9 V) R) x- B) A
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标* T) N2 r1 a8 T" ?% F8 r" U B
{+ q+ c D8 [5 j
if (x > D2Client::ptScreenSize->x / 2)
) I) ?" B* T8 E: A" i {& v+ Y0 w( n& I- o( S1 K# n& m
*y = getYGoldCoinFixBtn();
t4 e4 C8 C: G5 }( S F return getXGoldCoinFixBtn() + 32;# {' C: v: A# g) A/ D0 H4 N9 X
}# j* F9 Z" V" w
return x;* z# r# k @3 H* Z
}* T$ G( }0 Y- l" M2 }+ `
__declspec(naked) void caller_goldcointext()
% B' [ w' O6 Y/ m( B8 d{
; T/ K; f) h' |! r __asm+ [# ~. N5 O0 D. o
{
9 w4 F" }$ m; \ j PUSH ECX0 I" o- ^" ?( p
PUSH EDI2 H- Z% P0 o. k
PUSH ESI# ~6 M7 r& C; i/ S6 g
PUSH EAX6 v$ h# D2 d! w2 e
MOV ECX, EDX
+ x9 ^" s* K" c- P, B& G5 S LEA EDX,[ESP+0X4+0X10]4 W) u& Z. ]) t( q, ~+ m5 f
CALL m_NewStatShow_goldcointext
. o: i( |1 C( `; L6 A$ a/ k( m MOV EDX,EAX
0 w. \4 m0 v3 H- W POP EAX
; K: a: B! {( A: c0 w! B! o POP ESI
# I- p0 f! q1 z6 ~: ^. x& `* s' G POP EDI( f& Q3 Q8 U5 Y( R9 [# Z& U$ y
POP ECX
- R) ^2 h$ d' R! q jmp D2Win::D2PrintString;
$ m1 }1 k5 f' @) V; r }
* a; `2 l+ A3 i, L2 W# q9 T5 W}
A- y7 ^+ S4 T$ V+ b2 w6 K+ ^8 a' L1 S& q! n
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
' g) e4 ?+ J8 i: H+ P' H6 h8 h{
`! }1 ?/ F( |% }( I/ w4 c% m DWORD mx = *D2Client::ptMouseX;
9 [ R1 {, z8 F/ ^4 Z# D DWORD my = *D2Client::ptMouseY;
# H J& o; Z& |, G9 H. @ if (isOnInvCloseFixBtn(mx, my))
( U$ {. ~2 h" {' \8 { return TRUE;
8 r- D% o! ~/ x% [. t return FALSE;
- q5 l+ `( }! t}$ B5 K3 U# f1 s: l. ]: K' {+ H4 U
__declspec(naked) void caller_close()
u; _ e0 N" U; _3 U{, V3 I* K1 l* j* Z% M
__asm9 t5 N4 A Y- L0 v4 I. f" L( h
{
+ Z) I6 ]0 l% f0 P2 p PUSH ESI
2 B; b$ G% H) k% Y5 A push ebx$ j+ ^' L3 g+ I2 ~# z
call m_NewStatShow_close
" d( q2 S# w) D; L2 C pop ebx
) J* \- E/ W2 }! K. _1 q pop esi% r0 G) i1 u$ x7 n3 X* Y
retn% @8 `, r1 ]6 l8 Z0 W2 S
}& F3 z+ |% e! v+ X! B
}
9 ^+ t; b+ ~! C! Svoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])% m4 Y; l+ I* {8 k5 }1 d
{
7 m, z B) a" o, C( p& K& ` *nXpos = getXInvCloseFixBtn();* e. p' ]. Q! [! ?
*nYpos = getYInvCloseFixBtn();( i" \! z) |# C) _1 A4 {3 Y
}
8 r, @& T+ `; M+ F__declspec(naked) void caller_closeimg()
7 m( k9 ]0 p( V, c1 M; ]9 N{& U6 s3 {) b. R. D( |: a5 [
__asm# x* f e$ P8 v- H( I( O8 q6 Y& Z
{
6 N ~5 ]1 U8 f5 ?+ R) s- w PUSHAD
& N+ Q3 k; u, U: G lea eax, dword ptr ss : [esp + 0x38]
7 b! s% Y8 h Z, K( q" ^ push eax* l& C9 y4 D5 E& j: T2 s* z! E
push dword ptr ss : [esp + 0x38]
, t \2 ^2 I0 Z0 U! G push dword ptr ss : [esp + 0x38]( p7 h: V b: i5 w7 P q: \
lea eax, dword ptr ss : [esp + 0x38]
% T! |: f6 {. a0 d8 c4 p push eax
+ F4 |* z4 R. R+ t$ m: Z, G lea eax, dword ptr ss : [esp + 0x38]% Q8 ?) K5 R# s/ W
push eax2 S9 w; z% w& i! _/ H
push dword ptr ss : [esp + 0x38] H0 Y9 j z7 Y* z
call m_NewStatShow_closeimg
& E: b4 `2 r& d! c! w2 `- B POPAD2 t# f- j* _3 q
JMP D2Gfx::D2DrawImage
f E1 y! f6 T# P4 \( r7 X2 e }1 u' X8 W0 Y [6 N
}5 y9 {- R' d S0 x
& B( m1 X+ D* f; |
9 j0 y" d1 i7 i: t; U
|
|