|
|
转载
* ]- ?1 P; l# {3 P! ?BY SJ
. L9 L5 S. v# H* a" G首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
+ `7 q% f% Y: S9 K3 Z/ y2 D1 y2 j! w3 x+ e, \$ e" u+ t5 G
D2Gfx::D2DrawImage-10041
8 O9 U" \ c* i1、修复技能的背景(不需要可以不要)' d' r( P' S; O2 W0 D
offset = D2Client::GetAddress(0x77AA8);
' I+ J4 V" x6 N" pMemory::SetCursor(offset);2 w. Q' r4 v# w2 {" _3 Y) p# p6 w* ]
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);* s, q. h* @4 Q g" V
! g* {; F5 g$ n* Y
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])) t9 i$ E' j0 Z) O, w- s' Z
{ S, B' ]9 T8 k h- o
//Init data for print image
! _ J3 g; ^, m G- o2 i sDrawImageInfo data;, u2 v c* x+ r3 Q
ZeroMemory(&data, sizeof(data));
z5 z) v% t$ u. A4 Z
% g- [/ ~8 K. \2 u7 e8 t //print background) t) C7 }* j- a1 g. G0 S( C2 K, c
setImage(&data, spellBackgroundImages);
" \' i2 S; N( C! \3 [ @4 ^ setFrame(&data, 0);
- K! Y5 {4 u2 p3 k3 I1 n int fixx = 511;1 s8 g5 E+ b$ Z3 ^: _8 [$ y* F
int fixy = 9;/ ]' l% @% W, e3 _
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);7 Q# ~( q# F1 U" _- \9 Z
setFrame(&data, 1);
6 Q: j7 N; M* Z, Z* C+ Z D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
) d) C5 o+ Z: }! `) t setFrame(&data, 2);. q0 w7 b+ V2 l* q/ _! r% q; Q
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432- p+ n% i; i% ?! o& f+ n8 Y; ~
setFrame(&data, 3);+ [9 _/ f1 |4 z5 e4 p# _" C
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
2 _% H5 F( _0 N3 A( g5 b* {# G/ O}- Q! t$ n* F9 ?2 q
__declspec(naked) void caller_SpellBackGroundFix()& ]; Q' G( ?; _" c# h
{
5 s# }, o. e; ~ __asm' _: w& u$ v& s' d
{
# J7 x. A) O% F3 T PUSHAD% D7 z$ \' j+ n& g4 X1 w
lea eax, dword ptr ss : [esp + 0x38]% N6 b, L( F$ c T, c
push eax
/ n/ v. B7 m, y, c+ q2 p$ X* H( O push dword ptr ss : [esp + 0x38]
% p' r! D4 e. v f push dword ptr ss : [esp + 0x38]
) n& a4 @/ R/ Z; f) o lea eax, dword ptr ss : [esp + 0x38]! w& \: S9 `/ \$ B6 k
push eax0 b$ o) ~4 m+ j- K B" r" t
lea eax, dword ptr ss : [esp + 0x38]
5 s4 Q: H$ `! I% g% R# H0 R v ^ push eax
; \* {: v; i K7 ~: z9 L# k$ t% V- F push dword ptr ss : [esp + 0x38]3 L5 S. |' C# D) k& I2 |5 P' m6 D
call m_NewStatShow_SpellBackGroundFix
$ f/ V8 x7 H) a2 F POPAD, V- D3 J1 I6 T/ N3 m
JMP D2Gfx::D2DrawImage# O7 d0 d% n! ?4 R
}0 X/ b6 j. q( \1 f% [' w) t
}
4 N3 Y" o$ i& I. Z- |- p# A/ r
2 O ~- B' u( T. l7 m u2 E9 {2、我们如法炮制小站的背景
+ A6 l1 {7 _* @# k- V5 l$ P5 t. c5 ~2 K
offset = D2Client::GetAddress(0xAB010); T2 {8 H4 ^5 e' S. N/ S3 {
Memory::SetCursor(offset);8 c& k- [- c7 y- Z/ ~( |
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);3 B) y% ^8 C/ K7 ~
5 y0 M" o$ y F2 [) L @$ G
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
* n- C/ O1 H& s, S& q+ T7 A{7 U7 s+ W5 ]* n- m E3 u
//Init data for print image+ R X( U+ v( [7 x& M
sDrawImageInfo data;5 D! ?" O6 w6 c2 Z; i
ZeroMemory(&data, sizeof(data));0 L5 K* s0 O7 u: z; }! j) j9 L
7 `- G3 m, ?3 [9 n) k% K
//print background5 ~6 o. Q" z0 J4 ]" l+ Z
setImage(&data, waypointBackgroundImages);& \3 j# \) ~* O0 ?8 v
setFrame(&data, 0);9 o- ?6 h1 N$ N2 T
int fixx = 0;. d/ S- `" Q; b! V" T
int fixy = 9;; Q2 `9 j# f( o9 p3 e% I" p
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);0 B: d0 x: s# V8 w& }' {! R
setFrame(&data, 1);- ~( k7 S( ` v* j
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2567 X1 A) w9 e3 t% v" c, F' s
setFrame(&data, 2);+ q, T# B/ j7 \" V: j7 D6 K5 |- l0 m! Z
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
# p6 n2 U7 C+ F% l) ]" x1 } setFrame(&data, 3);
8 Y4 r6 ?; \/ [+ s, b; p D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
/ K: o! Z) C& G
& g. F' ?" j6 o0 s. `, x}
! M, y: {: m: n9 a" v; ]__declspec(naked) void caller_WayPointBackGroundFix()8 d0 a6 U" K6 y8 _- T
{
4 Z I# `" J( U __asm
8 O( j% ` _" [ {0 }& @% R- ~% T2 a0 x* r
PUSHAD
1 U" L$ n, f8 m# h" }' {$ q lea eax, dword ptr ss : [esp + 0x38]' ~ Z+ o: V. e' p' f1 P5 _. w
push eax
( _: \; F- P* W/ n, ?8 W push dword ptr ss : [esp + 0x38]
$ { P8 n$ ]4 L push dword ptr ss : [esp + 0x38]- q: Q( L3 w2 g; s
lea eax, dword ptr ss : [esp + 0x38]* @: `( ?0 t6 f
push eax2 B5 ]; Z( a7 m L
lea eax, dword ptr ss : [esp + 0x38]
! b9 S b U' E5 H1 e$ K- { push eax, g$ O, Q% @, [
push dword ptr ss : [esp + 0x38]' w, H& n" Q- ~" H+ x7 a6 M, a
call m_NewStatShow_WayPointBackGroundFix1 [2 [# u5 r8 X, m) ~4 ]0 l# j# q9 s
POPAD
* D9 W- @) j3 h! j/ U7 G JMP D2Gfx::D2DrawImage8 V( U6 @, w" X6 j- X- h7 w
}
6 Z3 i9 Y$ y7 p. j}: f% k7 Z. |1 x6 M6 ^" g
% t% h) B/ `: ?) k0 q
3、以下可以搞16*16超级箱子-腾出我们需要的边缘- E7 s( q- O& a0 u% e
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复): h7 u& Z0 `. _/ R4 g) J
{6 y/ C$ K% S7 }# @, g
class D2MultiRes : public Library<D2MultiRes>4 |- t1 B k' t; b' B/ x
{
0 `" B% V2 H# d- q6 Q, I/ W' g# ` public:4 B. `1 `% f& w% ~0 |
static void Init()
/ K0 b" F) {! i* W' I4 c7 A1 M5 O {# l" p0 u! E- E* b
Name = "D2MultiRes.dll";
) L6 i/ v/ X3 C$ ] Offset = LoadDiabloLibrary();
/ U9 p+ I! P9 ?7 y) ? y }
* f2 u" h' U& O4 T9 F6 h0 k };
4 _1 |# p0 r' u* e5 W# Y D2MultiRes::Init();: j2 s: `0 a# y8 t. @
D2MultiRes::HookLibrary();
6 I1 \# t+ Q, }+ K) n; m. i) g: | u0 \7 b; x+ C2 E# B5 O
( ]+ t5 W% w! k; k. L
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
% { y2 G* @9 m7 Q) Z; Z6 ^$ A Memory::SetCursor(MiscFunctionsOffset);! Z- a+ E: s5 t! k9 U* E' O% f2 U
Memory::ChangeDword(0x1b0, 0x200);
5 C8 q4 S5 i# r8 A- Y! b6 f! Q* W
/ s0 i" o v2 C( m
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);* o [( V" f# D) }, }
Memory::SetCursor(MiscFunctionsOffset);
% `5 C$ Y# M* ^ Memory::ChangeDword(0x140, 0x200);3 R5 |3 k/ z& l* P; C7 x0 E2 h
2 U, j1 q/ t; k8 f
6 n, j/ e1 r# ^8 z9 J! Q8 p# d, X MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);# [. i/ Q6 o" y' x
Memory::SetCursor(MiscFunctionsOffset);- j9 u& y1 f4 I+ s2 W8 h. v
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
# r% x7 [$ a0 a- D; @2 |4 d/ q
" c5 I, R5 O h& K MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);$ A( |7 A' U! h; D; |
Memory::SetCursor(MiscFunctionsOffset);: Y- a3 }% X& ^* P, n* [
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
5 @: i2 X/ ?# P; o7 d+ u) P0 `/ e) F
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
: T8 x' m( g+ u, K1 N8 o Memory::SetCursor(MiscFunctionsOffset);
$ [! l. U: p$ m$ R% h Memory::ChangeDword(-0x280, -0x400);//这个不要动0 e: X8 c* t% A1 B
}
* u5 d6 c) m6 r" L
@% w, c" W, Z& Q$ n2 h5 h$ d7 @4、快完成了,是不是发现金币啥的位置不对??
; i$ P) G m6 }- I$ R8 I* K; N6 f( e( I+ o) v
//这里修正我们的装备栏
; s) R4 r5 A! T+ O% y W offset = D2Client::GetAddress(0x99B6C);
- x" t# M+ ^- F, r' B% ~ Memory::SetCursor(offset);
* G- M7 }1 M2 q( O Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
- d9 K6 \$ y0 B4 X0 Y- N2 m. |; l3 R; o
0 j9 J% G" r6 Z. @0 A- O offset = D2Client::GetAddress(0x99BA7);: c# G9 k# P& Q
Memory::SetCursor(offset);3 f" ~) E$ h! q" c
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
2 |. Z7 P i1 A" g* _8 A, O, S
: O- T% M) I# O offset = D2Client::GetAddress(0x99BE2);5 K' f6 u; ^* ^9 c! d0 W
Memory::SetCursor(offset);( w. _8 i0 N4 i8 O; Q& t4 j$ X" `
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);2 }4 p; Z- i/ a+ R; T" a+ T
/ C! }. B* y; N' B" r+ f8 g# a offset = D2Client::GetAddress(0x99C1C);- M* A0 o/ ?; K" V5 P. h, e! k
Memory::SetCursor(offset);5 Q; z- c4 i( [9 z" z5 S& F! i- C
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
! B% N r, [6 P8 e0 P$ f( r
8 ]: [. n3 D2 I //取消两个popup,偷偷懒不过分
0 z" S' t, i& b1 o$ | offset = D2Client::GetAddress(0x9386d);8 s) C# w7 v. h0 F7 `# o
Memory::SetCursor(offset);
: E0 r$ D$ E2 C6 S. s Memory::ChangeByte(0x8b, 0x33);7 Y3 X3 B. { s4 L
Memory::ChangeByte(0xc8, 0xC9);
$ T. x4 i4 y V" z2 a" I; g offset = D2Client::GetAddress(0x9390b);
- a; A8 q) E6 k. Y Memory::SetCursor(offset);! L4 n7 S5 Y1 S7 x2 N( a
Memory::ChangeByte(0x8b, 0x33);! w$ e+ O7 o Y* S9 _
Memory::ChangeByte(0xc8, 0xC9);
) x( {/ C, g; L* x4 V. W5 {+ a0 c1 U* E; R
//修正提取金币; Q2 U9 |; z8 `. S* f
offset = D2Client::GetAddress(0x8D3E5);5 `( a; `7 ]5 g- v$ r& A0 |) ?" C
Memory::SetCursor(offset);
: G% v$ N9 b: q3 }0 p Memory::ChangeByte(0xA1, 0xE9);) S" y ^- |) |( r `5 D# r
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);) W7 t- D. w4 A; U8 o# Q
Z6 w4 E" V& `4 a1 V8 Y5 y offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
% t# S0 @# d/ n7 @7 A, f& U Memory::SetCursor(offset);
' ~/ |& r7 d8 B: r' B4 x Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
- y, Q7 n) A$ [. m5 \1 ^7 N9 h) f0 D6 ]2 ^
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
; |% G/ r; ]% }/ o' y3 s% I Memory::SetCursor(offset);
$ O/ J' A. N% R+ M! h Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
7 p' L" u& ^( q' V; n) U5 e9 y& { ]% o; X4 z% K
//修正关闭按钮* d6 s ^! z# u, x3 i; A* I
offset = D2Client::GetAddress(0x8BD90);8 b- D5 M3 {( N; n) s: z
Memory::SetCursor(offset);8 o1 \$ x! D& m1 ?+ a
Memory::ChangeByte(0xA1, 0xE9);
1 ?% \# F6 d2 x& u' Q5 _+ |4 q! m Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);# I6 \+ C( f+ G7 h d. F: X" l, w
" S5 {5 c" J- e: k, \5 x offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);) k/ ?- I0 ?" ]. ^5 U
Memory::SetCursor(offset);' m5 `! i, [+ [* d+ s; F
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);4 U# [! u3 T8 z. |
. Z8 m" [% k* j* P5 y& }
/ X8 u" l9 O/ }- j' k5 W# A8 ~
//以下是细节
' N# H5 u$ i4 T; q6 Y2 i0 B, [#define getXGoldCoinFixBtn() RX(0x2d0)
6 k `/ s) V: `, @1 R#define getLGoldCoinFixBtn() 32
" S6 Q" r2 @* f9 K- q% ^+ @#define getYGoldCoinFixBtn() RY(-0x59)# w$ k+ A) R0 r) [) h& I% n
#define getHGoldCoinFixBtn() 32
+ `3 U2 D3 a. Z# P5 D#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())9 k% I: I; z* @! V7 J+ @
( P i( s1 u, q#define getXInvCloseFixBtn() RX(0x3db)
9 b5 a& u' d% g$ W- ?. ?#define getLInvCloseFixBtn() 329 U/ v) c8 R# W0 y, ^$ R' s
#define getYInvCloseFixBtn() RY(-0x63)2 Z; i! J1 t3 v: t6 b
#define getHInvCloseFixBtn() 32
% c; K" G& a6 D, Z% k#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
# t' V* {1 S6 t6 t: F D% g# Q7 c: n
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)' o0 q( R+ m# A
{; z8 ?! G) I% G: K
DWORD mx = *D2Client::ptMouseX;
G& H/ R+ J7 J3 W" y4 ^ DWORD my = *D2Client::ptMouseY;
1 M0 J- ]4 M* h Z5 ?! Q if(isOnGoldCoinFixBtn(mx, my)). Q9 V1 `( f$ E/ e/ O4 s7 ]
return TRUE;6 O8 a4 S7 d* V9 a: J
return FALSE;' C8 M; L1 \4 N+ b, P. ^
}- H/ \# {9 X/ i8 x2 b3 n
__declspec(naked) void caller_goldcoin()5 ?* g8 D4 T: e# \
{9 c8 W1 y: ~* W0 b
__asm" N- m; `/ i: l6 `/ r
{
- o# g+ x7 F1 W5 E5 A" ? push ebx' z5 \0 m/ O: T! a- o# g, X
mov ecx, esi
H" M2 T: [7 L, t mov edx, edi
5 ?$ V) }6 N( x _" g: ~2 A call m_NewStatShow_goldcoin
4 P9 d; m2 N6 H pop ebx
0 m4 P, C* @2 T; M. ^5 X pop esi
# f8 W8 t& V) K8 q. |6 C# w7 u2 g+ ` retn e0 @$ L% Q/ }& B- r
}( B( {, [" C' J0 F# q) M
}
1 ^& b4 J' W3 r! avoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])/ l; p9 U% Q0 { q- f9 \
{
8 f) p2 R) ^) ]" z if (*nXpos > D2Client::ptScreenSize->x / 2)/ n5 N0 q7 m4 A2 m
{
3 |- j5 n, v' h7 O2 R *nXpos = getXGoldCoinFixBtn();8 x |4 q1 ?% s' N
*nYpos = getYGoldCoinFixBtn();
3 S j5 H/ z* p+ f0 S2 @. W, T5 s }" ~4 T, v7 e; d5 g( W; r# T
}
4 q0 W- f. E1 k' ~( D__declspec(naked) void caller_goldcoinimg()% n) B- L) e6 C$ ^
{/ s: K) X$ q5 }/ b3 e: N
__asm
- B( M( G* n6 D$ V% ?' v/ q6 x5 H* g* y {
. Q. e- K5 Q8 y2 u: e3 p PUSHAD$ C5 { ^$ g; a! @/ f( k4 \% A
lea eax, dword ptr ss : [esp + 0x38], e+ n$ B4 l8 Z/ E" {
push eax2 l$ i o! L/ X4 c: a
push dword ptr ss : [esp + 0x38]% x' v8 v5 K/ n* R) @! ]5 [) b; R
push dword ptr ss : [esp + 0x38]6 @1 i9 q/ E5 \! B; R
lea eax, dword ptr ss : [esp + 0x38]
& w6 Z0 P+ q# r) I push eax
2 Z. i* g/ z. r* ]0 D6 ` lea eax, dword ptr ss : [esp + 0x38]' R! t) s j" U# U$ C! Y; I: d
push eax7 n/ J' j2 i+ G% @
push dword ptr ss : [esp + 0x38]8 M) Y' u1 U! N7 }
call m_NewStatShow_goldcoinimg
+ ~6 t4 [7 O, W' B$ y) y# M POPAD
! Q( h) b8 V; v% E+ l+ a JMP D2Gfx::D2DrawImage- z9 ?3 H* Y t
}& z0 h2 I" d0 Z3 P b$ ?1 w0 K
}
7 z5 m" ] F2 x' i9 ?DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
8 r1 u$ m2 i6 ~$ D8 ^2 ?{
/ ^8 h5 {; T* D if (x > D2Client::ptScreenSize->x / 2)
5 M; M+ M( u3 U6 v {7 Z! \' [ ~' a( x2 P7 U+ F- x4 l& ~/ n
*y = getYGoldCoinFixBtn();
$ _$ _# I' F: n9 P8 d return getXGoldCoinFixBtn() + 32;
6 L! h6 d D+ U' i: Y" @6 | }1 N1 Z" W! I+ ^) g% X) B
return x;
2 ~- W" s, r) A( d! ]}; A- ?# ~- ~; e# T2 C, q
__declspec(naked) void caller_goldcointext()8 p7 m" `" K- D, S+ b
{% v$ t0 P4 @/ F5 C
__asm
: a$ d# A% A1 n, t" M {
* ~0 G6 {% |8 m2 w PUSH ECX7 W, V; d( f! R% p
PUSH EDI# H7 ^& y) Q b Q
PUSH ESI4 V/ |% o* s9 `8 A
PUSH EAX
% k: K: p6 `0 J% r8 W MOV ECX, EDX" E# j! B/ @8 {- I r
LEA EDX,[ESP+0X4+0X10]
' p* z3 W: D4 c9 Y( W. v$ O CALL m_NewStatShow_goldcointext) a1 m: }/ f# A
MOV EDX,EAX
) z+ H% Q8 Y( q H POP EAX1 E$ n, \3 I4 q
POP ESI
8 m0 G4 r7 V6 y% x* u$ u0 J% } POP EDI
7 y9 S6 z$ o% b- x8 w POP ECX
0 [0 ?0 W6 \7 j: F5 `* p$ I Q jmp D2Win::D2PrintString;
- f# r$ E8 |( O }
- B# Q$ b! M- A: S: D% c}- A3 Q" k. U% h: g' N' t. d9 Y
3 i8 f+ P, a0 e8 m
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
3 l2 R, q1 n: l{# U! E" e& G0 v7 }. U/ c) k
DWORD mx = *D2Client::ptMouseX;& L" F' u2 \& ?6 x% b2 e4 q
DWORD my = *D2Client::ptMouseY;8 m* o- N: I, C# C$ v
if (isOnInvCloseFixBtn(mx, my))+ b7 _: X& k% ~5 }. c* w
return TRUE;: e X9 l* G3 u+ r/ l# @7 h
return FALSE;: Q4 t# z7 V. R2 S" D) [
}
5 \, I( F* p! X2 X__declspec(naked) void caller_close()" q3 z c$ f- y1 U$ W
{2 ?/ L5 t! y6 d: { f6 ]
__asm) I% O' b, k" j4 b( I$ ]; h
{
4 J4 |3 h6 T' | PUSH ESI
" R1 H2 s) n) o* ^( c1 G7 e5 ~ push ebx
8 y7 M) w1 m) F2 t* ` call m_NewStatShow_close
0 B# L" v6 D$ ^6 e6 y0 g5 q pop ebx
5 C, N r) M3 M s8 y, _% j pop esi
9 Y5 U" c8 V* B& _2 u4 y! j retn% r' ]5 r+ X& X5 K0 _ o
}: U+ B- }/ |4 @8 s" R! F1 q
}
3 i; y3 }5 _2 ]" u% }2 I7 nvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
$ v h' p( D4 w ^, d1 N+ K{5 y3 U l. u5 N# i
*nXpos = getXInvCloseFixBtn();& s, }9 H8 E! s# N6 X
*nYpos = getYInvCloseFixBtn();1 k" _7 u4 e- a7 n! w
}, L& Y, S# ^* a( u
__declspec(naked) void caller_closeimg()
' M. [' u9 C! `7 [, w& T. g' D& d* K& c{
- V7 G- I0 \. `; v( v __asm0 S7 F1 U' m5 @7 ^: X3 Q1 r2 F
{0 c# D6 E) P! U1 N7 C" |& ~
PUSHAD( H" d2 @4 N7 O7 V+ o& k6 ]
lea eax, dword ptr ss : [esp + 0x38]! `/ j$ Z6 W) i- d6 u
push eax
& v/ @( R( x5 _ push dword ptr ss : [esp + 0x38]
9 m5 [: w- ^+ p1 x9 v! v push dword ptr ss : [esp + 0x38]
+ A* T( v; O. S, i+ ^( ~3 }+ P" N lea eax, dword ptr ss : [esp + 0x38]
) H$ S5 G5 B, v) e: i push eax7 m4 `7 X R1 D
lea eax, dword ptr ss : [esp + 0x38]# n: d. S' ~ i9 W& D5 R% V
push eax; Q9 `' t" w" _# c0 @
push dword ptr ss : [esp + 0x38]
1 p/ {7 f; S5 ]" D5 c" B/ j) Z5 d call m_NewStatShow_closeimg
/ S7 t/ N; `' o! Q POPAD" f+ k! ^. N) [) ^
JMP D2Gfx::D2DrawImage
. a. ?5 e+ X( P" o& Y7 s3 e/ A0 k }1 k" G( _! I3 q% ~( N9 S
}
. C/ @* B0 f( x- a% `0 g, o- `! p @6 ]/ w* S* X
Y" k' q4 j( J
|
|