|
|
转载
) Z2 n/ t4 U' b' _BY SJ
5 D! @5 e* R2 X首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
' O2 Z# v: R9 n5 o" D0 h- P! ]: I7 ]0 Q7 e% N% X) P" d7 ? i5 f
D2Gfx::D2DrawImage-10041
* f. X8 \( |# n4 E: O& L1、修复技能的背景(不需要可以不要)
8 _$ X. ]" C# ]5 s4 Qoffset = D2Client::GetAddress(0x77AA8);( ]- y) h2 {6 ?5 h. j: T
Memory::SetCursor(offset);* b' ]- u' m0 N5 Y5 H
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);$ |. @( J/ H, F% y6 H1 g9 W
) z# y! n. k" g* ]( k, N
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])% c$ L7 e* |. R" t( I+ A
{/ c* a) z4 R+ ~3 _+ [; Z D- o" k
//Init data for print image
- o9 ~- D2 n1 e Q sDrawImageInfo data;$ C9 N4 _; `0 R3 e( s8 \4 h- x
ZeroMemory(&data, sizeof(data));6 `% d: Y0 b8 M* \7 n T9 \ X
, U0 Q# Q {8 C. b9 D //print background! S: V' D1 l1 t- I8 z2 K: D
setImage(&data, spellBackgroundImages);+ z/ K* O5 C- n4 }% K
setFrame(&data, 0);8 b6 N- \& \- W0 z6 Q
int fixx = 511;( e. q+ z8 U2 u1 Y
int fixy = 9;
6 Q2 {" G7 r8 F W2 x* @ D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);; G: v# k1 d* _
setFrame(&data, 1);
* ]5 n4 L( x' J& K" q4 L- R D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256/ D7 S/ {% J2 v& {6 D j
setFrame(&data, 2); s; Y1 F0 ]$ z+ D( E
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
0 U( a3 k: A1 O H9 W setFrame(&data, 3);
; _5 W H2 B W1 E D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);# C: Y* n6 U% N4 d4 D$ U3 k
}
2 l5 W# }: I" }, s; s9 [3 `__declspec(naked) void caller_SpellBackGroundFix()9 _# S$ X; M: Q
{* y8 p5 r( W' b' _
__asm2 g' [5 ?% \- ~- b/ c% K
{
* Q1 \# C0 t* W1 u$ B3 H2 Q' h1 K PUSHAD
( C$ c2 x4 R$ }! Y; h7 \- L. s lea eax, dword ptr ss : [esp + 0x38]
1 M1 y4 Y u6 { push eax
- K' m0 ]2 }1 y* W! J; } push dword ptr ss : [esp + 0x38]$ X8 T" [" N3 v& h+ x
push dword ptr ss : [esp + 0x38]
( O7 w1 F9 _* w) u, q lea eax, dword ptr ss : [esp + 0x38]3 f Y; P# b3 A! V5 e0 U
push eax
' ]9 h ?( b" N1 S- A; B' N7 B+ ? lea eax, dword ptr ss : [esp + 0x38]
7 e* ~8 h3 a. q push eax
: {: e5 \) x4 C9 p7 m push dword ptr ss : [esp + 0x38]& z$ Q' Q, x- I- _
call m_NewStatShow_SpellBackGroundFix! ?4 z p9 ~7 ?0 U- O
POPAD% Z' Q6 E5 D- U0 Z: Y
JMP D2Gfx::D2DrawImage, L, P2 |. ~( Y6 ^
}
( Z5 R/ J$ X/ x n5 K- G* y' J0 Y7 H T}$ ^+ F8 H/ p7 e" ^
8 I2 c4 j/ h6 z1 `3 o- I8 \/ p
2、我们如法炮制小站的背景7 }" V* v2 X2 r9 M8 j7 Y
7 D; @) ~9 q' H+ ` G, Moffset = D2Client::GetAddress(0xAB010);' C+ `) Z( g( s8 y
Memory::SetCursor(offset);4 b; c& N+ T. B& l! k) Q) u
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
) i- R& X! \$ Y1 T: T
8 T4 I7 u0 s) h# {! P6 mvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
8 l9 C9 D$ e1 t2 i4 |+ Y6 R! x{" r t# v6 r1 B- L6 L$ L6 o+ u
//Init data for print image
3 T( X+ e$ L8 z& N8 g sDrawImageInfo data;% u" |# A0 X* U) P4 s
ZeroMemory(&data, sizeof(data));3 G, I- O7 \+ L" N+ c+ F8 y5 W
$ A# Y. Y) n8 `/ P) B! { //print background
8 w* `9 S2 O) S8 X9 \) L# Z- p4 A3 ` setImage(&data, waypointBackgroundImages);4 q. l$ b& S: X* T
setFrame(&data, 0); g: I- K8 k* ^/ [$ ^
int fixx = 0;
6 W2 t u F3 J$ ^4 W$ Z! W int fixy = 9;
" }; W2 Y$ O6 Y7 e/ w D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
7 n3 X- h; Z- w1 b" F setFrame(&data, 1);1 k, a2 ?! V) l4 f( B0 |
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256! j: e- s, r: U' n. M/ w2 c
setFrame(&data, 2);
3 I4 q* E/ ]0 z# M D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432& W5 q! @7 a9 L# s
setFrame(&data, 3);
% `2 F( Z3 Y0 m6 E' y; S D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
+ [, ]" d, w2 y- t7 z8 @# k
( {# C2 r! R r/ E% ~ g# ]}0 F s4 p$ V+ J' N) |' p6 v
__declspec(naked) void caller_WayPointBackGroundFix()
$ Y2 g, a3 d3 W3 }3 z1 }5 O{
$ q( a) Y/ F+ D d, q __asm
T$ P6 `) d0 q! |) [* f, c0 W {
& _% Y( I# h" X" Y% k2 v PUSHAD+ D& G z/ e/ N: P8 J1 _
lea eax, dword ptr ss : [esp + 0x38]3 F& z6 N( O: G0 M: p6 j3 m
push eax) D% k# T+ U1 g8 j- ?9 w+ V
push dword ptr ss : [esp + 0x38]* B: n6 p7 o B
push dword ptr ss : [esp + 0x38]
{9 t1 a# k8 ]/ t8 g lea eax, dword ptr ss : [esp + 0x38]" u8 e: x* H4 [
push eax1 |! c/ R3 D! K. I. V" \" [* l
lea eax, dword ptr ss : [esp + 0x38]7 j9 W& D9 \# ~ {- f" h
push eax# T0 l$ e6 L1 m. }0 B1 E
push dword ptr ss : [esp + 0x38]0 J/ Y# q: q) b% V* q& [
call m_NewStatShow_WayPointBackGroundFix0 K4 {3 x6 k- V5 Q" C
POPAD- v1 m- s s( x& I; {- a1 F
JMP D2Gfx::D2DrawImage
& y! c, B3 S# `0 c/ F }! J& x7 L# k# E% L
}4 r& p1 A' P7 M. U8 w, [
& U% o i+ x$ F- f. o8 t5 D) l" A3、以下可以搞16*16超级箱子-腾出我们需要的边缘
1 L) G+ R) k0 F4 N4 ~腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)& e1 F. ]8 @$ o9 W8 L
{
) Y+ _9 |: i, h$ H+ }0 `5 B% [$ p9 S* ~ class D2MultiRes : public Library<D2MultiRes>- l& B( X5 ]% q) ~
{( B; l6 T. b1 o' B! \2 H o
public:" T, S$ m3 K9 e5 j6 |
static void Init()3 h8 v- B- K: N7 g# `
{
$ C4 S2 [) J4 Y, k: V9 e Name = "D2MultiRes.dll";& `; e, h2 b3 @: [' m0 v& R; q7 r [
Offset = LoadDiabloLibrary();
) [ K8 \3 d) h' s( F }3 A ^8 Z) e G! U S
};/ r/ L( `6 `& ^5 Q" ~) A
D2MultiRes::Init();
* X1 f- v1 `' i7 ^" B+ ] D2MultiRes::HookLibrary();
1 P% H E6 k4 U* R) W0 H6 @! Q9 u& M
4 Z% j" b( d0 @5 _$ J( q
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
3 ^5 |- D1 }( i L1 ?1 e Memory::SetCursor(MiscFunctionsOffset);
& x5 O2 A; {6 ~. W. W" K3 [ Memory::ChangeDword(0x1b0, 0x200);
0 h1 w% D2 L4 q) }
/ M* W! h8 \; o6 F9 W% o6 u% [# E
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
+ H7 _ m" a1 O- }" k4 i0 { Memory::SetCursor(MiscFunctionsOffset);
' W1 [9 |' V0 Y. Y6 P3 Y/ |9 T% @ G! S Memory::ChangeDword(0x140, 0x200);# v2 O! [0 n9 E( a+ A0 c8 a- N# @
2 U% g9 [; Q3 X9 f7 _# t
: F3 c- L% U( u% z: E9 F MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);8 b6 m! E+ Y" D
Memory::SetCursor(MiscFunctionsOffset);
1 ]7 U3 Y k( l$ u! N- D: H ~ Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块: m6 f7 f W1 m) a' R
k- B: r1 U& E1 s MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
! O2 q& l$ [: k W Memory::SetCursor(MiscFunctionsOffset);
* f) X) I& q | Memory::ChangeDword(0x200,0x299);//下边缘 299最大6 J. o% E# E( Z$ @2 Y9 L
. x/ x1 Z u9 [6 e4 [9 Y* o
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);( j+ c/ v" q2 t3 }
Memory::SetCursor(MiscFunctionsOffset);7 f" f- \3 @6 P
Memory::ChangeDword(-0x280, -0x400);//这个不要动2 }! t2 d! u% a$ g/ q
}9 V; K R% ?- Y. x7 x; r
( [; x, k( d( T" ?4 S9 T/ S5 ~4、快完成了,是不是发现金币啥的位置不对??5 c, F8 f, G- A7 }% o
) I3 N( i& a# s5 l
//这里修正我们的装备栏
: D- B) b6 [3 u: B7 b offset = D2Client::GetAddress(0x99B6C);
( W8 o! z1 }& N! O" v I5 h, d7 H R8 q Memory::SetCursor(offset);
: X1 e9 H" C$ @: E% i Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
6 @. n4 Z6 V; |4 R8 Y7 B" x# V: N; A6 }9 C8 ^' [# B
offset = D2Client::GetAddress(0x99BA7);+ d3 S8 I( m6 c/ T* V+ j: G
Memory::SetCursor(offset);
2 Z) D# ]% D# O% ^ Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);) O) M' I- u r r# B& }7 o
% ^7 B/ x" Y7 S% z4 M# a
offset = D2Client::GetAddress(0x99BE2);
# d7 w& x6 Z+ A+ j9 P v Memory::SetCursor(offset);
! y" e9 y( n: u& K3 V Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
7 q3 r- a/ L7 G E% t: L! m% ?& {1 q6 P
offset = D2Client::GetAddress(0x99C1C);
) q0 ^( M; T' E Memory::SetCursor(offset);
% X1 t9 W2 y' J) s L+ y1 K Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);3 s& w# S6 B! p, p! r1 p4 q
4 p) h( x: P! f //取消两个popup,偷偷懒不过分
( r. u* K, I7 S \ offset = D2Client::GetAddress(0x9386d);
" A. e, |+ S# }7 G8 _ Memory::SetCursor(offset);/ I9 j9 t4 u+ k& ^7 ^6 j
Memory::ChangeByte(0x8b, 0x33);% k/ Q1 ~, x+ n& ~
Memory::ChangeByte(0xc8, 0xC9);
j8 I( A$ d' N: _ offset = D2Client::GetAddress(0x9390b);3 E; a6 a1 W3 v3 a
Memory::SetCursor(offset);
2 V ?" C1 L% j9 [4 v4 u Memory::ChangeByte(0x8b, 0x33);* e; f( T5 ^: |
Memory::ChangeByte(0xc8, 0xC9);
3 g6 i( t; f8 X0 a( ?, B
1 z" k/ G i8 J$ \0 r //修正提取金币4 ~% }/ T# q: f" e
offset = D2Client::GetAddress(0x8D3E5);$ ~% [; _) h8 X' n% P) ]
Memory::SetCursor(offset);' C Z6 A5 j: B3 ]+ z# [: B
Memory::ChangeByte(0xA1, 0xE9);' C; f' ?- C0 d. b' @
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
+ g B8 n" A, ~$ p7 h' G5 i( {' V6 A3 Y1 H4 i
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
& ?. `1 ~* w0 g+ w0 x Memory::SetCursor(offset);) V4 r" r* ?$ O- j/ R& G
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);2 W0 d. i5 [9 t8 {0 G$ Q
' c3 |/ N! ^# Z# @
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);2 [2 Q4 H* o. ?
Memory::SetCursor(offset);
6 i" i7 [& L+ l' U Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);- U& k/ @2 w# x* z
- C( p6 m( G0 Q% @ //修正关闭按钮4 K0 z; X6 u- s/ Z
offset = D2Client::GetAddress(0x8BD90);
: l m. A4 Q& _, s- v7 q Memory::SetCursor(offset); K) }9 p, t) S' ~
Memory::ChangeByte(0xA1, 0xE9);
4 V9 f3 i' G3 c$ U; U) }+ n# y Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
* y2 I) P* J* n$ _* t& l' i1 m8 |
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
$ B" K) ~- U8 H- z; q( ~ Memory::SetCursor(offset);6 p# x( U7 D3 s. a* Q
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);/ }5 G9 x6 d* {0 y2 \& x
4 h- Q+ {$ T% y( B6 f$ V- S4 I5 d
4 D- P7 E. K2 R3 L1 r0 E
//以下是细节! S7 V) c _7 Y5 c) l
#define getXGoldCoinFixBtn() RX(0x2d0). o; `* ^# F3 G' s4 Y7 b2 ]3 a0 F
#define getLGoldCoinFixBtn() 327 e+ v \% O, X; G+ ^
#define getYGoldCoinFixBtn() RY(-0x59)
J% h! c, q+ V% V5 Z#define getHGoldCoinFixBtn() 328 m( \ L4 C% |0 r
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())4 K9 ], g5 o& b: e9 v/ {# ^5 f. ]" V
. A0 J. n2 W9 S
#define getXInvCloseFixBtn() RX(0x3db)
+ C* _% W. m4 n: {9 t2 G#define getLInvCloseFixBtn() 32
4 i) V3 S& X' H; i2 ?#define getYInvCloseFixBtn() RY(-0x63)+ o) l+ f5 R- F3 k* ?7 e G
#define getHInvCloseFixBtn() 326 b1 D" ~0 F' }4 e! c0 ]; L( h; N5 T
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn()); A1 Y" g7 U, p K& l
d. E* B8 v* N7 D) @( cBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)$ w* t$ ~; h- h9 l; i# E
{
6 {, g: h0 _) f DWORD mx = *D2Client::ptMouseX;/ g1 X2 P. P" e: v3 w
DWORD my = *D2Client::ptMouseY;$ V& t& ~/ p. u7 M$ o# ^
if(isOnGoldCoinFixBtn(mx, my))2 J3 z" w( `) I
return TRUE;6 r) J- e ^* e/ w
return FALSE;( }4 ?- _( Z& H; |) I. T7 g V
}
- e J1 @* L; D__declspec(naked) void caller_goldcoin()
4 U- Q6 P# l# f- j{7 W3 X9 j0 D) H6 ^" p4 I$ { v
__asm5 ?/ |# Q5 l- v& B6 K
{
$ D2 {+ Z; k$ K" G/ u/ W push ebx, D& t+ A* v! u7 q, G% G
mov ecx, esi) { F' G1 S( U( i5 u
mov edx, edi
( c: |3 z" {4 g' l# l1 i$ v call m_NewStatShow_goldcoin
3 V; E: P7 [7 U* u9 w9 ?7 V pop ebx
+ g0 X$ H" i% n* F, k pop esi
/ R" R7 d6 u5 A* Y: U0 J retn0 R5 e9 d! G9 N; \
}
/ L" v# M" Q0 i$ T3 L1 j% {, L! A}
7 R. g9 B: T6 j! U: V7 e9 zvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
5 K5 h" F5 ^ Z. z5 @9 |{$ o. ]5 l$ ?( _' n* B+ {
if (*nXpos > D2Client::ptScreenSize->x / 2)
. k1 F% f* b8 O) f9 }# V1 x3 ^ {1 Q/ R8 d7 s0 @/ r& }9 z9 M: {
*nXpos = getXGoldCoinFixBtn();
( ]. Y" a- ]+ t *nYpos = getYGoldCoinFixBtn();* o/ I* S9 O; k! w$ K" B+ r, f9 ]
} P& b. _" r: U
}/ r8 Z b0 r6 i( L9 Z
__declspec(naked) void caller_goldcoinimg()
! M8 S4 q8 x: s7 ^: j{) v" Q; \/ I& g. E6 e# e4 e
__asm
4 t, h* o- {8 w8 A T- X4 N! M( M5 i( @ {
/ \$ U$ t" |1 l; A! R' J PUSHAD7 T: f& ^: C# U. m k" ~$ O
lea eax, dword ptr ss : [esp + 0x38]
( i; W7 l! i; e2 c7 C8 ^- G% z push eax/ h* l# P l7 s0 @/ E4 \! c# E a
push dword ptr ss : [esp + 0x38]
# C0 H7 A/ n: ?1 B6 y* h( w$ j. d4 [ push dword ptr ss : [esp + 0x38]! l6 q& j' r6 f1 Z4 N3 f! L& W
lea eax, dword ptr ss : [esp + 0x38]
. W0 `9 c9 _$ T push eax7 Z$ t1 U6 v- p5 _5 x% O
lea eax, dword ptr ss : [esp + 0x38]
; F! F* c& i/ U1 s' ~7 m, S( v push eax
/ G# G; h" F7 I, _# C push dword ptr ss : [esp + 0x38]
7 |4 u" v2 K% t' f( y; j5 x4 B call m_NewStatShow_goldcoinimg
; A# I/ U2 u3 Q/ ] POPAD! v P& K" R/ N4 @
JMP D2Gfx::D2DrawImage$ b' V) S8 S/ ?% S& |. G3 X
}
! N, {+ R9 ]1 U7 ?, X# E! [}# q3 }1 l! v1 C0 e
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标1 B$ X7 {/ ~8 S* k, Q: l
{
* p& k3 [& X5 T( y if (x > D2Client::ptScreenSize->x / 2)- c. r: K7 j" A9 E3 P
{
7 ]% k3 k* [( S( ^3 V7 G# J *y = getYGoldCoinFixBtn();
5 V& H; \7 Z" P# G7 l return getXGoldCoinFixBtn() + 32;' a, q1 n7 g4 n& i$ N% v
}
& G: r0 j3 E! D+ O- h0 Y, Z% u return x;7 N1 j4 x2 }7 y: A
}( S3 I+ _8 { a( Y, {5 S3 l
__declspec(naked) void caller_goldcointext()7 Y6 r; l9 Y) E+ n- U2 g
{6 h5 p, I2 M' Z8 N
__asm0 I, P& V, q7 z0 }( h0 t! }
{6 A# q) i. B6 ^8 k7 [3 s- G; }
PUSH ECX
$ C: H) e+ g1 I- r! g PUSH EDI5 R/ L* m% ]: y' J; e
PUSH ESI6 i. g; {4 `: n4 X$ }* q
PUSH EAX9 V' V6 w, ~8 s5 w. [8 Z
MOV ECX, EDX9 P' F$ @) u" e J
LEA EDX,[ESP+0X4+0X10]
- H1 J( a9 U! M" L2 X CALL m_NewStatShow_goldcointext
' w4 y5 l+ C; s. O" _& G MOV EDX,EAX
" @7 S9 @1 v2 R. B. p POP EAX* K2 G; G' V6 I' G. i% R# g" V
POP ESI7 \& g4 t# q5 z& n* g* F
POP EDI
- }& j. Q- ~/ ?% ^% c8 p- q5 ~* `" | POP ECX% v$ \( W) g3 L! _4 j @
jmp D2Win::D2PrintString;
% v9 j& I3 j' v1 \2 } }
, B' j' @% b" @1 O, k}
( Z+ N( ]% C+ P: A/ I) u' E" Z! C ]8 N8 v7 r
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)+ w: {- z) f) u
{
3 T+ f% {; D* K2 q DWORD mx = *D2Client::ptMouseX;% I7 Q- j3 b4 ~( F9 x% I
DWORD my = *D2Client::ptMouseY;
7 Y) R a& J( e9 j7 }- ?8 J# n& z1 x6 e if (isOnInvCloseFixBtn(mx, my))
. ^3 K* N p5 t" H" R return TRUE;
; p9 C5 x, m" k return FALSE;
9 j/ O3 A* T4 C, v5 i! w1 o}4 X) z$ X' u) S
__declspec(naked) void caller_close()" i% G9 h7 t8 ]' Z9 \
{% t' c ~1 d$ @4 N# x
__asm
1 O: c4 Y8 B; c. | {& P. s' y+ I) b( }3 z" H1 y
PUSH ESI
- @. a8 t- D; k% Q9 E push ebx4 R3 {( ^/ v1 L6 L4 h0 _
call m_NewStatShow_close
9 k$ ]7 k# e2 N. { pop ebx
1 d% a8 v# ~: K+ D7 h pop esi9 ~6 L+ A! o3 |" H1 M! m
retn
2 a& E4 }/ k! E* E$ e }2 W. ^8 k ?) g; V
}
0 z9 E7 G2 v$ ?void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])1 X& y K. L: _/ K; G% `% ~( b- C
{
0 r4 a! t0 Z6 ]6 @4 i *nXpos = getXInvCloseFixBtn();+ X8 p: O. V5 ~' ^. x$ q( [8 [
*nYpos = getYInvCloseFixBtn();- ?$ F: E+ O3 D5 \& I; v$ D' u! E: ~- G
}
2 T( i1 x) O7 V8 b. g__declspec(naked) void caller_closeimg()# n8 J5 X# V3 y, C
{, F4 w" E' H0 u' l! _
__asm
! V* o3 o0 K# f# c4 E {, P+ C% {: P' C8 `6 O' z
PUSHAD
$ J& q$ c4 s$ e; x. N6 h' |( K' w lea eax, dword ptr ss : [esp + 0x38]( d( V) x0 O7 \/ k3 {0 b
push eax6 C! C) y% q3 W3 _8 z4 V
push dword ptr ss : [esp + 0x38]
: j" \$ P8 J7 I' C push dword ptr ss : [esp + 0x38]/ P, I O5 A7 Q/ |/ g @# o
lea eax, dword ptr ss : [esp + 0x38]
* K3 x& ~0 V4 J, u& e3 f1 A push eax
9 a7 K8 K2 x) |- u% x* S lea eax, dword ptr ss : [esp + 0x38]: t( {& c( k1 h
push eax
: {! g7 j) W3 m push dword ptr ss : [esp + 0x38]
4 U, c# E- w7 y0 B' u& | call m_NewStatShow_closeimg
! c/ e4 V. Z* y( c) T5 A0 `. d0 z POPAD9 i3 d. U$ x- B# f# K' o+ ]
JMP D2Gfx::D2DrawImage
' R- }( P. o8 H2 R }
8 m! S- y- O* O0 i' R$ w- F}
1 N# C2 r" @& u2 E0 J7 B; v1 r% O! [8 e+ ?8 W% Q6 t5 g5 z
6 d9 a+ L+ y* B& V5 d% j4 C5 u |
|