|
|
转载$ d' ^9 T$ z5 n: @8 W3 `( m$ W2 S
BY SJ$ k; C8 @* X, p* }, O
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
- b! `* C4 H3 O6 o, c1 _/ c/ \0 a- m$ y6 O
D2Gfx::D2DrawImage-10041+ A# F+ n- f u* y4 x
1、修复技能的背景(不需要可以不要)# P- @4 K; @' Y# F! u- V
offset = D2Client::GetAddress(0x77AA8);
v Q" r4 n; a1 R6 ]% Z! _Memory::SetCursor(offset);# Y; n) M: Q$ [+ y% h/ {
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);# b, h: p$ q& _8 ^
0 E: x- R4 `9 c Qvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])$ y3 U& R* a, ?. H: O8 N+ `. V- ?6 ^4 a
{) }9 V" f2 g7 [, N1 [, L; j
//Init data for print image
2 {# l5 z, X- @ g1 H9 F sDrawImageInfo data;' b' i* f; M% E$ U) f! k9 x( t( E
ZeroMemory(&data, sizeof(data));* X5 w/ L' g6 L: c
, [! T6 y: g. G. Z: q //print background
: `7 s( X, v { setImage(&data, spellBackgroundImages);9 |4 v8 q) {: w1 I" J9 W2 X+ }
setFrame(&data, 0);+ _6 H+ G) r$ T3 a1 [8 ]7 f
int fixx = 511;
. _* @4 a! v6 L% d# p3 Z int fixy = 9;
5 N4 ~9 [: @' E8 p D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
( A8 ]' L$ x. J. l setFrame(&data, 1);
) H3 W' P+ S( j5 U8 k D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
" M. x6 s, C, {/ N setFrame(&data, 2);
3 x0 S4 d- T7 u7 E, C' f" ]% k1 O D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432% O1 H! y# `3 s
setFrame(&data, 3);' u+ |2 U% j; \
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
# {% a3 |2 s Y. r9 C}% ]! Z; l7 P7 G
__declspec(naked) void caller_SpellBackGroundFix()- f5 Y! N' V9 `7 G7 e2 a
{2 h6 r$ J3 ?! H- ~+ V
__asm
9 q& C! Z: U5 e& s {
% y" ]$ z. Z2 e9 N6 `" ^ PUSHAD
% c1 d9 [7 `5 B" m' T6 B, m lea eax, dword ptr ss : [esp + 0x38]
* O( K1 D' T& q' ]! |$ ? push eax! K5 v; U! u2 Y) @* R. i
push dword ptr ss : [esp + 0x38]
# V1 M' C% \. b push dword ptr ss : [esp + 0x38]
5 K; {* Z% S7 N' `* x1 F; p4 m lea eax, dword ptr ss : [esp + 0x38]
. k- }- Y5 h1 B6 _7 \9 s3 u push eax* }% Q% D; m- P5 U: u
lea eax, dword ptr ss : [esp + 0x38]
5 U2 A; t# B$ i$ H, R push eax
$ @# t; n% J4 i6 Q8 O0 t9 t push dword ptr ss : [esp + 0x38]4 W* B% D; p- W
call m_NewStatShow_SpellBackGroundFix& f2 ~0 ]; U2 u+ J( {' O& r. b
POPAD5 }5 ]: E) V4 B
JMP D2Gfx::D2DrawImage
! f: V3 P* @( P4 m" K2 }: { }$ d. X0 u/ D* U% |. _0 G! j
}9 \/ f* O+ V9 d$ I: Q* I, v
" g3 S5 f3 W$ x9 O4 ~5 i5 o
2、我们如法炮制小站的背景& _# u" y: b* ]. x; G" Q$ \8 s
: K0 G2 f7 \$ T9 y9 N0 }8 K4 zoffset = D2Client::GetAddress(0xAB010);
% t7 D! L: S5 @5 qMemory::SetCursor(offset);3 a, q% i0 r" }. U: k8 \
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
! h& T$ L: {. W7 x" n
- ^" c; J9 C" Lvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])2 h" g" Z0 y9 [2 G8 i3 e8 z9 I
{
: ] J5 R7 ^& [% i( J //Init data for print image- C; _2 J1 q: p1 b9 H
sDrawImageInfo data;$ |* l. H/ L1 y* J/ G
ZeroMemory(&data, sizeof(data));
9 h' W* `; f. ~2 d; U7 }$ v1 I" x8 |* Q, ]
//print background
N/ }/ A4 B1 R4 P' W, g setImage(&data, waypointBackgroundImages);
/ D3 W A$ w* z% e0 R) v o& T- G setFrame(&data, 0);
- c: N1 ]- S7 t- c5 c% [ int fixx = 0;6 Y/ W1 K# }! s9 [/ |
int fixy = 9;( W5 T3 G: ~3 J
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);# N. }3 a/ s4 L' {1 A# k S
setFrame(&data, 1);
! [4 [/ {0 @% K3 n. G D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
& H E! O1 H$ [ l* T$ N setFrame(&data, 2);
z* c5 x, H) j3 l- C+ T D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
9 x' m8 r5 R$ d/ [ m' a. h# W6 Z setFrame(&data, 3);
4 V3 x! v" p2 C! _ D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);. e# u, t! i. @$ }- j1 q- E4 |5 r7 }: H
2 p9 n1 \! F. S- e% ?; z5 ]2 P
}
! w4 r9 H0 G: \__declspec(naked) void caller_WayPointBackGroundFix()
9 A0 g' ~# M4 Y; O8 d{# u* ^( m$ R- X$ U4 h
__asm
9 w4 P' L; X8 N8 b2 ] {( @, b7 F4 J2 _2 r
PUSHAD
' R: L$ x5 g/ g" B* P lea eax, dword ptr ss : [esp + 0x38]$ U% f9 { m/ P
push eax- j7 Y& h6 o, j
push dword ptr ss : [esp + 0x38]
' t( {9 v) o, U3 y; Y4 L push dword ptr ss : [esp + 0x38]
3 G0 m7 T( u( @# V* ` lea eax, dword ptr ss : [esp + 0x38]3 g2 }/ |6 o! K4 r' k" C
push eax
. u* t$ ^# H0 v/ E9 C. @ lea eax, dword ptr ss : [esp + 0x38]! M! P# T( M1 l
push eax9 ~2 F2 X9 m& n, H: n+ O
push dword ptr ss : [esp + 0x38]
9 |( I: ^- e" o( h6 t* h call m_NewStatShow_WayPointBackGroundFix& \) o2 G9 f; ^& {( g T
POPAD }5 A/ C5 T" E4 a9 Z
JMP D2Gfx::D2DrawImage. r% e% h" b* I/ @
}
. Y8 [4 W5 a* C! } u' \}
0 x+ }: ^2 L c- Y; @: Z. A& q* p; U+ e8 j N( N" N5 N) n0 k
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
) J; D! K. H* @# e$ x2 Z% t* z0 @腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)7 s, p9 Z+ h1 C6 ~# Z
{
% n* e8 o* X z class D2MultiRes : public Library<D2MultiRes>
7 ^# n' F6 ]' s) ^7 j. p( V; I. p4 i { }4 v& f5 t* w7 D% @: K$ V
public:# x: x9 h$ m, [5 S! a
static void Init()
1 A i0 j, b7 x. f+ A* k% @ {6 ^" _9 ~4 s3 m' p! m% J
Name = "D2MultiRes.dll";4 D$ \' @9 E( `8 c+ C0 T
Offset = LoadDiabloLibrary();* K. P* @0 k3 s5 n" [. }0 Q
}4 j1 }! e( m9 S) S1 ?* M
};
8 L0 j) P4 D! v4 V- u/ q$ m6 C D2MultiRes::Init();
4 X' n$ I! m' L6 G9 ?3 L8 d D2MultiRes::HookLibrary(); h5 o7 P7 Q( U' y- t' [8 V1 s( H* K
- `# ] S; x. {4 t1 m, U2 h5 L4 z) t+ v* N" w ~
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
* L7 L* f1 \) D Memory::SetCursor(MiscFunctionsOffset);, h" u) T i8 ~
Memory::ChangeDword(0x1b0, 0x200);
+ P0 i4 S* B! t m
- d2 [3 C) J8 M+ z7 O# U
: {/ j2 V3 A' @1 V! {% q" D9 }$ L MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);6 c' z& M j" }7 d; R1 V; F4 g+ x
Memory::SetCursor(MiscFunctionsOffset);, ~% f/ z- g( `+ a! e$ O$ b# Z
Memory::ChangeDword(0x140, 0x200);- v. \4 U# [) W$ { g8 T% F' `, b
3 S' G3 i' X$ D0 u8 {' Z$ k; V) E# I% R$ j0 q+ D
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
$ e8 e, @6 a" ` Memory::SetCursor(MiscFunctionsOffset);* Z8 I- Y' e/ J9 R/ V& S
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
. z `( `0 S$ n1 ]
! u+ G r) w$ N$ g6 q! D MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
0 Q# F, ]1 l& g& }2 Q, r Memory::SetCursor(MiscFunctionsOffset);3 X w9 m* o& x o; I7 v1 O
Memory::ChangeDword(0x200,0x299);//下边缘 299最大# K; w" t4 Y; G6 S$ a
, ?0 }! H* m$ ?- q$ m- F MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
4 u. L% @; r( \2 D( M. s Memory::SetCursor(MiscFunctionsOffset);
( p, U5 w+ Y9 ?' c% A5 n Memory::ChangeDword(-0x280, -0x400);//这个不要动
/ O( f2 T7 p3 ^9 a7 G& i }/ `3 N# k! P3 b) h/ [0 q& t4 [! f3 H
5 b/ l/ F# {. B1 ?" c! ^7 p( L) J4、快完成了,是不是发现金币啥的位置不对??0 ]- s3 d0 n6 M! U3 j3 Q
! H6 J+ {: P M( h! v
//这里修正我们的装备栏- ~( O% v( R. |# t7 V1 ^
offset = D2Client::GetAddress(0x99B6C);
& N0 d% a7 R( P Memory::SetCursor(offset);
* `( e. k# A: D% X7 D K+ r Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
; z, T! v' \9 h I, q
$ c# D" Z# ?+ A+ a6 [# Z; q$ [ offset = D2Client::GetAddress(0x99BA7);! x" E& x8 e' J/ ~# z5 a+ P" M; k6 }
Memory::SetCursor(offset);
0 `( U& N/ c1 k! E' U1 ^ Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
, d1 P+ J4 s. V9 X; g* e& H
1 O' a; A' R+ J- u& K( A8 U offset = D2Client::GetAddress(0x99BE2);
' b3 T2 w4 j+ M9 N9 n- X Memory::SetCursor(offset);
7 J# g4 j; c/ r% F* _) `1 `# B Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);$ W3 b8 \1 m, G: [( B H
9 g, H( l6 O: }! A offset = D2Client::GetAddress(0x99C1C);
. J) c7 I G/ J# \7 X) N: R E Memory::SetCursor(offset); N8 W6 v# }0 ~9 y
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix); h( }7 P- Z, @3 B% o, W
1 u, r; [0 C7 L( z- g1 Y //取消两个popup,偷偷懒不过分# A+ t5 w& |5 T: F1 t
offset = D2Client::GetAddress(0x9386d);6 g* L5 c/ f9 w% V! c
Memory::SetCursor(offset);9 J5 V3 h3 u; V! H
Memory::ChangeByte(0x8b, 0x33);
, ~& s/ r3 T y# r" [4 T. [% t Memory::ChangeByte(0xc8, 0xC9);+ T$ v" d- k- ~- i6 o
offset = D2Client::GetAddress(0x9390b);1 e7 P) L0 J" Z) J; O
Memory::SetCursor(offset);) F+ Y5 f) v9 K/ D8 {- v/ D5 H
Memory::ChangeByte(0x8b, 0x33);1 @2 I( \" [ {0 D {6 T4 H5 a$ I4 y
Memory::ChangeByte(0xc8, 0xC9);% X3 S6 |' ?' x! D! F" k0 ]7 J: |, a `
1 [8 |- U- o( G/ b) q% f
//修正提取金币8 V- Q. R' w+ }" t
offset = D2Client::GetAddress(0x8D3E5);
' T7 ], z. N0 o- V; K5 ?3 \ Memory::SetCursor(offset);. O V) k" b" x( g
Memory::ChangeByte(0xA1, 0xE9);
/ B& \, c$ i$ J% N: y# D7 S1 H Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);9 J/ _2 `' |1 p" P1 r' K
4 @2 k h. w% g4 [5 t, a7 K offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);7 N, S8 M/ i* ?' [$ z' g# g, ]
Memory::SetCursor(offset);
# N* \4 a- ~3 j# @) n Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);& S: g) R+ P) ~% T& G
$ q' ]' e- ]3 T
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
9 E( C1 |% L( ~7 k4 e5 ^& Z Memory::SetCursor(offset);, J& m: n$ ~+ j7 A' [$ v
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);; G1 j" w* p2 Q! W) w) q. Y
: }* s( x; I$ Z6 s% | //修正关闭按钮
+ {4 |$ r% [( ^8 {$ K* h& } offset = D2Client::GetAddress(0x8BD90);9 ?! u7 R4 l4 F. Q; Y; _* x
Memory::SetCursor(offset);
* u# v, |0 J% Z4 O$ b: g1 J Memory::ChangeByte(0xA1, 0xE9);7 M6 |# `' K) n
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
$ n1 x3 x$ m# r G" W2 a4 ?' k$ V6 U# a
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);; B2 i' K0 ?9 \
Memory::SetCursor(offset);6 W; A9 S0 F4 @- P! A! M
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);9 d7 g8 }- i* q7 V3 X% z' E
, [5 O: M& ], F- t( O
' B6 \4 t( {! G0 ^. g
//以下是细节; e1 B" D z- a z( M
#define getXGoldCoinFixBtn() RX(0x2d0)
/ {( a C K3 @5 A8 q/ H#define getLGoldCoinFixBtn() 32
7 N( [+ l2 r9 K#define getYGoldCoinFixBtn() RY(-0x59)- z8 h2 o2 z2 w0 C4 [3 v8 N" C
#define getHGoldCoinFixBtn() 32' O2 R- T- x4 ] Y
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
7 w1 [1 @3 a& ?0 P7 a) Q* l% Q; @$ t- j) s/ `
#define getXInvCloseFixBtn() RX(0x3db)# Q( i7 A3 ]7 E+ O Z
#define getLInvCloseFixBtn() 320 B5 M* S: j, w' E u( S
#define getYInvCloseFixBtn() RY(-0x63)
/ w6 J* I" ~1 U6 K) {0 ]3 g#define getHInvCloseFixBtn() 32& K( G5 ^: {/ x! K. S% t
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())1 c. k4 U P2 v7 a* m5 O
: Q* o! } z$ t+ }$ C1 n9 W9 WBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y), d! f6 {2 t, |& T7 E
{* R4 ]: c7 ^8 ?4 _
DWORD mx = *D2Client::ptMouseX;
" i4 V5 g, p$ k/ d% F DWORD my = *D2Client::ptMouseY;0 X. G/ r6 j- `( v
if(isOnGoldCoinFixBtn(mx, my))
( }1 N! g R6 \: Q6 K return TRUE;
9 P4 [$ _( _: } return FALSE;
5 v$ \# \0 p! c}
7 I7 O3 p+ L6 P: }4 c0 Y) I h8 D__declspec(naked) void caller_goldcoin()3 J! m, j" e u$ T
{7 B" |! H7 v( l T7 L% _
__asm! a1 z7 @( `; W U
{. @3 F3 Y( P& W& O6 \* G$ j
push ebx
1 \! h8 d ?% U k, E+ f2 k' f: q mov ecx, esi
! g! s* H5 x6 [1 O mov edx, edi( O/ e* n. P4 [4 B
call m_NewStatShow_goldcoin- i2 G7 T( L. P1 r' [% T4 ~
pop ebx/ m; G* {* ~# Y( P) F
pop esi% e3 H8 i P7 b& B6 T) ^
retn
1 b9 B9 ?4 h( `" r* `0 |9 I* }& t }/ B# B4 C# z. }" b6 `" s" F' K! h, }
}
; e2 @7 g& Z% K: hvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
- F& l. {. `: _1 P6 l3 Y; `{
9 u" S: t8 m9 M% }3 M( n {) a9 ^! I. c if (*nXpos > D2Client::ptScreenSize->x / 2)
m& d# Y* P; ]# y$ v+ z) Q" W0 N {
7 B$ m2 T5 \1 K' M& p$ D& V *nXpos = getXGoldCoinFixBtn();( r: l# l, I x7 [* i
*nYpos = getYGoldCoinFixBtn();
2 V8 o! F) V( [ }
* O6 U: O3 G5 O8 ~7 H' Y& L}
7 i7 I' R& u. M9 `* s* a' M0 E__declspec(naked) void caller_goldcoinimg()
1 f( ]3 o l" f5 @, X{. Y4 `% a$ t' X/ W5 h
__asm
. V; r2 f' x- D {
( }+ G9 q( J: y& j) f PUSHAD7 t! S( g* a. J, R
lea eax, dword ptr ss : [esp + 0x38]5 n5 x8 T% |2 [1 c! _7 k* n
push eax
! U$ a* ]% `+ e. a7 i6 m push dword ptr ss : [esp + 0x38]
, K& R6 _! c8 l push dword ptr ss : [esp + 0x38]
8 G: x# y8 v& J# z1 E lea eax, dword ptr ss : [esp + 0x38]8 O9 Z( {" R% a I4 V" I! K
push eax
0 M* S9 J: [# H5 `% ] lea eax, dword ptr ss : [esp + 0x38]
" ^% p$ [- F7 H, G/ G( h8 K" } push eax( q. f7 ] L# b& W3 m( B
push dword ptr ss : [esp + 0x38]! [" Z4 M @" x2 L8 p
call m_NewStatShow_goldcoinimg$ C ]! m: M9 W7 s% ]/ ?
POPAD: C" [9 M5 y# D5 ^4 j3 D, {
JMP D2Gfx::D2DrawImage
! _, V0 v) o/ S2 Q }
' `) b/ T% ?% @, `& h}, @& @4 u* t5 E8 ]) @) a2 s
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
6 f2 N8 ], S, w1 n0 o1 q& W{, r9 f$ Z l ?) ^& u
if (x > D2Client::ptScreenSize->x / 2)
6 L( t. m7 J4 S: g T: u {7 D0 p+ o: K& ~1 J
*y = getYGoldCoinFixBtn();- B% F( a8 h: F. ?6 J: H
return getXGoldCoinFixBtn() + 32;
, l/ ~) L, j# z$ }: N }0 N; h; a! L) O( }
return x; k. J; a1 }3 @& K
}
2 }1 q1 y) L. X/ `3 Y4 \__declspec(naked) void caller_goldcointext(): T' e4 @8 d' P. D2 i
{- K* G% {& n, [; Y) d8 \
__asm. t0 u; _# w+ H
{
- H s, J9 W+ ?5 } PUSH ECX
0 _1 p+ E; h2 g: H, S% d PUSH EDI
% v! ]( R% k% _% w2 U PUSH ESI
) ^9 _# u# g+ T" n PUSH EAX3 Z0 m" g6 e" o3 q9 R' n9 ?0 i/ |, M5 r
MOV ECX, EDX' D1 }; Z. C8 O x5 ?
LEA EDX,[ESP+0X4+0X10]
) Y/ C- z4 W1 P, p G$ ` CALL m_NewStatShow_goldcointext
1 J; h4 m& S' t3 ^/ P MOV EDX,EAX
. \+ T, u+ s' S [0 ] POP EAX3 u3 I5 J$ _; ?5 c1 F7 `! W. G, Y
POP ESI
& \! z4 G1 X4 [/ b' W& W POP EDI
& t$ q; X! u& e POP ECX
! G: r3 L: z" B: G$ f1 } jmp D2Win::D2PrintString;( t' G0 [, I, i/ F
}
- \! l% \6 Y/ Q4 N% [}1 Q$ n% M2 {+ d( U! Y! \, a
* Y1 ?6 v5 [! k' B: x) u8 A% G6 O6 R$ [
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
# e2 o0 h$ `6 F d8 @{
4 H) b! w9 P7 S8 ?& y+ U DWORD mx = *D2Client::ptMouseX;6 J3 E4 S* e' L5 s1 u0 ]
DWORD my = *D2Client::ptMouseY;- ^6 n' Q+ o1 d/ q- \3 D# R
if (isOnInvCloseFixBtn(mx, my))
0 i* W- h# O0 c8 f& Z b: h" |, d return TRUE;6 b" E0 T4 s) Q- w, { ?
return FALSE;
8 i* u* B9 S+ m}; v1 J# U& e- M6 w- D& I: w
__declspec(naked) void caller_close(); c+ \" v; r& m: |% A& o8 c
{
% s, V4 K8 c8 s3 ]/ a __asm
6 ?, v: {3 B/ B% j {
0 Z7 o; J( R! P: ^; W PUSH ESI6 ]2 W& R: U: K4 F
push ebx; F( E2 O: a, J0 Y) @' R
call m_NewStatShow_close6 f5 F" Q; _* K( d! D- I
pop ebx" T/ o( X! U8 ?3 i
pop esi" h* `, k: Z% L: B& q
retn5 u0 R& S5 g( t7 ^6 m' A; d6 a
}! f8 L& B( |. ]' L
}5 M( x7 c9 p! B3 w( ^- h f5 {0 z
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
0 W+ V! B T' j{0 S% Q; V) c# {3 c7 N/ P
*nXpos = getXInvCloseFixBtn();
: K1 z! d$ ]: _9 X, J5 b x5 Z *nYpos = getYInvCloseFixBtn();2 @* i+ [2 O3 s
}! k9 Y& D/ ^1 A
__declspec(naked) void caller_closeimg(); F3 H- I/ R, b a j) v
{6 O" @& y+ y% |) S+ N' ]1 s
__asm
0 K1 O( ?: P* C$ u! A( g2 z2 y {
+ X$ I6 V6 v) v% ] PUSHAD# z F1 R& [; M" I
lea eax, dword ptr ss : [esp + 0x38]4 s6 N6 p- n7 I1 B/ o; f$ H
push eax
1 V! V- c5 B. c0 T& ~ push dword ptr ss : [esp + 0x38]3 f- Z8 |! j. x
push dword ptr ss : [esp + 0x38]
7 w& C% a( j1 ?1 S \, w lea eax, dword ptr ss : [esp + 0x38], `# H/ s2 S$ i: g, _' H1 \
push eax, N" s/ F* A# {/ |' n2 v
lea eax, dword ptr ss : [esp + 0x38]
- J5 K% L$ g R+ g [0 ] push eax
! F0 L3 | V" E. g" P push dword ptr ss : [esp + 0x38]! X+ s+ J1 Y9 f+ ^- D' D3 D
call m_NewStatShow_closeimg( j3 A# [; z* n5 M+ b
POPAD
, m _! C- J2 Y7 \, G% { JMP D2Gfx::D2DrawImage2 X, a5 w/ Z4 x1 H2 [3 `
}
2 Q; i7 n# J3 F9 ^* k9 }}
& n+ J/ S, P1 a' y; L1 q) q7 \4 U0 A6 r
1 V, a) I0 r" m0 I, k |
|