|
|
转载
7 U& X* z" @# a3 J" w* bBY SJ
2 j, R2 }. Y: s9 l" E首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
- A e3 R6 f" p6 I- k+ B
7 M7 y& g }' a- @D2Gfx::D2DrawImage-10041
3 L# \/ R) _6 Z# V2 M! U: w1、修复技能的背景(不需要可以不要)
* @/ \4 F: r/ s* a2 Hoffset = D2Client::GetAddress(0x77AA8);
_+ F8 @# P5 ]. b! \8 ?Memory::SetCursor(offset);5 n2 G+ M( F$ S( O a* x
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix); b5 i0 L3 W0 R- w7 o
) u* ]# S3 S0 K* U: o0 R8 S* evoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]), y/ l! [" t( ]' q0 G
{. f; B$ h: a! p% i2 h5 J# P2 m
//Init data for print image" t& ]) k1 D/ |- \
sDrawImageInfo data;
" o O5 U5 T4 ^$ x ZeroMemory(&data, sizeof(data));6 C* t- J+ o8 S8 s
8 X; E0 f4 H4 V+ X6 Q5 P% u
//print background
9 W2 V# M5 {* [8 X& C0 N setImage(&data, spellBackgroundImages);! o N' f7 {7 p: B
setFrame(&data, 0);
5 G0 Q4 J8 F" n5 F6 [1 x! P int fixx = 511;$ e* g9 |+ K* s) w# x$ o
int fixy = 9;
# ~" |2 t8 v! |, e) ~3 j2 R; ? D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
% e1 Z2 [6 |: f* k; P$ R l8 H setFrame(&data, 1);
; A/ |2 Z/ v2 d- u. ^( N0 D9 B D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2568 f4 M/ C2 ?+ ?* }
setFrame(&data, 2);+ f. i1 X- O( B; J
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432 U% r7 n1 c8 g+ T2 V
setFrame(&data, 3);0 g: {- C" ~4 w! e9 r! [
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);: d$ v! m; F7 D% y
}
; L3 V7 u8 W" \* p# U0 v/ }9 }__declspec(naked) void caller_SpellBackGroundFix(); ]9 N2 h, q3 Q$ Q6 Q
{) N7 p# D2 `' Q! G, Z
__asm! ?" s8 `) V$ W/ a4 z0 {6 l
{9 v+ r% }; A. l- j2 ?- M$ |. w3 u+ I
PUSHAD. ~. U2 C1 F: s& y ~1 {
lea eax, dword ptr ss : [esp + 0x38]
# _- B. u$ y- E! y, m% I& p push eax
3 x, ^$ n" D* { h push dword ptr ss : [esp + 0x38]
2 y8 W" m( g; P1 P3 d push dword ptr ss : [esp + 0x38]
: b6 G& @% x7 \' X$ {- r lea eax, dword ptr ss : [esp + 0x38]
# D U9 w' {! N! i( h3 y push eax
% `8 J% D. M: O3 _ lea eax, dword ptr ss : [esp + 0x38]! P; Y& f8 c3 l3 a) a
push eax9 a% ?2 p8 |. g0 B6 i. `
push dword ptr ss : [esp + 0x38]
: g- d) A( ?+ ^6 N* a' Y' q call m_NewStatShow_SpellBackGroundFix
) X9 J) O# s' z# V POPAD
( h u$ l4 Q& l6 E( K JMP D2Gfx::D2DrawImage: R4 X" W$ d2 v+ o2 N
}
: N- ~, E# G9 t' B" q( {}
. u0 J3 [& w) S; e# j1 V2 \( Z
( u/ M$ c% L' W4 R4 ^2、我们如法炮制小站的背景4 r5 p U+ f9 s
3 d/ S, p6 j5 b! f7 \5 a
offset = D2Client::GetAddress(0xAB010);
7 H& u6 C0 h, Q& gMemory::SetCursor(offset);
1 P. y* _. q* f' _2 {6 E( A7 WMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);, P7 S8 K/ g) W3 W! q# _: D$ Q& U! G5 Y
F7 z S+ P5 R5 L+ L2 J& rvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
( A7 S0 D* A% L! d+ ~9 v{+ h! k( M2 g1 }* i/ |0 J' ]3 k; ^& u
//Init data for print image
, B' E" X9 b5 m. t& `; e% c sDrawImageInfo data;7 z5 z, D- [7 M0 K7 U7 k
ZeroMemory(&data, sizeof(data));$ N) j9 A' U8 J+ t5 V
# _& { y) U; H; x4 z! n
//print background* O. C1 a1 @3 i8 T9 J& k- U; a
setImage(&data, waypointBackgroundImages);
" V' p$ p' E e9 Y$ E4 p' q$ t setFrame(&data, 0);
$ ]! I- F( m& }6 o+ t. \; T5 H, g int fixx = 0;
, k J/ G) D. t9 T* h% `/ T& a3 h6 C int fixy = 9;. {8 {7 A; U) U5 ` d, r
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);# e! u) s( z- Y' I- W+ j; `& a
setFrame(&data, 1);0 o4 G1 r7 R: O
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
) ]. h9 Q( c$ @6 i& @% z5 `: j setFrame(&data, 2);* S2 p) G9 u3 o
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
6 p/ R% G& g: h' y+ ]: s) E setFrame(&data, 3);
3 m2 i: P$ ~) g& Q+ t& A! q8 V. b D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);# R2 E: D' k: q' q# |& Q' U
# x# g# h& \ k& w* I( P% A5 f
}( d& |+ p$ _! o! I% H% U! F
__declspec(naked) void caller_WayPointBackGroundFix()
7 F* }) r4 }& f, G+ b{
, f+ L* z2 u( z2 Z8 F# y# |0 P) U __asm
( s0 v3 ~: J5 H/ z/ i+ I {3 V q7 I0 V1 R* A
PUSHAD$ J8 ?; i# S) E4 G- ?5 m" v
lea eax, dword ptr ss : [esp + 0x38]2 v2 P4 c0 E( {* U" t1 D }
push eax
" @0 _8 B" Q! }# D! ] push dword ptr ss : [esp + 0x38]
: n8 J! z, U6 I push dword ptr ss : [esp + 0x38]' I/ E! @. }4 b, @3 @8 R4 A1 n
lea eax, dword ptr ss : [esp + 0x38]
2 `# V4 L- x, F! t( g* C push eax# _" ?( U6 A9 f1 _5 U4 k! G2 F
lea eax, dword ptr ss : [esp + 0x38]: \! C8 |+ \/ f/ ^2 W
push eax+ r- P7 S+ p8 N; k
push dword ptr ss : [esp + 0x38] a2 e0 {0 A$ Z: D# d
call m_NewStatShow_WayPointBackGroundFix
/ }! P J0 a; l8 ]: E( x4 j2 o POPAD% |# u# |0 I s( @3 t$ r
JMP D2Gfx::D2DrawImage" x( i, X* J( |$ M
} `. h+ g1 P$ c- e1 L4 }0 O
}! |8 g8 P- J9 t0 K
' k Q7 n# h: P( N
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
' \# U" y+ _3 [腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
$ A' t; D7 j$ N0 o: n {
3 j& c. i- Q9 _ class D2MultiRes : public Library<D2MultiRes># h& d, Z4 N: I0 E# I) B; N$ L
{ C: s% v7 q5 I) r
public:
& r! ~- A: K+ E3 [ static void Init()5 G% \/ r( V& V, G% {" T* P
{
" N$ M0 }& G2 k0 |0 Z1 o" j6 e Name = "D2MultiRes.dll";
2 u. l- h- I6 D/ l% R$ b J8 N Offset = LoadDiabloLibrary();4 H+ k8 P$ L8 n. G% ]
}
2 f ?" I4 Z' }- j5 ^ };- r4 w2 T% N% [2 m
D2MultiRes::Init();
! W# T- G* H, W9 O" A9 L# f2 Z: \5 q D2MultiRes::HookLibrary();
% h5 e2 Z+ @# H8 Y4 {' u
+ d% }4 a+ X! }, t1 F, j/ b0 W1 G3 G& J
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);& j$ i" X9 t: _1 q% Z" w! r
Memory::SetCursor(MiscFunctionsOffset);
a- G6 J. r, G5 p$ e4 g Memory::ChangeDword(0x1b0, 0x200);
. U( T2 B6 y8 d8 [( h$ ]- h
; x2 \, k% V# M! ^7 l. {( J
- ]6 v. S h: u% { j# S, l1 H MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
" N/ c* L) I) O0 K8 g Memory::SetCursor(MiscFunctionsOffset);! n5 Q3 n# h. |6 t( ^: L& V
Memory::ChangeDword(0x140, 0x200);
4 j9 O+ l8 B! B/ ]1 T) H. q' h# V6 R6 F6 i, q r" g9 C
- S" v1 V4 {* P! b MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
8 }2 X! e$ R' X$ H/ o, o Memory::SetCursor(MiscFunctionsOffset);, m- N1 J T4 B! e2 M( S* B, l- u
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
# t( x4 ]2 V( y6 ]5 `& C
: T! C$ }" o9 G* J; g5 b MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
5 }( J! q+ r& C) D7 p( w Memory::SetCursor(MiscFunctionsOffset);1 o7 J7 v; H3 y' Y! R. e3 Q
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
% m6 K6 `5 x/ t& X$ d- ]3 [! \" B/ q9 r+ e/ O
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
# R) S: H7 W7 o5 G; t2 v Memory::SetCursor(MiscFunctionsOffset);
7 A, Y! k# C" D Memory::ChangeDword(-0x280, -0x400);//这个不要动2 O+ Y7 T# X: u0 ~1 B
}
T4 k }: S9 E- ^0 g
6 f( D0 ^) Y0 d7 A! y C4、快完成了,是不是发现金币啥的位置不对??
+ u0 p% {& z8 ] F! O# j7 w: A: ]9 n1 y: R+ D
//这里修正我们的装备栏
, w/ Y0 e5 l. n! b* }4 C offset = D2Client::GetAddress(0x99B6C);
& p# j i5 o/ Z" T Memory::SetCursor(offset);8 S. i! K. C* b) e
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
; }% q; t- G3 U+ H8 x. o% [2 t+ \+ C% U: {% H, E
offset = D2Client::GetAddress(0x99BA7);
' q: M) c; p+ K( z4 N Memory::SetCursor(offset);' j5 |: p7 A6 ]
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);/ H; Q( [$ R! G
! n* L% R; P" z) \; J offset = D2Client::GetAddress(0x99BE2);* M9 z6 S& L( r8 g$ b) g0 ?" X
Memory::SetCursor(offset);0 A' _( d4 X1 \' d( N
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
' f8 W, Z7 ]4 V1 A: L/ A2 p( R' k; ~% r! A
offset = D2Client::GetAddress(0x99C1C);2 a5 P8 ~& M! o
Memory::SetCursor(offset);( E/ [3 Q' m' N+ L
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
2 B- D( W- m+ i* i- ]. |4 K, N/ F/ ?, L4 p; a3 C3 B
//取消两个popup,偷偷懒不过分
5 R( v2 a. M7 g: D' H1 g offset = D2Client::GetAddress(0x9386d);
$ u$ m$ {; ?! H- D0 I5 M4 t, e; p Memory::SetCursor(offset);
5 n" E7 f" D/ I/ g" _# ] Memory::ChangeByte(0x8b, 0x33);
9 s/ u8 V9 e$ l' ~% P( D5 S Memory::ChangeByte(0xc8, 0xC9);
+ r* S9 _2 i# l2 o, _ e1 l3 V offset = D2Client::GetAddress(0x9390b);# \) p9 F, ]- v- L4 _0 P$ p l5 e
Memory::SetCursor(offset);
z1 q8 |3 B. x/ Z# W- {: C Memory::ChangeByte(0x8b, 0x33);- M: E, E" c4 j" L% r
Memory::ChangeByte(0xc8, 0xC9);
4 y0 h9 t* j! p1 h' c4 ]7 {
7 J6 {7 d$ L. `2 ? //修正提取金币6 m$ h' Z3 D% c; I$ ^; r. e7 S
offset = D2Client::GetAddress(0x8D3E5);
$ u& Q' H( E: p0 b. _. F Memory::SetCursor(offset);7 g3 l3 X$ P6 U' Q3 W. R
Memory::ChangeByte(0xA1, 0xE9);
8 E; P: s K5 l7 m; v( Y" l8 g1 n Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
& A8 E" K% D) ^7 }1 g
- ]7 a& t! G6 k2 y* {* r; T offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
6 g+ o1 G: s+ T" e# d( t# G7 i Memory::SetCursor(offset);
' Y7 W ~ b( F Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);* ^1 }# x, L, `) c P* q! x
Y% _ b2 J% B% E7 S
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
" C" G) p/ `" N, A0 P( R Memory::SetCursor(offset);6 g X1 @( Q3 I7 i
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
. u% N0 q7 z( r# K) \" n: M' h0 d: C
0 Y, q; r3 E' [$ L7 x //修正关闭按钮
" N, D; L) S! n) T3 J0 K# S, @ offset = D2Client::GetAddress(0x8BD90);- @. d9 Q$ l+ U N6 j5 h
Memory::SetCursor(offset);
9 V$ \$ |, ^/ `% q; X6 n! m Memory::ChangeByte(0xA1, 0xE9);" y" `& w- Z% P$ Q6 X6 c
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);# ~. L% t! b9 N$ r
4 ], J/ M6 h3 D. c& B7 z( d offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);8 w6 a* Z) {% w/ v* ?6 L
Memory::SetCursor(offset);1 ^5 e( I) `; F, o
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);7 y. v, h. s+ I, W
# _5 p$ _6 q; S/ w; e; `4 O) E
5 _& l( E& ^, p9 F
//以下是细节/ \) G2 X7 c' e5 Q8 X
#define getXGoldCoinFixBtn() RX(0x2d0)
& h2 m+ m, e: T( x8 Y9 Z#define getLGoldCoinFixBtn() 320 H8 i ^ Z; t1 _; g
#define getYGoldCoinFixBtn() RY(-0x59)# [& E: j d$ X/ {" q
#define getHGoldCoinFixBtn() 32
) ^0 Y8 N1 i6 Z7 m/ Y#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
0 f$ ?; B6 G: z6 z5 U
0 \: J1 z0 k: x" }3 f( ~* p1 F$ h#define getXInvCloseFixBtn() RX(0x3db)
& I: B. X5 H2 q4 k6 {#define getLInvCloseFixBtn() 32; N W2 d& | j2 \; J
#define getYInvCloseFixBtn() RY(-0x63)
% M2 n7 p* I5 }, n4 W#define getHInvCloseFixBtn() 32
2 j' t, P* N1 ]4 v#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
% d" i) n4 m$ o' P
) q/ p: {- G% n9 IBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
3 ]" ]0 y1 K' s. A' f- D+ R{
) ^' F, W3 U [6 E9 ? s0 k6 e DWORD mx = *D2Client::ptMouseX;
; [- Z3 u7 B& |2 Z8 j6 w" A$ q1 L DWORD my = *D2Client::ptMouseY;
4 N. ^9 e3 z- V' h1 _ if(isOnGoldCoinFixBtn(mx, my))+ N7 p9 U+ ~5 |7 ~! ]+ D% @$ L
return TRUE;
% P" O" I) d0 T/ Y return FALSE;
' B& ^* V5 U a& G, B}) E. F R7 p- P" o1 F
__declspec(naked) void caller_goldcoin()
7 a! G$ q2 c1 Z( ^- U+ z; E/ ~{& o2 W/ m: s8 o4 {
__asm
: l- q2 B, u; o% R \ L {
7 m! j- F% I& K$ r- T push ebx
7 a- I, \+ w6 A! H" E8 J- t mov ecx, esi! @& t5 N5 R" u# |, h
mov edx, edi2 w: Y; g/ S% A R
call m_NewStatShow_goldcoin
2 ^* P, r" S3 _9 g' ^ pop ebx ^) { f( A) T' ?+ j& _! _ n
pop esi! d; |( ?) O: e
retn
* u4 G$ _( s/ {( b }- O: K g, |( e
}
) e$ V" n( W5 x. h5 Z* Evoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
% r, X" R8 T+ E{
. a, p6 V q0 A0 @, G% l# x if (*nXpos > D2Client::ptScreenSize->x / 2)
, N1 I9 V* C. _' p/ O8 u+ h: V {7 L0 a8 w+ `% Z
*nXpos = getXGoldCoinFixBtn();
, i( G* I. W, C4 B *nYpos = getYGoldCoinFixBtn();
' I$ m7 Q. {5 y# J5 W }) ?9 K3 H3 d- u% l# ~6 U
}
9 `. g) V5 {% l$ Y__declspec(naked) void caller_goldcoinimg()8 s, |7 F/ N; a" _. t" z) v2 ~
{" j0 C& }# k- D
__asm
4 n+ R# v% N7 k( H7 F {$ [( T, q# H6 N: I% x
PUSHAD2 o" G; O3 q/ G$ j! D1 T {+ M
lea eax, dword ptr ss : [esp + 0x38]8 c' R; A# m- Q% x
push eax/ b- @4 p5 v! o+ U8 R3 I3 U+ s
push dword ptr ss : [esp + 0x38]
: a: N0 }7 W. z1 j1 P# c" n push dword ptr ss : [esp + 0x38]0 @. O- A( L$ q$ u2 @5 r& D
lea eax, dword ptr ss : [esp + 0x38]
. C3 ?% e7 ]3 B$ G7 s c/ [ push eax
4 l5 m6 Z, w6 ~ lea eax, dword ptr ss : [esp + 0x38]) Y5 J; I7 Y9 W/ b
push eax5 ~+ C5 H2 z' J% P, |+ i
push dword ptr ss : [esp + 0x38]
% A& C' w; m# }3 S0 X$ g call m_NewStatShow_goldcoinimg0 w& q# K, Y: [' Y8 U8 t8 D
POPAD) ?9 b( x, U) J7 f# q! Q- r% Y
JMP D2Gfx::D2DrawImage# i- ~% e' L* K% n
}: w& Y) H+ q( s! Z/ W: F* i3 k. O7 L
}
( v' \* O p& k0 |DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标$ Y }# N3 `3 i' K* [
{
' l( z: a6 f1 Z5 G3 i- k0 T if (x > D2Client::ptScreenSize->x / 2)
1 _- q4 s3 T6 r {
, M5 P8 N+ s' j/ z *y = getYGoldCoinFixBtn();8 j( D7 \" i+ J
return getXGoldCoinFixBtn() + 32;
: Y Y) b9 g6 m }
' q0 f: s( l/ A. P9 B7 C return x;
6 c: l3 t$ H' h% ~}
7 w0 i, V' S8 W3 `1 @__declspec(naked) void caller_goldcointext()1 p# x. s- Q0 t2 t0 z6 M2 a
{
8 i5 x. K& Y. u0 ~9 I __asm
& d4 N+ Q+ F# y; k' Q& N. r( R {
9 t7 O( W7 \. D# p7 M PUSH ECX+ n: T5 Z8 A) C1 z4 M) h7 v
PUSH EDI
8 {1 d* t" R$ {# w PUSH ESI
: c" [6 W, o3 Z3 z2 ?# b PUSH EAX
/ a' |' N& I7 F7 j" a5 v8 ^ MOV ECX, EDX6 J. V+ d7 T. b: n* Y: F/ q& G
LEA EDX,[ESP+0X4+0X10]
% }2 C& Y! F+ n9 e/ {0 H8 e! _- z CALL m_NewStatShow_goldcointext
8 Y$ m. g6 W0 Y- v- E MOV EDX,EAX1 x! i/ U/ J2 G+ |" p/ W) d3 B
POP EAX% D' t+ I! v3 e, `
POP ESI" s- i; u+ {" W7 |2 P2 W
POP EDI
% }+ ^9 ^" U" c; s POP ECX
2 Y/ q: ^; r0 W$ c8 a/ k6 H jmp D2Win::D2PrintString;
9 x' d8 W) B' K* ~ }
4 u( Y8 N9 H8 ?& W1 P8 c% c* N}
: @, R4 o+ f% M: d
) M1 x% x/ O1 Y; s4 X9 d# [BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y), B- b# I3 w- M* O9 y
{
2 p! n9 D$ c, k8 u) j9 i DWORD mx = *D2Client::ptMouseX;
! l0 d- ^! ?1 w7 I* ] DWORD my = *D2Client::ptMouseY;
8 N* \7 B0 j% B if (isOnInvCloseFixBtn(mx, my))( S$ k* a+ @# D$ G- v: s
return TRUE;
. N* B1 Z- ]- p return FALSE;" D8 ~2 {6 a s& t' |+ r
}# e- s; G. T3 E+ s8 K
__declspec(naked) void caller_close()% t/ b: b! [ ~: p& n( {
{
! w5 o6 K, `* ~1 P$ N9 W3 w+ @4 C __asm
, U5 a) r: l* {6 ` {
3 F, M" Q% H! X" L8 P PUSH ESI( x3 _9 |+ l1 p
push ebx
0 z; k. m, V# ?! ^ call m_NewStatShow_close
3 o; n7 L' r: S! d9 ^2 l* ?8 ?* l pop ebx
$ [# e5 j" S( h r0 C$ W pop esi
6 Q6 m/ ^4 s- c2 P retn; ?) C- R# E! i% Z8 W6 n4 ?8 j1 @
}
* _: Q$ ~2 l0 i8 p$ o6 o}- z9 ^' N9 r# n6 C2 I1 Z) i* y# L8 _
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])% R" F; m( \# {3 l$ k6 L. l
{% k. ~* R9 t7 M1 b4 u% H" @- F
*nXpos = getXInvCloseFixBtn();
) @1 @& G2 r- P& R *nYpos = getYInvCloseFixBtn();1 `+ y# O3 l: ^- h2 W) r
}4 D; Z A4 M* }
__declspec(naked) void caller_closeimg()
q3 M" z% H! N# K( D H, I{; |/ `8 b" q! o$ O
__asm' L* b4 M0 D6 ^7 W
{* ] f: Q* f' H, U& g
PUSHAD' w: F# n3 f2 H5 D2 @% W
lea eax, dword ptr ss : [esp + 0x38]
0 P" m! f4 C p push eax
; O% V) j! U% @- Q9 a* u# ^; B9 I push dword ptr ss : [esp + 0x38]# j- {. U5 n9 q
push dword ptr ss : [esp + 0x38]' y8 \6 [% ^3 {6 `
lea eax, dword ptr ss : [esp + 0x38], I6 r" ]" l5 S* b% Y
push eax
, v5 e% ]5 D+ f/ H7 ~" W! } lea eax, dword ptr ss : [esp + 0x38]6 P2 \6 R4 q' t
push eax
- N. X! g& d' R1 K6 ` push dword ptr ss : [esp + 0x38]/ D9 ?8 N5 ?) v) b, |
call m_NewStatShow_closeimg) h# z* o! m, X4 U/ C
POPAD# O6 k% B& X7 i' q" H. b
JMP D2Gfx::D2DrawImage
% k, M) m% `% D$ D( c! ` S* e }' g% F* ` s, a3 ~& Z, d4 z0 _" W
}3 Y- g( I: h! X/ j
1 h6 k1 ~# C3 y* k0 Q7 Y" x
( B, V) M+ x$ A! \& B- R8 ^
|
|