|
|
转载& ]2 u" r; k+ Q6 ]0 I# u
BY SJ
3 w- u* ]9 H* h0 }6 A: u% Q首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
]4 u; {0 k( C h% a4 W) } Y- S% f# B7 t, H3 @
D2Gfx::D2DrawImage-100412 ?; k" b" I5 P4 G
1、修复技能的背景(不需要可以不要)
/ V# |+ c3 m: I; E* `offset = D2Client::GetAddress(0x77AA8);
2 u/ B: O; f3 V7 i( {Memory::SetCursor(offset);1 f: y, J0 r0 s& P' r# T
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);- B6 ]) C4 l, _; O( U
7 Y+ S( {: q" @6 E; \$ H, Y1 mvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
+ D" X7 ^+ n" s" q{# P/ f' D4 g6 Q! d# m6 h5 R
//Init data for print image
( D% b$ O. m# r; m sDrawImageInfo data;
, u7 ]" ~$ q6 Q- |& H$ Z ZeroMemory(&data, sizeof(data));
- L5 b/ B. D* a( M
. O& v+ B5 Y' O( a" f5 M+ _ //print background
- q, p2 o4 U4 }$ ]+ K setImage(&data, spellBackgroundImages);
5 W/ H# q, G! D. B% j8 }( i+ L setFrame(&data, 0);
- T6 q* e* \% P6 s: h+ p int fixx = 511;
9 j9 B2 R" }( K! P( V1 r int fixy = 9;- q9 @8 q7 v/ |
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
0 ~ ~5 Q: ^0 m* s$ O% X7 ~0 b$ G2 K setFrame(&data, 1);
' J$ O+ k- f K5 S# b1 H9 L* U D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256! A# _ V& A$ N" D; H
setFrame(&data, 2);$ |' q- Y; c4 _! `
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432, C8 z$ b& d1 O' b% n
setFrame(&data, 3);1 S3 h0 _+ s3 y% y. U9 i
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);# j* q! A9 A! v3 R
}9 u, M( w( p$ x7 l) c3 d- O" Y
__declspec(naked) void caller_SpellBackGroundFix()
8 Y0 K. }" [/ A7 W7 U. k{
4 j( J& Z3 U& v8 k/ ^) h' q( J __asm; g& U8 u } V, F3 q% u# T& y$ v
{$ s4 J, R, }% g. S* v
PUSHAD
E0 _% e5 I# L3 B lea eax, dword ptr ss : [esp + 0x38]
" t, A0 S) O; O4 Z& V0 s9 C push eax
: t1 d9 p5 U$ i+ P+ D* ] {; w4 f push dword ptr ss : [esp + 0x38]
* T: f' v" a' K0 s2 y5 K push dword ptr ss : [esp + 0x38]
. I5 K9 |* V/ |* J lea eax, dword ptr ss : [esp + 0x38]* a' g9 I( y, K' O
push eax0 G0 T+ n: a1 v# b9 D
lea eax, dword ptr ss : [esp + 0x38]
1 i, ?6 h2 m4 L c$ f# j8 B push eax
' H% Q, P8 W c; C; s push dword ptr ss : [esp + 0x38]
$ p2 H* i7 d$ Z) E call m_NewStatShow_SpellBackGroundFix
' p+ K9 k3 K o; s+ R POPAD
; `& d# M! `* ]" ~* W JMP D2Gfx::D2DrawImage' E, a/ C; b! N; ^+ W9 e3 F
}& r4 O& {1 g7 O: T$ m) Z, M0 U
}) u$ P/ a! f9 T% z; g( ?% x
' u V5 E: l( T$ @- E
2、我们如法炮制小站的背景
8 p( T. P2 D( S l* V5 L3 ?; |' v
4 U. g' o6 \2 H1 qoffset = D2Client::GetAddress(0xAB010);4 B; |5 S3 |3 |& D; v
Memory::SetCursor(offset);
$ ^, f% ~# W, y9 K5 r- u) b0 R! ~$ p8 XMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
- l8 Z1 b; C' G& p
" M1 M/ C1 j) C# d6 b5 gvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
1 X- O h; N8 a4 w3 P d! S{
) Y) a7 J' [/ t7 _ x* g- x9 { //Init data for print image
9 c! |" }: w& d% x3 K6 E/ N sDrawImageInfo data;1 s L- l5 N& D0 Z8 z/ p& U
ZeroMemory(&data, sizeof(data));; B) B, I9 }( t4 d" Q
! l; s- }3 w/ V) a" z1 w //print background/ j: E$ k7 W! Q% i) f
setImage(&data, waypointBackgroundImages);4 a; V# d4 H. {4 m6 o, u* B
setFrame(&data, 0);6 ^, Y6 y. _# H+ s) o
int fixx = 0;4 ?: R, T6 n1 { \$ Y% b8 h
int fixy = 9;
% s9 h. T9 G# k$ G7 O9 V D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
9 a; m$ y c0 }+ | setFrame(&data, 1);
- e1 D: L. G8 O6 U* h D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
) v! r, x8 t2 m- Z. U setFrame(&data, 2);
2 L2 \5 P( s; ^% u: T g% _( p7 h D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432* f! M9 i" h7 o/ }
setFrame(&data, 3);% D1 k8 k6 J5 V* m! p. C
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
" q5 @' U f; r4 Z* r: l# {& |) r$ e1 B. x
}
8 u: I0 F3 M3 {__declspec(naked) void caller_WayPointBackGroundFix()
1 B3 z G) e+ `9 t{6 D9 }! h8 l2 @ P
__asm
- w$ X- s4 K! x) r4 [2 a {" v e% H% v' ~- i- E
PUSHAD- g( P Q1 J5 s
lea eax, dword ptr ss : [esp + 0x38]+ x9 T; v @& N9 y( x6 {
push eax$ o* W4 L" x' C- g c% ~' @0 E
push dword ptr ss : [esp + 0x38]
( O2 k' H2 s* N. N push dword ptr ss : [esp + 0x38]
M. ^9 k J! x lea eax, dword ptr ss : [esp + 0x38]2 Q" V- w5 l& e" N* _
push eax
6 r- {- o- W& _ lea eax, dword ptr ss : [esp + 0x38]
* |* h+ D. w" ], q7 S9 V push eax. T9 q/ _+ y6 `5 I9 V# o
push dword ptr ss : [esp + 0x38]
( Z& |% a& v# r" G call m_NewStatShow_WayPointBackGroundFix" ?, m0 |1 @5 _ Y, X* w
POPAD
- r- f2 I* B7 u; k; R2 S JMP D2Gfx::D2DrawImage
1 M6 S1 e A7 Z! I }& O3 B/ v$ Y. ~8 P0 m- x0 i8 }1 }7 d
}
( Y: p! a. q" s& E$ h F6 f: A% s, C( t( z4 E1 T
3、以下可以搞16*16超级箱子-腾出我们需要的边缘% y1 _0 G7 K! J( u( W
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)1 V7 p+ P) h! B- f# [5 V
{
7 A8 C* s5 N& a9 u class D2MultiRes : public Library<D2MultiRes>2 m7 _1 M0 k" v; B8 u% j# l
{# X4 X% z9 T! }0 e8 ^
public:
% L5 d! \$ O- M* S2 L& A static void Init()" K5 e/ F& O3 H- r0 F7 k! n
{# R& o5 ~2 q( g1 y9 U: u* d
Name = "D2MultiRes.dll";1 N8 l1 P, u/ L0 S" A
Offset = LoadDiabloLibrary();$ p& m; M" B9 \6 X
}
! x6 A: w* ^% O; c, ?: w& A `8 b };
8 m3 }2 y# X( K/ [! d D2MultiRes::Init();
. U! l- m" [ C, c D2MultiRes::HookLibrary();8 \% }! B4 B9 p- A# _( R& U; A0 R
/ u0 q' [3 |# _! p8 ]5 x
" k @: j' T9 [( } MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
! ~ H" n/ Z! T* z- p2 [ Memory::SetCursor(MiscFunctionsOffset);
* w4 f+ l2 ?2 C$ i1 l Memory::ChangeDword(0x1b0, 0x200);$ n- g" B- Y/ Z- f
% X+ Y9 Z' V$ @" S2 ?* S' p
3 E+ @3 ^( u2 y
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
/ ^( X& o3 l1 g. S( b9 s Memory::SetCursor(MiscFunctionsOffset);
4 S o$ G+ g$ E Memory::ChangeDword(0x140, 0x200);" r: A- a. n6 x/ v8 R0 p7 I
1 `* ?- `# B- b% J
: g8 W3 R( T" V2 b MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);4 [( @7 \/ N8 H, z( a8 W, q# m
Memory::SetCursor(MiscFunctionsOffset);4 T& h0 [' }( I. W1 t* m
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块: S( B& Q J. u" ?5 j3 ~
( h; T! ~! o1 e1 ] MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);& A# G- W1 ^' a r8 R6 d
Memory::SetCursor(MiscFunctionsOffset);
$ H7 | \8 L) @5 F Memory::ChangeDword(0x200,0x299);//下边缘 299最大
- P/ s9 B6 w1 ]% i5 U, m T
' E: ~2 R* j; Y+ V MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
0 ~9 ^9 I' A* f( l6 b ^4 |% O: S Memory::SetCursor(MiscFunctionsOffset);; e( K; i+ v, F6 R7 s' |
Memory::ChangeDword(-0x280, -0x400);//这个不要动; B, g( _7 f8 K$ C* }! h& t
}
1 f P2 ^# n# A0 {8 V& |, F3 H
9 p# E( D, Y9 B$ N, i+ t9 _/ P4、快完成了,是不是发现金币啥的位置不对??2 J9 Q5 t2 _0 D9 y' e! ^3 r
0 x. M$ Z* z+ Z! Q% Q: w, D//这里修正我们的装备栏
/ a5 e, l; D4 t" J5 x offset = D2Client::GetAddress(0x99B6C);
! E( z& P7 `! d6 N, J Memory::SetCursor(offset);5 U1 l M! ^) {. i
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix); e( b8 E9 a! o$ I, ^! S2 R
+ T! ]6 M, E6 w! j% K offset = D2Client::GetAddress(0x99BA7);
5 w: R/ H3 a- x- @: @- } U, V/ A, e Z Memory::SetCursor(offset);8 a$ K* @ f' K2 p' ?3 E9 g
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);2 B7 J ]# k% e! l/ X" i! j* C. r& C
% `. i: m2 u) a0 r
offset = D2Client::GetAddress(0x99BE2);
0 ~& L& k1 c6 b" p Memory::SetCursor(offset);
" w8 l( L, \# |( U5 ? Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
6 Y' L' j* ^2 i# M/ k6 Q4 ~, _* }& |1 ]
offset = D2Client::GetAddress(0x99C1C);
' m5 |, s H2 V8 t8 O Memory::SetCursor(offset);# |6 _. c- e/ k. q: X
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);7 ^3 Q* p7 i7 l0 y. w- i6 @
& V: `2 f& c7 r1 r7 T! o //取消两个popup,偷偷懒不过分' n5 y( w6 A/ d+ n* E# L
offset = D2Client::GetAddress(0x9386d);7 l" s; _9 x' _1 O; ^- X a
Memory::SetCursor(offset);
; \9 A' R7 B1 _" j0 ]: S6 ?2 l1 W1 b Memory::ChangeByte(0x8b, 0x33);
$ h- B. R2 k" e: j) v Memory::ChangeByte(0xc8, 0xC9);. Y; ^6 D. t) Q2 }) r7 W& a9 K
offset = D2Client::GetAddress(0x9390b);1 [! c( D6 k7 _+ j4 J. M$ P
Memory::SetCursor(offset);! v" T) ?5 n, \4 m
Memory::ChangeByte(0x8b, 0x33);) t& x1 F7 i* C# E
Memory::ChangeByte(0xc8, 0xC9);2 k( n: j! V9 l, [
/ g. g6 E* z8 i) n) s/ y
//修正提取金币7 l8 u" f7 F9 R \: ?. @( P/ M
offset = D2Client::GetAddress(0x8D3E5);4 O3 H3 ]% [" F, r$ ~( R
Memory::SetCursor(offset);
( M' i2 O8 o3 Y6 c& X# D' P Memory::ChangeByte(0xA1, 0xE9);
' S/ D3 W" T7 b% I8 v; J; C Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);; F$ E! B: I4 R _( W
8 c2 |) h4 ~/ x0 m offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);: b) E5 f! m: ^' c
Memory::SetCursor(offset);
( C7 ^. @) R' E' O1 v) n! @4 \2 N* x: s Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);! b, {6 u. w! T- P& @* C0 I
6 f& p& ~* ]5 ~/ n- X6 E offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
) m. X/ s4 g& k4 E5 ~ Memory::SetCursor(offset);
; Y, W( K2 ]1 {/ I8 {5 m3 e Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
+ R- e2 n, B4 I7 [5 i. {. O& U
, `9 c* W7 c0 w //修正关闭按钮$ Z' ?% `+ p$ o/ U
offset = D2Client::GetAddress(0x8BD90);1 x: A$ z [8 q4 `. e5 X
Memory::SetCursor(offset);) P5 B/ {$ \* w
Memory::ChangeByte(0xA1, 0xE9);- a7 k0 J7 F# W# i
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
2 V) M# a1 L' g2 s* X3 Z- E6 m! `* V' ^. l& C' c
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);, R8 w3 m9 t# U' T* f; \4 |
Memory::SetCursor(offset);
3 U! d: e. e$ N! p" i Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
/ S D1 Y: f0 o8 r
! M. n0 j3 b# u) }9 J
8 M( T& t5 }4 Q$ W, \/ n! @) U//以下是细节1 C3 Z, ~3 E5 N4 J
#define getXGoldCoinFixBtn() RX(0x2d0)
! k5 ~, `2 C$ n/ `! i/ g/ U#define getLGoldCoinFixBtn() 328 Z7 B4 H; d0 o% c% [8 k9 U
#define getYGoldCoinFixBtn() RY(-0x59)
7 z2 T. B5 k1 D# E1 A#define getHGoldCoinFixBtn() 32
2 r2 y2 p7 C+ X" x x I4 z#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
; r) I: @1 [# i! D% a: k# |" i2 O1 q1 N/ G- ^8 F
#define getXInvCloseFixBtn() RX(0x3db)
6 J5 B1 D7 D) @1 c3 P7 m7 s: M#define getLInvCloseFixBtn() 32: P) P# U6 m$ i( l
#define getYInvCloseFixBtn() RY(-0x63)
* M/ G& i; o6 j* q4 U" q& d4 `! p#define getHInvCloseFixBtn() 32
& v9 ]4 Q' N1 J- D2 A0 |#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
W6 g/ y" S' q7 ?
9 X, A @1 V4 oBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)$ G3 _6 ~- I1 y& [" Y! K$ @+ Y3 q& ~
{* ?& _; w, }" i3 A, N
DWORD mx = *D2Client::ptMouseX;
2 f) ~+ Q! g7 ?& G DWORD my = *D2Client::ptMouseY; E) h9 L5 \4 w; P% `. k
if(isOnGoldCoinFixBtn(mx, my))
% k! q0 v0 L# w8 i2 E8 D; b return TRUE;7 U, D9 [: w7 S0 K, p2 o2 _
return FALSE;, n) t. k" J$ Q6 D2 |: r% x7 h) s3 c
}2 D% t. U' I0 B% U
__declspec(naked) void caller_goldcoin(): t3 t9 n0 W, r6 W
{
f8 u3 S M+ D% i! L __asm* Q# E8 `& w0 |; P
{5 M K5 D& G6 e* X ]/ ?6 R
push ebx
- D7 \6 R, h; l) v mov ecx, esi8 y5 p* }& `1 q" j3 O- @
mov edx, edi
, z0 g2 T+ C* t6 O" Q: T0 A4 h/ K" A call m_NewStatShow_goldcoin9 c/ x& _& i% k: H
pop ebx
7 } z" ?/ l' J0 G4 o4 F4 j9 _2 ~ pop esi
; Y4 D+ g+ T9 ]( H- D8 o6 N q retn, `% s" g+ v- ~6 a& o- \
}. d# F" P( I: g
}
1 i$ K8 O% ?- t& |void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
3 z4 P8 ]' V, d7 a+ W) B% `5 i{
w7 ^5 W' H; W# i2 h$ X5 w. c! x if (*nXpos > D2Client::ptScreenSize->x / 2)
2 e9 h5 }/ a* E) v {
- _$ u/ r& l- B *nXpos = getXGoldCoinFixBtn();- i7 S. T* ]# r9 K' x5 j2 J
*nYpos = getYGoldCoinFixBtn();; }( f4 T* F7 J5 @
}
( M" j: j5 |4 ^2 B: G+ H; e}
" p5 B: l, V; Y1 E8 s ~__declspec(naked) void caller_goldcoinimg()- u7 e) y: e2 g& i
{
6 P# X, E) R" ]6 _- a" v __asm
3 B/ h, ]4 f/ A. N {
) c$ N) K# [2 y: c' }) ~, p8 j1 A PUSHAD
2 z( }, z/ D$ k) U lea eax, dword ptr ss : [esp + 0x38] j7 J% o) c/ m/ [$ w
push eax$ e v2 m, }/ Y7 X$ A. y
push dword ptr ss : [esp + 0x38]
% z5 x- |/ A% e' C, |7 c% D push dword ptr ss : [esp + 0x38]1 s# M9 S3 \( D# _/ O: H
lea eax, dword ptr ss : [esp + 0x38]
9 B9 b5 r! ]4 H/ A0 W7 _ push eax
& y5 [2 V0 A/ C+ V& O% |+ m lea eax, dword ptr ss : [esp + 0x38]
O k" {5 a$ n6 f8 _* a/ G% U push eax5 k0 s- M( ] `. G, n6 u5 Z0 R
push dword ptr ss : [esp + 0x38]9 v5 z+ Z/ V( o+ ?3 P
call m_NewStatShow_goldcoinimg
: X0 @8 J4 ?2 i1 N1 [* Y- d POPAD
& D# ]8 a( l( \. }" Z- c JMP D2Gfx::D2DrawImage. V# c' r5 @/ ?
}; U, F3 h- T' d: ^1 o3 Z+ P s
}5 X3 {# I, w0 C9 F/ v! c
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标6 g5 g+ T& a' C# F
{
! c; ~1 Y0 ~% t! j* p% t if (x > D2Client::ptScreenSize->x / 2)
7 j0 _. C" n% L$ l$ ^ {
4 L/ ?* i8 L1 |. b! Q3 l *y = getYGoldCoinFixBtn();
. X+ F m9 G$ `8 e return getXGoldCoinFixBtn() + 32;
% y* b) Y4 W% W9 z }
B- _" u6 w- L3 D return x;
) G# `, E- [. H}7 h$ v; B) f- x
__declspec(naked) void caller_goldcointext()3 R8 o4 w6 d Z" Q A: Y- r' P
{1 h# f6 j% u3 Q) T @
__asm
7 j1 L/ H0 k' L7 r# H. X1 f {" R/ I' d, ]1 ]
PUSH ECX! N, v# m: o4 `+ n& E8 r2 a5 m8 u
PUSH EDI
( Q9 G/ H( t4 G7 M PUSH ESI
' I. x4 e& m* R1 B. X PUSH EAX; Q8 R( S- n+ G# I% I/ G5 @( b
MOV ECX, EDX% T7 g4 k0 j0 H8 r& {6 t7 v1 s
LEA EDX,[ESP+0X4+0X10]+ B$ h+ e6 k G0 w( ?" ^# \. x
CALL m_NewStatShow_goldcointext7 W( n0 l, F+ K! c9 \
MOV EDX,EAX. q: D" |8 }# S' A* F
POP EAX9 P# K8 b; O$ L) t6 ~/ X
POP ESI+ u+ t' D; K! D2 D9 t6 X: a6 a
POP EDI& |9 r( @, e* x: F- O, |
POP ECX0 g6 h8 H3 B; B/ @- ^
jmp D2Win::D2PrintString;
' h; D, b& c% ~0 c) k9 X4 H }
" i( e# k$ `; k$ e' ^}
; t/ y. [5 Y6 G1 v4 v5 E* e# A; Y8 \' `/ F5 h# p4 K) y# `) F
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
; a/ B" I2 @, k0 }# N2 b R* y{6 T0 ^" W8 m" s5 y, K0 t
DWORD mx = *D2Client::ptMouseX;
- k% O" @; W: G4 { DWORD my = *D2Client::ptMouseY;. s ~7 W- x* k! x
if (isOnInvCloseFixBtn(mx, my))3 a0 O% |# ?0 _! r$ V, b, p# c
return TRUE;
7 p( f3 H6 A9 G" D# [8 r& x3 D8 a return FALSE;
- d: N0 W4 b' x' ?}7 k! p; x% R' Z. |( c- x8 C" A
__declspec(naked) void caller_close()' A# w; Z( D _2 Q/ v/ R& e. Q0 B
{
8 o0 l% ~: a5 b" L4 l" ? V __asm
" A. G% [) P8 ?; u2 v! A+ ], f# C {
& S. e( A+ X. V; s" C PUSH ESI+ x7 F9 H% T g
push ebx( Z+ C) q6 u1 y: f0 v
call m_NewStatShow_close) I2 U3 {$ y# _8 ~: O7 p2 k! z# Z
pop ebx$ y/ W3 Z0 `& x7 [
pop esi9 p5 |5 @1 j7 e/ R9 }2 e6 X# r
retn7 x; ~+ J+ S9 p7 F* z
}* v0 Y! N% f" d9 Q5 I' X, I
}
) U+ P. n, u+ \7 |7 Q, tvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
0 T+ @! B" X8 e9 K{
( Z) r2 x; U; ~9 ]2 _9 ^. z* i *nXpos = getXInvCloseFixBtn();
7 T' g; c" U0 f3 m *nYpos = getYInvCloseFixBtn();
2 u: C, k1 U& P}. c6 X8 F4 M4 |( e+ D/ G
__declspec(naked) void caller_closeimg()( A0 y8 v1 i" |
{
6 G* H, w8 e4 Y( L __asm3 c6 u9 h; q% [& g
{- q' L* m6 K4 O8 o# c5 q
PUSHAD1 U/ _0 Q5 x6 q' N& n, ^% _6 Q
lea eax, dword ptr ss : [esp + 0x38]
9 D+ c. P+ X* s8 q3 ` push eax; K+ }4 m9 F, o3 Y$ B& D c
push dword ptr ss : [esp + 0x38]/ P, d: W# c6 w( x8 l( M2 E" y
push dword ptr ss : [esp + 0x38], V5 j' c2 @3 q" b4 T4 Q
lea eax, dword ptr ss : [esp + 0x38]
3 D0 u( t; d5 w3 [ push eax
+ L, u: a9 O% X7 w1 P lea eax, dword ptr ss : [esp + 0x38]
, E% O& N/ O1 X push eax# P h* S) u c$ a- f$ z& J
push dword ptr ss : [esp + 0x38]5 ]* a5 q% U# J2 U+ A
call m_NewStatShow_closeimg
" L# N l0 j& ^, c POPAD! O6 R: u' `: Z7 i1 S1 c
JMP D2Gfx::D2DrawImage7 L' B8 u5 ?' r; A. H
}
) y) |. [ `; b, d1 G+ S9 v}
8 m$ u% q+ y- C ]! k) ^9 C% O" [8 J5 t8 q
& W& C/ c" U. g5 _; O+ X' Z6 O |
|