|
|
转载( `! k; U+ |1 R: O
BY SJ
2 w; z t! B6 {( J首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的) O; T y" G1 F. r
6 x! u! `. t* X3 W( `* q& `8 m
D2Gfx::D2DrawImage-10041
; j, f5 P0 ?4 j0 g& _; B1、修复技能的背景(不需要可以不要). W3 z8 K( W; g' u: l
offset = D2Client::GetAddress(0x77AA8);8 k' G4 b# G8 G( U
Memory::SetCursor(offset);
- E$ G) S% S) ]7 {# z9 UMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);) O* \) ]1 C8 t
- n+ Y# `+ R+ t; p2 T5 q3 F r
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])+ z. M7 |" P& E8 i- ~2 G6 ^ F; W
{2 T- t. C; i1 B. m$ O# E) j
//Init data for print image
5 y$ v# m9 z7 r& {) N$ T6 v" f sDrawImageInfo data;
3 N5 w7 U6 D9 r- _) ~7 P0 i ZeroMemory(&data, sizeof(data));
, m7 h6 [, }0 Z" F) g6 U9 I4 a6 T! l$ ~9 e1 F- S; O" X+ v
//print background, i# p# k7 L0 I' n# Y
setImage(&data, spellBackgroundImages);
$ C/ J5 J r! P% c3 c) X setFrame(&data, 0);. @/ U" I' E* C/ L3 e* P
int fixx = 511;
7 _$ @3 T) h2 b, Q" l8 D# G int fixy = 9;& y: I/ D& ]8 Z
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
6 X2 W% ?, g( k setFrame(&data, 1);
! G! ~& m8 I* r4 p D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256; r: _2 @+ i2 ?% q8 F- D, T
setFrame(&data, 2);5 c. W, Y( Z! h! B# d
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4324 T1 Z9 u: s _4 x! C8 y
setFrame(&data, 3);2 y& {6 h- G5 Y, Q
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0); B; e1 { l, k0 h/ a. K0 u& J
}- C6 W& l( q6 S0 g3 j
__declspec(naked) void caller_SpellBackGroundFix(); U2 _& H" w3 g: e( E2 V
{
+ b6 o5 n U$ m6 S; c3 v$ I% H) N* k __asm- B4 b( t7 s( m }: Z
{. z. ?$ w; G2 H, o- V& D
PUSHAD5 T2 |+ i# ]; F. l
lea eax, dword ptr ss : [esp + 0x38]
) P) J' {5 I3 ^ push eax
3 n0 P, k) ?3 d4 m" q; c push dword ptr ss : [esp + 0x38]
/ J6 \, N# N) [7 v9 ~ push dword ptr ss : [esp + 0x38]( e5 m) G4 [( i/ W' r: z
lea eax, dword ptr ss : [esp + 0x38]& ]/ y; A; i, W# |- _( m a# n
push eax
. f% r- O5 X4 \6 _; @ lea eax, dword ptr ss : [esp + 0x38]
# {1 x" E" C, d% T7 j push eax; X: u% M# ?% @: Q: D2 b. N+ K
push dword ptr ss : [esp + 0x38]! S& f6 v! G1 G M. m; ] d
call m_NewStatShow_SpellBackGroundFix
& y# u: h+ F: g; t% c2 s5 L POPAD
# F7 {( G8 f8 h3 ~" F JMP D2Gfx::D2DrawImage" F) i8 [8 M4 J3 c/ {
}
( K) t* S6 k# e( W6 U: P9 v6 w}, ^4 ~9 K2 e8 E5 U& _6 i
5 d; o$ Q0 c. a5 g# t6 T8 C6 ?# y
2、我们如法炮制小站的背景: t* z0 M! r) i) c! k: j' ~( [
) B1 |) l- F. C# Coffset = D2Client::GetAddress(0xAB010);2 J4 i" {# D3 @, k5 J# v8 O
Memory::SetCursor(offset);
1 P- {( L6 t7 E8 B$ {) }Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);% |% K9 N* _, v: W/ d( o( j* _
0 k8 B6 b* ]- Y8 y* b
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
7 Q" l5 P$ h$ A" Q8 B{( a# L, u5 I C e
//Init data for print image. F( }! c: J& w& A8 X5 G
sDrawImageInfo data;8 w# c, G! W }) X: [
ZeroMemory(&data, sizeof(data));
! ] G7 r: z+ c9 o
6 _8 l( X+ s" @. F& c/ q3 j( ^5 z //print background: k7 }7 X9 o( i) Z8 Q
setImage(&data, waypointBackgroundImages);0 G# }) t" {/ X. P8 h
setFrame(&data, 0);' t4 p) ~3 v5 Y9 q, W
int fixx = 0;
0 a) C- y# v% U int fixy = 9;, h! {4 q+ x7 A- C3 i8 Q
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);- p/ k: Z E" @# B" n
setFrame(&data, 1);
3 k( U: N0 ^1 @3 c D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256/ R3 A" W# S' z
setFrame(&data, 2);' ?' S, I. r6 ^. N
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
1 o! k6 c! Z* x+ }; c setFrame(&data, 3);. `, {4 K4 `8 y+ ^) c8 ^
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);9 j$ I8 o0 a3 q& f, r. c
& f& J1 H( Z- O+ ?( M5 ^9 E$ x
}) V$ g0 m: K5 |8 w% q1 P2 k5 y
__declspec(naked) void caller_WayPointBackGroundFix()
$ i. J' C& I" t" x. v2 I; f5 j1 K{# l2 Y, j; V3 I7 Y! u; c9 Q
__asm" ?/ }5 J! c/ i( Y# [" I
{
" M: B; Z9 d, o2 a. L) C ~2 p1 E PUSHAD2 X1 d" k' L6 e8 U
lea eax, dword ptr ss : [esp + 0x38]
' a% M0 q! l, c3 J push eax1 l3 ], C: M$ q, N. e" T; ^
push dword ptr ss : [esp + 0x38] N% J% ?+ [3 O8 t2 J4 i# k0 k
push dword ptr ss : [esp + 0x38]
" E7 Q4 q8 }/ n( l3 j3 o lea eax, dword ptr ss : [esp + 0x38]
. e8 s7 ^8 v9 k- t" l% l: q# Q push eax. W) y5 h, M' b5 z3 a0 x
lea eax, dword ptr ss : [esp + 0x38]: t9 b7 P* s$ ~& W* M# p4 \
push eax# b. U- y q3 B' m1 S
push dword ptr ss : [esp + 0x38]; c# ~0 |3 C5 R9 e) O- N3 |1 b7 e$ ?
call m_NewStatShow_WayPointBackGroundFix+ ^* n B9 J. [! ]+ E5 b4 g- s
POPAD
, K* b2 H. b. U6 `* c; Q# P7 ] JMP D2Gfx::D2DrawImage
# R& Q; ?7 p% I8 d0 { }# N: U- Y; y6 o- {+ N( G3 p
}
: u% `6 ` V& b q) c7 K' p4 H& x( i" n- v, ]1 a+ |! a
3、以下可以搞16*16超级箱子-腾出我们需要的边缘# d# s& a8 D; ^2 \( R1 |
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)* @1 B* ?+ X% m- d/ [5 V
{" v* ^2 z O- z1 y1 z2 ~5 M
class D2MultiRes : public Library<D2MultiRes>
# B* ?8 j( F5 c b; Z {8 t& G3 E p: B( H6 x o5 A
public:
1 A0 ^4 N) u R. N* u static void Init()9 w& `8 j! d Z9 T
{
( Y6 q, g: v8 i; {( d Name = "D2MultiRes.dll";
2 n( X" ~! j) H+ O& ]$ T3 P Offset = LoadDiabloLibrary();
* I. l5 ^* ^& F0 w1 N$ t }
' g+ b4 U O6 p! \/ V };- m! E; s: x5 Q6 G' Y* a
D2MultiRes::Init();3 x* F2 z) B s: Z) j. r& w
D2MultiRes::HookLibrary();' @+ K( A6 @7 o7 Z, ]5 I7 W9 l
4 l( O! z3 ?5 [- D- A5 h
; K% `% i9 F& `( P MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
; M# l! r* Y b, |+ \ Memory::SetCursor(MiscFunctionsOffset);
& l$ m8 |7 ]) Q. q+ @ Memory::ChangeDword(0x1b0, 0x200);( N* |3 V' O7 L
& g* j) L, j' Y" k: M
$ ^9 L0 S! N+ _) q/ l/ x MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
; D4 c9 C! X" U8 J9 h* R- ] Memory::SetCursor(MiscFunctionsOffset);
* I7 g- e0 z9 T! Z/ V+ L Memory::ChangeDword(0x140, 0x200);
2 z# p: L. N' J5 \, i* E/ D, e& ^1 N# ]# b+ X0 o
# P& P2 T5 u( w6 b) g4 _$ C$ ^0 O MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);) U9 _+ ^+ z& j5 |9 @7 \/ U& W
Memory::SetCursor(MiscFunctionsOffset);' L1 U% L5 g/ t1 }8 k
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
. Z* T7 E) M3 T C3 G
" {4 s3 v& m5 e MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
1 R* a$ @/ R3 `' T# H Memory::SetCursor(MiscFunctionsOffset);
/ y( }$ q5 p! t& A Memory::ChangeDword(0x200,0x299);//下边缘 299最大7 }/ C" Z6 f6 n
9 N/ M* i, A0 O- g
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
; m, k: j! C s; @$ a, M Memory::SetCursor(MiscFunctionsOffset);' V' c: n- J) y5 g0 i. [; W$ p9 ^
Memory::ChangeDword(-0x280, -0x400);//这个不要动* n$ ` I" U2 l# J& J: ^, c
}. W' H% S- G0 T) F6 [: U
+ h* f+ Q# o4 u+ h. W* U5 j
4、快完成了,是不是发现金币啥的位置不对??( s9 ?* L; _) y. g" n
& j" w9 _" ?- \" Q//这里修正我们的装备栏6 o& h. `' W G, H& O, G
offset = D2Client::GetAddress(0x99B6C);- y7 F) q4 b& w% A+ E$ \
Memory::SetCursor(offset);4 a; n: P( k) Y2 M7 B4 i& j
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
% n6 ^0 `5 d( v& b3 |$ \4 ~6 J, L
0 Y8 q' D( G; k4 O% P6 C offset = D2Client::GetAddress(0x99BA7);( B+ Q- M! V5 K+ c2 ]9 E% s5 m i$ O
Memory::SetCursor(offset);" W) w$ g) {) Z; ]4 |
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
5 G0 @. |" `0 u3 G3 k; F" A6 h, P' R' `5 u. A/ D" K
offset = D2Client::GetAddress(0x99BE2);2 \5 Q8 T' ^! L9 v& Z7 V
Memory::SetCursor(offset);
2 P7 C& A8 E% \: V Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
) Q( Y- Y4 v7 J9 r9 P9 R9 t8 R, Q, j! ]' h
offset = D2Client::GetAddress(0x99C1C);
4 e4 u; L" q; }$ T: G Memory::SetCursor(offset);
) O4 g6 }8 m( J, h( J Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
8 {" F. s% R8 s1 n' s9 v# x7 _7 m* x6 {0 o7 h. ], }) ]
//取消两个popup,偷偷懒不过分
E5 B! z, a+ p/ K offset = D2Client::GetAddress(0x9386d);
, Z- ~! A3 ]7 u* l/ \1 ^; k) Q Memory::SetCursor(offset);6 n/ P. F! N* D3 n, e5 w
Memory::ChangeByte(0x8b, 0x33);5 J: s5 F$ { m
Memory::ChangeByte(0xc8, 0xC9);1 z! D! i; e! L$ q
offset = D2Client::GetAddress(0x9390b);& [% a1 G! u H
Memory::SetCursor(offset);1 B" Z8 U, [; o
Memory::ChangeByte(0x8b, 0x33);
8 u: G* l2 M4 Z( @7 a% x0 d) L6 L; N Memory::ChangeByte(0xc8, 0xC9);
' n* u4 x; C* G/ H# g; W8 l4 m! G" j3 t! j$ o$ ^# x) A$ f
//修正提取金币2 c* g2 N& l+ f4 {
offset = D2Client::GetAddress(0x8D3E5);& k3 T+ t; F" ]- y- B
Memory::SetCursor(offset);
6 V* s l0 ^2 @2 D4 I Memory::ChangeByte(0xA1, 0xE9);* k" D- [0 ^) q9 u
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);0 z5 h$ a5 }% S
6 `- Y9 `; ~: H( x& m$ l- s
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);2 m1 i- H8 c+ w; n, c% H) L: t
Memory::SetCursor(offset);0 c; ^6 O. ?# w: {) _
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
2 c* l3 c( t2 p) l4 Z l) X- ]! V' C# m! C4 }. a, t% s1 }
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);/ O- V) h2 j. n+ J' }
Memory::SetCursor(offset);
( k7 C+ O9 n1 _- ?6 u$ b& C. p! X Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);. _) w0 O, Y' d# Z- k
, K( J5 u1 c! a1 ~7 b9 J
//修正关闭按钮1 M' _. r$ Z8 A
offset = D2Client::GetAddress(0x8BD90);
3 k# b* E `. f W0 O. K Memory::SetCursor(offset);3 Y$ i5 o( I% d5 G# O9 C/ ?# _
Memory::ChangeByte(0xA1, 0xE9);, ]4 I4 [! J, \" k- S
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);) z% C+ P: q& M
/ h+ u. U) d; s
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);4 k5 H8 [0 m z
Memory::SetCursor(offset);1 k4 ?6 {1 s$ z0 T
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);/ D0 t0 c" ^. x3 Z$ h0 h: q
4 j) ?. e- [* r3 F7 n2 j
/ q, X! i% W+ W3 y3 v. b
//以下是细节0 W4 a7 s- d; s& X
#define getXGoldCoinFixBtn() RX(0x2d0)( S! I" V: z* e3 r9 t
#define getLGoldCoinFixBtn() 32
% m0 c" P4 D' ^- R5 Y#define getYGoldCoinFixBtn() RY(-0x59): p5 v- |) M8 W: ?: e) r
#define getHGoldCoinFixBtn() 321 s0 ^( u) Q( F1 ?* Z" b4 b
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())4 T: g+ X: S7 {. ^
" }% V$ V9 o0 d, S1 r#define getXInvCloseFixBtn() RX(0x3db)( B# E; U; R2 c7 }
#define getLInvCloseFixBtn() 32
; k j A& [. r' c#define getYInvCloseFixBtn() RY(-0x63)
7 x& X4 e1 ^9 A( L/ ?#define getHInvCloseFixBtn() 32
) f x2 V* m* ^+ R _#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())+ S( u9 |# S/ p4 a2 f
' w `1 s/ A. Y1 K1 Y% k" v# HBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)3 f3 j2 `) W% [" O O2 N2 Q% o
{: h3 L/ x7 l f
DWORD mx = *D2Client::ptMouseX;
4 B! o) m1 ~ L% E4 ~0 |; v1 k DWORD my = *D2Client::ptMouseY;
. F J; v2 ~9 x5 q4 M* v. n if(isOnGoldCoinFixBtn(mx, my))# O3 _* e9 x: c- O' T
return TRUE;) {2 _% }3 P" F
return FALSE;
: d- ]6 O0 D, e. r( J4 T}5 t4 Q# N; T$ m |6 J3 @
__declspec(naked) void caller_goldcoin()
) A8 r. x/ P& o: O5 l# Y+ m0 i{
* ]- C0 L3 C$ b' ]: A0 p __asm; G% h5 c" C) S$ g8 K0 k
{
- F; U) r! ?& d" }2 r$ ~- Z push ebx0 Q" n6 o# Y1 ?0 s, z
mov ecx, esi& s6 d0 @0 F E3 ?* ~
mov edx, edi' Z$ E7 _9 H* S: I
call m_NewStatShow_goldcoin
. w2 z& @! r2 M& K pop ebx0 V2 y# }. v; w
pop esi+ P7 @. ~! g4 Y; }
retn
3 y4 Y0 C. d6 G, X }
: K j, V6 ~/ a4 ]+ h+ @ Y}
B0 s. o! C! T1 N$ }- qvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
! w0 H' g% q- g- U# K5 S, Q{) w7 c* W6 e! {& x7 Z: z
if (*nXpos > D2Client::ptScreenSize->x / 2)
) _# m+ q# _! \ a ^ {
! I4 _) @( D: N6 G# @& ^( u+ E *nXpos = getXGoldCoinFixBtn();
) T( @9 r! j" M3 ~1 f4 q *nYpos = getYGoldCoinFixBtn();
% ]5 ]( x5 \4 }1 s: o }/ I H6 y3 {0 y% q4 s2 t- G
}
% }6 r6 J4 [( D; A__declspec(naked) void caller_goldcoinimg()
6 H+ E) ]- _& t; e: |0 Z F{3 G! s$ f- K+ J2 h0 U$ D! }
__asm
/ H7 N- F0 C: n' x# R* a) [8 R {: F$ T7 x m0 u/ }9 Y' m) {
PUSHAD
6 |, s) V# J/ ^. x lea eax, dword ptr ss : [esp + 0x38]- _- N8 r9 I/ a. Z) Q0 m: J
push eax4 | ^% p; j+ d' y# Q; M
push dword ptr ss : [esp + 0x38]' o, ^0 B( s3 {5 V7 C) d# a
push dword ptr ss : [esp + 0x38]
6 U6 J: a1 _) v0 J* F% \ lea eax, dword ptr ss : [esp + 0x38]
: n: U9 I) o" j* L4 y5 [ push eax* `# Y5 P( w5 Z+ T' w5 {3 {
lea eax, dword ptr ss : [esp + 0x38]' X1 V& J2 r, v' D: e
push eax& o$ e8 d+ w5 V3 M' [6 ~
push dword ptr ss : [esp + 0x38]$ E R" L! | F. s
call m_NewStatShow_goldcoinimg: v7 N9 I0 v2 {8 T) m/ s) `. G
POPAD
6 @- ^5 }. e6 o3 `- \ JMP D2Gfx::D2DrawImage# _/ E) W' ~' w+ Y/ X
}
9 g" M. k! L' L% A}
% e; Y# ^4 \5 _. a; `1 e9 f8 ?, d/ fDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
; x- b0 s ]0 X' O% x0 Y{% d+ {$ G6 |" q) H8 M( [( {
if (x > D2Client::ptScreenSize->x / 2)
& g {; |( Z- [* { {5 _/ N2 @; n, Z" R. D
*y = getYGoldCoinFixBtn();
0 g* \5 C: n6 S) v) K return getXGoldCoinFixBtn() + 32;
) p" Z6 Y4 c9 {: A }3 v- V! c2 h& J% E4 t
return x;# q: J! p8 r& p5 r: U2 w
}
: K+ s0 T, u! w# ]( q__declspec(naked) void caller_goldcointext()
w+ d' d$ y: m{0 D- g3 o% t S6 {5 k5 }! R
__asm1 G8 A/ H2 K6 \8 K1 L: v( r. L( P
{ Q+ ]" g, c0 `! @
PUSH ECX* ]1 ]" I8 h; e# G9 q! H
PUSH EDI" c6 k% R( C3 ^- e( F
PUSH ESI! r0 i1 C: Y# k0 m# q5 i2 o( r: N
PUSH EAX
" c+ M5 T* q& H5 t+ R MOV ECX, EDX2 G, @. Q" {3 S& u& i7 i
LEA EDX,[ESP+0X4+0X10]( ]$ J: Q; x* D) K) A/ _
CALL m_NewStatShow_goldcointext
: k/ p3 _2 i d! q0 o MOV EDX,EAX
6 K+ x( F: ^+ n# f8 B3 B" s- ]+ G: O POP EAX/ l4 p7 V2 o! `& x' o* _5 E
POP ESI/ G: W9 C9 k3 X, N S
POP EDI
+ X0 U! U+ x" q: u O POP ECX
( b$ S; {, t2 B+ o+ }0 g$ X1 ] jmp D2Win::D2PrintString;. t3 s! J8 U/ R
}& i4 y, H i. i' ]7 a, b6 L9 b1 }; ~
}' z4 Z0 n" Y. \, o
& |/ H) b1 u5 k, |
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)7 ?, F8 H: _# b* O( G& l6 k1 Q
{' H9 T# d6 E1 |7 J' F t
DWORD mx = *D2Client::ptMouseX;+ s/ H" d- }- H/ x) m" U* @. I
DWORD my = *D2Client::ptMouseY;1 \" g+ \8 {7 N& }/ K. a; I4 _
if (isOnInvCloseFixBtn(mx, my))# r9 @3 B5 y6 @ ]
return TRUE;& P4 [4 F# h1 ^8 X* k
return FALSE;
1 X( k- T% \$ i* k) k- ]) N}
9 @% ?* u$ i. j; A; O__declspec(naked) void caller_close()- C I3 f2 l" \0 e* M
{
# d' ?% O$ y+ g% E __asm
% } q) O# W0 D, r0 S {/ k. c+ s! f7 Q( _( |
PUSH ESI
' W. e* N: D6 y# n/ S push ebx
8 ^/ u) y' A& s+ I call m_NewStatShow_close! z, V4 I8 S9 t! s' F4 T' ]
pop ebx
" U8 Y9 G# d/ \1 f% R O) h. b' L; ?$ j pop esi/ W3 Q& ~* w+ s% Q9 M3 U
retn7 u* ?. f$ h+ `/ @
}
* h8 L; K0 }: X# T}
! Q; b: W+ m- `3 j) M2 [) |void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
4 e' r& |4 P1 r5 G4 ~{7 i& f. J9 U+ v
*nXpos = getXInvCloseFixBtn();
2 W" ?8 n; s5 B2 m. n *nYpos = getYInvCloseFixBtn();
9 \) l% r) r/ d- j" y& p}
0 |1 H& T& j1 K/ M# I__declspec(naked) void caller_closeimg()
8 f0 P& D" j: n" s3 T{
( m! |' f4 Q0 [' O! Q, A7 E0 z __asm
. I H4 A7 l) |/ S {
& ?/ `$ n3 i* i) ~* g/ [ PUSHAD5 @( Q* g2 L9 F5 h3 D
lea eax, dword ptr ss : [esp + 0x38]. R( J* d% W. N* {5 X( x
push eax9 O; T+ u/ E* ~. T2 g! C, W
push dword ptr ss : [esp + 0x38]
& r4 f- f0 @/ C5 C8 m4 [ push dword ptr ss : [esp + 0x38]/ Q0 L$ L! F4 h( I0 G/ b
lea eax, dword ptr ss : [esp + 0x38]# E' }% ?3 t1 ]; y/ n+ S' j
push eax( Q+ J7 F& ?+ [1 b9 c3 N( O
lea eax, dword ptr ss : [esp + 0x38]
4 T" Y. p3 A+ P. J* E/ K* f push eax/ a; L2 J/ C h9 L! k! ^+ Y
push dword ptr ss : [esp + 0x38]1 [) d q0 q( |$ M, d( W% `
call m_NewStatShow_closeimg
# z( N$ r6 J" P+ A% L9 e POPAD+ ~3 g9 P+ M# E
JMP D2Gfx::D2DrawImage
3 f' k* x3 r* P* I2 ~, [3 }2 Z } s' `6 \5 d7 U$ d E# ?: ^
}
, w5 I- h5 ~6 O1 U) i+ b/ R
' b9 P0 G& o7 y9 A0 g3 ~/ t" t) v6 e c6 _
|
|