|
|
转载
0 V7 j& H. z% f* K6 b, wBY SJ% _- l' j( Z9 n! F& j; {
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
; y: Y& Z( b/ C* L5 U% F' Y; |
3 B( S2 t* n% @D2Gfx::D2DrawImage-10041* e. N* x+ d6 z9 _% l' R
1、修复技能的背景(不需要可以不要)
1 \: d. r0 o5 t* g# z1 r: soffset = D2Client::GetAddress(0x77AA8);
X1 x$ Z T: r) |$ r7 J* @Memory::SetCursor(offset);
+ c8 `5 F1 z+ O0 V; J3 g" KMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
4 a1 q2 N8 A: M( T( @( K3 A {; E7 A/ u
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])$ z* Z' b. J* V
{
- s# ^+ w7 X4 `+ T //Init data for print image
% X/ y" O/ f9 ? sDrawImageInfo data;
" @, {1 v5 b2 h5 r U ZeroMemory(&data, sizeof(data));
! L( q4 Y, R7 Y6 l) a; N* Z: x" n
//print background
& G! k; i# e3 b* J setImage(&data, spellBackgroundImages);1 A" W5 q4 e+ c
setFrame(&data, 0);
; g2 A$ r3 ?: e* l8 R int fixx = 511;
4 @' O* a% E/ A int fixy = 9;/ _* S9 a0 x# k: t1 O4 U
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
) f {- A2 X& n2 q/ K, s setFrame(&data, 1);, m m& u: q6 l ?( I( G9 Z
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
, Z% G! s/ z3 x9 S8 l! m- l setFrame(&data, 2);
! U0 s6 E0 X: c6 X& ~2 A; e D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
# H; i: {5 ?- R) R# J( T setFrame(&data, 3);) M& X j5 ~1 M& h
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
% b* _' b& J0 \9 s" H. _}
; L+ v9 Z& k4 p1 J2 Y__declspec(naked) void caller_SpellBackGroundFix()* X0 v, Y, d- I# a9 T: S
{( a/ m' p: c! L8 E+ ~$ B
__asm
, d" c b+ \% X, J* G {
5 Y7 E( E" ?% z3 m+ E PUSHAD( d& {6 {6 s8 z" x
lea eax, dword ptr ss : [esp + 0x38]
* [2 U+ S% A: t3 X) f+ P push eax% J$ h4 I3 A$ e5 }
push dword ptr ss : [esp + 0x38]
" h) C" K- V. H8 \* t push dword ptr ss : [esp + 0x38]
( e/ Y1 y; {9 U lea eax, dword ptr ss : [esp + 0x38]
1 g. H% f6 d, G* G& \ push eax0 V9 M+ L8 k) S% u& Z+ R
lea eax, dword ptr ss : [esp + 0x38]
+ `0 s$ ?) T: ~ p push eax8 I, x `6 T% `& T, N2 u
push dword ptr ss : [esp + 0x38]7 B/ `5 E5 d! e1 }9 C. K7 V' {
call m_NewStatShow_SpellBackGroundFix
' T: o" z. z- K) v* p3 x POPAD
; \2 h% q9 {0 |% w7 l4 S JMP D2Gfx::D2DrawImage
d" P6 E: k% y& d }+ O6 | k) P; y% K
}
+ A' T, G" b1 I& n, n V! N6 q1 W
; i( C" L7 V8 T+ s! r, _9 Q0 L2、我们如法炮制小站的背景
9 U' a& f2 G- u. o7 C1 t' Z" o9 V0 p- Y
offset = D2Client::GetAddress(0xAB010);
6 z9 M7 p; }; j' D+ b, ?7 uMemory::SetCursor(offset);# ]- K6 ?) e" ?9 u8 K+ W
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
$ ?* J# H: p& P" V' E/ l( S0 N6 c; `, J& K! |, [, x$ Q6 W! e% v) T2 B$ g
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
7 R/ s+ L) z5 U9 i{: ~0 D# M7 }' N" A2 r$ W/ J
//Init data for print image
) D+ _: K5 @0 Y sDrawImageInfo data;
, r. c8 q) x! I ZeroMemory(&data, sizeof(data));
$ p5 d l! i/ {7 J) ^8 d( l
& G) k+ Y7 R+ v# G //print background3 `! }- m$ h, ?0 G. I! m
setImage(&data, waypointBackgroundImages);3 M0 L; N; f- ~
setFrame(&data, 0);3 o+ ?3 j! N! o" q% H
int fixx = 0;
$ f0 g" ` G0 j int fixy = 9;
! h2 N2 y! Z8 s+ t- j- Y D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);/ ?/ S5 }0 m5 s' @! i: j
setFrame(&data, 1);+ l4 r8 x9 B- v4 o) x4 j& p
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2566 Q: {7 e( d/ l4 }+ M l" _
setFrame(&data, 2);4 a$ w! C1 t% ?+ n# q ~- m5 v
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
/ t4 j7 s7 W* A( D# p# x- y3 P setFrame(&data, 3);
2 D# f& p* n% O$ F D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);+ E+ p* }: `/ Q4 o% b) e
4 y1 S& P4 s. r2 q V, M% M}1 Z4 {0 D8 y. X2 n7 J; p; P# }
__declspec(naked) void caller_WayPointBackGroundFix()
" t, Y5 u5 ]' X. U7 y{
5 P/ p* H. y, w# ]; U __asm: o; {; V3 y1 l& t0 e I% X7 ?
{" L8 t, v' d, `5 q7 }! s" E, `
PUSHAD
, T [4 C) ^/ C" X! v9 h7 f: d lea eax, dword ptr ss : [esp + 0x38]
! E% J4 x. o! c8 s push eax5 i( B& J" a# b' | R
push dword ptr ss : [esp + 0x38]0 [9 I N6 C; S/ x% J
push dword ptr ss : [esp + 0x38]
% L( T/ u3 V& ~/ m# `* e- H7 E% x lea eax, dword ptr ss : [esp + 0x38]4 ^# m: f# x! Q
push eax* v) W! a% B4 b- i, Z$ z1 U
lea eax, dword ptr ss : [esp + 0x38]
) s: A- m1 d$ m4 I+ M' i push eax5 r% X$ ~* ~% ^6 }" {- W
push dword ptr ss : [esp + 0x38]6 a, R3 K+ v. V9 t$ L9 G
call m_NewStatShow_WayPointBackGroundFix
- k# w2 ~/ ~2 x z: v* b6 L4 r POPAD: v# f' V8 t* R) }3 m
JMP D2Gfx::D2DrawImage
& ]4 ]* E D" p5 [9 P7 j9 m }
$ Y2 E% M5 G9 B5 O; c}( h$ |( l( d3 l. d7 L
& R; u; O( X) {# Z! O9 q5 J3、以下可以搞16*16超级箱子-腾出我们需要的边缘. Y2 G* ?8 q* Q. b3 \+ R" @. ~" y
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
3 N8 r/ ~- d3 ]) P {1 t% r5 ~; {& ]) p9 ~ Z9 i/ Z
class D2MultiRes : public Library<D2MultiRes>+ Q: t+ }$ f: o, ?& d$ r
{
& T3 L+ A" D# ? public:
+ J2 N8 c; B. V" x static void Init()7 B% b( u' x% {6 @( [5 N0 }6 p
{. }- D1 Z, B- N
Name = "D2MultiRes.dll";. J) V/ _0 E0 h# Y5 x5 V4 K' Q
Offset = LoadDiabloLibrary();4 H8 B* Y- x- }3 p3 H& S
}8 _5 t5 ]3 ~: j/ j
};+ y+ @9 m6 R; c) z$ y
D2MultiRes::Init();
d; k/ s7 n0 h; v4 v9 q D2MultiRes::HookLibrary();
5 k8 p! j- x7 C6 _$ J* K8 ^4 x: e9 ^2 K, ^. |# h `
" ~# ^! m; E1 Y, l MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
5 y c- W; C( ]( w Memory::SetCursor(MiscFunctionsOffset);
( s. x y' \' c( [4 O Memory::ChangeDword(0x1b0, 0x200);
. ?! {' P) v# L0 ~ X6 Q$ i3 i1 Z$ p3 U
% J8 a; U1 M `, H' Z# K: B- A! b, K" [+ h
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
$ B* `0 | | f" j) x1 V Memory::SetCursor(MiscFunctionsOffset);3 y6 X- L4 H' h' R( Q2 ?
Memory::ChangeDword(0x140, 0x200);$ c, t' C8 X! t8 A q; U! R3 E' B3 b
. a/ Q8 {% J& J% o- n( Z' T' v* \4 Y( {. P
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);1 @- k6 R7 N7 ^% c8 ^4 g2 `/ {
Memory::SetCursor(MiscFunctionsOffset);( M5 {4 Y% |2 C. [
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
2 @9 I& f5 k, r# ]
- a4 @3 m8 B7 D3 {& ^2 ?# _ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);- z3 B' |2 S1 H7 k- V( n- ~6 Y
Memory::SetCursor(MiscFunctionsOffset);
0 z. T9 _" o: U* u4 I Memory::ChangeDword(0x200,0x299);//下边缘 299最大
9 I$ ?2 I9 k: o* P5 p7 e! Y- a$ O/ l. R/ E0 D
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);4 t# S% e6 P) \* S6 m
Memory::SetCursor(MiscFunctionsOffset);
# V+ L' g) K2 S Memory::ChangeDword(-0x280, -0x400);//这个不要动' J% B, r: [- h! M' o1 q4 J
}3 u" c1 B, l9 T: K4 o# N$ O( k Q
, p% h# R. R! G4 a. y4、快完成了,是不是发现金币啥的位置不对??
. C. q! W% A" ~$ h2 j& g( A; X1 f$ t$ T: B0 f7 g1 c) v$ |6 M/ U
//这里修正我们的装备栏: K: w3 m4 m& D/ y* p* T% r5 B
offset = D2Client::GetAddress(0x99B6C);
. [" r2 v* Q) M. Z1 I9 ~ Memory::SetCursor(offset);
( E3 [6 d3 r. ~$ a" n# i/ q1 | Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);- v* L0 q# A' Z
8 A% ]0 g+ l) `' s offset = D2Client::GetAddress(0x99BA7);8 G- c7 m) `/ X5 F. f3 J
Memory::SetCursor(offset);/ Q3 ~* X U! O: o2 d% R( [4 G
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
! A! T) A( F7 @3 d& H5 V# u- N3 z* `, u4 Q c; a; _
offset = D2Client::GetAddress(0x99BE2);% n* |' b4 S. @$ p, U
Memory::SetCursor(offset);8 A! X$ n( u& I/ M
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
e. x5 Q* y/ {- [+ l4 S. v
! i8 i* @' _7 }" e* [, l offset = D2Client::GetAddress(0x99C1C);) F5 { f: R4 `) f) k
Memory::SetCursor(offset);
5 t1 f2 d% d' Y+ ^7 B; P4 B- A5 Y+ O' r Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
- t9 N# g8 t: P& A! a! c- O+ Z* Z5 P* Z/ ~- W8 G
//取消两个popup,偷偷懒不过分
6 b& G0 F& G8 w5 K* Q* t/ B offset = D2Client::GetAddress(0x9386d);
S* O, E4 n1 n! N Memory::SetCursor(offset);
5 E2 s" ?5 C7 f3 G6 T+ P Memory::ChangeByte(0x8b, 0x33);5 p0 T/ g1 [8 \
Memory::ChangeByte(0xc8, 0xC9);9 j5 P6 m6 r2 a+ j3 n: ~
offset = D2Client::GetAddress(0x9390b);: D! R8 ?: o# J* ]2 g) B
Memory::SetCursor(offset);) y/ |. v6 H g' q
Memory::ChangeByte(0x8b, 0x33);# x4 T! K* v0 l8 q/ v1 ^
Memory::ChangeByte(0xc8, 0xC9);
! A. S1 \/ @& E, H' p9 O
* `. r) V% i$ Z* q8 j //修正提取金币
7 e- s- `! k' Y8 f* Z& ~& J5 c5 f offset = D2Client::GetAddress(0x8D3E5);* }0 Q, o* {5 L- E) A
Memory::SetCursor(offset);
0 @4 l) `9 _1 k# n Memory::ChangeByte(0xA1, 0xE9);" Z, W9 |, @# K" x
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);" i% l/ z% O( b. T( F
' g# R m5 c* r; ~: s
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);- P: u( Y2 F# b& v
Memory::SetCursor(offset);
: a- ]3 C; w: b: ^$ t" L Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
; Z }. @% ~4 ?; R O K7 r1 Y+ b) R+ u- g' _3 Q
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
3 U8 o/ B6 F/ n; r8 L Memory::SetCursor(offset);5 i& t) N) I8 g( \3 n7 w9 T. a$ ~: N
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
l# Z( z6 a Z4 n4 @4 P6 P3 U6 T" e3 k3 ~! {
//修正关闭按钮- G( T/ T: J% n' w: a: k
offset = D2Client::GetAddress(0x8BD90);
. h+ ?# t9 K2 m; e& @# z& p7 V& m Memory::SetCursor(offset);
5 Y7 S# p# m+ \+ `$ N# k Memory::ChangeByte(0xA1, 0xE9);
|5 \; k/ h3 d' |2 `. a& H, l u Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
0 A, z5 c/ J$ d3 X/ t' G* T. y! y/ k q4 d
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
r5 P7 @3 o6 i* N% A. z7 T0 u0 ^ Memory::SetCursor(offset);
' ] P7 r$ q* I. N6 i Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);+ G P& b# m7 k& y/ o- z- y
0 N8 {/ P7 z# l6 d: L% E0 j( v
# W/ D' [8 c R5 p# t0 E1 H//以下是细节
; u6 k( m* E& p2 i' u* J% [" y#define getXGoldCoinFixBtn() RX(0x2d0)& T9 X- y4 M8 r. R, s
#define getLGoldCoinFixBtn() 32
5 y; Q( v1 f/ k7 B( O% [/ R#define getYGoldCoinFixBtn() RY(-0x59)+ m- S% P" D9 D+ {, p# L
#define getHGoldCoinFixBtn() 32$ W2 Q, O, P5 j7 g$ ]. T
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())/ j3 O$ N: e2 f9 @* r7 W: p
5 ]3 S7 k% m* v' a#define getXInvCloseFixBtn() RX(0x3db)& _: l9 U/ o( N+ K
#define getLInvCloseFixBtn() 32- m% ^7 @9 k$ Q
#define getYInvCloseFixBtn() RY(-0x63)
4 o# d, |, d+ S0 S#define getHInvCloseFixBtn() 32( t D: ]- Y* a7 q8 G, i& k' i: e( e
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())' o% n4 P0 Y3 D; q
0 s3 D3 {) h( j% p: V, X4 [% ?BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)$ n! N( A7 X; Z, ]
{
& O3 }! @' H1 v: N DWORD mx = *D2Client::ptMouseX;6 g/ [+ X9 T6 D9 [( `
DWORD my = *D2Client::ptMouseY;
$ w$ t# }9 N% c2 v8 o) s if(isOnGoldCoinFixBtn(mx, my))& }9 H- b- C! u w& s
return TRUE;7 w8 ~$ P0 u9 {
return FALSE;' R- [6 W/ R( G0 N9 n* p
}/ k [+ f/ x/ E+ p
__declspec(naked) void caller_goldcoin()( c/ J% o! r+ p9 H; ~. h7 M- h) s
{1 P4 I4 y1 W$ z6 M
__asm7 X( @8 f. ~2 ^+ b4 Q4 M
{; n; C- x8 Q p3 c0 {# l! A
push ebx; {! c' ^- G+ _1 }' [
mov ecx, esi
( o. Z& E1 P) n1 M6 S% E3 Q mov edx, edi0 R+ t9 w0 h n, _' G
call m_NewStatShow_goldcoin
; q& z, \* g$ [8 z9 ^- E9 w pop ebx
. ? n9 y4 Z' Y8 f; u( n/ c pop esi- T- P9 A& [$ _; F" y' f4 T
retn
4 `3 G9 j4 P4 A }
0 \6 l8 y7 f6 @. V}
# U9 Z. y+ L$ X4 {void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])' v5 P3 D6 L; p
{
( K4 d# q$ ?+ @# j/ H0 s if (*nXpos > D2Client::ptScreenSize->x / 2)
& @( J6 @; k; c3 v2 I1 B) ?" z. y1 p: t {
, c# \+ C4 Q; _+ E' W *nXpos = getXGoldCoinFixBtn();
' D+ i x s4 v! K *nYpos = getYGoldCoinFixBtn();
9 Y7 d5 m: T" e1 G* C: W( x }+ V/ }2 r) L! I& ?$ m
}. e; s" _* R3 L9 {/ L5 \+ o
__declspec(naked) void caller_goldcoinimg()
/ m7 S& H! T- f E) h) W{
. {) t# Z+ y3 H; n% J2 I8 X# y __asm
# c. V" s" c+ ~* s0 S1 S) }) k {( |; M6 f* N9 T3 y, s/ a( \
PUSHAD. c0 V; h g& Q0 C8 K7 P
lea eax, dword ptr ss : [esp + 0x38]/ ?3 _2 n. W9 @+ R; A$ M# W
push eax
" Q' }7 p: e8 o$ M push dword ptr ss : [esp + 0x38]9 D/ ?8 R, B8 z" ?9 x1 |. z. P
push dword ptr ss : [esp + 0x38]
\1 }+ \9 |+ i6 E4 ?$ v! y( |$ K( ^ lea eax, dword ptr ss : [esp + 0x38]
0 h6 q6 v; E; @' u a K: Y/ M push eax
! Q1 Y/ j/ V4 S4 ^5 q lea eax, dword ptr ss : [esp + 0x38]
: [. F8 h4 S0 S, x& d! \4 g push eax
! y3 d! ~# ^$ {6 z3 b push dword ptr ss : [esp + 0x38]# S, g c8 U! P" d' l" X
call m_NewStatShow_goldcoinimg
# V7 s' l$ n& T2 ]! U- n2 s POPAD8 Q0 o% H2 L; G5 S
JMP D2Gfx::D2DrawImage
+ N0 ?5 a. ?. r }8 ~7 Q% ]# A1 {5 \3 W
}
+ D" O& v; Q( `7 u7 ]; @7 }DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标 @ E( q ?. s. f; V! |* ~
{6 s5 M" c! o* K' p% T
if (x > D2Client::ptScreenSize->x / 2)
# B5 f$ h8 E) {% C4 u4 t# u {
; z; W* S3 n9 z *y = getYGoldCoinFixBtn();
' A% {6 [1 x, A return getXGoldCoinFixBtn() + 32;7 Q5 C1 b/ E" E5 Z) N! x
}+ Q' l. a3 Z) E" G- H1 d0 H
return x;
9 `3 ?1 }0 g# c8 f2 `; Y}" ?1 y4 m) t" U6 t; X
__declspec(naked) void caller_goldcointext()% O2 Q2 H6 N5 [# G h" ~# M7 B
{
, C, X% K' X# j __asm
. x% T+ l G8 d {
# w& F) D {5 T PUSH ECX
3 C4 K. x5 D! }; C! N' f, a% t PUSH EDI
* P" Y9 K' M6 \( J PUSH ESI
5 B; e4 J4 i* }" f! N- H PUSH EAX" i$ w5 A2 v: Q6 C
MOV ECX, EDX. Z- Q& z+ V9 K
LEA EDX,[ESP+0X4+0X10]
9 y+ f8 I/ [- [2 k& f6 F7 I CALL m_NewStatShow_goldcointext
H/ M( e9 X, F* Z# j/ i4 @ MOV EDX,EAX) K# B& `8 S$ P' C9 L5 N3 r
POP EAX6 Y4 z/ r# \% E( H" t
POP ESI
7 `: u* T0 Z6 W6 y& F POP EDI, ~" N: |/ b8 y+ y; w; E
POP ECX
+ E4 ?. f2 k8 h* f4 [& E& A" u jmp D2Win::D2PrintString;6 d: W( H; m, Y# e5 [- }
}
: h J+ r1 c+ |3 z# t0 Z}8 |1 k p2 J7 U: @' _3 f
3 u7 i8 P' J( s1 l' vBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)( ~0 {2 f' X/ K7 ~; P9 g
{
* ~& H( O( w! ?) o" ?/ }2 r7 h DWORD mx = *D2Client::ptMouseX;
# T) I0 @$ _' Z+ c7 P: _5 H DWORD my = *D2Client::ptMouseY;
* A, G2 N) B( x# K! z% Q if (isOnInvCloseFixBtn(mx, my))! @5 |0 R9 {4 j6 I' ~
return TRUE;* b( d9 r4 v/ m" H, J' A/ I
return FALSE;" m! ~' \6 k9 I4 G9 L8 e
}" b5 ]4 Z% a# f2 Z( B+ `/ e9 Q; R
__declspec(naked) void caller_close()
+ ^! r2 n u4 B) G, }3 p0 A{
9 {( ?+ O( b: T9 s2 E% z3 U __asm
6 ]8 C5 L2 ~2 V H" f1 K& s {
! d) _( L9 h4 ~% D U PUSH ESI7 w$ N% p, ~' c7 \; O3 }
push ebx
! J( ^" S! Y. e# \5 K call m_NewStatShow_close. q' o# ?8 y9 A" C
pop ebx: \5 ]5 B5 K9 v' z X
pop esi( C" o7 x7 q$ Q% Q
retn% X) R6 F4 l2 I0 f+ b% S
}
p" ]! M5 J3 V}7 N" c' X# H3 A! M# C. m
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
' S2 l) N$ E2 J# z/ G{
( N; J5 I0 C5 o3 ?, q *nXpos = getXInvCloseFixBtn();
( e, f! K1 i! t. _ *nYpos = getYInvCloseFixBtn();
/ i, N4 e& g" |}
+ \$ v: S' I) k6 G! Q4 y__declspec(naked) void caller_closeimg(). i* q6 o R7 X% {2 h
{" J) j0 ]; o9 h5 E& ~7 Z; l
__asm5 X( G8 Z' t8 B! x! r/ T- |
{, C. q1 D d; O- V1 _( O& @
PUSHAD
% N& t. Z% H+ j ]& m6 X2 s' h lea eax, dword ptr ss : [esp + 0x38]
6 I U9 @3 N, Y- S) L+ T push eax% x6 I; j _! U2 h: F7 C" {
push dword ptr ss : [esp + 0x38]
: P2 E5 V6 C1 a1 S. K6 k" K push dword ptr ss : [esp + 0x38]% t7 S/ n7 Y( d+ r+ x
lea eax, dword ptr ss : [esp + 0x38]' N! P6 z& R& d
push eax& U! \% `6 S8 R" s
lea eax, dword ptr ss : [esp + 0x38]
; ]3 R; g6 n1 j push eax4 q& T [/ {5 {5 b; R
push dword ptr ss : [esp + 0x38]" j3 |5 d+ y& T7 _ f
call m_NewStatShow_closeimg
& B k" q: O# a7 ^3 a5 S5 a POPAD4 ^5 x" Z4 Y* L9 N6 m
JMP D2Gfx::D2DrawImage( Y4 F) N6 Q: w. u0 S" M
}, f8 r" k9 X( z- J3 D' a* G
}
! o) J1 h9 s: V$ d% c" d O
3 n" l, b% q. g* Z0 h8 y& b
2 _- R5 n) ^0 A6 j: M2 I- ]" s |
|