|
|
转载
9 X- Q& k; |# w& U5 {/ m( f) @BY SJ9 ], ~1 i$ Y p
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)0 ^% [% K- W Y2 L7 _5 x9 i
# p4 O; }+ l4 S3 m/ Q
D2Gfx::D2DrawImage-10041
1 z( c/ F& h' r- E$ _1、修复技能的背景(不需要可以不要)
8 v. s3 ^4 U& woffset = D2Client::GetAddress(0x77AA8);
" b9 W+ F- Y) c fMemory::SetCursor(offset);
: X) `4 e" M$ p, nMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);2 }: B; }0 ]9 p+ I8 y* r) Q( J. [
* x# y F) P ovoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]). {% D- @4 b* H7 }" A8 a
{
( A7 Q+ N& d7 q5 \( ^ //Init data for print image: Y; F/ ]7 W3 e( @8 q
sDrawImageInfo data;. `3 Y2 ?; b7 X, `( m
ZeroMemory(&data, sizeof(data));) }" V7 @6 F4 J8 |, w- e: `
8 w T4 ]. ]3 w. y1 u0 C' ]0 v //print background
: V8 b8 i( n* o: z setImage(&data, spellBackgroundImages);: S; w3 a- x0 \ @7 q- l0 P3 `6 u+ z
setFrame(&data, 0);* X) k1 w- r5 b8 K+ l9 n' U) N
int fixx = 511;
) v% C1 e2 r% N0 V: \) ?3 C int fixy = 9;$ W4 c) p2 q8 `: ?" x0 K
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);* y# x+ [0 l, i# W r0 c: T
setFrame(&data, 1);. ]3 y( ^4 w) E
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256; p, M1 l. s4 V; Q* X. x% r
setFrame(&data, 2);! S3 h2 A1 @% h8 f" d
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432; d4 v I6 `; ]0 a0 E* a+ ~! W3 d
setFrame(&data, 3);* V& j# ~" j% M0 k) I. b
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);1 E4 ~1 h6 A( H3 ^; [) o
} y, q x+ ~ g
__declspec(naked) void caller_SpellBackGroundFix()9 Q1 H( }: V6 b5 s
{/ d. u# F, b% P8 b2 i6 I
__asm% c+ S; H- G3 c- q; Q
{) b, x/ S1 Q P& _2 \; ?& G
PUSHAD3 I5 W- ^+ q2 n1 Z% O
lea eax, dword ptr ss : [esp + 0x38]: u+ L4 f5 R1 _6 p. O: Y* T
push eax; {3 q3 U2 ?8 g* |* o0 \
push dword ptr ss : [esp + 0x38]
; B g2 V5 I! g& z E0 F* a push dword ptr ss : [esp + 0x38]4 D& ?' ^. S! d
lea eax, dword ptr ss : [esp + 0x38]- z! v2 \5 H; X) Q$ s% }
push eax
( C) d9 w# J7 I$ M# m, q% H0 Q' l lea eax, dword ptr ss : [esp + 0x38]' H6 p q7 F" h5 H; p
push eax/ V$ t. R5 C% C0 j8 \2 K
push dword ptr ss : [esp + 0x38]$ L' Y9 b# I0 i* k6 i
call m_NewStatShow_SpellBackGroundFix
( `( @6 w" v# C. l, q( g POPAD
$ r+ R" t) w4 U" b, z JMP D2Gfx::D2DrawImage
% M0 B' q. }6 N1 C" E$ p4 n }
1 U6 ]3 _, t- t& v* }- b! K3 A}& M ?! R% M6 A; n( f4 z
/ x) x* o1 J9 x8 s0 {1 ~
2、我们如法炮制小站的背景" U* G% |! e( c4 W8 A: h+ H
# O. ?) \2 `# x9 uoffset = D2Client::GetAddress(0xAB010);
, D, x0 |5 E2 QMemory::SetCursor(offset);
* t6 r/ m/ {6 NMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);0 A) a7 X. Y/ v/ y8 g2 U
! F9 m3 E- J2 q: \. h
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])) b' s; F8 _3 E; i
{$ Z5 ^6 {' @! P5 X, G
//Init data for print image
4 g0 B6 \+ v( h7 u/ h$ G/ w sDrawImageInfo data;8 w& v8 n* h( b
ZeroMemory(&data, sizeof(data));
8 c9 d0 i5 n3 S0 ~0 p
: l5 W& ~! \$ o' X" s. h //print background
& B* T. \- q/ H$ m4 w9 D* U$ l setImage(&data, waypointBackgroundImages);; s7 p9 R' f4 G5 \
setFrame(&data, 0);' f8 S: W, N9 ]) E9 x3 L
int fixx = 0;
@# [3 T" N/ B6 M* ]4 L8 I int fixy = 9;
' n2 o; |! g( p; k, J D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);6 e1 I" n3 X4 u! ^: O. j
setFrame(&data, 1);) r0 s1 d7 j% X7 @: T1 {; r
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256- j2 a# W6 J5 O) ^. w! p. _' E( B$ {
setFrame(&data, 2);
" s( D' Q& |% h9 D) t; n2 `- P- W D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432+ a4 o# p3 p! ~1 m
setFrame(&data, 3);
. _. v E/ M! S2 E2 Q9 g# H D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);1 X+ x3 k m* s+ s+ ~7 |! @
# |& H1 l6 z9 f! K+ I5 n
}5 \" c- w9 G9 j+ [( B1 f5 O
__declspec(naked) void caller_WayPointBackGroundFix()
) z0 k; W: A8 @1 ]6 p8 I{" s, o3 @- K6 `
__asm
9 |! Y0 N! ^' W' {+ [* [0 T {9 U) N0 X2 y+ Q* J% X
PUSHAD
* N- k3 B2 c/ }6 w. D5 h! a lea eax, dword ptr ss : [esp + 0x38]2 ]3 Z0 R% m0 k% W
push eax
B. f( G% l3 }7 r push dword ptr ss : [esp + 0x38]6 ^. N) I9 p# v$ ^2 X3 E
push dword ptr ss : [esp + 0x38]
9 s' L9 `; {* ~% Q( t! z lea eax, dword ptr ss : [esp + 0x38]
: V9 m( ^7 I: G8 N( g2 U push eax7 s# Z x5 \ C- [. d
lea eax, dword ptr ss : [esp + 0x38]
- z; E+ L/ }$ o1 V3 T# @& U push eax
X7 R0 g$ Y, z4 K, ? R: _ push dword ptr ss : [esp + 0x38]) A1 d2 r# f0 }2 |# k8 R9 E
call m_NewStatShow_WayPointBackGroundFix. q: S( D: M9 L
POPAD
0 m* B' h# u: _$ m, D4 l; v JMP D2Gfx::D2DrawImage
4 p) a U) y+ I$ H }
5 n0 E" d% a/ z0 K2 S5 i. P5 j0 V}5 N9 V6 s) S' V, g4 A
: C; D* D- L2 x: }2 M) l7 `3、以下可以搞16*16超级箱子-腾出我们需要的边缘
' F" c1 S, J: H8 x5 V5 ]腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
0 l( q! T" p/ F {& `) w" U! p8 P P2 x: F% U1 e0 S
class D2MultiRes : public Library<D2MultiRes>
1 V) W. I; b; s, x3 \ {
6 S7 u; m7 s0 N; v- B/ \9 n public:
4 a& u+ ?) I) { static void Init()
& C$ x9 Q S, ? [4 M {
* K) L! v5 H1 h( |) H Name = "D2MultiRes.dll";: C& P: s3 r! l2 V
Offset = LoadDiabloLibrary();
. z) b1 T9 ]% I+ x }
2 J2 W4 M: m6 `% M% @% o. U };
. ^ ?& v+ s4 E, d0 R- ^& I D2MultiRes::Init();
3 ?+ v, f2 i' p0 P G) U. T5 i D2MultiRes::HookLibrary();
V( {; Y; A% g$ Q5 j' O8 Z8 @4 `6 H. O+ ^1 d
" u) r5 j Q- M* t& y MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
6 x# y. z* `0 Z; f Memory::SetCursor(MiscFunctionsOffset);
9 G) ~( ?" Z/ W8 c Memory::ChangeDword(0x1b0, 0x200);
! B) H% b! @' ~9 m; M4 Q8 p5 G% V6 S% {$ @) k9 M. m
2 h' s3 k. {! I' s5 B MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);1 t3 [; ]% T9 T4 `
Memory::SetCursor(MiscFunctionsOffset);
0 A- t5 g3 H$ n" x! @, L Memory::ChangeDword(0x140, 0x200);9 N" K0 w. d# ]2 B
- j3 N4 q$ [2 d
$ g2 D7 ~" I% Q% c MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
9 w6 ~& @9 V! _- ]' B; r" U Memory::SetCursor(MiscFunctionsOffset);
q2 K7 c1 j6 p$ Y6 y; _- l6 @ Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块$ X% C/ x, k6 k& h& {' X
: V6 O d' q1 v- n
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
6 [# d7 n9 K3 C+ r" H' S Memory::SetCursor(MiscFunctionsOffset);, l8 }5 M6 Y/ g4 J
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
1 a7 i i# g' W& u9 i
5 }5 Q0 Z5 d; z# b L MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);1 q+ j+ E7 W V, H
Memory::SetCursor(MiscFunctionsOffset);. r1 n0 {9 _& B r1 [5 r
Memory::ChangeDword(-0x280, -0x400);//这个不要动" G) N, M: l4 T6 i K% R& R# j e
}
" m2 N1 v. \5 d5 X8 [' |( q! Q/ \' p X
' B8 ] d" I0 U8 N- D, }; o4、快完成了,是不是发现金币啥的位置不对??
6 v8 \/ |0 g% R$ ?: I, L4 m1 ~2 m+ ^& L, a) F% x+ z" o& |
//这里修正我们的装备栏1 o) V$ R0 W3 W! i
offset = D2Client::GetAddress(0x99B6C);
1 a; [; l! _* \ Memory::SetCursor(offset);4 e$ V6 ~7 f) C5 U# g
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);3 Z! F% ]) Z2 B8 u
5 E V: t& L2 m' _1 g% N
offset = D2Client::GetAddress(0x99BA7);
. N- W2 P5 r$ K" l Memory::SetCursor(offset);
2 C, N+ Z/ x2 L Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);" m1 b2 f6 z" Q* D7 |" K, X: w) b
" X. s& P7 C' w( K$ b) ?( w
offset = D2Client::GetAddress(0x99BE2);
& B2 j# F7 W6 c+ J5 Q4 m3 i Memory::SetCursor(offset);% `9 Y# n+ B! u" _$ Q2 N
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);6 X! ]1 r4 R! b& }1 X9 Q, \
; M8 c& \4 s5 L. a* n( K offset = D2Client::GetAddress(0x99C1C);
% R; s- k r. ]9 K- h+ B3 v Memory::SetCursor(offset);* g) S2 v$ m* v+ _# ~
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);7 V3 }6 R! j8 I1 P u0 |
, t7 c5 u, ?9 c7 z+ m9 @; E
//取消两个popup,偷偷懒不过分
( x3 O3 M& ]/ ^5 r0 O' q' H7 ? offset = D2Client::GetAddress(0x9386d);" C2 w% ~' ?2 F& ]% ~
Memory::SetCursor(offset);3 Q* K7 t9 }) W n5 ?( A5 g; y, t: D
Memory::ChangeByte(0x8b, 0x33);
% r- x s& j1 D# T2 r( Q+ \ Memory::ChangeByte(0xc8, 0xC9);
. T* g" ] P' G/ n2 h offset = D2Client::GetAddress(0x9390b);
0 l6 h5 e8 Z6 J2 V$ c5 f, i: { Memory::SetCursor(offset);( b$ P' Z; h2 f& E+ U7 l; I, l$ O
Memory::ChangeByte(0x8b, 0x33);
1 j6 r# R* Z1 L, D Memory::ChangeByte(0xc8, 0xC9);
; q. I7 v3 w7 W8 I( J
" `# {; j: L1 ?$ a% F3 U3 q //修正提取金币
5 D T% m, c c3 o offset = D2Client::GetAddress(0x8D3E5);9 P0 X+ @, R/ k F {
Memory::SetCursor(offset);
* @2 J7 A7 b# k5 q+ D- _ Memory::ChangeByte(0xA1, 0xE9);. q) _( ~; r0 F8 [( e" m a, g
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
0 L: G0 s2 E$ o, P- ]& t
~" ^$ K! d) j0 _ offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);2 p: c4 e# C9 H, b! b& z% z
Memory::SetCursor(offset);- A. k, ], T0 _' p0 J& A0 ^. ?1 M+ R) @# p
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
, U4 w1 a' ]5 S* W1 |& O% {
, t1 r8 G# A( }' @! Z offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000); y( T9 L! S6 g5 [6 ^5 o
Memory::SetCursor(offset);/ s$ H, z6 D J' Z; T0 J
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
7 A6 U' c1 R0 h' i) H! ^/ |$ j# ^( P1 P( C3 r
//修正关闭按钮
6 m/ j; Z1 J. x; \6 s offset = D2Client::GetAddress(0x8BD90);. |6 x# i" Z! o9 C c, D8 w
Memory::SetCursor(offset);9 D0 S" e0 k% ?# w5 T2 V
Memory::ChangeByte(0xA1, 0xE9);
2 T% K5 e9 ~- m) w+ X, d$ p Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
3 o( J2 C5 X, X2 M
+ p ?) u) }; [8 R1 M' M offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);9 `* Z: S# _/ g0 `
Memory::SetCursor(offset);! t* g. v6 }* H
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);. ]6 l4 v. b( B4 A% g: k
: M7 U( m$ u' {1 V
( O. H1 v2 i+ ?//以下是细节% W2 E% |8 j1 o9 v8 M( S
#define getXGoldCoinFixBtn() RX(0x2d0)2 B `- y, k f' G: i0 T7 N
#define getLGoldCoinFixBtn() 32
: K3 z, I8 _# D6 h& R/ \#define getYGoldCoinFixBtn() RY(-0x59)$ e& _9 d# n k# u
#define getHGoldCoinFixBtn() 32/ I8 K% |8 c/ M( T
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())" m, F4 x# y+ O- i! A
& y3 e$ O2 R5 E6 p#define getXInvCloseFixBtn() RX(0x3db)+ J) G1 f+ p. n. W; ]
#define getLInvCloseFixBtn() 32
0 H# ~* t L# f: |2 C#define getYInvCloseFixBtn() RY(-0x63): `6 k! l1 R( o& x0 W9 X, Y
#define getHInvCloseFixBtn() 324 ~5 }: U: h: M7 ~5 Y7 F0 X/ S
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
4 b! v; j2 T7 y5 O, Y( ~' F6 t( E& O0 J& }9 t' U( W% z* R t0 y
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
# M! ~: G ^- F# q8 m7 ] ]( \# `{1 p0 y7 \1 b6 `# [% ~- `
DWORD mx = *D2Client::ptMouseX;
2 x; a9 q, B0 I+ b c$ l DWORD my = *D2Client::ptMouseY;- ^" _9 F' B; N4 ]! l! G3 |/ ^$ i! X
if(isOnGoldCoinFixBtn(mx, my))
% n2 i/ R# g, i5 B P |/ v8 o; t return TRUE;
2 ^$ l/ \. z/ o4 o: W return FALSE;
1 X) F: Z: e5 J% C& m3 ^}
: `$ O9 x) J* M+ B__declspec(naked) void caller_goldcoin()6 c+ H2 g% v4 B1 j8 P8 z# m2 [" G
{0 z5 u: y% F8 `3 K2 d
__asm
$ [0 u- B3 E8 a* o {; \+ x9 U) E( F( V
push ebx
6 a% s* ~: G, c& @8 e& X& | mov ecx, esi/ Y$ V% V5 Q$ n
mov edx, edi
t# S* C; I2 C" V call m_NewStatShow_goldcoin/ e; {0 A' C0 v3 `
pop ebx
1 I }* L- ^: F pop esi
" ]: {2 t4 r' f, b! `5 S retn
* s% ?5 K8 b* A4 ^& l }
! Q9 A1 O4 `5 \: g}
2 l# Q+ w9 Z- s2 ~& Z7 n; Hvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])" w( P, K. c! o! T% T; D, |
{
, V$ n& D! |& [8 K( v; B if (*nXpos > D2Client::ptScreenSize->x / 2)
& q/ l K- L8 E; V& x/ A {
3 c& P! t) c7 n5 a7 f& I# t *nXpos = getXGoldCoinFixBtn();
6 Q( _9 K; B) ]- }1 y( g7 m *nYpos = getYGoldCoinFixBtn();
$ d c2 b3 G" p8 M7 @! J }
3 N1 \$ i" t1 o: {}
2 Y4 Z% @' Q0 V- B/ M4 S__declspec(naked) void caller_goldcoinimg()+ C' S/ G. V% \5 b) E
{
G* W3 T/ a& B$ y! { __asm$ F* y5 L+ k2 c: k
{+ g4 S* w" H0 u% X @
PUSHAD
2 b" k9 O- h% |0 F, z lea eax, dword ptr ss : [esp + 0x38]3 r! h8 m2 D- b- E! h9 g/ K, N
push eax3 R6 S& |" t1 v* |0 D
push dword ptr ss : [esp + 0x38]
1 U/ t6 x; c! v/ [; ~8 z- s. a push dword ptr ss : [esp + 0x38]- u! e( @$ T* f2 ?
lea eax, dword ptr ss : [esp + 0x38]1 m0 e( P% f% _8 `
push eax- z) |) C: \' y
lea eax, dword ptr ss : [esp + 0x38]
% X$ l. F5 J7 Z9 X. ~ push eax: A E( c G |! T5 `- {& @# O. f
push dword ptr ss : [esp + 0x38]: v+ l+ k( a7 v$ w" x& A# j6 e
call m_NewStatShow_goldcoinimg2 t9 X" s' ]( f \1 W8 D
POPAD( _4 w+ I: A; A& E+ l
JMP D2Gfx::D2DrawImage8 W9 v) o5 e- k/ \) h0 x" A ]9 n2 H
}! d* S" O+ e3 m) @/ D% t
}
# H( S' ^+ v. v2 V: W' k: `DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
* r5 Z& s: \- N" ?, F{
9 e4 N8 Z4 b7 W$ P0 g if (x > D2Client::ptScreenSize->x / 2)
8 ]" R) w1 ]0 T: c" T% l' m {( G6 i+ s0 S! q5 X+ A7 J( o
*y = getYGoldCoinFixBtn();
- T) w2 W: B1 X! m* T# j return getXGoldCoinFixBtn() + 32;
$ D0 p0 p7 p G) i" C# @ }2 V* D5 p: j0 Y1 ~/ W+ S- k6 X i
return x;8 h* U' f" q8 D9 R
}4 p3 w/ V8 I; i4 x" e; D+ N8 e3 L0 N( g
__declspec(naked) void caller_goldcointext()8 B4 p& x% s; |( U0 \, b
{
( A. g. m( ]) g __asm
& R4 o, a7 ^1 u {
& m! @7 N H4 ] PUSH ECX Z* T" J! A' f+ @/ @
PUSH EDI
1 a# Z% A6 G4 ?$ c7 V8 e) @ PUSH ESI7 C' _7 }2 L1 g0 t; U
PUSH EAX( W, \; U6 r& A6 q
MOV ECX, EDX
% R8 R% |) v I% G0 S LEA EDX,[ESP+0X4+0X10]
* B: [$ |" R: R CALL m_NewStatShow_goldcointext
6 h3 ~1 l. }' A, M) i2 |6 A MOV EDX,EAX
( o% X- }$ Q8 |% s: u POP EAX
& n0 O/ m8 Y$ R6 f POP ESI
. s9 M- k2 T7 T" }0 g POP EDI4 J3 Y; a. [* \" a6 a, S
POP ECX% R7 W$ V! F; w D2 k5 F8 X: S+ Z
jmp D2Win::D2PrintString;& O3 Q) K+ p8 {: s/ q, j0 A
}5 P3 F: N i: M5 r4 Z5 D) N( n
}% V4 U X) n7 B
" f8 d" p2 j# U4 a, V+ |2 WBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
* w2 H5 y5 t) ?+ {{
& n2 D5 |3 F: j( M; D DWORD mx = *D2Client::ptMouseX;- ~4 W% O" N# F) k3 L
DWORD my = *D2Client::ptMouseY;8 ~3 q! R8 o9 Z' @, |0 m
if (isOnInvCloseFixBtn(mx, my))0 s _4 V* u% r1 M
return TRUE;. K* |, V* x; K5 k6 ]" X7 i
return FALSE;
* I1 W8 U+ l6 K0 o; |5 G}9 N9 J. D7 S3 d8 r/ _# {* s0 O
__declspec(naked) void caller_close()
+ ? a Y1 R( E5 \/ I) M0 {{1 i6 s* t: }+ c, B* V
__asm
: e- L. x8 O, o0 C/ S {
& h, u& l6 A& \6 Q7 u7 }# c5 W PUSH ESI
% O* L: w3 _) J2 [7 W0 ?* e push ebx
9 p6 q3 s* U5 ~$ r& }% _- Z! i call m_NewStatShow_close1 ~) V1 V! M$ J' y# ?& N$ T# v
pop ebx
& }# A" w8 Y( P pop esi0 i3 \/ ^4 k& R1 k2 v5 F
retn0 s6 i& Z! p4 c$ r* m+ n( S
}
+ K: c% J0 u, F9 d& r2 u}3 ^8 s. Z4 D8 ~6 g
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])" p5 Q# `; Y! o- z3 _# e2 e8 F2 Y
{: u0 n7 `0 d. }7 J: Q
*nXpos = getXInvCloseFixBtn();; p- v2 D% Y( ~/ s ~. A) }
*nYpos = getYInvCloseFixBtn();
7 E( k" c ?5 d* D}
' m: ^9 c2 z9 ~( Z+ y__declspec(naked) void caller_closeimg()
4 d" ]+ V1 x/ [8 ~{
! N" T7 K/ Q6 N+ s; u __asm! ?: X4 e: b( F4 p$ Z8 i" r& C
{
1 {5 l7 g* [# G& J3 j W PUSHAD1 e5 W$ q9 |) } Z6 O
lea eax, dword ptr ss : [esp + 0x38]& x; t% \* U$ n4 M& v3 f! }
push eax3 ]1 P& l5 s' w9 `
push dword ptr ss : [esp + 0x38]
( f+ t, D0 ]/ p1 U, { push dword ptr ss : [esp + 0x38]
# m+ q, m$ y: l% J& Y lea eax, dword ptr ss : [esp + 0x38]
# S" D* }$ v- k; K, i: ~ push eax$ i. g* K2 z/ @* Y( G- R _, j
lea eax, dword ptr ss : [esp + 0x38]+ G/ B& f' s+ i1 o& D' M
push eax- s8 F& B0 i6 E0 @; m
push dword ptr ss : [esp + 0x38]9 \4 E2 K; M3 G
call m_NewStatShow_closeimg6 ^7 G- L* x& V6 J3 K% g
POPAD+ U2 t) k) o" \+ f1 |
JMP D2Gfx::D2DrawImage# c( E- k* z) ]( U, A2 p- w( R
}) P- _/ i. D$ A; H, z" [( ]
} I1 Y5 h; _: K0 J1 w
8 U* w- I* r+ _& _4 P# n% E* A. Z/ N7 v9 Q/ _
|
|