|
|
转载
$ |$ y3 ^8 ]7 S W% DBY SJ
# {3 y+ V. J* ~ I' B# D首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)/ s. G5 i' q- \; C7 G$ M
% |5 P9 _- C% z; f$ Z
D2Gfx::D2DrawImage-10041" [. j7 i0 y' V/ m, _' S1 A
1、修复技能的背景(不需要可以不要)
/ V" t# x8 X/ E2 {2 I1 }& e/ `offset = D2Client::GetAddress(0x77AA8);, |* E2 j9 v# R, r% S
Memory::SetCursor(offset);
5 m! L. p( S4 k; ^* k( n' q1 jMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix); Y- n. r7 b% y$ M- v
9 M& i7 K3 Q+ V0 K: Y: W
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]); u- R* o1 B( G* e
{
9 z: z# M2 F5 ^ R' e2 m; K- h //Init data for print image# N8 V/ ]% c- K
sDrawImageInfo data;) n: _' ?- N2 \7 O8 K9 H! P3 p
ZeroMemory(&data, sizeof(data));7 O: H0 N7 R: f+ T8 Q( P2 c' c1 R
* T, F+ T$ r5 Z. w, ^- G
//print background
- i9 S; A4 n+ x5 i6 y setImage(&data, spellBackgroundImages);
/ A8 S4 D$ L) j/ ] setFrame(&data, 0);
) v$ f; q5 {; K, d: K5 X4 [ int fixx = 511;
! Z7 a! V5 y9 s5 o7 H) L3 o! R int fixy = 9;
4 M( |1 k6 I9 p$ A0 m8 B D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
J! B g- p( r3 ^ setFrame(&data, 1);7 U* N0 V. T. \9 }4 @
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2562 R2 G: a) H, d3 J
setFrame(&data, 2);
7 N# n9 ~9 n; v% z" s2 C! J D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
5 M H# q1 w* G1 c4 N, F' I setFrame(&data, 3);
2 S: x) z# d3 I6 x% K7 \ D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
+ M4 t) C( ~. w6 d}
- Q3 s: {- ~" J. u( q3 n__declspec(naked) void caller_SpellBackGroundFix()3 x9 v! C7 f: ~" B) A
{: m0 D8 I( z* r
__asm
2 n9 M1 N* J% g: j2 b' c+ \. e3 K {1 {; U% f: H9 J% q' `
PUSHAD
% |2 Y+ K" D: C3 t5 l" h" x lea eax, dword ptr ss : [esp + 0x38]+ t; C% ?+ z' H
push eax
+ K$ A7 X E L push dword ptr ss : [esp + 0x38]) |' i9 u8 `; z, r+ h/ [; G1 S1 r
push dword ptr ss : [esp + 0x38]
, Z* O0 ?/ |1 Q lea eax, dword ptr ss : [esp + 0x38]7 I: }& W& V8 w6 E% P2 Z9 p
push eax* e( Z2 ^* A2 o3 e1 A8 i3 S
lea eax, dword ptr ss : [esp + 0x38]$ n# d; [7 c$ T0 ~9 B. t
push eax0 N* @- W/ T9 `' f/ J. H- g& u
push dword ptr ss : [esp + 0x38]
1 n0 U& ]+ u" p$ F% W$ Z/ x# U2 i" I# R call m_NewStatShow_SpellBackGroundFix" ]2 y' b# [& u; Z+ b
POPAD" t2 b3 v* k! T) J
JMP D2Gfx::D2DrawImage/ O$ a2 f2 H7 o: m7 T5 n
}* ^9 B* e5 G/ z; ]
}8 |0 N: C4 A9 C0 b+ @# F/ x
, s% X5 ~, f( H2、我们如法炮制小站的背景
$ `; U X9 X* v8 ?: n
, h; U. |" g$ D/ }- xoffset = D2Client::GetAddress(0xAB010);
# ]4 p0 d: z' M9 t7 H6 l" u6 B3 RMemory::SetCursor(offset);
/ t, F$ ?! \% n* ^& dMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
) H% s- d3 n9 l4 D- A, \/ c0 S& `/ X& q
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
: m' V! y$ k1 I+ _2 }' I{
6 }1 B- O/ O' r! d //Init data for print image) H5 j( b7 c8 |8 T
sDrawImageInfo data;+ `' ~; t; M% \' @
ZeroMemory(&data, sizeof(data));+ m0 X8 a" M" C
$ U6 N) i9 g+ J. Z //print background6 E3 ]& W: L2 d/ a/ q+ |, H$ z9 z
setImage(&data, waypointBackgroundImages);
0 K: A4 C( T! Y' F setFrame(&data, 0);
. w9 s+ G/ O* z& y: d9 F int fixx = 0;
. |; W7 c* Q2 ]( v- U! t0 }) ` int fixy = 9;
, H. F& j7 o; _- d" ^3 s D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
5 \: n+ S/ e9 E# s* f4 ?( Q" r setFrame(&data, 1);( C% W- }' _( c* L% Z3 o4 C8 D
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256" _! _/ F1 p2 X
setFrame(&data, 2);
( t8 t$ j. B& A3 s. | D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
) u- l o9 D/ f) @: W setFrame(&data, 3);0 ~% ]0 w3 i B7 l
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
: K. u( [" G1 B6 l; H1 \) ~7 z! l0 K
" R \% s+ v0 J" W) Y. }6 g}. `& w9 R& c7 E. U3 g
__declspec(naked) void caller_WayPointBackGroundFix()
) H9 ^" _; H# \+ K{
n$ L$ @0 ^" z* P3 `5 |' u f __asm: F( s- F( Q) I8 g' W
{7 G8 R! F' [2 G |, h
PUSHAD
! C( g* y3 ?* ?8 L lea eax, dword ptr ss : [esp + 0x38]# _1 i5 q+ }; h5 T5 H! @7 P6 p q7 p
push eax
" [, a& G8 }, @0 [( G3 U, h$ z push dword ptr ss : [esp + 0x38]0 O1 w. R c. l4 T
push dword ptr ss : [esp + 0x38]3 E5 \* h( D6 v- d1 l. k- |
lea eax, dword ptr ss : [esp + 0x38]
# d* c8 K$ `& Q, ], o) T push eax
1 W6 `" x, y( r6 S& R; w lea eax, dword ptr ss : [esp + 0x38]
$ i* p+ w5 ~1 N' D7 W' g3 p/ J push eax
* q. R5 l8 |) l( b! O/ c8 j. ` push dword ptr ss : [esp + 0x38]
1 g7 X% X3 W. B+ O# p) X0 P call m_NewStatShow_WayPointBackGroundFix
( s4 f% ~) T) g& q6 k+ D POPAD$ N9 p/ N! y( h* Z7 Q A
JMP D2Gfx::D2DrawImage9 G. f, W( S" n! E$ r' F y
}( B6 r$ E; X3 l2 ?# Q5 j% ^( v9 R
}+ R `4 R: ?# j
, }- e$ M5 w3 l$ s3 J; y6 G6 q
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
$ c( X' H0 j$ s/ ^7 Y0 Y腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
# L+ k5 Q6 T, ^/ f7 I; b3 D {$ X- a/ _( I. \. w" I. K
class D2MultiRes : public Library<D2MultiRes>, U$ d; A( t A" X/ U* U
{- I/ L, \8 M W5 E! o
public:* t; |$ p) y8 f# X. a# ]
static void Init()! Y' _+ a6 \" ^0 A
{: @1 A+ _7 q7 o. h9 r- B
Name = "D2MultiRes.dll";' x! p- a9 }+ a; {: I: T$ ]$ b
Offset = LoadDiabloLibrary();, \( [; B& C& p& }) A. z& ?
}
/ `( H5 e( d9 o/ s };
- Y) f. V6 X4 m) C D2MultiRes::Init();
$ l+ U* @, `$ O, D$ X7 w1 p D2MultiRes::HookLibrary();: u( x& q5 b/ ^
* U) m3 p' A4 ~2 K
/ P" x: B% L3 X% L) x MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);/ z* x- q$ y. k, Z* Q3 P% I
Memory::SetCursor(MiscFunctionsOffset);# z& q, R3 H. G7 z
Memory::ChangeDword(0x1b0, 0x200);5 n/ T. N+ F- i7 X3 `7 |. U* b
9 S6 L" r, i% E' R I1 H2 A- l
P' y4 R. V# @5 R4 b: D, s MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);- f2 a. h- e8 T6 k0 c+ C0 g
Memory::SetCursor(MiscFunctionsOffset);
4 v4 E/ o2 m7 m/ V0 Z7 h6 F Memory::ChangeDword(0x140, 0x200);
0 q! Z+ E6 a, I0 A+ ^2 p
- W5 j2 W: _) J$ q6 ]" ~1 w, M# T. B7 ?) d$ m2 c8 D6 I( S
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
( D* f: e1 V8 c% g! Y Memory::SetCursor(MiscFunctionsOffset);( n* H2 Q5 [* J8 J1 B) e$ X; q
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
9 O. D, K7 ^& I5 j* f6 M$ _7 Q/ p5 A L( p
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
5 p6 ]% W9 p0 F N Memory::SetCursor(MiscFunctionsOffset);+ i' v( L* y" u2 O
Memory::ChangeDword(0x200,0x299);//下边缘 299最大8 F3 v, o% L/ h6 m$ j
q8 V, H9 d* r7 ^* l
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
: Q; q( A" n0 a" b5 S' a Memory::SetCursor(MiscFunctionsOffset);- F# g2 g }) T
Memory::ChangeDword(-0x280, -0x400);//这个不要动 U6 _: d) @/ N# c
}! |$ R9 l* Z' L' O3 X) I& N
! ~& B3 _3 u6 `8 C
4、快完成了,是不是发现金币啥的位置不对??
" Q5 E3 G+ N7 ]' I& B( H
3 Q2 x) j3 K" g: c8 g f9 u, Z% ^//这里修正我们的装备栏" D8 R" A: G% s) R
offset = D2Client::GetAddress(0x99B6C);
( K$ A: Q# e1 X Memory::SetCursor(offset);! [, y& `6 P) d9 r6 |+ u
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);( L; |* r, D, Y. G
- L% f+ ^4 N/ G5 k( X! \/ O- I offset = D2Client::GetAddress(0x99BA7);
, U" E$ A# M1 B0 g8 o7 c3 A1 G Memory::SetCursor(offset);
( U' |4 {5 s0 b Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);( X% A; p( d3 Q
8 y9 \% g& D' d4 E
offset = D2Client::GetAddress(0x99BE2);& f+ n3 d: Q- ^0 r j% [% X
Memory::SetCursor(offset);9 ], d* h& D' b* D& i
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
9 R$ a q- E" X- G
0 o9 ~$ c# L$ D! m* g5 m7 ] offset = D2Client::GetAddress(0x99C1C);
2 T2 J' c" y! z9 l2 @ Memory::SetCursor(offset);9 J0 d; e: }* r
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);9 }$ X, @, S: S' y
4 n, h5 K; \4 t$ B/ s" y
//取消两个popup,偷偷懒不过分
u1 z# q6 U l8 W9 r% f0 R0 q offset = D2Client::GetAddress(0x9386d);4 [! _( j- s" }
Memory::SetCursor(offset);
$ K4 ?) q9 ~- W; ^: B Memory::ChangeByte(0x8b, 0x33);
4 K; a7 L$ W9 v4 x# o: ?+ n# ]4 k Memory::ChangeByte(0xc8, 0xC9);
5 j: T. x, Q. M+ R offset = D2Client::GetAddress(0x9390b);. A( }" ^% j$ E+ H
Memory::SetCursor(offset);
0 k* _/ i+ C; E2 _+ k Memory::ChangeByte(0x8b, 0x33);
0 { K2 ?4 _$ t0 I/ a2 V, K Memory::ChangeByte(0xc8, 0xC9);( r" K6 B: \, a6 H: @
/ A9 P3 Z; m' w2 n //修正提取金币
+ \8 A7 X: ^( I9 \+ g s$ u$ B offset = D2Client::GetAddress(0x8D3E5);" C1 b" I/ _+ ~- ^- _& A% \
Memory::SetCursor(offset);
. e( K) y! j1 N" o$ w) m Memory::ChangeByte(0xA1, 0xE9);
& O# d1 F; q" l! k" e+ y Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
% h: `0 |" V3 K# ^! i2 L' [9 J6 K/ a& ?# C
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);$ t$ e7 a, I% y% P
Memory::SetCursor(offset);" k5 l& {7 A4 C
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
& M) R" X' R- Z4 q! `: q
: k- L, s/ n/ p offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);/ \; g' O5 v& y- K7 V8 t0 T; J6 ]
Memory::SetCursor(offset);
' {) ^' p9 T F6 k) p7 L Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);% g/ ]$ q% z; }# m
+ I/ @( M- ?, c( p
//修正关闭按钮% t" K* b# m4 A8 I9 o; ]/ H
offset = D2Client::GetAddress(0x8BD90);
4 ~$ f' X# T, B- L Memory::SetCursor(offset);
1 b" z% O/ G+ ~6 b; a0 f% N Memory::ChangeByte(0xA1, 0xE9);
. I& T3 b ?( ?% w7 W Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
" ?3 H" ]' ^5 V$ f( D4 @
1 W1 o4 B2 z* S2 K$ ? q offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
5 d7 L1 u% |9 I8 r$ X3 w. l Memory::SetCursor(offset);
$ F% d) S' W2 Y( z5 n* Y Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);4 i, o$ [. n6 }0 X! Z
N& m7 r: l/ M. v$ `+ y$ `- s% m0 C
- t/ x3 k* L# m//以下是细节
6 O, O( b I* l. B8 |- W0 D#define getXGoldCoinFixBtn() RX(0x2d0)
& k9 m7 H4 \7 ^4 Z#define getLGoldCoinFixBtn() 324 ^7 f( Z' X7 y T1 w# R# ^
#define getYGoldCoinFixBtn() RY(-0x59)) [3 @6 y3 k& t/ m3 k% i
#define getHGoldCoinFixBtn() 32
+ k8 a' h! } H/ D# o6 w#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
( O& h( W7 s \5 W! c% M! B; a$ p
6 n1 Z7 I7 J4 Q) C. j* `. O#define getXInvCloseFixBtn() RX(0x3db)
- W& O- l; e5 V1 @( Z#define getLInvCloseFixBtn() 32( z! X2 i# J- m; c* m
#define getYInvCloseFixBtn() RY(-0x63), I7 p. s3 a/ J4 v0 J$ A
#define getHInvCloseFixBtn() 32/ e, h. T( `' X& ?
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
6 }( r, O3 w: [1 B4 r* A- B% |* `) L9 M2 f: u0 H
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)* G4 l$ t$ {) \2 l+ J5 W4 q
{
x+ R! J0 Y% X8 ] DWORD mx = *D2Client::ptMouseX;
8 j4 Z( @ K* ?. ?* X1 t DWORD my = *D2Client::ptMouseY;
5 p0 X( E$ t8 S if(isOnGoldCoinFixBtn(mx, my))# Q. C; w0 t( f0 P% ?4 }3 V
return TRUE;! J$ q1 u8 v/ X, q; {5 H2 k5 z
return FALSE;9 A. p- ^) ^/ g2 q2 y. L- u' C0 w5 G
}) \, c! \+ o4 w% n3 Y! u
__declspec(naked) void caller_goldcoin()
- d9 j- F6 t8 Q4 M# e1 Y0 {# }{
- U+ O$ L9 X; l7 h% a4 w) Q1 J __asm' C) Q; k" r$ u. Q$ ~( M
{* o% ]% P# E4 m$ B- f$ M0 h
push ebx
8 E/ V+ l6 q% `3 F9 v mov ecx, esi
- A, u f, z/ `* ^( ^ x mov edx, edi
. Q9 K9 ?3 A" b call m_NewStatShow_goldcoin7 x& ?% K/ ^7 u4 W
pop ebx
9 z' i2 ~0 w- e$ c pop esi
8 z. X& M, o0 {7 p( B, ] retn; S& ~3 b% F! s1 A5 P/ G1 K' _
}
/ F2 g" n: n) K0 q) z8 {" Y}. H: U8 R* z" j6 K4 [0 d
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
. a) u9 L. I' ^! a) Y4 L, w& y{
( p9 n. t; d- U3 {1 p if (*nXpos > D2Client::ptScreenSize->x / 2)
9 I3 k' y8 A: ? {
( V& Z$ ?( g, C2 R' Q7 x9 I2 ^) U/ w *nXpos = getXGoldCoinFixBtn();
$ W- m7 V( t& h0 [% y" j9 M, w *nYpos = getYGoldCoinFixBtn();, Q+ w) o* R- T% y- b" k& _+ y
}
# T3 o9 O- H8 i; t: M _- u2 L! P}
( A% \( }6 b1 @4 Q9 Z- E/ S1 y__declspec(naked) void caller_goldcoinimg()
4 G4 h$ t1 b8 G$ e# Z3 L{2 G" P) M3 O9 G) n6 a
__asm: b' f" l, Y b
{
3 V1 m/ I4 P3 M7 a PUSHAD
' @2 G1 w# P+ H+ _6 f. `4 n6 p9 [- Y lea eax, dword ptr ss : [esp + 0x38]' q8 a) p5 I$ B6 s& N
push eax
7 f; }- ^, A, Y# u \4 C$ T push dword ptr ss : [esp + 0x38]
5 i+ p% d# k2 x push dword ptr ss : [esp + 0x38]+ J& x) u% M/ N7 |. F
lea eax, dword ptr ss : [esp + 0x38]
2 _3 Q" a4 l- H8 R push eax
( J- C7 Q, o' ` ? lea eax, dword ptr ss : [esp + 0x38]
' G* N2 U5 U# \7 W6 O2 Y1 \# J push eax& C- c8 [/ n" n: W1 }: T, h" b
push dword ptr ss : [esp + 0x38]
% H5 D- E6 }# r: P7 h, d; u) u call m_NewStatShow_goldcoinimg2 A$ b y% w; K) P* P
POPAD
. E, c1 k! }. r6 \ JMP D2Gfx::D2DrawImage
1 E O- o. c* X8 o. S. l( J }6 f; }2 G. I# U+ M; `
}8 w0 p4 u, v0 }& V% d' z/ u; {
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标+ {# t% x9 I/ L: o* B
{
. r, c m7 p* w; i6 ` if (x > D2Client::ptScreenSize->x / 2)
/ q1 d" u* O* p. O {5 r% w4 w2 x/ @
*y = getYGoldCoinFixBtn();
m) U" [. o3 i$ s return getXGoldCoinFixBtn() + 32;* m% [# b4 `/ q& \$ Z5 J) t
}
8 X1 A4 a i0 X7 V7 A! F return x;
. Q7 @8 W6 P: N7 B}
" h- ~1 \4 x4 w. D3 ]3 \__declspec(naked) void caller_goldcointext()* z) @9 \- _* O; p1 K3 z5 {
{$ A9 V3 ]/ W$ x. d: i* Q8 j
__asm- L, o2 `5 k5 y3 k/ p3 B
{
' f$ Z1 B- u! r. V+ y/ j2 U0 r( d PUSH ECX
7 V& F* J5 ]& {: H, Q$ N# U5 v* J PUSH EDI; ?$ ?8 X f7 D& z: D6 H
PUSH ESI
0 [; \3 H1 q& c; g$ Y8 t: x+ t PUSH EAX2 s6 k, F5 `' a1 u( S
MOV ECX, EDX9 ^! b4 x: x7 c- c( |. r6 A
LEA EDX,[ESP+0X4+0X10]
% g/ I* |! y. m CALL m_NewStatShow_goldcointext5 t. A* Z' D9 [; @: P8 A6 U0 I# S
MOV EDX,EAX8 P- C7 x3 ^, S" V6 e9 M: S2 g
POP EAX
& G+ |. ~9 Z* T1 O- f POP ESI
* G+ t( A4 h7 Y g+ d% l POP EDI
& y- H$ y& Q$ f POP ECX' F# e# |! t8 j' k
jmp D2Win::D2PrintString;
' T, y: I! W6 b }) \& w! I0 d4 t1 d
}1 a- _. C+ c" i5 W+ ^
/ e i0 |4 y: I$ wBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
& }- {) y4 Z! }2 @3 k{5 F6 \, ^. r7 O
DWORD mx = *D2Client::ptMouseX;; X* b$ G- ^ ^' H1 }$ E% K# a5 g
DWORD my = *D2Client::ptMouseY;( s5 T& ]6 U; Y! {# }
if (isOnInvCloseFixBtn(mx, my))
5 L o$ c9 z' W( k5 [ return TRUE;
9 C+ i3 @; t: n8 ?; a$ u( n return FALSE;
) t8 s1 X2 {' t$ U0 e! b}8 S& q' ^8 d% V* b% D
__declspec(naked) void caller_close()7 g3 n6 I3 R4 A+ y4 R
{7 K" U6 a8 u6 \* Y6 j
__asm, i* H- f5 A; \- l( {
{
- {5 |. r. y, d- A5 h PUSH ESI
- G3 `$ A+ [! O3 l/ p push ebx
% O2 I8 `/ W6 q9 D6 K1 } call m_NewStatShow_close
6 e. X7 ]8 N% w pop ebx$ m3 s* W5 @2 g8 u. A( K
pop esi! Z: | v# c6 V' z8 L. d
retn
5 U; A5 s: F' K }
% u @4 w6 S1 _}# R9 w2 b: Z( y" l8 U5 h6 l$ ^
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
6 H. N8 M6 e4 r. K8 a{- k6 t4 A2 ^1 \* C
*nXpos = getXInvCloseFixBtn();
& A! q5 O4 k7 ?! ?3 m- i *nYpos = getYInvCloseFixBtn();
/ [5 |# p: ]8 |# r+ V: M}
3 U# U8 G4 }* C' \ m: _5 g- O3 x__declspec(naked) void caller_closeimg()
$ W4 Z: Z+ {# T: h( s8 x s{4 q5 Q3 \) c& W
__asm
8 E2 I: N, A4 B' x {
3 k8 q, X6 Z6 W% } PUSHAD
+ O8 a2 c/ } D5 G lea eax, dword ptr ss : [esp + 0x38]
9 a% p( p. O2 |& F push eax
, ^2 u3 Z4 E( u1 _3 a push dword ptr ss : [esp + 0x38]
' e1 K' b6 h& J+ J" y+ I& Y push dword ptr ss : [esp + 0x38]$ O, C- h+ A. ?1 N0 i
lea eax, dword ptr ss : [esp + 0x38]9 _" ]' c f f! }: \( R
push eax
; j- X" e& K7 C5 q0 T/ d. |3 v7 g lea eax, dword ptr ss : [esp + 0x38]# H r6 N9 q! j7 h
push eax
3 Z4 q I) v+ t2 H push dword ptr ss : [esp + 0x38]
: s% S4 P/ S/ c j" ^/ i call m_NewStatShow_closeimg: Z8 @; b5 O7 Y4 M8 m
POPAD
& u- w7 _4 `7 G) ^ JMP D2Gfx::D2DrawImage {1 i. v0 w3 Q" F- M( ^
}
) {8 p; S- s, p$ J( R/ r) K) ?}
1 E- P' Q$ W4 b- F3 U) S
: k; ^) l: d& e6 l0 s& R3 I! I+ q' G% q8 |! j! T0 v
|
|