|
|
转载0 b, u4 f' s# Q ]: l
BY SJ
2 T" p1 K7 ?) ^' b7 N首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
) k4 C9 L8 k$ M9 i- Y+ L% Y6 Y- |" d1 b( ~. p+ j
D2Gfx::D2DrawImage-10041
: X0 G, j' W% E1、修复技能的背景(不需要可以不要)
8 o7 _" J) x; C$ v" k3 H Voffset = D2Client::GetAddress(0x77AA8);! H7 d* D7 }6 n9 Y* L
Memory::SetCursor(offset);' j4 I0 @2 A. C6 l) m
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);1 S4 O# d2 e, M5 K
+ G5 L1 ? f2 }: v1 o. _) Bvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
2 o* r7 }2 v- m8 p3 y4 b' S{0 n; Z( I2 n4 O0 S( B
//Init data for print image
' [! Q8 f- P; j sDrawImageInfo data;% \ ^1 t+ [$ F' m9 E j z. E
ZeroMemory(&data, sizeof(data));
% J* H5 ?" a5 Z/ }0 w
! M: S, s! ]# B4 K" h( ~ //print background1 K" K: `6 L& ?& ^# M0 F2 d9 i( F
setImage(&data, spellBackgroundImages);: v- c1 r+ k6 L
setFrame(&data, 0);
7 v% ^' u- H; a! | int fixx = 511;" f9 z$ q4 X/ N1 a3 V5 F( c( f( W6 Y
int fixy = 9;; X- K2 V7 C! ?0 O7 \
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
9 S1 @1 H4 k& q! ?3 F. m5 [0 ] setFrame(&data, 1); {# t( j7 I# \* \4 c
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
& n" M( k% i* f# n( u' X setFrame(&data, 2);( Y( a% `& p& h! H
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432* N, m \4 F( t3 g- E' ]5 t4 d
setFrame(&data, 3);0 e% K C5 Z: t( P- j+ p- Y
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);5 W. R! ]& x Z9 L7 N
}
, n. {5 \. K. q! \5 k' y5 @__declspec(naked) void caller_SpellBackGroundFix()# e9 n; z3 w _6 }1 a( H0 a
{
5 a+ p( D% {; k. j __asm) h0 E8 W# H5 |! H; t( B2 s
{& g- `- y6 s' o* p' H- r/ g
PUSHAD
; ]+ N0 J" ?% Q% H5 w/ u: t lea eax, dword ptr ss : [esp + 0x38]: J6 n M9 F/ ?& \. v
push eax
7 f. y* H. O8 c1 i0 U2 E! }( D push dword ptr ss : [esp + 0x38]
( s/ {. F8 K9 L/ U! I push dword ptr ss : [esp + 0x38]
; J, R$ u9 a0 a" n; @+ g3 ^ lea eax, dword ptr ss : [esp + 0x38]% s6 O8 \& m8 i g! t( C" Q
push eax
/ r: B# s3 L8 y* o1 C ]! | lea eax, dword ptr ss : [esp + 0x38]5 z/ t, ?0 F* F; m0 R
push eax4 [+ b" Q. Q( f2 A
push dword ptr ss : [esp + 0x38]6 [, U8 g) C/ ?$ H
call m_NewStatShow_SpellBackGroundFix
6 R9 D q4 l% f7 O" N5 u: j POPAD6 a/ B1 |+ F, m" P2 ?1 G
JMP D2Gfx::D2DrawImage
4 H6 E$ M N0 {; F* p2 Z% ^! j }8 m8 s0 d1 s4 _0 c$ C8 ]5 ]
}# g/ ]4 H# M% a. b- Z
+ |; a4 D/ A' @4 j# F1 p' Z2、我们如法炮制小站的背景8 m: c8 K- S- R5 O% B# g. b4 u9 W
' ~: s) M) D6 T+ `6 S$ R
offset = D2Client::GetAddress(0xAB010);2 R$ s0 i7 Q, i7 a3 D" R
Memory::SetCursor(offset);+ g. {! n+ t* W8 d1 N* ^4 r8 U
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
9 Q! H8 v6 [' w9 ~
U: x/ i( K5 Y+ i, l% ~ ?void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])5 d2 W7 @- E. b- p& W9 Y
{
" P: A7 \0 c* ? A //Init data for print image, i& A5 [; d4 A, }- N
sDrawImageInfo data;3 z" j' k( K& t9 @$ i' ~
ZeroMemory(&data, sizeof(data));8 ~ }7 X# ?* E; i6 L
6 x: q1 H# A9 m- I- q7 R) m# Q //print background
* R' G. X- ~7 ~ setImage(&data, waypointBackgroundImages);' Y2 R* c3 U+ Q
setFrame(&data, 0);
2 A5 ]1 b0 Y+ P. [ int fixx = 0;
; }- [- B; ?" [ int fixy = 9;% H5 E5 K0 @5 c7 j% N5 ?
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
Y( c) n$ |# t" K6 x setFrame(&data, 1);! ~9 v0 O0 H$ X' |* C9 j
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
$ V3 v. F5 o5 W" G setFrame(&data, 2);* i* W& ]9 ?5 A8 Z+ f* A4 t
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4326 v9 l7 s* W2 P
setFrame(&data, 3);
& q5 K2 M* t8 b& P T D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
# \( L( s. M% g8 I
# D7 o, {3 H9 m3 i$ `}! D* V- ]( N2 w7 ]& _/ W+ u
__declspec(naked) void caller_WayPointBackGroundFix()
# L2 B! H- b; B1 v- a, d{
. w7 B8 Y2 _. {! G( [/ D __asm. G4 @! S! W P. m' t4 c$ Y
{
5 S, F+ [0 t) e! E PUSHAD
) |% W, n5 Y& Y. t; \& ` lea eax, dword ptr ss : [esp + 0x38]
1 J! @5 S) R2 a" Y. ] push eax+ J; [+ }6 \! W2 ?: R+ w: J
push dword ptr ss : [esp + 0x38]
( b& ^2 ], M$ c4 `0 }7 [ push dword ptr ss : [esp + 0x38]
6 |* e& f! {4 `( M lea eax, dword ptr ss : [esp + 0x38]
/ c' ~7 T$ U# s3 Q push eax
, @5 p! P' G+ `/ L lea eax, dword ptr ss : [esp + 0x38]
4 k7 Q& ] z# o4 r" V$ I8 a push eax
) `% C1 Q8 h' O0 P! B2 h push dword ptr ss : [esp + 0x38]
, z1 p4 A3 b; d call m_NewStatShow_WayPointBackGroundFix
7 b8 y% r( f# T) v) I POPAD
; e5 x5 F+ K8 a4 r" O+ V/ D0 ` JMP D2Gfx::D2DrawImage
0 n# e4 A7 W9 w6 l! ? i } t4 m$ y: u, z/ g: d4 h6 A' W
}* c5 e( K4 l; x. t2 l5 ^; D
! s, Q2 m) N5 H- j3 ]
3、以下可以搞16*16超级箱子-腾出我们需要的边缘; s: z/ B8 a# Y9 {9 g+ _; v
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
/ |3 R7 k7 Q& n( l {
" [8 A/ w# W2 B4 p$ m class D2MultiRes : public Library<D2MultiRes>
6 K/ n" n, j, L3 B; T, ^ {
5 N. F& c& W$ n! l$ t public:
0 N8 P: `, Q5 s; I: I7 }2 |) ~ static void Init()0 e0 }6 y% G* l9 L* C$ h& r
{
' F# M9 h( v/ o u. I' t Name = "D2MultiRes.dll";5 q* u6 Q( B, P* P3 e& n/ Z) C# y7 w
Offset = LoadDiabloLibrary();
0 r+ Z; C. L( @ }/ R0 b P( H F7 J6 \ W
};
, v* ]( T9 Y/ G; v8 ?* D) v6 | D2MultiRes::Init();9 @7 ~3 [+ x. Z3 A& A0 p" Q! n
D2MultiRes::HookLibrary();- ]! A6 q+ _& s, e8 m
' |. W# Z: G" ~$ I M1 o, S) I& i& d4 V _$ K9 m
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
/ _/ l- I1 F# p. d) F Memory::SetCursor(MiscFunctionsOffset);
1 l1 Z' P. k* R5 ] Q6 {1 n& c Memory::ChangeDword(0x1b0, 0x200);) F8 i. T' h2 V# e7 n8 S1 @- T& J
/ u3 a1 q: a) D* }- J, K
3 L7 B1 P/ J" H: g- O MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);9 I: u0 p/ Y" u9 i
Memory::SetCursor(MiscFunctionsOffset);* d$ ]" o3 t+ I8 \2 X( R! F8 N6 K
Memory::ChangeDword(0x140, 0x200);* _8 R1 H! W8 O# X' y
) b9 z/ [: c5 h5 P4 U3 \) ^" W9 \' b% u. x) Y @' n
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
' h, w& P" `0 a' [ Memory::SetCursor(MiscFunctionsOffset);% U9 T* I R% a+ w0 Z! l. a6 q/ e( {
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块- c' _ w* [" E7 S# @4 q1 }; T
6 M0 P8 E* C4 e MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);* o( N7 @% t' v
Memory::SetCursor(MiscFunctionsOffset);
3 S0 O1 m2 G! Y5 `5 z& P* C6 i Memory::ChangeDword(0x200,0x299);//下边缘 299最大' @9 _" G- }' T5 Z+ Q" M Z: L* ]
& ] C" U% B3 E7 V3 [ MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);, r# c B5 o4 B: U% z4 K, f3 X+ ?
Memory::SetCursor(MiscFunctionsOffset);: W7 m- \+ Z# x6 l/ Q! h! \
Memory::ChangeDword(-0x280, -0x400);//这个不要动
) m: _) \# w8 S* u }
& q) A3 t% o) M7 ]+ O7 ~% h# k: L9 d/ N
4、快完成了,是不是发现金币啥的位置不对??& o; _1 y: A9 O7 W% I9 x/ t
. u: G- ?5 v+ I//这里修正我们的装备栏5 B7 m, x& N( v7 U' r
offset = D2Client::GetAddress(0x99B6C);' r6 W* \3 n( s: ?
Memory::SetCursor(offset);
% s s( A) ]! ?2 t0 f+ ]$ l Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);4 E5 Y q, Z8 e
9 f( x- i3 |9 x offset = D2Client::GetAddress(0x99BA7);
A& `) ~. }: K& B1 }8 q Memory::SetCursor(offset);: B' [5 m* C5 e* x
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);" F' Q1 A6 @! {4 n& ^
5 D. j& w2 } F. k$ w \ offset = D2Client::GetAddress(0x99BE2);
# y, k+ z# d/ q1 b7 S6 p* x Memory::SetCursor(offset);
, i+ K3 N4 @1 f W# b9 p Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);7 F1 b. F8 F# C
) p' _ N* D6 j( ~8 _ offset = D2Client::GetAddress(0x99C1C);+ M0 A0 F y" E! [4 \% R# K
Memory::SetCursor(offset);
\. A( L$ d0 Z5 H0 G& I/ f. j Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);7 y, p: J$ J& b- |7 I; W
6 n/ A- }5 l$ k" o //取消两个popup,偷偷懒不过分5 q0 W- Z4 `* q
offset = D2Client::GetAddress(0x9386d);8 }- s& w( s9 O! j; a2 x6 g
Memory::SetCursor(offset);# P+ }4 i& O, O, C( g0 C2 p
Memory::ChangeByte(0x8b, 0x33);
* E' R: g H, [ Memory::ChangeByte(0xc8, 0xC9);% [( q3 Q& y* q$ l8 U
offset = D2Client::GetAddress(0x9390b);
, ^ L/ ?$ a7 h" ?" o Memory::SetCursor(offset);
; |" ~/ q9 V' Y2 [" x# ?5 E6 E Memory::ChangeByte(0x8b, 0x33);- I; p3 B8 ?8 B# c; T
Memory::ChangeByte(0xc8, 0xC9);; _, h& X% r# |
; _8 ?* {- r1 F
//修正提取金币
: g2 M5 l0 a$ c offset = D2Client::GetAddress(0x8D3E5);
9 |5 [! e6 r# n# V6 a# o Memory::SetCursor(offset);
5 J' O. G) x$ K/ J& u7 X Memory::ChangeByte(0xA1, 0xE9);
' S- O9 \' R& X/ o Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
; y+ P4 @& m) v4 O. q. s9 ?
3 O" I+ u' W9 f$ G) ^7 A8 V' [ offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);- y6 T) E# e3 Q
Memory::SetCursor(offset);2 \, h5 s/ j* t- s" `
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);: o( C; c. q: n
! V2 @+ n$ v# m" j& U) l. s5 W offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
6 S+ Q' t7 @: ?# |+ z Memory::SetCursor(offset);
* U, d8 V! z; H7 @5 O- L& L Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
8 w7 p8 c8 j; `9 t* @: Q) P
5 \4 i! C! k- M* b* N //修正关闭按钮
1 D( V' q9 C5 s4 B$ l2 M* K. f/ H' w5 d offset = D2Client::GetAddress(0x8BD90);
2 e9 e& q* |- L4 H7 H% E9 ?8 G Memory::SetCursor(offset);: j: W& l8 o: u( |( `
Memory::ChangeByte(0xA1, 0xE9);2 q! Z$ f3 l0 s+ a1 j0 k |" a$ k& C
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
/ J& G& k5 e, ?. {! Y3 a8 K* @4 _: s* D: f! L7 d9 u
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
# _5 s6 D1 j! P Memory::SetCursor(offset);
4 O- H E1 f0 l* u" i Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
2 ~ r; m- n" I- x- [$ |9 r/ v+ w
# [5 C- E. R0 T+ O1 Y# Z5 f( U3 l//以下是细节
2 z+ _$ x' ~, n! j- h* b; H: g6 w#define getXGoldCoinFixBtn() RX(0x2d0)
O* l1 B" L" P1 ^# Z#define getLGoldCoinFixBtn() 32
/ n) ~3 N) U5 U% T#define getYGoldCoinFixBtn() RY(-0x59)
O7 v8 o& B# U* I. O" Z: M8 L#define getHGoldCoinFixBtn() 32
! \' B( Q6 l) E) g) i+ o7 A5 l#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
) Q! n$ m5 f; ]+ f
! w6 j$ B4 c2 d# U#define getXInvCloseFixBtn() RX(0x3db)
6 O3 r/ F$ B5 i5 l#define getLInvCloseFixBtn() 32
2 c( a0 A6 r5 J; H#define getYInvCloseFixBtn() RY(-0x63)3 @6 V2 P/ Q2 l: O
#define getHInvCloseFixBtn() 32
" c. j. j" @6 t/ _7 x5 ^" v6 J#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())( L/ u$ { G0 Q% p* M3 [
& e! x9 N* v/ r2 w$ [
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)" D1 @! \, j0 T$ s- @* G$ E' u5 a
{
1 T# p) T2 k# t9 l, a DWORD mx = *D2Client::ptMouseX;
) j3 P/ _; }6 A7 ]2 g1 P DWORD my = *D2Client::ptMouseY;& G: k1 W" V+ S; z4 _$ L& r; i
if(isOnGoldCoinFixBtn(mx, my))
, |/ L7 J. J: G2 G% o: u return TRUE;. `1 o5 f( _* A" b( c* F& F, [0 @
return FALSE;& |! [4 g& T2 t7 ~
}
% [* c6 z1 @8 `" c1 W m__declspec(naked) void caller_goldcoin()
# S2 @1 p' C1 x& n6 e{
: ` m* T" _% N* H; d __asm
$ f( i( @# ^% l/ E! X# N {. W% U' f+ c8 S! I5 w
push ebx* }0 \% Q6 _/ s p, ^* v$ x
mov ecx, esi
. Z" g6 Y- n$ b2 T mov edx, edi0 L7 T2 _1 I: ~, p+ R' X. N5 P- P
call m_NewStatShow_goldcoin, t8 i2 O4 _1 g; c
pop ebx
9 ^ s# c, [7 R pop esi
\1 g! Y- u) z5 [ retn
2 C3 n; l8 ]# b. r! { }
) V& s: B+ j! E9 W; l}3 j1 I" m. J6 V- {
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]), d- y% ?. i# r& r' P9 s1 A
{
% c# R' y3 X5 y+ {' H Q" v if (*nXpos > D2Client::ptScreenSize->x / 2)
2 _5 m3 `; H9 ~# ~ {; M/ [: f9 r- ]4 N
*nXpos = getXGoldCoinFixBtn();
8 y, x" J% n' p4 e6 x0 m *nYpos = getYGoldCoinFixBtn();
5 T/ \2 b8 U( ^9 I# m }
" c* {$ x: ^* U; R& ^6 P$ ^}9 Q* b! Z5 a- c1 o$ Y' M# _, I
__declspec(naked) void caller_goldcoinimg()
1 W) J! O- C) O) m{
5 R3 G) N8 R# m1 D( v a# @ __asm, o8 f. i C0 U1 Q6 T" V
{9 ~/ e3 A& J# G: G
PUSHAD% e" I. h1 Z8 W3 l
lea eax, dword ptr ss : [esp + 0x38]; l C8 ]# _; g( |' ?8 n
push eax
+ \" z* C( i2 a0 E! x% h+ K push dword ptr ss : [esp + 0x38]( b, U* k1 u M+ d0 \+ @
push dword ptr ss : [esp + 0x38]
0 L! a4 O/ f4 F3 m3 \2 I) ~) Q lea eax, dword ptr ss : [esp + 0x38]2 F/ x# {2 \2 F
push eax
' I _7 _7 J/ t5 X' |+ d. f9 ^ lea eax, dword ptr ss : [esp + 0x38]
/ [, P/ |( F1 r2 } push eax
) y8 z* f4 q C/ s1 ?8 W push dword ptr ss : [esp + 0x38]' U3 P2 o; {+ L1 v
call m_NewStatShow_goldcoinimg
/ M1 F0 |& @$ U( G; C POPAD0 N8 [& o7 k s4 L
JMP D2Gfx::D2DrawImage3 g8 C8 D* }8 ?7 r2 ~8 q
}
2 `' T$ N& E# d1 ]}
/ I& M# y$ h% i c0 l' \DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标2 X, }3 S! c" Z$ |' X% i
{7 T. I$ t( [! ^! k" \: G W
if (x > D2Client::ptScreenSize->x / 2)5 t$ ~& B* Z, a9 J, Y W
{
+ _, u0 B1 Y$ Q' L( d1 e, R *y = getYGoldCoinFixBtn();
: F# V% O4 A3 W0 c2 V! t return getXGoldCoinFixBtn() + 32;
; M1 q, P1 w/ p4 Q }5 g: h2 @ q! D- c; E6 |) e
return x;
. R. ?4 t" F1 E5 |# {2 R}
% ]' [9 n$ `) z& [9 i__declspec(naked) void caller_goldcointext()
6 Y4 f1 I) m3 {, K- F{
4 m \2 E6 k, Q S: [$ \( R __asm
5 A2 W4 X) i# q1 R2 @2 w. @ {
6 _' h; W5 w6 o B4 }" c PUSH ECX, e7 g- `; h9 u# F, J7 |' ]7 g- b3 I
PUSH EDI3 U& D* u( G5 a$ }6 o$ Q
PUSH ESI h8 g2 I, M2 m# v# F9 |
PUSH EAX4 P; y7 h2 f0 J9 X r$ X, [
MOV ECX, EDX: d, F1 D K- S" r5 T6 Q2 r
LEA EDX,[ESP+0X4+0X10]
2 u I7 e9 C! S CALL m_NewStatShow_goldcointext
) W: L& ?# k/ `% C6 N4 }. {3 f MOV EDX,EAX; t2 I/ I+ f- C8 M$ S; g
POP EAX
0 `4 ~, Y5 r8 f- u) v% E POP ESI
# d# a7 { ~) b POP EDI
6 r) t1 @! Y7 K( T# l& ?. p POP ECX3 g7 G( w1 H4 B7 F$ m
jmp D2Win::D2PrintString;
: P2 z$ A5 z# P. r* z: F }
* f$ L( w) O& g" y ~& ^: p}& c; M" g% f6 I1 A
3 Q2 x: B( ?: P) l$ ^0 O6 l! g8 E
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
0 {% ?. p; |% a: L |0 e; f{" U( z. A8 ?# W) V
DWORD mx = *D2Client::ptMouseX;
* e7 T! ]! @) k9 I2 D DWORD my = *D2Client::ptMouseY;
/ u+ p5 G6 R# j% i9 e- |1 E! } if (isOnInvCloseFixBtn(mx, my))
- J$ T! O, g8 y* ~7 i return TRUE;
+ i8 U2 w3 m, }3 i8 l8 J6 I* H return FALSE;
! d6 i5 }2 J5 b}: ?9 G3 ^6 D2 A; S6 }
__declspec(naked) void caller_close()
. j: b, M3 L6 r8 X. D; `{) \# m( x8 N9 \' g3 f$ j, ]8 y0 w
__asm- _$ m- _( N6 z% `
{
2 `2 y3 J! P& u PUSH ESI
+ E$ S/ P6 b" L# m% x8 v( m push ebx
* N: {0 K6 y! W" v, G$ ? call m_NewStatShow_close
c7 d# b' Y. c# Z9 K pop ebx
/ L- g+ V4 O& G, S+ w1 Q pop esi7 F! o, @4 E* a5 d: r& |/ V
retn
! J G$ U% @8 i2 Y }
$ G. w: w5 r, K0 m! P) O7 V}
4 y1 D# z7 E/ p2 j0 ivoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])& a# |) j7 a* ?+ k7 \
{9 O! V6 l2 U+ I
*nXpos = getXInvCloseFixBtn();
2 p% j% l. ?+ |& S, C5 t *nYpos = getYInvCloseFixBtn();; L0 V: D9 y- }4 [% E
}& _7 T, o( u$ a$ k
__declspec(naked) void caller_closeimg()
& n) ]" t4 r3 _- @: x, B ?0 b{
. Z' C# o) ^3 i1 Z; t" ]0 E0 Q; @8 E __asm: i1 Z# n% e. F+ u0 t9 p; G
{
5 x3 V8 v5 ], R3 ^* B p) s9 W# K PUSHAD6 R, x: d3 m* P4 N/ {0 N
lea eax, dword ptr ss : [esp + 0x38]
- y# ?9 A& A" z: S) ^! E1 A push eax
- J; y( Z# P s. w B1 k push dword ptr ss : [esp + 0x38]) p8 i1 p6 D# F) P! q$ o
push dword ptr ss : [esp + 0x38]: C) v$ Y! U3 v
lea eax, dword ptr ss : [esp + 0x38]
, \1 M+ F+ i0 W& M$ G. P) |0 @ push eax: m% f( Z8 R; o
lea eax, dword ptr ss : [esp + 0x38]9 |+ N* G& ^* ]$ m0 e
push eax+ G% i0 b. w, b6 c1 Y3 a
push dword ptr ss : [esp + 0x38]
4 R9 I. S( X p: b call m_NewStatShow_closeimg
0 l( b1 y# n9 D; S2 c POPAD
+ Z: Y- M8 o9 f4 x6 |4 @! D3 b7 e JMP D2Gfx::D2DrawImage. X. }7 R+ K/ _
}3 D- `5 |8 P. E' \
}( e% H/ L; C3 z" Z
2 ?2 T: g1 H$ U) D& i/ M+ W- @& ] c3 V3 i( m& Z; E
|
|