|
|
转载
* n& S1 B& k/ i5 Q3 C* h R2 bBY SJ
" Q. o% O0 b) m首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)! p+ n. ]7 r4 w1 c# w
5 W" ~ J& @' X* {: y! T3 J
D2Gfx::D2DrawImage-100419 c0 K- V8 z2 \# c
1、修复技能的背景(不需要可以不要)" c" Q2 U5 R6 f/ @& c' f
offset = D2Client::GetAddress(0x77AA8);
9 [5 U/ l8 Z9 k" a. Q" KMemory::SetCursor(offset);7 M$ h+ I k2 [. H3 {8 s% X7 J4 j. w$ f
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);" a+ A$ H2 f8 Y; p. F9 r
* r* C6 z4 W1 M: q; h; rvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
$ C) |5 A- R2 J6 s& x{
* m' v9 _: D% |) b9 `. A# N //Init data for print image$ z$ q( r+ h4 U/ i5 i& B4 V% m4 W
sDrawImageInfo data;# _" d7 e6 w: K) n& R
ZeroMemory(&data, sizeof(data));
" h2 y/ D/ z2 N; H, L# [+ m+ i0 Z1 b0 }1 p" [
//print background2 Y7 g. x8 Q6 L q
setImage(&data, spellBackgroundImages);
" `" Z) y a8 f; K" t+ B setFrame(&data, 0);
) A/ `4 _ ?# f& I) V: H5 { int fixx = 511;
7 S% ]7 z7 e) ^6 D* p8 d2 B int fixy = 9;
: }5 C% j/ w, P1 [9 ~/ x D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);) V: C4 \% i% X. z+ d3 a
setFrame(&data, 1);+ }3 \2 a% }& n, d/ b U
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
' Q. g( {9 E% E0 ], n2 }( H setFrame(&data, 2);( h2 T' s# E+ n g/ W+ L
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4326 F! ?. H! R- ]4 | [
setFrame(&data, 3);
. A+ v% Z- n( @ D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
% c# M1 a$ p6 a0 N7 p) g}
5 D6 Y( N( r, ?: B& ~__declspec(naked) void caller_SpellBackGroundFix()
; @# O% _5 S* z3 u: G U{
) B y8 W. r4 q' R7 q& T __asm; m: G/ k& O7 `3 ~- {! f" g4 ?
{
: `0 R K T% W; \% n( A: L PUSHAD
9 m" s8 E! h: T0 L7 J7 A" `$ K lea eax, dword ptr ss : [esp + 0x38]
+ h8 a3 x- r5 T0 l push eax; W9 J" ]& ]" d: m$ Y! X
push dword ptr ss : [esp + 0x38]
* N0 A* I; ^! ]/ {' y' h4 s& E" j push dword ptr ss : [esp + 0x38]' m1 b# z, w% s' @0 c( n- k* b
lea eax, dword ptr ss : [esp + 0x38]$ z) u8 G5 L% h. \
push eax
9 L7 c# f: s, A8 n% e& ` lea eax, dword ptr ss : [esp + 0x38]/ K S% `# E3 l# g6 E h3 [6 D
push eax" `! R) V" |1 w5 l4 ?& @
push dword ptr ss : [esp + 0x38]4 w# N& [* A3 J3 \& W7 `- w5 P
call m_NewStatShow_SpellBackGroundFix9 w7 d# q _' T8 k( V2 h; z' H P
POPAD
. d* l: B8 z# D3 T JMP D2Gfx::D2DrawImage
' K+ b# D! z b }/ @0 K1 m: I) U. U/ C
}' O# S' V/ w4 _" p
+ o1 |. W+ X4 D* j2 ]- b e
2、我们如法炮制小站的背景
6 h/ r, c8 _5 @$ p. t! \, i$ U2 Q- h' w3 ]& y' M) B* ^
offset = D2Client::GetAddress(0xAB010);0 f- k* x9 D# G6 N& k! R
Memory::SetCursor(offset);8 F( q* E, Y& w
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
- G# f# t, |* A! w* C% V0 j0 K$ Z) m& r
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])2 Q- H- _+ E$ K* k' R; s
{
- R% i9 ^$ |) E: P) O //Init data for print image
4 k v% E# ?0 z0 \ sDrawImageInfo data;
' d" D) |7 H) a, }+ @3 @ ZeroMemory(&data, sizeof(data));+ U# M; t& M, ^( ~0 `# b& ?
6 c: e' L$ C6 y' S2 m; y$ M: R
//print background h$ a5 K, A! w% w& k, Q% E: r
setImage(&data, waypointBackgroundImages);
# _- U8 F9 N# C; w7 a9 Y" [ setFrame(&data, 0);
# p5 y! M& E- E; S int fixx = 0;
( y x p I. h' y int fixy = 9;1 U/ n4 r7 s! e+ N5 ~$ F
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);/ h: ~) N% {6 @' H# d
setFrame(&data, 1);
v7 |" \2 l/ e* J; m D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
4 m2 v) H& {7 u' e+ z7 P6 s- E setFrame(&data, 2);
# X' r9 g0 C! t/ L2 f. G, u8 K D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4322 v8 e/ C7 p3 b' R u
setFrame(&data, 3);
, d6 ]& }1 s6 _" d$ f* t& g0 Y D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
8 D0 M) ?8 Y$ x/ B' ?. K6 \8 R1 i0 d
}/ J* \ C+ U4 @$ J
__declspec(naked) void caller_WayPointBackGroundFix()
" d3 w: K; {2 S/ I/ f{
/ m9 |, v' c9 c, Z9 I __asm
2 i$ K R2 k4 W& u+ K/ z# [1 O4 u. p {( f: f, T$ i* l# X; T
PUSHAD. ]+ o3 ]6 |; \1 E; F4 P
lea eax, dword ptr ss : [esp + 0x38]$ K; M% u0 V5 E
push eax
/ c" W6 g% d# f push dword ptr ss : [esp + 0x38]
) l" D) J0 B% q: k2 B2 l push dword ptr ss : [esp + 0x38]
* i$ t0 f; B) G/ }0 s- U lea eax, dword ptr ss : [esp + 0x38]% u" n" G5 U. }
push eax
/ @- ~) i5 U, J$ q lea eax, dword ptr ss : [esp + 0x38], A6 ^9 c3 T7 }; n0 B
push eax
. x- R* B$ P _8 z push dword ptr ss : [esp + 0x38]
1 ]6 d( g. Z: k+ r/ G) J call m_NewStatShow_WayPointBackGroundFix
0 o; ^/ Y7 V) a# P! D# G& [ POPAD! b/ D+ q% b8 H. k2 }6 Z: C: U* H
JMP D2Gfx::D2DrawImage; k- ~' D1 Q* c. ?; t( n; l A! |
}
1 X/ M3 A$ l$ P" I}
5 e, ~1 N* @7 r+ T" T3 }; ^- ` p2 P
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
1 ]# n) @5 X0 f8 O( a腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
& D; v. O* X; \2 [ {$ o' Y4 s6 m/ {% [3 T" @, S
class D2MultiRes : public Library<D2MultiRes>
A9 c' h* i% x4 F/ k3 v$ e {2 F6 f# \7 c9 o; C R6 o2 r
public:% A6 D, P+ d( L
static void Init()
. a- s o4 R( u! \ {6 T' I& V8 E9 V! F
Name = "D2MultiRes.dll";
& B2 h* U$ W4 z( \3 U ]& J Offset = LoadDiabloLibrary();9 F) w) t. {8 S" _$ X* Q
}1 @" p8 C% k: g$ J
};. ~% n C4 D/ o' \3 D
D2MultiRes::Init();0 J5 n$ b6 i3 u0 U3 u$ [# O! P" j
D2MultiRes::HookLibrary();
3 P4 C. h" p+ w2 {7 |* i5 {! y, n" |- L% |4 O$ \' O( L
# |' T# R1 k0 q( `4 v& F
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
) C. |5 V& j$ c5 z Memory::SetCursor(MiscFunctionsOffset);
( j0 Q2 `. q+ |% z. G Memory::ChangeDword(0x1b0, 0x200);3 p$ O _9 K! d+ Q! }: H
5 I. Y" k# a+ f' U
2 J! l5 o2 R8 f, X! C MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
. G) ^- R* X0 _. K! w& Y Memory::SetCursor(MiscFunctionsOffset);& W& b- I" X, y7 d3 D$ C
Memory::ChangeDword(0x140, 0x200);
) ^) ]! A; l& r" j/ d9 k. f
]# z. K+ _. v% o
3 [# H7 i2 C4 V0 E, ]+ j MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);% J% [5 |: W, V; v8 J
Memory::SetCursor(MiscFunctionsOffset);7 X4 N& z8 _' _) V- U
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块- r. g" z, o+ L' l! I5 }
( }1 r6 n& T6 j
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
$ F, B( v; Q6 i5 |8 z) } Memory::SetCursor(MiscFunctionsOffset);6 x) Z% Z5 v; D p7 y1 G
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
3 t: C; w4 D1 b/ E: R+ N3 g# }5 y) S: z
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
. n- C- ?* u0 v, ] R0 e Memory::SetCursor(MiscFunctionsOffset);; ?' Z( {0 k( K8 j3 ^ y8 K; n
Memory::ChangeDword(-0x280, -0x400);//这个不要动
! q% f5 N: a2 C7 l0 a }/ R+ h( m0 B8 \, @
2 q2 B) W- |5 p6 h2 u
4、快完成了,是不是发现金币啥的位置不对??
) \7 L' ?$ ~- H0 A7 O5 u; g( [6 p5 C, g* ~& R& \
//这里修正我们的装备栏4 }3 {; ~$ I; e A6 j
offset = D2Client::GetAddress(0x99B6C);
$ b7 ]5 ?% ~! @ g. P4 [' y4 ?5 Y Memory::SetCursor(offset);8 _1 C4 o0 g: \0 A. w. C
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);0 S% E [* y1 ~4 o# r
2 d% L' U. ^' I! I# q8 r _ offset = D2Client::GetAddress(0x99BA7);" l1 b- }! [: v6 v
Memory::SetCursor(offset);' h4 O7 D* C8 Y" [) t) {
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
' h. F1 a I: h: U0 _5 j* L2 I+ y: z( a* i$ Q/ D8 N7 J7 B( |
offset = D2Client::GetAddress(0x99BE2);6 N: K8 E& k, Q5 S% @
Memory::SetCursor(offset);/ P9 q% |( D4 h! l0 D8 v$ E: V
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);8 z5 @7 n5 f+ i2 C$ V2 W8 S
' @9 a/ c2 n: U0 O6 z; ? offset = D2Client::GetAddress(0x99C1C);
0 V. X3 V" n2 h5 ? q9 ? Memory::SetCursor(offset);
: r+ x2 s) I6 ~9 }8 r* N# ? Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
2 k6 _+ Y* E5 q8 v, Y
: x: Y" y1 w9 n A! b //取消两个popup,偷偷懒不过分1 b0 |6 o7 j1 T K/ v' N) N
offset = D2Client::GetAddress(0x9386d);( {" T Q: a/ y/ j' O+ B7 e
Memory::SetCursor(offset);
7 m1 d; j5 p* H3 [2 J+ x$ H l Memory::ChangeByte(0x8b, 0x33);
& x1 ?+ i4 n" v4 Z* c0 @ Memory::ChangeByte(0xc8, 0xC9);! E; u* }8 N: z" w) a8 f: Y/ Q
offset = D2Client::GetAddress(0x9390b);
e& Q0 s) H& S) | Memory::SetCursor(offset);
4 L# T" p8 c' l3 A Memory::ChangeByte(0x8b, 0x33);/ M) s+ N9 r- m- H7 u2 V
Memory::ChangeByte(0xc8, 0xC9);
6 ]" k6 g( C/ n, ?# z0 p: q# C5 v; }! K0 |
//修正提取金币0 R8 u( H6 f$ ?6 y- I$ B2 a
offset = D2Client::GetAddress(0x8D3E5);
o N; _6 q. a Memory::SetCursor(offset);- `+ L0 n$ p0 K
Memory::ChangeByte(0xA1, 0xE9);: n& x4 C9 S. p9 S3 z3 p$ @
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);- s) |" O+ |& d7 U4 I% H
8 @# g8 L+ v# O3 ~6 W
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
' a+ l* L' D ?. e5 Q1 l3 b1 u Memory::SetCursor(offset);
0 }: z& q7 C# p; {* k Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);+ O( v; @, X, L% D1 T9 p- q8 x
+ s- A' F7 w7 X7 D offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
6 u7 l' U3 [9 O3 f& Q4 D Memory::SetCursor(offset);- ] W }( V4 k
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);* h) l% @" f& p5 @+ N
8 q9 l# C2 W! ^4 Q' J. J; B //修正关闭按钮0 S, j: i0 a* w2 c# r0 C+ Q1 _9 `
offset = D2Client::GetAddress(0x8BD90);& Q0 G" q( w' Y; Y0 g ~
Memory::SetCursor(offset);
0 H7 R# N& D4 A0 O, ^* l2 \ Memory::ChangeByte(0xA1, 0xE9);* V q4 R7 B. O' V3 Y9 T7 B @
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);0 @ {: F+ [; I# p
5 k2 X* z- b/ ]1 A9 P6 { offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
7 u e8 Z3 f: n# V( ?# W Memory::SetCursor(offset);
; V u8 `) Q0 U& R Z* s6 } Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);9 W% W! Q: O1 L0 ~; ?% L
7 N6 O: r, k% H- o9 B5 j
3 S. }& W' t$ l+ b5 M- h
//以下是细节
, [! k. K; b. G+ l8 ~/ e#define getXGoldCoinFixBtn() RX(0x2d0)+ }# T9 K' E2 S5 f2 Q! h
#define getLGoldCoinFixBtn() 32
7 o" i. W+ H! S: R. `6 z: }#define getYGoldCoinFixBtn() RY(-0x59)* h6 I, v4 O/ }
#define getHGoldCoinFixBtn() 322 q: P- }4 L$ @- a7 V
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())) n- Z) Z) n7 H: Y1 h; m
* v; D& D) ?' ]8 ~- a4 u# _+ M#define getXInvCloseFixBtn() RX(0x3db)7 [6 b" y) H+ O" d" u+ {! i V( v4 k: A
#define getLInvCloseFixBtn() 32
! U4 L! m9 D6 D* Y8 B#define getYInvCloseFixBtn() RY(-0x63)
9 q- E B9 q7 ~, O+ p0 P# {/ E#define getHInvCloseFixBtn() 32
: z% x5 ^2 |2 f0 h#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
3 i6 h0 m( q$ W( m9 L! f' e5 C) i3 C; e
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
9 B) z$ n: U+ h4 a7 Z) { J0 s{% {" a- k8 Q; W8 @' x
DWORD mx = *D2Client::ptMouseX;9 w3 X9 P$ T+ N+ R, t5 l
DWORD my = *D2Client::ptMouseY;
$ i( ]0 Z; {5 y* `7 C! ]$ [9 K6 m if(isOnGoldCoinFixBtn(mx, my))+ w/ a/ u+ Z2 k& w
return TRUE;
9 M, g) }- L" y& l: e1 } return FALSE;) u( ]* G0 c, G3 P" n. b- `, y
}
, K+ _0 \8 b5 F3 b__declspec(naked) void caller_goldcoin()% R* ]' z' |( }" j* Q# e
{" S8 v! E5 O1 R) [2 h& v+ t
__asm
" r! z2 e( t* o {1 _" f; p/ _/ U4 b
push ebx( I# K# f3 B$ Y2 s
mov ecx, esi3 q7 E/ u9 \+ s, i M
mov edx, edi
7 J$ L& m1 q; z. l call m_NewStatShow_goldcoin- h0 C8 }% f( w$ c
pop ebx; f4 p3 u3 n& @' d
pop esi
t$ T/ r/ w: I6 E retn
0 P. f% c. }) K( U; l }
6 E5 J7 \, g% v( I}% X* Z, R; H4 b, g5 Z
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])& w# ~, t7 D; G, @' [' v$ X3 B! I
{
) x, S, P$ B r2 X9 u if (*nXpos > D2Client::ptScreenSize->x / 2)
$ d; W; J! p+ T! ?0 `# W {9 @0 v* J( k% S9 k0 o6 C( _: Z/ T
*nXpos = getXGoldCoinFixBtn();
7 ~8 H5 @* f% `% S4 p* B *nYpos = getYGoldCoinFixBtn();5 d. y$ C) b5 c/ w1 S0 E8 e2 z
}
: d0 x9 b9 b! b0 l}
" r8 A( n8 |& C; y) [) L__declspec(naked) void caller_goldcoinimg()
7 G: X/ Z4 j6 U/ Q ^# \& m{
, W b# D, O# x+ x2 T$ b7 A4 ~ __asm
3 }' G) A& G( X6 c' r( U9 X* M {
# V' x @, G6 i; q. P) N5 L PUSHAD2 ?8 W' l X: a/ E0 n( _6 u, v. I
lea eax, dword ptr ss : [esp + 0x38]. g; w5 h5 `6 O& L/ ]3 E
push eax
y7 y, L; e2 ~4 ]! }& {, Q push dword ptr ss : [esp + 0x38]) k) M( [8 d- F8 n3 }
push dword ptr ss : [esp + 0x38]
& P- O4 A" ?; [" y$ m0 B3 w lea eax, dword ptr ss : [esp + 0x38]
/ Y% W7 x6 ]5 H push eax
+ g5 F& v, Z+ G& t lea eax, dword ptr ss : [esp + 0x38]3 `9 P0 m5 p) c, L( U
push eax
3 V/ W! j7 h) l. \6 L& Q+ G0 b) q push dword ptr ss : [esp + 0x38]
* w% o' k+ P. O( Q/ O. J$ T call m_NewStatShow_goldcoinimg
" o J3 k9 h! @/ [. S! L: n POPAD
% d% \7 z+ I6 I6 d JMP D2Gfx::D2DrawImage! x* Z0 B' c1 e
}
4 z0 f% `, f5 E, w/ N( _% O9 Y}, F% x0 _8 l3 o2 D- x
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
4 X1 ` _+ @* W& ~) L8 G{
$ c/ s ^5 i4 |6 D9 \, l& W3 X if (x > D2Client::ptScreenSize->x / 2), Q& V7 v) ^$ `& d4 _5 s; o
{
0 @4 C. m r, G) q( d. Y: C9 N *y = getYGoldCoinFixBtn();
# ?' Q' W0 I3 L$ p, J' I- K. [ return getXGoldCoinFixBtn() + 32;
$ o% n9 c8 n- q! D5 j0 ~" o8 H' s }
& T& b' k! d% @9 v return x;1 c6 Z2 B# F. r }( v) R
}' g, I6 J; k; O: [( _
__declspec(naked) void caller_goldcointext()* m4 [# [0 W& Z; N# @
{
% E' x( S. F4 v$ M5 _ o# { __asm, F2 l/ H* m( Y
{- {8 o" z& X5 w6 g6 s$ ~
PUSH ECX2 I8 k6 t: N, {: ?; a
PUSH EDI
# \4 l1 Q9 R. r4 I! a& j0 [ PUSH ESI
& ?* O8 b9 V5 ]9 ?7 {/ u3 F: H6 h PUSH EAX8 B/ I( Q# N" ]
MOV ECX, EDX
% h8 l$ Q+ A3 ^, F LEA EDX,[ESP+0X4+0X10]4 a6 T) l8 c0 a, k* [0 |% u
CALL m_NewStatShow_goldcointext0 z+ G: o4 z0 m0 Z! I _% I! z
MOV EDX,EAX# g1 R/ k; Q" l6 i% t
POP EAX
! z. Q9 Z% l8 h POP ESI
( ^6 e/ b- D" v4 s8 A$ P/ }/ d POP EDI/ E+ y% Y5 _+ h0 x0 w( O+ O
POP ECX& t6 _' M T1 Y- Q
jmp D2Win::D2PrintString;1 \( z/ T4 u2 Q/ W( I( J
}
& a, `9 O& N* ]8 U$ Q' B}
# f9 W" u! U$ p
0 U1 d; k ]+ A/ ~" I3 D" vBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)+ z/ ]0 X. ~8 l9 {# ]* S4 G9 S; h. U
{
9 y. P% Y# v J- X9 f3 n DWORD mx = *D2Client::ptMouseX;& }5 \% e3 f) q( f/ M+ ]
DWORD my = *D2Client::ptMouseY;
8 {' R+ h& S: s! t' m( l T if (isOnInvCloseFixBtn(mx, my))2 S2 u7 v! L* y3 W( e
return TRUE;
, o! }4 [ b5 ^8 m6 X return FALSE;6 u% S7 L% t. x1 Q
}/ m% b4 n2 i/ s# D+ s c. p/ i
__declspec(naked) void caller_close()5 d4 s# T7 q# e5 r
{5 i1 c# Q; z, ^+ d# `1 j) T) p: w
__asm
# h6 Z4 ^. m+ P. h {. G7 V3 s2 S Y* I A e
PUSH ESI
7 {; j" L0 E; R& @/ f push ebx9 x9 O4 R8 O) @; n2 o" }
call m_NewStatShow_close0 n/ N( E3 F. N
pop ebx% A' e3 h7 I0 X. g7 V
pop esi2 S0 a. t, g, i3 k% Z) U8 v* j
retn( r% V4 Y% g( n+ z. x
}; Q, N* G$ S- z4 q4 m
}+ G. r6 d, ~: @. L" {
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
" s( x, ~) q# f4 x: I, }6 V{
; i) p. k5 @( G6 v1 w; | *nXpos = getXInvCloseFixBtn();- c6 P( d0 _" C5 f8 J7 o) K# A
*nYpos = getYInvCloseFixBtn();
6 L1 @. z4 f, S% b8 K}, a( P9 ~) G+ T
__declspec(naked) void caller_closeimg()( D. b W0 f0 V" Q$ u; J
{
, Z, s' Z& {2 h% Y0 v& | __asm& A/ B) G3 O0 {. A# \
{. E- I. t1 \' `
PUSHAD
_9 q2 l, k! G* S lea eax, dword ptr ss : [esp + 0x38]( x, |/ K: V1 V: s; G% ^4 }& x
push eax
9 Q P( D O* P5 K# b, A push dword ptr ss : [esp + 0x38]
, @) r; {, ^- H- j- s9 a( W push dword ptr ss : [esp + 0x38]
2 {# |/ {/ o# E" ]5 u lea eax, dword ptr ss : [esp + 0x38]% p0 F; R; y+ \9 b7 S L" S( w
push eax( Q- E7 y1 J, P# r3 J x& @
lea eax, dword ptr ss : [esp + 0x38]
& ^6 |4 I# o/ X x+ | push eax
1 H1 Y! c" w# K. l+ [ push dword ptr ss : [esp + 0x38]& l, P+ W$ E* E
call m_NewStatShow_closeimg
8 V$ ~- `; X% f: ]. ? POPAD
2 V* d3 K5 o( r9 O5 ~/ `+ H# M7 L JMP D2Gfx::D2DrawImage
; {; n1 Y( p' k! q X$ O }6 a4 Q/ F1 Z5 B+ X, `+ u% r
}% x4 d, I. H& g9 e
& {9 C5 x; t& L2 ~' E+ O+ G
, h9 V; _7 d$ L8 G0 ^; s) l' \ |
|