|
转载! [1 r4 b% `3 L& G/ c) A% G) W
BY SJ
, _. q. s& P1 V+ Q首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)( I( X: c1 M2 @: w3 Q* z
3 o+ D$ N: C: f4 S: |
D2Gfx::D2DrawImage-10041
( M* I5 y4 g- J2 c1、修复技能的背景(不需要可以不要)3 o: l' Z2 N- Y6 }5 d" _+ L" B
offset = D2Client::GetAddress(0x77AA8);
! g" j6 p% t5 |7 gMemory::SetCursor(offset);
& m- ?# A( @) ?7 Z1 d; `2 l, MMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
8 A j# X, ^! t9 b& s) ]7 B* {9 v3 ^' ^" V; F2 s8 J
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])3 w& R4 z6 x; i7 K, e7 Y8 G
{
3 q; M/ A6 e* z/ S D( } //Init data for print image5 ^+ B( e9 x+ j- q9 A
sDrawImageInfo data;
+ @2 K: r) i& P! j1 Y ZeroMemory(&data, sizeof(data));" u& R- X/ c a. v, L4 y- k
: w7 [6 h7 l) \6 N- {4 ]& k H
//print background
& u* @5 t `+ F& n; o$ ^6 i; x- ^) c setImage(&data, spellBackgroundImages);5 A' X# \: O) F8 X3 f0 [5 k" y
setFrame(&data, 0);6 A& o: N9 g" C9 f- ^+ f
int fixx = 511;5 ?' m- d* y# C5 \ G$ N
int fixy = 9;
6 X& A2 P& L8 X3 Q' n D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
2 K1 H7 N, O5 S* A5 _ setFrame(&data, 1);+ ^% k7 c8 k" s: Y; j
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
% ~" K: i! ~/ Z+ M' K1 z setFrame(&data, 2);
k( j( C( m0 a, b2 f D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
, M9 i9 Y$ X% b8 ?2 L+ ~ setFrame(&data, 3);- l* f& ]3 H. B7 }
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
& H4 L6 H Q( k7 Z' Y3 ~* o! ]}
% r% k2 T. b, I5 C( l) ^__declspec(naked) void caller_SpellBackGroundFix()2 N( u" c3 Z( D: q9 \( X, C8 k: D2 l
{
g8 F: f; T! ~8 Q __asm) P+ Y5 m" I" ^9 c( Q. J* ~
{
$ l L( S2 R2 Z" M) @ |) i PUSHAD
) M/ y# C# [$ \ lea eax, dword ptr ss : [esp + 0x38]
& d7 u- p) q; {/ L* X6 U push eax; E1 ?% X. e) C8 A
push dword ptr ss : [esp + 0x38]/ ]+ m% ]4 L- U- N* a9 L
push dword ptr ss : [esp + 0x38]' }6 i8 V& I5 r8 X' S- _/ }" A. \4 e
lea eax, dword ptr ss : [esp + 0x38]
* g6 w: s/ B7 Q; c3 U d push eax
7 O0 @6 v3 v E* S+ O9 @ O) _ lea eax, dword ptr ss : [esp + 0x38]" {1 q4 S- L3 y, D5 a1 C
push eax
0 V% R! ^! s2 l. K+ A6 {7 q6 i; o push dword ptr ss : [esp + 0x38]$ z9 g$ h$ H1 A4 M
call m_NewStatShow_SpellBackGroundFix
4 ?! ~8 I/ t1 y! [+ f6 c POPAD+ Z! R* W. J r9 x) h# E
JMP D2Gfx::D2DrawImage$ \9 }/ v: E/ u5 [( u. k; {6 e4 o
}& _; a1 l3 g! [! n" d& G
}
& O8 R$ a: a* R7 b4 l& Q ?, V$ _3 ]* Z8 ~4 O1 b
2、我们如法炮制小站的背景$ _5 d9 v2 I: \: F/ @
) S' ?) p% i A6 M: l$ @; O
offset = D2Client::GetAddress(0xAB010);: O- f# d, q5 p9 O" T2 `- a
Memory::SetCursor(offset);# i4 @/ F- ^3 t- v3 D: \$ m
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
% q& u q7 S5 ?( F0 V* s3 ~% Q3 }' z# a0 g$ g# P
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])2 f% U& { N1 L4 x/ L2 N2 l
{
0 F) N; ~7 ~5 A0 |( F //Init data for print image3 i& R$ ]2 B) E6 `" ], Y
sDrawImageInfo data;
; F5 ]0 w: v- x/ f2 c# V4 ?! Q/ A5 a" m ZeroMemory(&data, sizeof(data));
3 i0 t- l" U$ ` h& t: W3 G2 R4 E1 c1 C3 r$ O0 q
//print background2 [: [) m$ N" L- d' u
setImage(&data, waypointBackgroundImages);0 a8 }$ P4 r- q/ E) P, I
setFrame(&data, 0);- }* H: f! O- Z
int fixx = 0;
3 S2 g+ ^; Z2 x# f0 g) }; ? int fixy = 9;
; ]+ E1 J( ? M$ _* ? D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);$ L- z H% i5 y( Y& S( r: S
setFrame(&data, 1);1 O: W- {( D! c5 S2 u
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
6 b/ O( z" X; e, E l$ V" t setFrame(&data, 2);4 F% e! ]. J' p
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432& y3 W' l* ]. _! Z
setFrame(&data, 3);
! s/ m% o/ [, |9 m6 _- J4 K D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0); ~' }; X4 Q. O) u
1 O' n# d1 @: r# F2 O5 y3 S4 n u
}
6 M4 _ \6 {8 w__declspec(naked) void caller_WayPointBackGroundFix()/ K1 E: p: O. P4 f" `( B5 J
{$ Z3 m. o0 U1 M" a
__asm0 F/ q# o/ C+ e' D% m3 P
{4 @, } e9 Y' U1 B
PUSHAD3 b/ g4 A0 D6 c% ]
lea eax, dword ptr ss : [esp + 0x38]9 i/ Q( W3 V/ g8 Q
push eax! {& }+ L0 I: Q, a# F6 g& [
push dword ptr ss : [esp + 0x38]
3 j- L, H1 s6 U% M push dword ptr ss : [esp + 0x38]
' W2 J/ `9 r8 z lea eax, dword ptr ss : [esp + 0x38]4 c$ d+ q, ]- W
push eax
# W5 h! `5 e6 @3 K& L5 p lea eax, dword ptr ss : [esp + 0x38]7 h3 }# ~$ C3 z5 J
push eax5 h c/ o" C4 n% ]
push dword ptr ss : [esp + 0x38]
* {$ R A% {+ {' t s9 Y) Z" c call m_NewStatShow_WayPointBackGroundFix) P/ F8 C) R3 c! x
POPAD7 E/ A9 i; m8 L0 }# C5 B! y
JMP D2Gfx::D2DrawImage
$ s' C& e' B$ g, ~7 Q& S% t }
% \- K2 ?7 c/ X1 ^6 Y# G}/ ?, x% ^4 q8 S2 c& d
0 T% ]3 f2 y: V) g2 n7 J3、以下可以搞16*16超级箱子-腾出我们需要的边缘
) h/ H9 L7 M- F# B7 S: X腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
3 P0 w5 r# ]' S, p: D- Z {: q2 z5 l9 b: e' X$ P! G
class D2MultiRes : public Library<D2MultiRes>% T8 F8 B% t8 f
{# `% g$ {. E: H$ D. F
public:
4 _$ ?& Y8 y1 _" }- y static void Init()/ h* q( I0 a, W
{
: |( i( C* G9 M Name = "D2MultiRes.dll";: _, M, L. A" J k
Offset = LoadDiabloLibrary();
& R9 ^! Q6 K$ O( ~% i; Z }& q3 T/ {" J- S; z: _" v2 u! z
};
: }7 E! A9 D* X) B) C$ t* ?# {4 b D2MultiRes::Init();6 Y- e3 [, k `
D2MultiRes::HookLibrary(); {. X8 `, p& i% `/ r
- a+ W. F; q8 p0 | a: N0 t' l9 v% F7 Q6 i# e1 C
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);* q' O# x4 {; G' G7 `$ b
Memory::SetCursor(MiscFunctionsOffset);
# X( ~0 j/ D& l) b. r Memory::ChangeDword(0x1b0, 0x200);
. c- i2 a. a5 V+ R4 }& g
0 ~' D" w6 S( L: G$ i
, j: [6 Z. L- _3 M9 \, H MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
' Q8 w' x; B- Q5 _" Q Memory::SetCursor(MiscFunctionsOffset);+ z+ I' E- Y# R+ J
Memory::ChangeDword(0x140, 0x200);
' a7 ^6 q; g9 I& W2 j" \! [* X+ }6 }: J4 h/ R' ]1 {. A6 Y% M# I- I \
0 j; R2 p# g4 e+ |9 |% w MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);# F/ w4 d2 e4 {& F' s
Memory::SetCursor(MiscFunctionsOffset);
: d9 k' n0 E$ G- N Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
3 A3 p( j- I" ], n
& ^' D) R: W; k( V5 c2 P6 N MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
7 u, M$ M* O! T4 E$ t4 W Memory::SetCursor(MiscFunctionsOffset);
' ^( b% M, Q. w+ T Memory::ChangeDword(0x200,0x299);//下边缘 299最大; n/ @; \% U: [" E
5 S" r1 M: V8 L6 G
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
1 S/ v _/ m+ `. G* F Memory::SetCursor(MiscFunctionsOffset);/ F$ E8 Y1 c* I+ o3 s
Memory::ChangeDword(-0x280, -0x400);//这个不要动
: m- l$ Q) R( V1 Q7 \7 M( ^ }. q! I8 N5 p2 j: w
1 C) q, k: t$ f1 M7 \7 n4、快完成了,是不是发现金币啥的位置不对??7 s. ]; [9 _: K
0 |0 _. b' V. y5 {/ T//这里修正我们的装备栏# y+ R( N1 B; F6 [4 X+ F7 M0 g
offset = D2Client::GetAddress(0x99B6C);" e2 Z% f7 A+ L2 W+ ], z
Memory::SetCursor(offset);
: ?7 x1 _" t1 K Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
6 n; Z% Q' ]! }; o) h4 O% t
' ?* Q& u* t+ A; l offset = D2Client::GetAddress(0x99BA7);; z" {2 J3 s9 o4 l; j
Memory::SetCursor(offset);
7 N. O3 ~1 L$ p! s Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
6 k8 Y5 G: k% A% `( v% j- |. g G! J7 x# P- w1 Q" B1 e0 C$ z
offset = D2Client::GetAddress(0x99BE2);9 u' a: o6 D4 p
Memory::SetCursor(offset);
) I( p6 S$ q" [ Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
, `% C/ a2 T/ o# E1 k2 A, I: R4 z
3 R. r1 c0 `4 _ r% p offset = D2Client::GetAddress(0x99C1C);2 V0 X I- a- t: s$ _
Memory::SetCursor(offset);0 g* d8 t, Y1 S- T) q$ I! k
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
3 A+ [9 ^/ O j7 m4 ^5 \" Z
. D5 ?. G( Y# x: K$ k4 R; h //取消两个popup,偷偷懒不过分' _4 k# d3 N: ?0 _
offset = D2Client::GetAddress(0x9386d);; X( d1 A) c* W! [$ M0 c8 X
Memory::SetCursor(offset);( L. I4 p) `; c0 \
Memory::ChangeByte(0x8b, 0x33);6 H* L5 v/ T+ L2 y: r# q8 e
Memory::ChangeByte(0xc8, 0xC9);
+ V, {6 H- ]1 K offset = D2Client::GetAddress(0x9390b);3 l% X8 j% p- v5 g! C$ Z3 F
Memory::SetCursor(offset);6 `, Q0 e3 @/ w& G8 `, C
Memory::ChangeByte(0x8b, 0x33);" W, {4 C, |& v) g5 R; d/ [
Memory::ChangeByte(0xc8, 0xC9);
, t |9 h* E/ |+ U4 }0 i4 n
0 Z' g m% J% e) W! p //修正提取金币
g+ R; Q8 \5 w8 O* I# L offset = D2Client::GetAddress(0x8D3E5);6 s/ ]; S7 }* ^
Memory::SetCursor(offset);* y1 W2 x6 ?5 Q" ]
Memory::ChangeByte(0xA1, 0xE9);3 I, v k+ I( K* z
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
: v" T( [7 \! |2 `
- \2 u5 {& T8 Z, c+ Y( E offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);) [% G: ?9 V, `+ t
Memory::SetCursor(offset);
( ^4 S, H, E1 d* [ Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
5 m+ X" X5 M2 x1 [9 L$ f
( U3 T( ^& q R; w0 {, g offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);- y X$ p" g- ~! j0 Y, Q& h/ j
Memory::SetCursor(offset);
! q% g# l* D I Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
7 O; |/ w' Z, h: F# x4 D: ], M& ]" m
) ^/ U. U! F, | //修正关闭按钮# x& L& a. D. ~- w0 K5 n
offset = D2Client::GetAddress(0x8BD90);2 ^) u/ h+ L. P" y. K: i
Memory::SetCursor(offset);# J' x: ~6 x: u
Memory::ChangeByte(0xA1, 0xE9);
+ |( N+ w# D$ ^2 a) N$ H& ~ Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);- u B1 a |+ d) q
/ l% V" @1 i0 Y( X; q+ s offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);# K8 s6 }; e5 S# |9 c4 Q- `8 I) [
Memory::SetCursor(offset);: |- r6 S2 y, l# G! {
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);) \- B( Y# e! D/ E; J
( ]5 l$ V! \ c H6 g. @
1 Z' Q0 f& v: u2 ^& c4 }7 ~1 E
//以下是细节: U4 J* S/ C; c3 v2 Z( X8 O
#define getXGoldCoinFixBtn() RX(0x2d0)
' S3 g& H/ X4 D! z" U#define getLGoldCoinFixBtn() 32
5 I8 @* x9 x- M' ^2 U; t& Y. X#define getYGoldCoinFixBtn() RY(-0x59)- V1 V. G- ~' ~4 j5 t; p
#define getHGoldCoinFixBtn() 32/ N6 N# t$ q3 U
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
6 i& F2 d a0 X1 s9 F7 e" q) Y6 r5 y" b* y7 z1 `9 n/ z+ O
#define getXInvCloseFixBtn() RX(0x3db)
4 {" N4 M' y+ `! o#define getLInvCloseFixBtn() 32! l: d7 \" u' G, z9 ~, V
#define getYInvCloseFixBtn() RY(-0x63)
/ G" [) K; Y6 w V2 c I#define getHInvCloseFixBtn() 32. N5 l* p4 D( f" p2 a
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())4 K( B& {) G5 o2 Y
2 p# _- |% m! s6 Y
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
" q+ z3 [! h3 y3 \{" [7 u' o1 i% c& R) Y
DWORD mx = *D2Client::ptMouseX;
; {$ i& o$ W- [ DWORD my = *D2Client::ptMouseY;; @( U( Y) M9 V% y3 G/ ~* K
if(isOnGoldCoinFixBtn(mx, my)): S2 t9 \3 N: n+ ]
return TRUE;' ?8 H6 C: A6 V: C) H
return FALSE;4 H& F& a; e2 V% z9 W2 B
}
5 h4 g- L) y/ ^$ w' x' J$ u__declspec(naked) void caller_goldcoin(); j* C# Q) y. }9 |; [: Y7 g f$ Q( v
{& I8 H+ z. Y8 K: T) P
__asm
; Q9 u% Q9 H: y1 j" G5 O3 @ {
! u( m/ K0 L( N' L push ebx
+ T; q1 \& i4 ` mov ecx, esi- Q3 V% i/ o3 b. F" S4 K& K
mov edx, edi
G1 S4 ~& a9 Q: L0 d call m_NewStatShow_goldcoin( J+ K3 E* O- M
pop ebx$ p# Y. }0 `- Y# D+ z& t' F
pop esi6 C7 s5 G p3 c9 ~# o' K8 }/ `
retn
$ ^* S h7 n' K& { }; S1 ^: }! a; A' U+ o& E D8 ]
}7 S$ q, p3 m# [9 [, k" I3 {9 W5 W$ n
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])3 p: ?. w) n5 A, U6 n
{+ }6 S3 X; h" a8 ]8 F) h
if (*nXpos > D2Client::ptScreenSize->x / 2)+ K' }( @. z7 c5 W2 m
{# b8 K, v5 X! f. V2 n
*nXpos = getXGoldCoinFixBtn();
! f* Z8 o+ u _3 ~1 s4 n *nYpos = getYGoldCoinFixBtn();1 o2 K# N$ v4 {& y6 z0 Q# C
}
5 z/ g' c, q* e7 x; ]; c}) |" W+ l. z' k4 |+ Z
__declspec(naked) void caller_goldcoinimg()* j7 j, F l0 a9 o: D$ J
{
; {, z+ K$ M4 U! d* u) t3 Z __asm: S! k0 M6 Z3 I! Y; Y
{
+ `0 M2 L& W7 j- ? PUSHAD
! A0 B, J$ p& y" z/ y1 Q) e6 K lea eax, dword ptr ss : [esp + 0x38]
6 T' _! W% X' C( t push eax- h* A; e( F+ z5 P+ d: r' Y
push dword ptr ss : [esp + 0x38]
1 d" I# ~# P2 P/ R0 s push dword ptr ss : [esp + 0x38]
& C. y8 [9 ^& z+ b3 r1 t. Z lea eax, dword ptr ss : [esp + 0x38]7 z, s+ R" q" v9 @" _, m& W+ d& k
push eax$ ]0 E; R- \; a" E/ K' t
lea eax, dword ptr ss : [esp + 0x38]( U+ t, B0 c5 z$ q% `
push eax% T- H+ S% o3 N% p f
push dword ptr ss : [esp + 0x38]
" D( t0 L' j8 S4 I) j call m_NewStatShow_goldcoinimg. r% r+ E4 ]9 B
POPAD
; Q/ N$ o) q$ s# [ ^- e# a JMP D2Gfx::D2DrawImage
) J% U! y. B& n1 R+ [ }" A% ]1 [: o; D' U' q5 y- x2 X% @
}& f) d; W& U, p7 ^$ t) Z
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
$ B3 E6 u; B" n" J: x{
8 z- B8 }( p0 X! k. u if (x > D2Client::ptScreenSize->x / 2)' l f5 n% ~# Y4 G$ w3 k& y5 a
{# {; ? t; ^, h
*y = getYGoldCoinFixBtn();" ^8 Y9 n+ U" E& d" `0 r
return getXGoldCoinFixBtn() + 32;
6 K; _; P3 a4 [( A) C% j# M }6 S* Z! j0 V; z5 E7 l+ ], |
return x;
9 e# U0 ?( C; u/ {. ^- Y}
0 \. s' F; ^* m3 U" O5 \( j* @__declspec(naked) void caller_goldcointext()
) i! `7 u( x* U! e: F8 F' p- H2 p2 ^{9 I; \ {, G; {5 W Z
__asm) m8 A: F- u1 I8 K8 P I0 l6 n
{
9 k" J+ K8 x9 C( j, v PUSH ECX# ^" s3 q4 X& Z: D9 t. S) S2 N
PUSH EDI8 P& ?6 x8 Q6 J
PUSH ESI$ J! _+ f5 i' j7 V2 U6 _- i
PUSH EAX
/ X$ g/ L* |# R MOV ECX, EDX
5 I0 W) Q" \0 g+ t/ O( z LEA EDX,[ESP+0X4+0X10]
?$ u; ]; R! ]8 y$ n CALL m_NewStatShow_goldcointext
7 N! g* q- I+ x% Q1 y+ K* w MOV EDX,EAX# n6 I9 W9 j' O3 Z
POP EAX
7 X" ? U( x/ J& U5 e POP ESI
7 x7 u! R& ]- u- L POP EDI
' p. \! r3 J% q) p6 E POP ECX
3 Q; r# N9 |8 t jmp D2Win::D2PrintString;
% \) p# h. P Z }" G& @$ Z& \# w) W: L: S
}
2 k# `5 V: @/ I; I
8 c& Z8 C1 E2 H7 gBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y): [2 i* a1 ^% |' I4 J9 m, ]" p
{
6 ~% s6 @, ^' ~ DWORD mx = *D2Client::ptMouseX;; j" n7 i8 R4 b; Z8 k
DWORD my = *D2Client::ptMouseY;
, V: M$ f0 M* Q \$ U5 E if (isOnInvCloseFixBtn(mx, my))" z, e- {) U. a
return TRUE;# W0 v$ \* D& S; E" @' b
return FALSE;
" k( t! P5 C0 ~, O* C}
5 v4 {5 F( v( G# c6 _) `% ^__declspec(naked) void caller_close()2 y: ]8 k8 ^ @2 f; _; m
{, \- A, G6 @( g8 X! x- H N! \) A
__asm* M8 V" z! m% Y$ _, ~
{
8 {+ d! o# C2 E( D# M' ] PUSH ESI4 Z1 h- A0 o4 E* p$ t7 Z6 A
push ebx9 d G4 Q& o1 S$ X; Q
call m_NewStatShow_close
1 j q1 T4 Z# B4 i4 o, h/ q pop ebx
# L- K+ e! q( ~; G pop esi
/ m5 s& S& j- o( W retn
5 Y" T" J% g% o; u( M+ A }
1 j* J8 s; h+ r4 Y3 F}2 I/ ^7 n4 G) u# b
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])5 D' q# c" S4 h& ?2 s, i
{, Q4 k9 u6 k' R# E# f
*nXpos = getXInvCloseFixBtn();
! s- w [* S* S *nYpos = getYInvCloseFixBtn();0 e3 k' M7 q0 {0 v. V/ s
}
8 o4 r8 j+ b1 {__declspec(naked) void caller_closeimg()
' t( ^1 R4 v0 `* d, D' G0 K{# D3 k5 k+ L1 Z( Y/ \" E1 A3 n7 B
__asm
8 C, G1 {) r8 @( Y3 J {; p- U) V, w, j# d* |
PUSHAD
2 e' _; C6 M; \; e; v, n* ?* P1 F lea eax, dword ptr ss : [esp + 0x38]
3 O7 l3 Q% |* p push eax
- a9 M. S% w8 p' p push dword ptr ss : [esp + 0x38]& J5 b5 q* S) X$ E2 X- E
push dword ptr ss : [esp + 0x38]) j- {0 ~4 F7 f
lea eax, dword ptr ss : [esp + 0x38]
. K% R# V8 ~: c2 ]6 z, W: h push eax
$ l& F9 j/ X! H ]7 O$ k! } lea eax, dword ptr ss : [esp + 0x38]
% \' ^" ~+ L* } push eax$ ^; g+ T' M9 x# V4 U0 J, d
push dword ptr ss : [esp + 0x38]3 ?; T4 `9 I+ E4 j& @) ~
call m_NewStatShow_closeimg
, s; f6 d7 @1 y# M POPAD
% T4 c {! h/ o" q3 y JMP D2Gfx::D2DrawImage
! W4 G- b7 h2 S$ d- v9 p }
7 L( r: |2 ~. @5 Q2 i; K- B}, n' C+ Z6 S- B7 o
: U+ T6 Z/ D! C N6 P7 ^/ y4 ?8 j* ]' z: B+ X; r
|
|