|
转载% {7 R1 ?8 ~8 ?" M$ V& ?
BY SJ
- O1 f7 X0 N& {首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
2 U( T$ U, ]9 y1 N
) c1 E! s# Y, E hD2Gfx::D2DrawImage-10041* b6 t" P- b7 Q8 I' e
1、修复技能的背景(不需要可以不要): }3 Y% R# K, K9 z- P
offset = D2Client::GetAddress(0x77AA8);
) |2 e+ B! z SMemory::SetCursor(offset);
B1 { I* f2 y9 Z5 y; HMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
3 C) j3 L; i% _1 @" ~3 ^0 t; m' n; R& G' i' }# A' R3 }. y
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
o5 v, E2 n* e( P% c) R{ b* e, B7 b# u: ?$ J. {
//Init data for print image8 E5 {0 e- E0 @) W! v" ?% h
sDrawImageInfo data;' _+ I( t. S* J' j% M
ZeroMemory(&data, sizeof(data));
7 y9 v5 K0 ^9 z. g7 S* U
; Q8 t+ e# i0 w% \0 A //print background
6 D, x3 P( o" p2 V setImage(&data, spellBackgroundImages);% ]' U. g! C8 M# _, i! q. f
setFrame(&data, 0);
; `* z$ t# Z4 [8 M8 ] int fixx = 511;
+ @7 k: F6 P" k3 J9 _6 ^ S% c {6 i) A int fixy = 9;
" O4 ^& u9 _' u1 O& M% ]1 e2 W4 x D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);) g7 A! v. w! F* Z* z2 E
setFrame(&data, 1);
- h/ E0 p9 H! t% Y2 W D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
: c5 V9 x2 D' F$ Z! b/ G setFrame(&data, 2);
4 _/ v- Y! y' ^4 [5 P D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
# w& m& q+ A/ D! y setFrame(&data, 3);
L6 a( i3 h( u D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
# J" z, E/ P9 f8 o}
7 F7 d) m/ n) [, o__declspec(naked) void caller_SpellBackGroundFix()# x4 b: C' k; S# y
{2 |! G8 y, v$ r3 b1 O4 z
__asm
. e( Q; f6 E, R, a9 M {+ X5 \0 f' f! o2 e0 l: f
PUSHAD# }0 r; r- V( [
lea eax, dword ptr ss : [esp + 0x38]
, U9 d$ b- j) O7 I( q( ?; m push eax
3 f- b7 _( P& Q+ d% P& l6 l push dword ptr ss : [esp + 0x38], L. x( \4 y# C/ Q5 x7 Q
push dword ptr ss : [esp + 0x38]- ? h$ C0 h6 l. t& m4 M
lea eax, dword ptr ss : [esp + 0x38]$ r: b {$ B5 T# G: y0 |
push eax& a5 A" x& p* D' P/ C, z) {7 W
lea eax, dword ptr ss : [esp + 0x38]' n' ^" p8 l- A8 J$ t: ~
push eax: e3 r8 M5 y6 G9 u
push dword ptr ss : [esp + 0x38]. d: [$ j P& R6 m4 N: R" o4 k
call m_NewStatShow_SpellBackGroundFix! k6 I7 |' b7 k' U: q3 a" N- B
POPAD! x7 G' n n' f$ K; X
JMP D2Gfx::D2DrawImage
6 c7 C7 H# }- u; r& x }
: o' E9 G J/ E% C* C}
0 g, a7 i( W- E: @/ P6 R* ~& @. ]
2、我们如法炮制小站的背景
( |2 }" V' b3 P7 G; N7 t. E( Y8 ^9 Y( z2 X1 c
offset = D2Client::GetAddress(0xAB010);
1 |$ B+ l+ r! ~Memory::SetCursor(offset);2 |. ~: `$ B9 x. r3 I
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
* `) j$ ~/ L# K; L/ P' A1 l x6 ]4 a9 D0 P7 d
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
1 ?/ y/ p3 R7 x/ J7 ? \{
& U( a. m* t; Y! F1 c //Init data for print image
8 |' [7 j3 c/ J8 X+ k; E. c sDrawImageInfo data;6 u. k- P: C/ ^) H
ZeroMemory(&data, sizeof(data));2 I$ |/ A# K- a1 Q
/ {# I, g1 F1 q2 g9 q! Z7 u$ S //print background
. H! I7 `5 j& N6 |. B* S setImage(&data, waypointBackgroundImages);
. |8 u( @! Z& u% H setFrame(&data, 0);$ x1 Y+ H' w( t2 a/ _. g
int fixx = 0;
! j$ e& ~) E; k int fixy = 9;* v/ J( n1 P( v+ d- r
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
* T9 |2 \6 i% m m" T setFrame(&data, 1);2 M% S8 Q$ X9 y; W! ]
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256" R5 C9 S" E* D B% B
setFrame(&data, 2);
, v( T' z3 i- u. I$ _+ `0 S D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432( o( U+ m) [1 g7 b- K+ H7 N
setFrame(&data, 3);
# p Y' K1 R- \! R: x6 y) p/ M1 k D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);9 ?( ~' c0 ?8 `0 ]/ ^; f% a
( z% c8 |- s) S- j) f3 y: m# X+ \5 D}3 [8 M+ U O5 p+ v% R
__declspec(naked) void caller_WayPointBackGroundFix()9 i2 H' ~: s# l" G4 M4 D
{
0 f( {7 U0 [/ [* f& \- ^% ~ __asm
- F2 |) t s% e1 @3 ^; m- { {
1 b6 @+ {# ^; k PUSHAD* y: o- o, H3 O9 \( R
lea eax, dword ptr ss : [esp + 0x38]
$ U2 u( `- Y9 w& W( o" j: _, t push eax
; D$ y. \" l2 Z/ f/ q+ U push dword ptr ss : [esp + 0x38]
# N. b3 X3 G4 d, s push dword ptr ss : [esp + 0x38]. V! ^& o. u% _* F% J* z
lea eax, dword ptr ss : [esp + 0x38]
/ q. N+ W* i) F9 ^& m9 ` push eax5 ~2 J+ a! |9 N Y' G5 U F+ p
lea eax, dword ptr ss : [esp + 0x38]4 S" }0 g ^2 L, X2 _5 V- L
push eax9 p% t* ~/ A! Z. H
push dword ptr ss : [esp + 0x38]' n8 Y' q' B$ ^" F+ B% J
call m_NewStatShow_WayPointBackGroundFix7 }' }1 A w4 w; p' S; [5 [
POPAD9 E, x% j8 B: @) a% G( C5 m
JMP D2Gfx::D2DrawImage
' m* X" H& E. z* @& } }. T9 @) C" ^) R3 S0 D) [! }
}8 ^, ~7 u0 L2 T1 L! e/ _
( r7 O- Z8 {/ v. B( t- z0 U7 Z
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
4 }& k! X7 n+ r$ {) w腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
/ h8 L8 e0 r1 s: f; t; T$ L: u {6 J/ A0 x+ W" C3 z% h* _, U- ]
class D2MultiRes : public Library<D2MultiRes>
6 {5 o3 b7 X* A+ d6 `- Q$ L {
9 Q' t3 p' T! A5 p; `; X* Z public:
1 }+ t7 T9 ~0 o6 H# M static void Init()
. k/ m) g- g$ M$ h$ a' i2 p {
- t& ~6 K" @3 [, O0 a4 ?* g- O7 x4 B Z- r Name = "D2MultiRes.dll";! `3 D! y2 s! b
Offset = LoadDiabloLibrary();% \* q3 t- R+ f
}, U- R' Q) ^% ?
};; p* A/ C2 J h
D2MultiRes::Init();
, t5 w2 n S; m& _+ ?" H3 E D2MultiRes::HookLibrary();; o0 {6 |8 V; m9 W- _1 v/ m5 W
9 G1 W" q9 ]3 @! Q
3 h' o; g/ z- ^ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
9 D% S; E- b4 Q Memory::SetCursor(MiscFunctionsOffset);
$ T* o. O* \; n Memory::ChangeDword(0x1b0, 0x200);
! t6 ?+ w; X5 c' H) ]) y6 p3 w( Z$ }( x" S
1 y1 |- c2 s* j8 y MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
7 n3 g! u& n4 M Memory::SetCursor(MiscFunctionsOffset);
# b p/ Z4 J6 J Memory::ChangeDword(0x140, 0x200);/ S3 ` \. o) O
) F6 N, j4 y w/ g
$ T7 M( s7 N' M
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);5 X3 w! N. I$ U- r2 i
Memory::SetCursor(MiscFunctionsOffset);! f: G, d c# }' Z$ E0 u7 R) H
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块+ R9 R9 r8 D" P8 P9 s9 J$ \% C" k. M
7 Q& m' Y8 t5 D MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);; d. Z0 e- w- B
Memory::SetCursor(MiscFunctionsOffset);+ u) b- w3 q% n4 \- Q- p* W
Memory::ChangeDword(0x200,0x299);//下边缘 299最大4 q* t# k4 i" X5 q; e6 D5 M+ |& R* w4 n
@9 }: H& N0 o+ R
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);7 c5 U2 `( A% T/ X
Memory::SetCursor(MiscFunctionsOffset);' W v w8 W6 I
Memory::ChangeDword(-0x280, -0x400);//这个不要动
- E% C& {1 c( g, E }
" H9 |6 r3 {' K; M- F+ r, K0 p8 J
6 i* d! p. K6 h; Z4 w$ }4、快完成了,是不是发现金币啥的位置不对??
% S* }: H- ~( E) B! Y( n6 X, L
# S$ q6 R1 Z( L, x. J//这里修正我们的装备栏
% U) x2 a3 {% h: c4 i( J/ B, Z offset = D2Client::GetAddress(0x99B6C);
7 E( ~% |' [& A6 b' G. @, x: |% r Memory::SetCursor(offset);
! u- [. B6 h2 P3 Y Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);* `% J2 C0 j8 Q3 z
- d- p+ ^1 C, `( m4 A
offset = D2Client::GetAddress(0x99BA7);9 n# ~. U; Q F, m6 h
Memory::SetCursor(offset);1 `: `! [ n& A3 d
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);& X* m& C# ]9 r0 A- b2 L
( M1 c9 s' O, c N, g, M
offset = D2Client::GetAddress(0x99BE2);" f6 a- x/ G9 B9 w
Memory::SetCursor(offset);
) m7 D; \) Z" J/ J4 p; m d) O Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
4 r% O6 N# N: j$ m5 r) ]4 B
5 o( i& C+ Z! ]+ ~. | offset = D2Client::GetAddress(0x99C1C);* v, J& V2 |5 Q
Memory::SetCursor(offset);5 C* \& I* U! Y! `1 I1 ~
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);, V( u N7 u( a9 s" Q
$ w4 x/ u; d, V2 t* L //取消两个popup,偷偷懒不过分- H' H( P1 f- j( C
offset = D2Client::GetAddress(0x9386d);% j: a) L/ J% `& o% L% m* @1 b/ N
Memory::SetCursor(offset);! X, D* g3 E7 v
Memory::ChangeByte(0x8b, 0x33);
5 l5 l" Q. U3 K, D& P Memory::ChangeByte(0xc8, 0xC9);2 b2 q t$ S" q4 m( k
offset = D2Client::GetAddress(0x9390b);
# j( i; j) ]0 a' x1 p Memory::SetCursor(offset);
. Y7 R a% K& P Memory::ChangeByte(0x8b, 0x33);
! V: J* N8 K3 P7 f Memory::ChangeByte(0xc8, 0xC9);
, \5 g/ o# B: U
6 [* T9 b, u7 W //修正提取金币7 _, f- I/ W3 U% r& s* J
offset = D2Client::GetAddress(0x8D3E5);
& ~. X) D' g2 H8 S7 X/ J Memory::SetCursor(offset);3 v6 L8 [$ p* I7 k- I
Memory::ChangeByte(0xA1, 0xE9);: G$ `7 m" V! f8 }
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);( e* \7 s3 j5 X) M' y3 M; Z
* J: M' f4 R4 U- | offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000); U3 w) Y3 J! w
Memory::SetCursor(offset);
+ b+ h3 p! z4 |5 E+ E% X" Z2 y% o Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);# w6 ]- v" S; ]/ K1 T; }2 z
4 f8 M. y+ `' O3 z% K5 T offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);; A* C" E8 Z- n1 _% p
Memory::SetCursor(offset);
* Z( Q# k- i) A1 B, U; F' L7 k Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);. ]0 a9 d; Z3 ]* I0 Y) s' n% m. K
- \. P a# J- q2 L# A9 z4 }- t
//修正关闭按钮
5 c! z0 _% t* H/ I0 C8 e) V' h offset = D2Client::GetAddress(0x8BD90);
' n1 C! j$ j! _ \: h2 f Memory::SetCursor(offset);
$ c+ ~) K- l6 A- @ Memory::ChangeByte(0xA1, 0xE9);
9 v0 r. s; K& f6 y8 S8 K$ B: v Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);* y: |* T8 T7 T& Y$ x0 j
/ W% P/ Q4 g% Y* I% Q offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);& t3 r' w2 a) _: H- d8 \
Memory::SetCursor(offset);
7 q# g& H. G- m$ C& \, Q! A Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
5 U- ?, c5 n. S1 @
7 o! Z6 r/ V, _" G" T0 ^
: W( S/ K6 `8 D/ F; K) O//以下是细节7 o( i, k! N" N% @$ e0 ]% ]
#define getXGoldCoinFixBtn() RX(0x2d0)
1 K) u' J+ T! o& C5 C; I! P4 A#define getLGoldCoinFixBtn() 32
& \( `# m0 D% L$ H' o/ T8 Z' f, ^#define getYGoldCoinFixBtn() RY(-0x59) i2 N+ F5 J) @
#define getHGoldCoinFixBtn() 32
) C8 s, k2 z" H6 i#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())9 J$ y6 j& A3 {9 f. x* O
* x3 t1 b, x/ y# G
#define getXInvCloseFixBtn() RX(0x3db)
* S) [" K+ e% E5 m#define getLInvCloseFixBtn() 32: g2 W9 d- `( D
#define getYInvCloseFixBtn() RY(-0x63)
* D, m a7 K; D2 P# v' ?& h. O#define getHInvCloseFixBtn() 32+ V# y3 s6 Y/ S2 z; x- L
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn()) _# F" F" ?" }! M: r
% |! p: O4 z T& h @BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
/ M6 A* z+ ~7 _3 C& s0 Q% V{
: r: t5 j8 I( P+ Z DWORD mx = *D2Client::ptMouseX;
; ], H a1 |/ h% @ DWORD my = *D2Client::ptMouseY;7 [7 }) _$ c c- c2 J, ?
if(isOnGoldCoinFixBtn(mx, my))
9 G5 {+ m, N- v8 S+ z" L4 o1 c/ M return TRUE;/ R; x9 ?" j4 i b- t$ @" t
return FALSE;& m9 c5 R: l3 k) Y2 H/ B, F
}
2 ~3 j& j- \ y* F. C__declspec(naked) void caller_goldcoin()
. E6 s6 s- l; O* _ y{, g* [8 p, \: v3 p7 o2 j
__asm p B7 u5 ]: X- z: W2 D; p. H
{0 ^& z, J; j/ t8 ^' J; p: G# u" E
push ebx) c# e3 M/ o3 e
mov ecx, esi
2 [0 R1 E9 Z, n' ~& O8 X1 ] mov edx, edi/ |3 L: A, ]- Y1 X
call m_NewStatShow_goldcoin- Q; n9 S) h! y" F
pop ebx, {! Y6 H. T! }1 b
pop esi
& y$ Z6 h1 M0 v$ \6 f retn1 ]2 L! ^4 J5 b+ S& Z# ^
}9 t) R- L* O# p1 u4 X: p' C5 L- P
}
0 `0 U/ Y1 ~! M% c4 ?7 `3 h8 Rvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
, N! q, e+ L5 ~% B/ Z9 B1 Y. ^{
( S8 ?9 a6 T& a4 N if (*nXpos > D2Client::ptScreenSize->x / 2)
0 x- X: X! T5 G1 K {1 q. r2 G+ H% w7 [
*nXpos = getXGoldCoinFixBtn();
2 w$ K' A4 m4 k9 s8 j$ a *nYpos = getYGoldCoinFixBtn(); c/ B, _/ |( \
}
9 L; [7 b2 ]6 ~' R9 c) a}
/ I \, E7 J8 T% E$ ?2 r__declspec(naked) void caller_goldcoinimg()% C2 \0 e" h l) M
{/ S" {9 B. i2 d+ x u+ T+ S4 w
__asm
9 e$ Q5 U2 k0 T {5 s' s5 A5 r$ l( {+ M# F% W* c
PUSHAD
8 e8 `' i8 H1 ?! K, U lea eax, dword ptr ss : [esp + 0x38]& }0 |4 ^* q1 A# k9 h7 n
push eax( C4 S2 S+ c# j2 s9 V
push dword ptr ss : [esp + 0x38]
. @: g/ c& ]) d6 \ push dword ptr ss : [esp + 0x38]
7 @" ~4 g. y& {/ H lea eax, dword ptr ss : [esp + 0x38]- ?0 N( ^2 \; a6 ?8 l4 r# h
push eax$ K$ t; _+ J/ r: n7 j
lea eax, dword ptr ss : [esp + 0x38]* {) O' L7 E$ X2 Y5 }
push eax, c% m: \; @1 d- s/ t- ]* z5 L7 v
push dword ptr ss : [esp + 0x38]6 F8 F4 w- S* D& [% K
call m_NewStatShow_goldcoinimg
O6 y/ H) j P7 R9 ^: [ POPAD9 Z! N& ^- y; j3 f1 T9 U% ~
JMP D2Gfx::D2DrawImage
7 C6 T* J) a% c, X" [3 s/ c; r }
: a6 p% \: H$ n# S8 R0 U}+ ?; j" N; M- D g
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
+ C3 e& D, h" P" p{# H6 k. d W3 G, b- I
if (x > D2Client::ptScreenSize->x / 2)
) a/ Z, O* T% U( s8 s {
$ E; z$ [) T* l* I' z' p *y = getYGoldCoinFixBtn();# ~, r7 Y# y1 R* g! n2 G& o
return getXGoldCoinFixBtn() + 32;0 A. j$ b0 F% ]# n6 ~
}: _! c" F/ S1 o8 L; [9 g& N
return x;
6 N+ @5 E% F! F}5 Y' U: `% R9 b& W" Z
__declspec(naked) void caller_goldcointext()
7 W* Q: W, ]; x$ w& k4 } ?{1 v8 T, P6 x0 A$ F- r
__asm
: b# k8 A# |9 U9 m" m# d {
/ }3 n1 s& k# l4 w2 Q R PUSH ECX) [; y& o: o9 a# }; N5 i
PUSH EDI8 c* _/ a; a8 {/ ?% \; x
PUSH ESI" ~1 @9 u; N+ a ]/ o. I6 `
PUSH EAX7 X0 z' g- A' |( w% v5 E0 T
MOV ECX, EDX
! T* M( m* C0 \; j$ G3 @: } LEA EDX,[ESP+0X4+0X10]) g, X! t1 e( c5 z) j1 @/ r+ h- v
CALL m_NewStatShow_goldcointext
% u4 d7 C; j. D) W MOV EDX,EAX% U; u0 E1 ~4 ~- q7 w4 f8 ^
POP EAX% D8 e3 B# t5 n0 D% b. p3 ^
POP ESI6 {3 c& d9 V, e
POP EDI' a3 K. Q- |* F! [8 ~' I# ^" s
POP ECX9 O* y2 V1 X( Y9 @1 s; _: l R
jmp D2Win::D2PrintString;
R- Z; m& k" `7 s- V% k }
( n5 j& _, N1 r [% Q2 s}1 L" M& |; D+ k4 a; a( @" ]
) S2 E' p+ Q9 ~/ j0 lBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
1 k: c! [* \! H/ |. C( K& c$ |{, j Z+ ? G( c8 T3 K
DWORD mx = *D2Client::ptMouseX;" i7 U3 M& M) x' Z
DWORD my = *D2Client::ptMouseY;1 |! n: J! F6 ^6 w2 } q
if (isOnInvCloseFixBtn(mx, my))8 Z) q7 }& I# k
return TRUE;2 t. M$ L/ _0 y h6 b
return FALSE;
% q& C( P( U4 C a' o+ H. P+ c}
+ |, S. ?2 ^% J* U! S: A__declspec(naked) void caller_close()
# ^* L! _0 H }{7 A, L: R# k/ [
__asm
. ]- @! M3 {' w0 m {
7 f' ~: q$ F4 i+ g/ | PUSH ESI
7 \$ \$ K! k3 O6 w/ M; ^7 K push ebx
" l6 ]( _, V* ?+ D: d call m_NewStatShow_close3 g; e) V" D/ z
pop ebx' a7 P6 C0 S& }1 d& q1 e
pop esi
: s9 i5 y/ S! }& s! y4 f" q5 t; L retn3 k* k( K9 h; d _3 c0 i
}
# K4 L3 z8 t( C0 T$ g* q}: R$ Q, m0 z$ h+ g% V: z
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
* E2 H3 L, E4 A{- D. |0 }, Z& w! z( r7 J( v
*nXpos = getXInvCloseFixBtn();* e8 _( E% Z/ C
*nYpos = getYInvCloseFixBtn();
- v0 Y- U+ Y# u; x$ {}
N' W; @8 B \- Q! T0 [__declspec(naked) void caller_closeimg()' F* L* \+ N" A) _/ U
{
3 z S4 t1 d, A __asm
- f/ Y# J/ _: X {
' u+ w+ m5 J3 ~9 @0 R/ u PUSHAD
7 m- ]$ n6 G8 S lea eax, dword ptr ss : [esp + 0x38]) |, P4 l d; H
push eax
! b* W0 y- n) d; N; H% T) q push dword ptr ss : [esp + 0x38]* ?; s- m; l X% e3 G! [+ f
push dword ptr ss : [esp + 0x38]. B; @$ Q3 b& `3 L X( T
lea eax, dword ptr ss : [esp + 0x38]
- M' V# X5 Q+ O1 x" B: ]- d+ s push eax0 i/ v) s1 i% ~
lea eax, dword ptr ss : [esp + 0x38]# G" N* ?5 \7 H5 [& t
push eax
4 A, u! Q% o5 K3 q9 n. d! g# o push dword ptr ss : [esp + 0x38]* Y1 o* e1 H* Q: i. X! D: d9 h% X
call m_NewStatShow_closeimg
4 ]! S! n: U/ h( V POPAD+ t" R a" [6 A: y( u( |
JMP D2Gfx::D2DrawImage
6 N+ b7 X6 P4 E/ R }
" |1 L) @$ Z9 f0 o+ c _/ l}; K6 D/ y6 a7 K- d. T6 E5 ?2 ?
! z0 \+ r# C2 a8 l# j$ `
% Y' ]5 T/ P. y1 E5 G& X/ F |
|