|
|
转载
1 j. t+ P% g$ E5 i' |4 ]' ?# DBY SJ7 v5 t5 y' i. {) r$ q5 E& B
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
8 w5 B G% q9 z. O/ }% a4 N/ B" ~+ ^# q! e' N( _3 g3 T8 V7 a
D2Gfx::D2DrawImage-100413 E s$ `2 n* q( U
1、修复技能的背景(不需要可以不要)
+ N8 k1 p3 T% C/ Z& Z; Zoffset = D2Client::GetAddress(0x77AA8);7 T6 }, T+ N2 y% m* x! {* M
Memory::SetCursor(offset);2 [! [+ Y$ @# R; A# t/ k0 k0 v
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
1 D1 D$ o5 p4 Y" T, ]( U, i% K% t( J$ t( a$ {
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
- C9 D* w9 |) p4 v" e* W9 K" n{
: U) |. M4 G9 [2 c& E8 B //Init data for print image1 a% g/ _% k) b0 O% }* F# Y9 b7 S
sDrawImageInfo data;4 i$ E+ m% t' X' I& i
ZeroMemory(&data, sizeof(data)); N# G" d' u0 P( K
3 X/ Y3 H# n; h' F //print background
. K9 \ m7 k# c9 M. D- e setImage(&data, spellBackgroundImages);
# m, c" T8 p4 i9 M8 M# B) R) P setFrame(&data, 0);# n9 \7 q. i ^/ `3 h# w8 Z
int fixx = 511;
! P* H& I( _, ~4 b" a8 m int fixy = 9;! s+ a" E6 {% z" u( [2 ^7 m9 C$ ~
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
7 ~1 P; G# D5 S5 j8 K( T setFrame(&data, 1);
$ i( w$ h$ R; {& C D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
5 S, ^/ y; ^% r2 e- ]6 X# @ setFrame(&data, 2);* ]- G: N3 D l, n
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432- d# O' b$ ^5 A( l" J
setFrame(&data, 3);
& s- T* x% V- [/ d$ ^ k: R D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
+ O/ K" x- P& u1 H}
* |& X' |3 b9 m1 Y) G/ L__declspec(naked) void caller_SpellBackGroundFix()
- } r. u/ @* x- _1 @. u+ Y* ?{
5 A7 J) S7 s* Q4 r6 C __asm
4 w- |- M$ f- c {% ?+ R8 E. \# X
PUSHAD$ r4 }9 M6 m; z; B
lea eax, dword ptr ss : [esp + 0x38]9 f! _. r! [3 `$ S8 G. p4 k5 a2 O
push eax# z$ K$ r! p {* B
push dword ptr ss : [esp + 0x38]" O- A; a+ Q4 o4 ^% A2 Q5 p3 A
push dword ptr ss : [esp + 0x38]
! I# g0 ^9 U6 E, r1 o) c; ^% U r lea eax, dword ptr ss : [esp + 0x38]# I0 O s$ p# ^! }4 z* ?2 z) o
push eax9 d% q2 a* G |
lea eax, dword ptr ss : [esp + 0x38]% t6 _, \7 m5 X8 P
push eax, i% A, o0 G) q7 D$ d4 |
push dword ptr ss : [esp + 0x38]+ ?* d0 D- y: [) a; C
call m_NewStatShow_SpellBackGroundFix$ u3 g4 t" `3 {5 v; _
POPAD
2 f. t' z' ]$ L; J6 k JMP D2Gfx::D2DrawImage3 F9 `1 A" n# h
}
+ I& P9 K' o; R}5 u( Y0 @& k- w2 e; B r
$ ~, M2 _8 R8 {2 g! G) n2、我们如法炮制小站的背景
$ r. J% P& w* K4 s. d
9 c6 F% V) Q" I! ]offset = D2Client::GetAddress(0xAB010);
2 n% U& W! } Q1 R* P' y4 wMemory::SetCursor(offset);/ q0 ~# M6 R; t- ^% A8 w [
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);, c9 }% {3 r" x
5 y1 g! s, F; c# h
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
5 a; N8 w' G6 y% a" b7 i{
: d/ ` b |6 n$ [' c8 C% q1 b7 B5 I6 M8 O //Init data for print image
c- E8 S# x5 x) }- q& v2 E ~ sDrawImageInfo data;
{" T4 m. v* V7 Q! O1 P ZeroMemory(&data, sizeof(data));
$ c8 ?. Q2 W' U4 d' f$ C+ l
' V' e" p7 J7 `# q" t) `# l //print background
9 ?3 f7 H7 j$ U- I/ D. ^2 ` setImage(&data, waypointBackgroundImages);( ?- S G# T6 i# ?
setFrame(&data, 0);
+ J! a1 x' J' Y! ]% ]2 `2 q: g& l int fixx = 0;
) X7 `, G8 K6 G: ? int fixy = 9;
; o1 W9 ]3 R' k: z5 Z D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);9 R: @; J! s3 c
setFrame(&data, 1);% G b2 O: P* `
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
1 K" S: [3 R, j) Y" n. f6 D* ` setFrame(&data, 2);* v0 z! h- }- n9 G3 f, v; l
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4320 q$ H5 K0 i1 ?$ U6 o, p# o# d$ x( q) ?
setFrame(&data, 3);$ J" |& d0 N. l: O! e' H
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);# R- y( F& E, D8 e, J1 J) C. ?6 r
. R7 G0 i. u$ n) N}
- h3 x" I" H3 ]$ J__declspec(naked) void caller_WayPointBackGroundFix()3 @# l' m! f# V: C. [1 U4 S
{, Q3 Y0 f, Z$ m2 K+ A6 a
__asm
5 m, ~) @; O* N" a {7 I% o4 D8 G6 \/ R! O# ]( N Q
PUSHAD# { C* Q2 M( Q( c/ f
lea eax, dword ptr ss : [esp + 0x38]
: K. m! r6 k8 R& s push eax0 e) q5 j) l* F8 ~! F2 F
push dword ptr ss : [esp + 0x38]
+ _8 N4 g+ Y7 c% e push dword ptr ss : [esp + 0x38]
4 K0 S5 _4 z% ]$ [) e lea eax, dword ptr ss : [esp + 0x38]4 \( z$ N8 k! y* X5 D1 E" ]
push eax
( }* l" w) ^2 |+ c lea eax, dword ptr ss : [esp + 0x38]
5 g$ W1 d' x& @2 P push eax3 g$ H) D$ W: A8 ^
push dword ptr ss : [esp + 0x38], ]* f/ {4 t2 `$ C" h
call m_NewStatShow_WayPointBackGroundFix( {2 [5 [' n& F; U5 L$ D1 u T/ ^
POPAD! ?! T d& H7 z; g1 W
JMP D2Gfx::D2DrawImage: T7 K2 t, F; ?$ e
}6 y% W, k# E6 a7 D+ k
}" ?) P6 n/ s. s" i
- {& `# N' _. H$ k6 X- a# q% u3、以下可以搞16*16超级箱子-腾出我们需要的边缘
1 R( j7 R4 Z1 W0 q腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)6 Q& s1 Y6 |/ e4 G. J5 e' Q
{$ B: }) ]+ W1 p: @# @
class D2MultiRes : public Library<D2MultiRes>; B9 y* G! r$ N, N
{( f% x, |; Z3 {7 S
public:
. ^4 ^% `( d5 I6 [0 r static void Init()8 p- R1 F! [ U, D( z
{2 ?/ o/ R4 ]" f
Name = "D2MultiRes.dll";6 J% `! s$ e, M. o4 ~
Offset = LoadDiabloLibrary();" E6 ~/ y# b4 V) X7 T% K
}+ w" u$ W! b0 p4 X" \$ B, g) I
};. k9 P& w( @( D; y6 C( p
D2MultiRes::Init();9 l; p& \: c/ S# c; s8 c3 r' E
D2MultiRes::HookLibrary();
" x) E8 [* L% ^& n" ~$ x
4 z, e4 @* Q; j0 Z2 u9 N0 a8 D& h
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);+ b7 X; t+ s; `( ?3 {+ {# y
Memory::SetCursor(MiscFunctionsOffset);2 A' o* R% c5 I% N# }% A# |& f
Memory::ChangeDword(0x1b0, 0x200);
5 L3 @8 r( ?" X
/ M s2 H4 p9 ^- \% E/ I
( p7 e8 _$ F" I, G MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);3 N% |) z! q2 v" {4 @
Memory::SetCursor(MiscFunctionsOffset);. H1 z! N: j" V9 n4 w8 a* V
Memory::ChangeDword(0x140, 0x200);
# `. O) C! t5 l
3 p8 C4 N7 L' h, p. q2 b9 W0 x1 I# z- b" o+ \" R; x
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
' }' e4 E# e5 p4 s. e Memory::SetCursor(MiscFunctionsOffset);
+ m; y. s; ~# {4 G Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块* X! t: M: t8 B0 |0 K4 e
) B3 v: J' ?0 B4 A; R! K' c r4 P MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);" O" Z; f2 _" E3 w2 [
Memory::SetCursor(MiscFunctionsOffset);
; g3 E; n3 q' F8 r' d# a Memory::ChangeDword(0x200,0x299);//下边缘 299最大
4 @& `1 Q. e+ o/ O4 M8 t1 Z
c1 B, @% q( }- m' L- P MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);# c% w$ ^- F! q, Y# k( V0 {
Memory::SetCursor(MiscFunctionsOffset);
4 X. Q, x( K2 W; u! J$ U Memory::ChangeDword(-0x280, -0x400);//这个不要动& ~$ Z ^1 T; F
}
+ `( Y3 u) V9 Q$ Q, C4 m. E0 O7 b/ H" d. ]4 } c+ `
4、快完成了,是不是发现金币啥的位置不对??. M& S4 r3 W* l% J
' N) A) A9 f9 ~2 b
//这里修正我们的装备栏# Y, u% O) t0 c6 k& `
offset = D2Client::GetAddress(0x99B6C);. ] S. e" a- x2 L% F8 l# I7 X. x
Memory::SetCursor(offset);/ N6 n- B$ W- q7 I
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);' J: C: G4 a5 ~
4 u8 B, K( G$ D5 Z) I. i9 U
offset = D2Client::GetAddress(0x99BA7);
9 D6 @1 x5 j1 r6 _% @ Memory::SetCursor(offset);
, N2 p; c( T) u6 A Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);9 h/ z7 \9 O H, v4 @% O
2 `3 B1 ?7 @- ` offset = D2Client::GetAddress(0x99BE2);7 {4 X2 Z" `) L; S* U h
Memory::SetCursor(offset);
' G8 D4 E$ M+ m& Q. K3 b+ h Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
2 P! z- s1 J2 g6 @3 u6 ?: ]# F V1 T8 Y
offset = D2Client::GetAddress(0x99C1C);$ k# x; q2 L3 @; K3 O3 p" v
Memory::SetCursor(offset);
7 k0 r+ T( h8 n/ P% u Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);3 u; t" P, X. q/ y1 o; V
R- ~# y6 l' A8 q //取消两个popup,偷偷懒不过分
. y- X3 m) y/ G% } offset = D2Client::GetAddress(0x9386d);
2 N M7 y7 y/ L' ^8 D- I9 u Memory::SetCursor(offset);
2 G: g9 M* C% V7 Z6 J Memory::ChangeByte(0x8b, 0x33);4 s' _1 y* c$ N
Memory::ChangeByte(0xc8, 0xC9);' D& R: i7 W0 n1 H
offset = D2Client::GetAddress(0x9390b);
, B. W5 f4 I) U+ ~6 `- w" E# C+ j7 `" K Memory::SetCursor(offset);1 A1 l O" ?' M) r, b" G
Memory::ChangeByte(0x8b, 0x33);- @( o, F# H) S2 \; i( z
Memory::ChangeByte(0xc8, 0xC9);3 Z) a+ e ^/ M6 v
9 x g. K1 W& |' x //修正提取金币3 b- W1 ]7 _6 _, \6 V3 N; b$ I; M
offset = D2Client::GetAddress(0x8D3E5);
1 Z. w. v! U% J$ W; C/ E9 | Memory::SetCursor(offset);) m0 N8 _5 [* w4 M) M1 p( b. U
Memory::ChangeByte(0xA1, 0xE9);+ c& h( n5 Z# C7 z; F5 U7 A
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);- v5 E$ ~' t6 n6 u9 N- s. R
/ ~: v3 M+ ?3 K9 @) _' o* W/ C offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
# A) h+ t1 R9 M) X Memory::SetCursor(offset);
& N& j z7 r" ] Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);! [3 _1 b) ]& o2 s" W) w; I
% i/ `* `" `6 U1 B, d% T/ H
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);& b' t6 j5 m* Z' d G4 H, y1 r
Memory::SetCursor(offset);& f7 m* b* ~7 E/ v/ l2 F2 [% a
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);: @* V5 \# ]# }; K- g* [9 ?
' E% K' z+ ]7 P1 h* [ //修正关闭按钮
( N0 H3 j) ?& f f# E- I: } offset = D2Client::GetAddress(0x8BD90);" h/ Q, H( B) s e0 C3 i
Memory::SetCursor(offset);
) v7 p) \4 H8 `! k7 N Memory::ChangeByte(0xA1, 0xE9);3 Q" Z/ C$ ?/ W
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);8 A3 {7 m, j% ^- x
* |' Y8 g) N" B+ Y' [. r8 k( ]5 x offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
5 X% i% k$ k) I& {# ]4 @6 n Memory::SetCursor(offset);3 w; a( }" b0 B& l! i1 ]4 P
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
6 w' Y# ~1 I0 e% t8 R' ^& m3 `
& O& N; a4 m( ~" O7 Z) @. N! i' ~9 q" i J3 i
//以下是细节6 T: ~5 O0 Q, U g5 q
#define getXGoldCoinFixBtn() RX(0x2d0)" k( j. w" u- M3 b' |" k
#define getLGoldCoinFixBtn() 32
& a! \+ u4 N- G' A5 X# P& \#define getYGoldCoinFixBtn() RY(-0x59)6 Q" U5 E8 M( ?9 J# F% f
#define getHGoldCoinFixBtn() 32; z- V) v2 a# Q0 A9 r! Z
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
" V& C7 n3 ?/ k) V8 _! L4 c W6 G- r( I
#define getXInvCloseFixBtn() RX(0x3db): W. h( f$ c7 j' \7 n# Q/ q
#define getLInvCloseFixBtn() 322 L: I' m5 Q/ }, Z+ w) D
#define getYInvCloseFixBtn() RY(-0x63) r) X0 g" i1 H) V" |0 f
#define getHInvCloseFixBtn() 32 Y& W9 E7 s! Q
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())- Q: t0 M( i6 `
* U9 @4 ?9 P- k0 DBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
# A, V5 e2 N6 D$ I! z{" T! S3 W6 P" H) g% Z7 N8 d7 l' m
DWORD mx = *D2Client::ptMouseX;
1 B4 h( R6 H# j- c9 p* f; b DWORD my = *D2Client::ptMouseY;
) \' `( _5 @2 f/ J' l+ @ if(isOnGoldCoinFixBtn(mx, my)), u/ H$ y& R( C7 r+ j
return TRUE;
X7 ~) l9 M. f+ G7 h/ s return FALSE;8 e1 d- r* {5 u1 v
}
" E$ ~ {0 b( u- K% P9 i0 Q__declspec(naked) void caller_goldcoin()
! l* W8 T- p' F e# y' i{, e. D- u7 y6 H+ L4 q* q
__asm/ T( p# ]& x2 s9 Z
{$ M' |, K6 x9 l. `$ j
push ebx {& I" d5 O+ S+ J
mov ecx, esi
. i7 P" [, ~% d& Q! p$ w mov edx, edi4 ~0 B4 u9 H) y
call m_NewStatShow_goldcoin
, D$ Q0 x% g5 p% a5 C9 k$ C pop ebx, A* m- `2 ]5 Z$ V- E
pop esi
3 e' Y+ F; t1 N1 h ?2 ]( F retn, T+ E0 q X9 s" ?/ M9 B/ \' O0 K
}) Y$ x* U, g7 K& X
}
. W" Q5 ]8 @9 S# {void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]); k4 k% F2 Q1 {" M+ Z
{
2 c! i9 t& R( q+ E9 H if (*nXpos > D2Client::ptScreenSize->x / 2)
3 {! d" X- T, d8 i {
. `# L+ u1 m- |0 r/ T *nXpos = getXGoldCoinFixBtn();
# a" F, e/ a9 z* U: ^( S f* d, l1 l *nYpos = getYGoldCoinFixBtn();& u& E0 \) W% L9 m
}
3 y0 F* B4 R( @}
, \& @/ k# l+ x# o6 T- F__declspec(naked) void caller_goldcoinimg()
- g0 O _, N: W4 C+ ^{
) e1 ^0 c. W* ` __asm( I' N: ^. P ^# D; w( \" |3 {
{
8 A- L6 ?4 \5 j3 W8 i& z PUSHAD
q# X( A4 Q4 x) ^9 P2 _- B! G lea eax, dword ptr ss : [esp + 0x38]. {5 N7 h9 ?( ^
push eax3 q! Q: z8 Q0 R4 n; ]; P
push dword ptr ss : [esp + 0x38]
( I9 ]# |! { s5 m push dword ptr ss : [esp + 0x38]
9 w; s. k2 k9 Y6 M5 a% g! P lea eax, dword ptr ss : [esp + 0x38]; w1 G/ W8 H7 F( z0 T& M
push eax+ X! B1 N5 _3 ~% _$ H% A
lea eax, dword ptr ss : [esp + 0x38]
0 E" J1 i$ s- s6 r push eax& m& q4 x9 K* c# ?0 z, M* W8 ^
push dword ptr ss : [esp + 0x38]4 R7 n9 M! ?5 {
call m_NewStatShow_goldcoinimg
4 s$ ^1 X; k) Y$ S POPAD
+ T0 G4 v+ ]& ?2 Y' l JMP D2Gfx::D2DrawImage
% {5 ^& H7 z+ O. i; \% q }2 w1 Q Q# v/ B* ]) @
}. X0 z* B! M/ z, P6 L" X
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
9 T! V9 M7 I6 ~3 Y0 g2 `{
/ R, e$ w8 E, _# d if (x > D2Client::ptScreenSize->x / 2). [( F) e% J$ |1 {/ \9 I
{
' [' O8 u$ n2 f3 z1 M5 N5 e *y = getYGoldCoinFixBtn();/ Q9 @) [- B6 `. A9 f: q6 ~
return getXGoldCoinFixBtn() + 32;
0 w6 I( D7 M. x9 d( v) A }
. q# d. Z+ Z& p7 W return x;
$ o8 k0 x* A) Y}, M2 _0 V" I3 D% Y2 N# d a0 b
__declspec(naked) void caller_goldcointext()0 Y) t' _% u$ c) x# I5 `
{
! s1 ~* l5 }# S3 E+ A R __asm
1 m1 F$ ]7 M: i& d. q3 m/ A {
, I# N. I2 N4 Y PUSH ECX
& X# f0 U+ `6 c' }: s9 Z) K+ M7 o PUSH EDI. Y% S( ?* h7 j3 T y) v
PUSH ESI9 s% Y4 Z1 Z: V0 E5 ?
PUSH EAX
5 p( j" D2 h) l% g' P6 M0 Q MOV ECX, EDX" p7 Z* p/ q, N' Y( a/ G* \
LEA EDX,[ESP+0X4+0X10]/ ^; P; R Y' |9 a5 `1 d* \
CALL m_NewStatShow_goldcointext5 ]' A9 h& a! K0 x" ?9 g8 g
MOV EDX,EAX
( l5 D) Z i7 _+ w$ J; d2 o# n POP EAX
B# ~ S/ b3 o, b; }/ q POP ESI
& C# _9 g% }& L# I k* c) c POP EDI; z) S' v! v& N0 T7 M3 _. \
POP ECX3 I1 |6 \! p) b. a! N6 x9 I7 n
jmp D2Win::D2PrintString;
) x( Q* _/ W( Q3 d }
0 |& { W' D* u2 o# q; W% w7 ~: D}
, X/ x N- ]9 b! X) ^6 w/ n
* Q3 z7 N7 j' _% c$ s( j& oBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y). ]1 a8 Y( w5 i, y
{/ y9 m0 x4 j8 Z; [3 F
DWORD mx = *D2Client::ptMouseX;
( X t2 [9 a( ]( k- l+ Q3 d( }3 X l DWORD my = *D2Client::ptMouseY;
, ]$ U# e1 p/ [0 j9 @$ V if (isOnInvCloseFixBtn(mx, my))/ ~0 ^1 k- R9 z& C
return TRUE;
1 e3 d; w+ s% x, v; I# {& [ return FALSE;
! `7 P5 w9 n) E# O2 f9 @}( h4 Q5 _) w8 t9 u- @
__declspec(naked) void caller_close()+ H* Z2 j4 ^) P# K% e; N
{, J; u I' e N& @5 n+ x2 B! n" o" j
__asm
# [) U/ Y J" `; o& [3 s {/ X* }3 L* ?/ T' G
PUSH ESI3 V9 y5 O' f/ \/ l: F$ S" E v1 h
push ebx
- Y0 S( @+ f) R, P/ [$ D% G2 ^5 |' F call m_NewStatShow_close- N' s! U- C5 e0 D
pop ebx% e8 r# d7 d5 `; ^! q S
pop esi+ e w( S$ C# Q" C% R
retn
& V: B* `- X+ {7 i0 H5 g. S& `+ y, f& X }; p) k2 q h" a8 u
}
3 U! X2 @2 M7 u8 Zvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
9 E, P! S7 b4 Z7 @6 {{
2 M' S5 \( I, Z) @3 s6 V *nXpos = getXInvCloseFixBtn();
$ Z4 ?% T/ u8 f' {$ O6 q *nYpos = getYInvCloseFixBtn();( _) S* X' h) g) R9 e% H# k% I0 v
}5 B3 K4 C* {8 Q( \
__declspec(naked) void caller_closeimg()
3 E; p0 n. o: }( N6 t0 h0 L( b3 ~{3 Z" i8 x9 b0 J9 f% }) Y" K
__asm
3 i3 g8 w. u$ T! B! X& S {
* [4 `$ e* {$ B; E PUSHAD; M, ?# V( t! g5 y; Z& u
lea eax, dword ptr ss : [esp + 0x38]
! L9 c0 z |! b) A8 ^ push eax$ d1 g/ m$ G1 W$ Z: D
push dword ptr ss : [esp + 0x38]
2 l6 q' ]' [4 v8 W, L' ]; X. e push dword ptr ss : [esp + 0x38]
' J# e) h+ q* @9 P7 r lea eax, dword ptr ss : [esp + 0x38]* d8 Y, B3 U8 `3 B1 D9 X, E
push eax( _) l: v( i1 U5 N% ?
lea eax, dword ptr ss : [esp + 0x38]
' U8 B9 K, H( L+ } push eax
7 x7 Q- I: z; O5 J2 i push dword ptr ss : [esp + 0x38]
8 C* s: ^& q' @3 ]. q* u6 X call m_NewStatShow_closeimg. D. ]7 I. ]' O* }
POPAD) b1 p; H. Y. k; \. [$ A
JMP D2Gfx::D2DrawImage2 x% u8 A/ D# O2 {: ^5 x& `
}
. t. I& H7 y2 A S2 ]" X# a0 t3 `) g}
, f+ m9 e4 T. t0 L3 U% N l* Q
8 ?9 G2 D) g# v7 G$ i! k7 J' T( y' e" d7 Q7 W6 A
|
|