|
|
转载
/ W9 g: U/ \# B. M& P% C3 lBY SJ- G' J$ m6 H7 ~/ E% D
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
: g0 |2 Q3 `8 ?( D' j4 Q
* [7 O7 P) V- f$ U1 @D2Gfx::D2DrawImage-10041
. v+ _$ ?4 L! A0 W1、修复技能的背景(不需要可以不要)
' |* q* J' @3 \+ Soffset = D2Client::GetAddress(0x77AA8);
# N- T! J6 E9 s5 [0 R6 IMemory::SetCursor(offset);
$ I+ @: p. K/ I! bMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);3 _6 v4 _# _: @+ E0 r, u: p- S! ]" S
) q0 Y) X9 k" }$ R* c9 \6 P* k
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])& r. o, S; t7 g1 M) a
{% W) W& C7 b2 Y# p+ U" x
//Init data for print image; b. W0 Y+ f6 o _5 `1 g! b
sDrawImageInfo data;9 x% O! q8 K' _% s4 d7 |+ Y& X
ZeroMemory(&data, sizeof(data));% I' w2 e" g( F0 v# u& A
1 {. j3 b/ s9 i" z
//print background
k) W. K8 \; D8 ~) d8 u1 | setImage(&data, spellBackgroundImages);' A. {" a1 o% G$ N* v6 t1 G
setFrame(&data, 0);* U5 |7 l `9 L' \
int fixx = 511;3 e+ F$ |3 g; e- t8 k& R) M2 D
int fixy = 9;
( ^ q& y5 L0 {2 k D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
7 w% \! a; H9 K+ J setFrame(&data, 1);# _+ Z) N* V- f- v
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
0 y5 V- U( \# }; O: O6 p8 u7 H setFrame(&data, 2);4 Z! ^0 k `' Q [) z/ k. c
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4322 A# j: ^9 N( C& ^9 X
setFrame(&data, 3);5 ~' r% C3 B, `" X" N$ `" ~! o; Q
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
( E* d* _8 U& S' y P}8 x: H% d6 ]% k* P" v# Y
__declspec(naked) void caller_SpellBackGroundFix()' Z" A* z1 U; Y; J
{& Z; P% E/ ?* i1 _) d# r
__asm
* G# [3 M2 y! R {* H, G1 _- h& p
PUSHAD
$ {* ]& f) z+ T- z/ Y8 \7 e lea eax, dword ptr ss : [esp + 0x38]
) p& |1 b. K6 Z push eax8 ~# y- m) z. L, ]. I5 P+ r
push dword ptr ss : [esp + 0x38]' {9 j: U, c) u3 v
push dword ptr ss : [esp + 0x38]
. |2 c4 {- }1 v3 c% } lea eax, dword ptr ss : [esp + 0x38]
7 p4 ~' u6 H' |2 w: i& y push eax$ { n, Y8 F( N) ]# ?8 ~+ a# V
lea eax, dword ptr ss : [esp + 0x38]
- k# R* W. E. E push eax
3 q% s9 ?% `& V6 c1 o; x9 {0 r push dword ptr ss : [esp + 0x38]! K. \; Z! ?5 [; {6 O$ V7 i `
call m_NewStatShow_SpellBackGroundFix
* t( G2 Q7 l& q- A2 d E1 \' c POPAD; u+ I ^8 w( j6 u, n2 z
JMP D2Gfx::D2DrawImage# _4 K. I% s! q& H/ `
}+ v/ ^4 G1 |* |, `
}
1 M6 c6 O- F7 C8 X3 Y" d) [2 a. @) w2 a6 Z& g' |/ v# T
2、我们如法炮制小站的背景
0 n% Z4 X3 }# H" x+ d5 d* a1 b4 x7 L, O* j6 L
offset = D2Client::GetAddress(0xAB010);' Z( [ X$ G9 ~7 w: U [
Memory::SetCursor(offset);% t& J/ X3 D; `# V$ A+ Y. K. Z2 L
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
+ k: t( e. ?' ~4 e& `& V" D7 Y i1 m+ |& G
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
1 u) S& ~: ], N9 e. G; s# }& B{. d4 w; B0 L* [; K9 m
//Init data for print image
* z0 D% c6 \, J4 \# ^* E sDrawImageInfo data;. y) \& j2 W: z/ x! f2 c
ZeroMemory(&data, sizeof(data));
7 ?, b, _2 D; v* t/ _* G4 P8 B# A+ B
//print background
9 m) O3 }& C' U W5 ]: F setImage(&data, waypointBackgroundImages);" u( U" b% B; {( @) X2 h
setFrame(&data, 0);
9 [# Z& x" a1 Z. ]( x int fixx = 0;
3 @2 L! ^+ ?" w3 m, ^6 K, t int fixy = 9;- |# c* \! t7 w) O
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);. i8 g/ _( G% H& j7 F
setFrame(&data, 1);
8 h$ D7 S2 a& e) f9 ` D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
- ~9 X& h- T, ^! f1 i( Z9 T& D0 V" v setFrame(&data, 2);
0 r( {& S, p% f D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432( i2 i6 O# o! S9 D+ L
setFrame(&data, 3);
# `' h7 n0 L. e: R D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);1 d4 j% c$ s9 X1 m
, E" B, u O9 e' g `2 D: F}
# r$ q3 K! o# n- q# M8 h2 r__declspec(naked) void caller_WayPointBackGroundFix()5 ?. P* n, {- V# R2 I
{
* v5 \ Y8 Q2 r# u2 J __asm# f5 D4 C% Z' E" G
{
. |/ D- E# c# u/ \1 M PUSHAD% K0 q2 J/ i, _0 Z" |! Q* v
lea eax, dword ptr ss : [esp + 0x38]
$ W6 o+ \/ g) g7 T$ E push eax
6 z0 [3 t& A" P5 ^- T5 b push dword ptr ss : [esp + 0x38]
/ V8 e2 w4 J# {( k* l. B push dword ptr ss : [esp + 0x38]3 i3 D( H8 g( Z } r! g+ @
lea eax, dword ptr ss : [esp + 0x38]9 N) j `. Z* e) i/ I( e
push eax
. B% s4 P) x C4 M8 B lea eax, dword ptr ss : [esp + 0x38]
- l! h/ a6 ?7 q" q2 X& V' W push eax
5 E* u. E" [4 U* e4 ?" `2 t push dword ptr ss : [esp + 0x38]7 |' @+ |6 z2 M9 |. a
call m_NewStatShow_WayPointBackGroundFix! |9 Y8 x. r9 E$ a
POPAD3 {: I: p8 w# J0 o. ]
JMP D2Gfx::D2DrawImage
& g4 u+ j: y: d# G9 ?0 u } I$ o* a! ^( K# J, O
}
b: Z8 N6 x3 `3 h% v/ _4 o2 _3 f/ e
: V8 Q& b- o! u& V) @" E3、以下可以搞16*16超级箱子-腾出我们需要的边缘5 ]& C; e1 e+ z4 H8 W
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
9 ?! S. c8 a8 V& S5 G/ s {
2 w/ G( [7 @3 f) e% ?7 o+ r class D2MultiRes : public Library<D2MultiRes>
1 I& Z1 w0 h5 P {+ M5 v3 u1 X1 ]0 P
public:. Y U! d8 b# y, o
static void Init()
; s( g6 L: S- d# Y- b4 ^" D) Q {
3 g+ e+ ~' g! J Y7 n f2 S6 M Name = "D2MultiRes.dll";
. i6 j: W" v: Y Offset = LoadDiabloLibrary();, e/ ?8 w+ \6 B' g% K) h3 \/ Q
}! E2 g% r' f8 P; U; }
};! T: f$ T1 Y# v$ ~0 ~$ u& {$ G1 e
D2MultiRes::Init();
) i- f! S7 {4 z/ N+ F8 o D2MultiRes::HookLibrary();2 B. E# B. g6 Z+ _& O+ ~
% W$ D' X4 h, M; y2 O" h) e/ W; C; g& |2 c; P! l
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);3 N/ g' v# H0 S: Z
Memory::SetCursor(MiscFunctionsOffset);8 E' s3 G+ Y% ]' X: e; J+ x
Memory::ChangeDword(0x1b0, 0x200);
6 B: H( \6 k. o+ j" h0 s( _/ ~
6 ^% N6 D% p0 {* W/ K+ E; T; A, Q9 d% c# i4 |; Y/ t) z
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);# L3 ]& B5 Z B7 I0 Z4 C: _) S
Memory::SetCursor(MiscFunctionsOffset);( N/ o+ J9 e* m0 L- J
Memory::ChangeDword(0x140, 0x200);
5 i+ _! J* V3 `$ o l6 @
/ w L8 ]( n7 N% ~; J0 x
$ z- A" c% m8 q9 H6 t3 X3 I2 A MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
`! E0 d3 a0 s" S4 g: R3 o$ | Memory::SetCursor(MiscFunctionsOffset); }8 E! ^8 M7 }8 s
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块" {' n Q% S6 S3 i3 H
& N) b" \1 g4 s MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
7 u) P& a9 D- [. p: K. a Memory::SetCursor(MiscFunctionsOffset);2 B. ^ z T$ x, i
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
; K* L- t" i) w. j7 L% b7 E& l0 P, u- n+ [
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);8 s! F; g0 K3 g" l
Memory::SetCursor(MiscFunctionsOffset);
5 L2 a5 L2 K2 E# M6 o- V5 x Memory::ChangeDword(-0x280, -0x400);//这个不要动
: R" S4 ]1 p% U7 w }. u+ z: B+ ]5 e) s* l8 h$ p7 ]+ c& D5 I
, \( \" k: W, A$ \4、快完成了,是不是发现金币啥的位置不对??; [( a1 O$ k4 e& |: ^) ~
" f( `$ L& f: Y: h1 m
//这里修正我们的装备栏
& E9 w2 M# ?: z$ C: l0 z1 Y offset = D2Client::GetAddress(0x99B6C);* D ]/ F+ j X
Memory::SetCursor(offset);
2 q/ K4 y6 k1 J. d. ]# q Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);. B2 a e; X- }! e& X2 F4 T1 S
( H2 C$ o# R4 ] offset = D2Client::GetAddress(0x99BA7);8 C# o7 S/ |: k; Y+ N
Memory::SetCursor(offset);4 D6 H) ]) ]. \) G8 }( d3 j- U/ t
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
. t: U/ F. }2 }+ j% i r: y; c" s! R( L8 Y4 I6 ^; z! u
offset = D2Client::GetAddress(0x99BE2);5 Q$ p& u* L6 \: s7 u
Memory::SetCursor(offset);! |& X! `- Z) s) A3 q$ d/ o
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
& c& @' ~2 e# X+ S: F6 j: I- i% t! M
offset = D2Client::GetAddress(0x99C1C);
2 Z2 w8 ?2 B! U) }& a+ f% ^ Memory::SetCursor(offset);( |: M3 j1 {/ h+ K
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
6 I1 C, `/ h0 X$ E+ ~5 v1 [/ B# g: o! Q
//取消两个popup,偷偷懒不过分
4 d# u- }$ `8 ^6 K: Z- a offset = D2Client::GetAddress(0x9386d);
8 \5 T# C: G: O% ~ s& P3 f Memory::SetCursor(offset);
2 Y/ x6 l i$ R Memory::ChangeByte(0x8b, 0x33);
8 s' J, c* y1 }6 D2 {+ @ Memory::ChangeByte(0xc8, 0xC9);
: q/ ^ W' B1 L! t+ n7 z2 P5 |- M* ^ offset = D2Client::GetAddress(0x9390b);3 N- |8 ~4 x* E
Memory::SetCursor(offset);* R D q5 I" E2 {
Memory::ChangeByte(0x8b, 0x33);
/ |3 m, u# t, |9 A1 g Memory::ChangeByte(0xc8, 0xC9);
3 p- Q* P1 T, j0 s$ B5 Z/ d+ s. G# o2 P3 b
//修正提取金币
1 z0 o6 u f7 r$ m4 C& M" J offset = D2Client::GetAddress(0x8D3E5);" I. Z% M, p& p+ [0 i3 g
Memory::SetCursor(offset);" d( T* ~- ]% R& c3 S% {7 p8 l
Memory::ChangeByte(0xA1, 0xE9);" S h: i6 O5 h; i/ S/ p. T# N
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);4 Y/ e6 a1 e8 _2 ]1 l. d
* W( v9 [! C! w/ W1 Y% Q( c
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
! M" z; {$ ~, Z Memory::SetCursor(offset);
7 D' k9 L, L+ A% G6 k# i- Y& Y Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);2 r* R' G# h! H7 l @8 r, I
3 J# x1 p* L8 @% T& M( C
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);" I, p( s- U5 z3 w" V
Memory::SetCursor(offset);
7 C1 X& |) G0 U0 [ Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
3 G* [: E- N/ P/ D3 _
& }! }2 z4 B6 D //修正关闭按钮
4 C3 V/ v/ j0 V/ r; E offset = D2Client::GetAddress(0x8BD90);
1 v; K3 g% S! \5 c5 g Memory::SetCursor(offset);
/ [7 b% i1 _5 Q Memory::ChangeByte(0xA1, 0xE9);
. z v- c7 t V Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);: U$ Z* R# L k" d
& N. o) i0 _' R$ T6 @3 ^" k offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);. J8 c8 y' J% T/ W% n0 _. x
Memory::SetCursor(offset);4 S4 g9 ^6 ?0 p0 |9 }2 ~
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
4 g( b3 v2 A+ z' K+ H7 M. u3 D" E( L- i. a' ]
$ U; h! x% q; p! a K* E! E8 C//以下是细节/ F; |3 o) w4 b
#define getXGoldCoinFixBtn() RX(0x2d0)
# K/ D3 i: x2 j4 o#define getLGoldCoinFixBtn() 321 G+ V( N o, @: ]
#define getYGoldCoinFixBtn() RY(-0x59)& O" _% v4 i2 d7 g* o3 w/ f3 E
#define getHGoldCoinFixBtn() 32" i# x& x2 r- B) R- M: x
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn()); V! f; F! @" k9 E T# }8 w L# Q
+ {% d% I. v2 v) W9 I/ R#define getXInvCloseFixBtn() RX(0x3db)2 y$ K1 h7 W1 u- U, X: }$ D/ g+ H
#define getLInvCloseFixBtn() 32$ b) s1 N& n" {- u- t- V
#define getYInvCloseFixBtn() RY(-0x63)7 D* E( q: f/ M+ r# E
#define getHInvCloseFixBtn() 32
7 x6 U! @2 S& v+ G#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())) K2 B! Z! y% c! s
+ Y6 }9 K1 ?8 [+ \5 gBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)8 i% W' G6 x0 F0 Q6 y( C! N
{$ |. _5 h' z* D1 H1 w* r
DWORD mx = *D2Client::ptMouseX;) Z6 E. N0 c% g' |% I; B
DWORD my = *D2Client::ptMouseY; V( w' |8 J9 x, R5 m* V
if(isOnGoldCoinFixBtn(mx, my))* x& N! v: Q6 a* `5 t* k- j
return TRUE;
( I& J0 c0 d* C return FALSE;
- [2 r/ O n9 R2 D% ^' x}" P+ k, W9 y) M4 ?6 v4 N. V
__declspec(naked) void caller_goldcoin()& r' Z9 c* O' B
{
3 g# }# Q: C% a( ^2 U/ t7 @* s- r1 I- ` __asm% [6 C7 }! [/ m
{
8 }4 k/ F& F1 z! O push ebx- ^# h* \: j* l4 n/ P4 D" T
mov ecx, esi1 g8 h) s6 E( O& f
mov edx, edi
- a- j9 V0 q' w; v' s call m_NewStatShow_goldcoin+ j9 y4 j4 h0 n* I
pop ebx8 K: d/ t# K7 g* d4 r
pop esi X+ s; `: W: A, O6 X$ A/ d
retn0 c- x. d' u L$ d; Y' J' {
}
2 u; ]7 Q E: P- f1 n}; w3 U2 N( e' n% r9 o
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])0 o, X" [* w' Q3 `% h- K
{; B9 u; w c# F4 b$ J6 e
if (*nXpos > D2Client::ptScreenSize->x / 2), c: {: a( [+ a7 _6 ^* i
{
; W5 _2 H0 q% r/ P' ~; s) f- f *nXpos = getXGoldCoinFixBtn();
4 y* z1 @3 M& z' M, ]" w2 k/ [" A *nYpos = getYGoldCoinFixBtn();! U q: Q2 r5 N4 _( M% q Q
}
/ @' b; C1 A( t5 q; O# @: H}% V( o7 b; k" \# b* N
__declspec(naked) void caller_goldcoinimg()+ R+ y4 X9 |+ K6 y9 V. L
{
+ }7 b. p# ^4 ]: h4 `. X __asm
: R+ r0 [6 C5 A1 K {
" g. `5 O2 o7 J k1 d$ z PUSHAD8 L) ~& Z( ?9 V, c
lea eax, dword ptr ss : [esp + 0x38]) @& D0 J8 F0 p+ l/ u8 F
push eax
* |- A9 J: j- o; q1 z" ? push dword ptr ss : [esp + 0x38]
5 @2 i) o( q" T0 I) `* R: I7 S4 w: } push dword ptr ss : [esp + 0x38]+ B3 ]2 X" q4 D) U6 G$ ?( T9 T3 i
lea eax, dword ptr ss : [esp + 0x38]
5 \" j& E. l1 a, L! n6 D push eax
# b9 N+ w/ w# m8 O6 w( Z- j% Z lea eax, dword ptr ss : [esp + 0x38]
# B4 r% Z+ \) D! D& d; }$ l push eax/ e/ S' ~! h3 F7 o- c6 K2 q
push dword ptr ss : [esp + 0x38]
4 q) H: A6 A# a) S call m_NewStatShow_goldcoinimg
0 U2 F+ _+ r d7 C; v POPAD; q! n# Y: D) ]3 O" h4 B3 ?
JMP D2Gfx::D2DrawImage( Z" L* W/ T* a. q5 r
}, i4 Q. c6 h) x- Y2 l
}* [. W {$ V) t$ i3 m
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标* d0 Y! J/ h: G% W
{
) m+ W* f2 U. V if (x > D2Client::ptScreenSize->x / 2)( ]& ~' I; P4 b, q! ~) M6 |
{
" h" I* G4 x& }" Y# C( q *y = getYGoldCoinFixBtn();* ?, C0 `9 h( c7 Z( R& z
return getXGoldCoinFixBtn() + 32;, v, c( V' b7 P( v; c: {$ M: T
}* V8 i- X% o0 c7 T7 H5 S% s
return x;
1 s. _! c0 S l+ X" J7 _}
0 v" v$ |2 b. r7 b0 }3 F/ ]& j__declspec(naked) void caller_goldcointext()
# V) w' j9 p# [' ?9 S5 S( ~6 X, b{
( {: E6 D' f6 B t2 ~3 b7 h7 o __asm
& F2 R& i m* [" I/ Z$ S {; i4 T- |8 n4 V
PUSH ECX
8 ~& w( z! _# Q' @' I/ d$ T# n6 K PUSH EDI
$ b: [8 C( @3 P2 {. D, R PUSH ESI
5 n6 z5 d" Z+ V4 ~ }) ?. j PUSH EAX
5 [2 C1 G/ a9 x7 a+ l0 m1 P MOV ECX, EDX
9 j5 L! _0 I. a* T LEA EDX,[ESP+0X4+0X10]$ ^- p8 [/ y: [4 E# p5 \
CALL m_NewStatShow_goldcointext) w! {) [7 p& y. s& U) Z# i4 ^
MOV EDX,EAX" @: y4 _6 u; N# ~
POP EAX* O2 F* f' S. G7 K
POP ESI
- b$ B* }5 @* v: J( |7 | POP EDI
3 F. n9 N$ {- n6 Z5 d POP ECX5 j: e/ z1 {& r) v7 T- x
jmp D2Win::D2PrintString;; W, ^$ G F7 l8 Z0 I) K- P( R
}
# ]$ F7 S! w* B/ p4 T}
0 p7 y' |4 O- _4 O2 k- ]8 w0 R0 s b! Q0 w& D7 T/ E7 \1 l2 U H
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)% Z" c' q% q3 ]
{* d) j1 q( T; m. O% o4 P/ b
DWORD mx = *D2Client::ptMouseX;) c/ [. U. ]* L$ H/ q* ]& W7 G- b
DWORD my = *D2Client::ptMouseY;) F: w* i: K' U- B3 J& |
if (isOnInvCloseFixBtn(mx, my))
% g: F' s3 L9 ~ return TRUE;
8 h d. E0 _3 S9 } return FALSE;
4 I5 p, _9 S" k: ]8 w}
% N p5 m+ x/ W& a ^__declspec(naked) void caller_close()
, q3 K7 y) y8 j7 s) U) L6 p{7 m" [" n% j1 f+ k
__asm
1 J, C% Q3 r/ [, O$ D" G: ? {+ h% B! C) k( v, S
PUSH ESI( [) o6 j$ Y( V! G+ Q
push ebx; p! X3 U* M, r _3 W5 r) y7 D
call m_NewStatShow_close
* w: R( h$ g7 X' }7 g, @8 f pop ebx
! D @' F0 I! C/ i& i4 `5 G pop esi+ f% m. _# r# v) W. y
retn1 J" ~% H3 t( V$ N; L
}
) R) }) }. T, R. q5 h4 X2 w0 p}
" `6 r1 n/ h1 e# M' o& X; c" Xvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]), E0 T% x9 r x
{# x6 d( a. e5 q2 t! j4 g( r6 ~' m
*nXpos = getXInvCloseFixBtn();
' c( a: u; R: |1 c0 _1 p *nYpos = getYInvCloseFixBtn();
: `( K, l3 K& n5 |0 G}9 {( |8 z( `# g0 Q2 F) Z# j$ }
__declspec(naked) void caller_closeimg()/ F9 k$ P0 E+ M% |# w
{ O0 A( m. J5 z2 P
__asm4 ?9 J( b) V4 K( r3 i
{
) a$ w% G" d( U9 P PUSHAD# V8 A& q3 [$ g7 j }
lea eax, dword ptr ss : [esp + 0x38]* o) R3 O4 O. g
push eax, N, F. @' S+ A$ V9 }- d
push dword ptr ss : [esp + 0x38]
% K2 p) k- }$ F/ G7 e0 R push dword ptr ss : [esp + 0x38]
) e+ l' q' V7 w) Q# p$ s! m3 w; o& F+ \ lea eax, dword ptr ss : [esp + 0x38]
; R/ P; e0 h0 n r0 ^* L% u push eax
' ]; n# \4 C1 G3 C lea eax, dword ptr ss : [esp + 0x38]
' P- _9 { F) V7 l" T) |- p( Q push eax
" B" n4 R' v( m1 e5 N2 }3 S push dword ptr ss : [esp + 0x38]2 @. c# Y* i+ L5 y7 d3 x
call m_NewStatShow_closeimg
* c5 D: q& V( M8 |; T( j POPAD! t6 d5 p) S J- @& S- ~
JMP D2Gfx::D2DrawImage
) i1 ?8 f6 V; B: L# @) O8 B4 R# j$ L }
! n+ x, `. H- s) i7 i}9 t4 N: n# Y. O# b2 ^
6 H# G+ l4 d6 Q* j T* ~4 Q) n4 r- a- _$ T6 S; {$ j) ]# \5 m
|
|