|
转载 e1 ~1 o* K, G9 j' { K
BY SJ
" n0 `! T2 ~" e* ?5 l% z首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
0 z' Q/ _' Y3 e5 W, y# z9 t( S* S& W) u
D2Gfx::D2DrawImage-10041
5 B# g5 ]; F; @/ h1、修复技能的背景(不需要可以不要)
7 c7 k8 q2 j* a+ p' koffset = D2Client::GetAddress(0x77AA8);
\! v8 L4 L, A3 H3 J' Y9 ~5 JMemory::SetCursor(offset);+ g/ d( K+ U0 a( S7 W) }1 M
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
- ]% C4 U' ^& ^9 M( Z0 z
4 C- d! p1 W( Hvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])0 }6 o, R4 m( @' @
{
3 P, [3 o& N0 J* {4 K5 P //Init data for print image
7 b7 w3 c) s8 W0 Z" k9 ~, ` sDrawImageInfo data;% [) s# q% c$ B# h& S8 `( j# Y1 F) H
ZeroMemory(&data, sizeof(data)); ?+ C8 J* h* w' i! x* f6 G" ]: U" K
/ R! j0 F1 S& d G \
//print background
( g: _3 i, c$ P3 o setImage(&data, spellBackgroundImages);
/ Z) k& i, J' ?/ w" Y# g8 B$ Z setFrame(&data, 0);
" I) ?% ?, z! y int fixx = 511;
# _ }0 J: R/ U, ]8 p! V b4 K int fixy = 9;9 o" o- p; s8 Y- |$ Y. {
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
% T+ [9 @% s( E8 n# X7 ~ N6 S, _ setFrame(&data, 1);& A' t! L0 S4 S: d9 N0 a; {; g
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256 I( J7 W) F2 k6 L0 v. o, u
setFrame(&data, 2);
" S5 ?9 W- }0 `, V; U1 E D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4321 y$ P. l5 e; q Q- Q) z2 ~
setFrame(&data, 3);
1 }& L# p" f- s' ` D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);. o* h% h Y% V; E+ s4 S
}
9 g( U; z# V, g' b0 ~9 Z% h__declspec(naked) void caller_SpellBackGroundFix()
3 r3 ^# b$ k1 i9 Y9 B* F{" m! Y, @1 r0 V' c1 T+ _$ O+ ~# h- x
__asm: t4 }$ |1 c, y1 E. t6 m: ?
{
& J+ J5 E- J) F% E$ ?' t1 {$ [ PUSHAD6 F& W' z# A& U2 F9 _
lea eax, dword ptr ss : [esp + 0x38]$ f' n& E7 ^) P7 u7 q. S3 U
push eax- f' G4 c8 Q7 M
push dword ptr ss : [esp + 0x38]8 n, y* s% W0 P/ y
push dword ptr ss : [esp + 0x38]( h. L7 C. d7 p" U2 S. w y* j$ ?
lea eax, dword ptr ss : [esp + 0x38]4 S$ T9 b8 ~: n5 `- }
push eax
+ ` ?' k5 u9 \: i lea eax, dword ptr ss : [esp + 0x38]4 ~3 A% D8 o5 _% S2 w1 H
push eax
+ c9 ]7 @7 B0 {5 W3 H push dword ptr ss : [esp + 0x38]5 z/ M6 `# m. j2 h
call m_NewStatShow_SpellBackGroundFix% V* [; g% [7 b T; F& W
POPAD+ ^8 { n: t+ p0 j( k
JMP D2Gfx::D2DrawImage
& F$ D) q+ w* L/ { e- r }2 H9 y$ s0 P9 q! ^' |$ ^
}
6 F# N2 X% i* ^; f
3 \; q% ]5 R$ [& S2、我们如法炮制小站的背景
7 M* {/ j: E% i) X' I1 x7 ^# d+ c
offset = D2Client::GetAddress(0xAB010);& v2 }* h: Q9 E, b$ I$ l
Memory::SetCursor(offset);
0 d" T1 T$ M7 J" @7 aMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);( c) x9 e3 s6 z L
, Y U$ p9 O j) h. Xvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]), [+ q. S( D d8 ^! q0 y
{
# K' Z+ n% A/ u' Y& }, c //Init data for print image7 ?$ a" g: `: _) e
sDrawImageInfo data;
) O8 a5 R0 Q% t& t2 `7 k" T ZeroMemory(&data, sizeof(data));# H0 y+ c9 {8 _- a- ~' F
) @8 V8 H4 @: T; ]0 D //print background
; j9 w: {. m3 f* s setImage(&data, waypointBackgroundImages);4 u x |3 p, K! l& `* v
setFrame(&data, 0);
( V* a% _/ @* _6 r5 o! ?9 Q int fixx = 0;% x$ O5 D7 Y( B' |& t8 F6 j f* e
int fixy = 9;3 \8 @" u7 w+ Z. ~: @4 n
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
4 ?/ I5 |" Y. v4 J3 v" S setFrame(&data, 1);
: n7 ?/ M- v4 I3 a9 {" l# ` D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256# R! }# @1 ?$ e+ B F2 c1 k
setFrame(&data, 2);
0 p. m; N0 ?6 f- [7 \3 C D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
K0 v7 f+ B5 ]9 C setFrame(&data, 3);. V; @% j: a( }
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
9 B* a5 C2 t& a5 `. {6 D! j# Z
}+ V$ P* {$ w. B6 z- {
__declspec(naked) void caller_WayPointBackGroundFix()
8 {$ M! C; t. I c1 z% T9 C2 B$ A{
! \+ V7 o# U# f; m, X __asm
g" I1 i% j4 v* U2 ` {7 B% I# Z3 c5 J0 w3 L: C0 E4 r
PUSHAD
( _) R1 H1 U) K- Q lea eax, dword ptr ss : [esp + 0x38]
2 K) O9 `. A( @$ O push eax" e% r% C) t' [6 I2 T
push dword ptr ss : [esp + 0x38]
9 z8 a& ^2 h6 Q/ g, X0 s push dword ptr ss : [esp + 0x38]3 S9 }% o% [% I- `! S' C
lea eax, dword ptr ss : [esp + 0x38]/ F/ ^6 P6 K1 b* @( X+ o
push eax
- n1 {2 h2 r( X8 U. \- g lea eax, dword ptr ss : [esp + 0x38]& y# J- j# W" |
push eax
9 `: @1 Q$ a% { push dword ptr ss : [esp + 0x38]
2 e2 ]! t K# z2 o, K: C$ [2 ` call m_NewStatShow_WayPointBackGroundFix) `: q" S# ]4 O3 E
POPAD
- v8 v# p8 \, W' |. i j) { JMP D2Gfx::D2DrawImage) F& A- J; C- n; i
}" e& e7 O9 V& R) h* l
}
% ?" r0 j- I2 U1 c. z
+ E) x' n( g4 L& D2 e t3、以下可以搞16*16超级箱子-腾出我们需要的边缘' [ k5 G' M$ h% @3 M' u- d9 J) \% }/ h
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
@9 u- k, u& h7 Y/ n! b2 u {
: Q2 m. {7 _/ F class D2MultiRes : public Library<D2MultiRes>8 ?5 L, Z- v. U+ X5 s5 |
{
5 ^" f8 o1 |1 @5 W# f- ` public:' I& y/ ~' F% `+ x9 S
static void Init()
8 M0 V3 j2 B5 v/ O6 j! h6 C/ E7 J" q/ p {
. R# ?" ]( e. P! v: D; T Name = "D2MultiRes.dll";8 j% E$ d3 y& }/ _0 w W
Offset = LoadDiabloLibrary();: m* \! i) @' x& `" i8 B
}
; m" y0 Z+ O s9 y };- R% j4 s7 x- S# O D
D2MultiRes::Init();4 [ n- y2 R2 R
D2MultiRes::HookLibrary();
- i) A4 n1 A# f
" {$ o8 @1 b7 S4 I
% ~# P! X+ @1 b6 l/ b+ |8 |( _' ~ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
; }2 R ^% f1 c* ^! e, a Memory::SetCursor(MiscFunctionsOffset);
* h& _3 J8 N5 p- @0 a" W. D Memory::ChangeDword(0x1b0, 0x200);
/ H! q' i( W$ g; j9 d3 f1 B6 v9 P" ^8 t
0 ]+ \% c/ e: |- m4 L4 Z MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);' t, g8 Z& m, K
Memory::SetCursor(MiscFunctionsOffset);' F7 q V* f/ c. y
Memory::ChangeDword(0x140, 0x200);
/ L; l" u& g' |9 |/ U, J" B$ C5 a
9 W1 U9 e. w0 b6 b
# j; ]" n- U" T1 w7 S. T1 r0 f+ R MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
6 O" {4 u/ }9 W" | Memory::SetCursor(MiscFunctionsOffset);
% s) Q- E2 n& O' r y) |8 P# L4 L/ d Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
9 D- @0 }/ E6 j1 U% w8 E8 y% S' p L- v' T
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);7 E* J W* C1 j) e/ H! \
Memory::SetCursor(MiscFunctionsOffset);
9 t+ k3 v4 z( j( r- A1 C. o Memory::ChangeDword(0x200,0x299);//下边缘 299最大
$ S2 |% Z/ e* i- s8 U* i9 T) s
! X/ j* I! n9 Y2 G MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
; D* r5 K$ T- s Memory::SetCursor(MiscFunctionsOffset);
( \3 o5 c. ?1 p+ B Memory::ChangeDword(-0x280, -0x400);//这个不要动
: z2 p7 O* |! c9 g/ T( U }
9 o7 @7 i7 E6 T+ a( c2 Z8 C: _' H& B5 E. }, [
4、快完成了,是不是发现金币啥的位置不对??
/ v b: n+ p2 U# e% \2 S7 ]$ ~& O! P* n% p9 ^. ~
//这里修正我们的装备栏
! h1 ]* k1 ]. B" D* d1 V9 d6 [ offset = D2Client::GetAddress(0x99B6C);
' |8 z# F. i% p$ R Memory::SetCursor(offset);1 n8 w3 t& B+ k. R/ n. _
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);# g7 C7 ~; N) b) E- U" f+ c; Z; @
* Q, ]+ j" |. J) T5 M) e offset = D2Client::GetAddress(0x99BA7);
" s( M" h/ |% d Memory::SetCursor(offset);3 D2 o( v9 f' y
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
{; a& v& \7 V7 o _ l4 f+ Y# F8 J6 G- O* J
offset = D2Client::GetAddress(0x99BE2);
' U, |6 M; |" ? H Memory::SetCursor(offset);8 j/ z; V' ~5 s2 N- d" K$ |( U
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);1 Q2 Z" F1 P2 u: E
+ n0 X, H! N' x* p
offset = D2Client::GetAddress(0x99C1C);( B/ z V8 P1 O9 c& F0 D
Memory::SetCursor(offset);2 {3 X5 P Z4 x8 t$ j' T, X
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
8 h. s5 E+ @# A3 a7 b$ C& T8 k {9 R# X8 @
//取消两个popup,偷偷懒不过分7 r+ L% l/ B% M+ r/ _. i+ c1 M
offset = D2Client::GetAddress(0x9386d);
* T2 s; m: X! w: H Memory::SetCursor(offset);
5 Y, |. a& J g x( O% S2 O' r Memory::ChangeByte(0x8b, 0x33);
# `. z- e5 o+ J: a& K Memory::ChangeByte(0xc8, 0xC9);
/ ~8 G6 B5 a: c. ]+ N' b' Q/ w offset = D2Client::GetAddress(0x9390b); k( W' o0 H1 l- \
Memory::SetCursor(offset);* F) D! `2 g3 B# |
Memory::ChangeByte(0x8b, 0x33);1 O% ^0 O5 t. V5 Q! H
Memory::ChangeByte(0xc8, 0xC9);
0 [( O! N# B g1 e, M
# n5 C4 e6 D- p //修正提取金币6 T- [. r/ v% q: X. q
offset = D2Client::GetAddress(0x8D3E5);# P' X5 f6 I; l# _ v6 t
Memory::SetCursor(offset);# x1 N6 d, a0 r
Memory::ChangeByte(0xA1, 0xE9);
; h* ]. p8 n8 i" g% m Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
. E. P6 D" P" P* c, R$ S/ {8 h* `7 `& |. K% m. K; m
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);6 U8 Z, I% b. N o
Memory::SetCursor(offset);- N7 V9 I( w6 o6 F4 S/ l
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
0 I* K) j- D$ _, _$ t2 n
# v7 h' }- S$ z3 V) L1 Z+ Q+ n offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);, h$ D' l& j3 e; G" w' s5 R
Memory::SetCursor(offset);9 V5 N+ {0 ~' u# e
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);: E* N/ B- a7 v2 j; L
7 k1 _: n1 U" X, T //修正关闭按钮 V" u4 ^1 x5 o6 Z& I1 c: N( Z# g( d2 z
offset = D2Client::GetAddress(0x8BD90);
% R* t* X, I$ V# M& U* N Memory::SetCursor(offset);* E* ]; z" }/ x6 a# r: F- W" ?
Memory::ChangeByte(0xA1, 0xE9);( l5 [' Z/ |8 X* e3 n$ S7 `
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close); F' R$ v7 W7 t) r0 d$ Y1 b& [$ i
" H+ T7 D+ J: \" K
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
1 P# f* x5 {. f0 I2 k5 C9 d6 A Memory::SetCursor(offset);+ w4 q5 ]9 e+ Q* ~/ r5 h4 w( ~
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);6 g2 M( e' ?/ ]
" Z1 {, m/ ~% c ? w& ?8 r( P; [& T7 \/ M
//以下是细节( U H, j ?; D: K3 S8 F) R5 k
#define getXGoldCoinFixBtn() RX(0x2d0)9 f; G5 U& b; L
#define getLGoldCoinFixBtn() 320 k0 [0 Z! H- q, l, P
#define getYGoldCoinFixBtn() RY(-0x59)
! G+ K d/ u) n) c2 B; Y, v#define getHGoldCoinFixBtn() 32
& i% N* ]) \- f9 n( T8 y#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
$ G$ ~0 T/ c8 Y" i0 f3 o) |. O" F/ B& G+ d7 d3 s1 o( A& o
#define getXInvCloseFixBtn() RX(0x3db)4 F/ T. ]- I3 R
#define getLInvCloseFixBtn() 32
6 L0 |% m0 p3 |0 W8 f#define getYInvCloseFixBtn() RY(-0x63)
' }3 K5 J' \& T+ W$ ~: ]#define getHInvCloseFixBtn() 32$ J- w4 j) Q q1 Z- E& ?5 X7 O
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())& D0 k: Z* s3 f9 m8 O+ s% w
$ U! }0 h2 p# w/ }: @. \BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
1 t% r' X: a) i- H% f f$ k{0 I# l. S" U+ ~" v0 q
DWORD mx = *D2Client::ptMouseX;
+ ~: y" ?6 q& Q3 L7 \ DWORD my = *D2Client::ptMouseY;- U7 M3 ^$ f( H2 V: U1 x- A
if(isOnGoldCoinFixBtn(mx, my))
# w* e+ N$ N5 I: L+ E return TRUE;
9 W+ E9 }, a& I; p7 H; `" w" ~4 V return FALSE;
! G4 H- y Q! J; {7 ?9 g; L}8 H+ ~/ x$ [* j
__declspec(naked) void caller_goldcoin(). K; }; V5 e" {& J& {" g, M5 a
{5 W! R o, V0 I. }& N0 Z
__asm' \ [6 V+ ]" \8 D T! M
{! H6 ^3 h+ h) { ]( W
push ebx/ M2 ^# N; W6 J$ y6 L. ?
mov ecx, esi4 O$ Z5 P3 U0 ?% `
mov edx, edi6 ^! g4 h g4 x1 q2 W% a
call m_NewStatShow_goldcoin& U# B$ z4 u! [; Z: Q/ c) w
pop ebx! s S* x/ f( O5 J X/ m ?2 B
pop esi7 R1 U# H3 d4 H# a( z3 J e9 Y9 r
retn
' |9 K6 _/ S. x) d4 J% ?' H5 x }; w+ X- w8 ~5 u8 I- j, B
}4 P) r) k$ d/ ?% b
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
7 L1 p2 q% U5 f& r( e. a p! F- `{
3 R! i, a0 P, j: F$ A' a" X if (*nXpos > D2Client::ptScreenSize->x / 2)
! S8 E1 H. c! R* O( l { u! Z- H6 X# b% c
*nXpos = getXGoldCoinFixBtn();
! u5 F) B; G+ [& ~% G8 P *nYpos = getYGoldCoinFixBtn();2 Y* P6 H7 C% a
}
1 k% l6 Y2 ^% o) U}
; o8 g* C8 } n: I' ^; T__declspec(naked) void caller_goldcoinimg()) D- ~) d8 Y0 y4 H! w- ]# c
{
! B+ n, M" z. p$ E! b+ Z __asm" C5 n# F) }2 `
{" Z6 }7 T7 i- H7 B) j) l
PUSHAD" B" }8 C5 P- e6 P1 y+ n
lea eax, dword ptr ss : [esp + 0x38]- C; J# r& m, Q1 ]2 [# F- h/ {
push eax
' l; ` r( q( P+ H, f& S+ M0 _8 M; y push dword ptr ss : [esp + 0x38]0 [2 _1 t9 Q! x5 l
push dword ptr ss : [esp + 0x38]" W2 C4 k' u K) Q- j9 o n! M
lea eax, dword ptr ss : [esp + 0x38]
3 e2 e8 o4 f$ x+ C. n5 C9 g push eax
- L, z0 D$ S' r+ ~( V lea eax, dword ptr ss : [esp + 0x38]
6 p; Z; n: S; T7 p push eax
6 c: i! J6 d3 U: r push dword ptr ss : [esp + 0x38]0 s9 U( B4 [# h: s
call m_NewStatShow_goldcoinimg5 V- F: y. ~" M* L; g0 O
POPAD
5 N4 A: [. i7 }- c, |5 D JMP D2Gfx::D2DrawImage
9 B- A0 \+ [; G" r4 W$ E }
% s! l$ I* Q, [9 t, m6 V& ~6 o( Z8 I4 H}+ }4 p# S; m9 }- w* F3 N! J; ]2 f
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标 H" C! u5 _" X, f
{
$ f2 d' A/ Y% l5 Y y5 K, ^ if (x > D2Client::ptScreenSize->x / 2)( K5 d/ ^8 [! S9 i) v
{3 |' Z, \8 ?5 ^5 f$ |, ^
*y = getYGoldCoinFixBtn();0 B" h* [# y% K; s3 u+ f
return getXGoldCoinFixBtn() + 32;& S, [: i9 @. R& \+ m$ z K2 y
}
- I& \- a0 r4 y/ W& H7 ]5 o- B0 a return x;
6 n2 n+ l% u& m" q- k}
3 s4 f: C# w4 g- X' _8 u__declspec(naked) void caller_goldcointext()1 g* ^9 J, B1 N
{
: L% A- g* t" D& @! e/ Z" t& P1 n __asm- U+ q, P/ r7 _* Y! I. i
{
8 S" j: X* V. i. W4 F$ s" y PUSH ECX; T; A/ J/ X, M
PUSH EDI
2 K; f; Q' x9 a7 R8 n PUSH ESI( v( s# d1 T% ~5 L
PUSH EAX. b8 G+ m# w: G# }$ p. Q
MOV ECX, EDX
( |2 r) D8 \2 w1 U# d& w. j1 C LEA EDX,[ESP+0X4+0X10]
- k! y ^& L% S& P CALL m_NewStatShow_goldcointext
% o& ?+ F5 F$ {$ ~8 v. ^. `. v9 z MOV EDX,EAX
6 y8 F ~ C$ K% D1 Z7 R POP EAX; R' D* o" b: h3 Y! F$ x
POP ESI
! g& |( Z; Z' A6 x4 s POP EDI
! u J! F* E" O. \# { POP ECX0 e* s/ \* C6 A; i
jmp D2Win::D2PrintString;! |1 }( d/ L2 e# b1 Y( B2 f
}
- }3 N3 ^3 W3 Q8 M}: F. `3 D" A3 w: s2 Z
9 P* I8 d1 x1 e* l- n; O
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)/ U( {- @1 @ R' \
{6 k0 T3 L! W/ f: @! `9 P% B
DWORD mx = *D2Client::ptMouseX;
8 M: v( k V3 _! x DWORD my = *D2Client::ptMouseY;
" x# N' d: I0 ] if (isOnInvCloseFixBtn(mx, my))
) J; T/ T: V' U3 h! m# ~ return TRUE;
6 h: {& }9 d7 @* |7 X9 u return FALSE;+ P* c- C/ Q. W! u% I6 E: `* r
}1 \: x* I" z9 |/ t V+ T, I( E- B5 b
__declspec(naked) void caller_close()! s; S! ^' \# @
{
/ n* `9 p2 z$ F+ d$ W @/ e- W __asm4 I7 C- Z/ @% c3 I; x7 l8 h0 f# l
{
7 \1 _2 W0 y$ P* z3 h# y2 T# q PUSH ESI' V: b; R3 b9 h" ]; H7 J, L2 X
push ebx
% F5 u& H$ J. k) f# v call m_NewStatShow_close7 c, C) N5 t$ @4 K0 W
pop ebx& h `# B( X7 n+ g4 k
pop esi; Z, C' q: h/ i, | l
retn) B3 ^; Y8 K1 s& ^3 h
}
; l$ h4 d+ \3 r" V8 B! g" P}
) h+ D1 r5 Q2 @6 G1 w* svoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
Y7 V: t. e9 f T$ L6 T{/ j/ C5 m8 Z3 i% h6 c4 y2 }1 G
*nXpos = getXInvCloseFixBtn();. T) U! ^7 h! R% {
*nYpos = getYInvCloseFixBtn();
4 H* Z9 B9 B3 h: p" @0 o}/ n- J( ~, R4 P8 Z5 ^, \% a
__declspec(naked) void caller_closeimg()$ O6 l- O- V8 z; m. ?( W
{% Q" v$ J5 O7 P
__asm1 r4 M# }/ X F/ U$ u; {! }; C) u
{
4 g! r% z0 |. ?+ S/ Q; m; T" i% \* _6 d PUSHAD
9 k9 s/ d6 W0 B7 \+ ^- A lea eax, dword ptr ss : [esp + 0x38]
1 [+ s( _9 L1 W1 @- x push eax
5 u& _1 ^; ~) M6 ^ push dword ptr ss : [esp + 0x38]
' o( O: |2 Y" r& ]* ]5 ? push dword ptr ss : [esp + 0x38]
" \: _2 q+ Q( y+ u; |9 P/ O3 | lea eax, dword ptr ss : [esp + 0x38]1 }2 z& y; d8 B9 `" V4 m1 m
push eax
, w0 b6 T/ R& C/ O @ lea eax, dword ptr ss : [esp + 0x38]
7 ]* y2 a. n. M, _4 X9 b: n' j, w push eax$ \$ [5 p! P; i* q# f
push dword ptr ss : [esp + 0x38]/ \' p1 g/ A4 {9 I
call m_NewStatShow_closeimg
, N1 _) A: X5 T8 E- |2 c POPAD" @% l* O5 x# T' k) _; W/ |! z
JMP D2Gfx::D2DrawImage' k- `8 |, a" O9 }3 m. d7 w6 _# w
}+ y3 W8 {& B: i4 Q7 }% C4 f
}
& P: n( H& v( `" \7 h4 B+ o9 |* O5 U& [5 u1 H
1 W0 {# h/ _9 h2 J5 }/ b
|
|