|
|
转载& n6 a. o2 H( u/ Z+ D
BY SJ# w4 _# e3 T' J0 F
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
* M3 o$ H" K# s9 I O4 H7 ~; ~) o% q9 C+ ^6 B
D2Gfx::D2DrawImage-10041
$ v$ e, y- O: i0 ]+ E5 T% b1、修复技能的背景(不需要可以不要)% f9 R7 _- S+ o, r$ k
offset = D2Client::GetAddress(0x77AA8);8 F9 I& ~0 _/ Q) e+ \, S: I! Q5 C% N
Memory::SetCursor(offset);
5 r" z4 I: K% I2 XMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);; m" u# o7 s }
. g9 I4 w1 N* [' U' ]% J4 nvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]). }4 l9 W! A0 s) {- m* j# x
{2 {8 m/ v! z6 a
//Init data for print image0 ]* R* b3 y8 ?) p& S- a
sDrawImageInfo data;' m' X* H" R) d
ZeroMemory(&data, sizeof(data));
0 l7 T- G; f; I; f' `: Q. F" ^" j5 p6 J* c4 K
//print background/ F- ?; }- L' K2 L) m( [
setImage(&data, spellBackgroundImages);) k) e' V- n' W
setFrame(&data, 0);
# U4 O+ J& {' o/ v1 y( q: o/ @ int fixx = 511;
* R0 _! v9 i: t2 Q5 m/ B& A int fixy = 9;7 @4 d7 X5 I: O8 ~
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);6 J; _* q7 M/ E9 T/ W& A
setFrame(&data, 1);( n7 k& c+ B' g+ R
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
8 V; F( I$ `+ N7 ? setFrame(&data, 2);3 ~! V, ]& F& |) l" J, g9 t
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432# z2 \; [2 ^* T) y
setFrame(&data, 3);
) w, p' [7 d" c* X" @3 v D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);3 Y: x' w6 L# C. u/ U' U3 o
}2 @3 y/ b2 t: U# s" L
__declspec(naked) void caller_SpellBackGroundFix()' B- o: K; M* F3 a; B1 ~8 _
{. p4 m& `) b3 w' g/ N- {7 D; A# y3 n+ P' _
__asm: ^! O4 ?8 X4 }7 R t9 A& I
{
& ]2 D3 M# Z4 ^' z PUSHAD: `- f8 N9 A8 k
lea eax, dword ptr ss : [esp + 0x38]' N0 q, D, s6 r. U( o" f$ M; E9 I3 m
push eax" e3 M t ?# y( z3 s( k8 A
push dword ptr ss : [esp + 0x38]
: X' X% o' M2 H push dword ptr ss : [esp + 0x38]4 |; Y E$ y( `' R
lea eax, dword ptr ss : [esp + 0x38]
6 M6 t: y. i- n/ B i6 X push eax
, j- W$ P1 U0 [( i* }9 T lea eax, dword ptr ss : [esp + 0x38]) E8 j+ }& E7 h5 ^8 Y m
push eax
5 x! H' M7 h% I) {4 D push dword ptr ss : [esp + 0x38]2 ^5 t b5 l8 L5 q) C6 l3 g, j
call m_NewStatShow_SpellBackGroundFix
: {! V; C$ ?. l; o1 X# o* X POPAD
9 }" R$ Y8 y3 M; M JMP D2Gfx::D2DrawImage5 y1 P9 _% j. t; v3 p
}, r+ K" l* K9 a! P: N8 d
}& `6 s R1 }' s
$ `1 s- E0 T0 K$ A/ c# L, j
2、我们如法炮制小站的背景5 z7 m) y/ ^1 }# W5 M# |
6 E. ~ e5 c k1 e, q+ Y b
offset = D2Client::GetAddress(0xAB010);
$ b8 W3 \- K, x( [6 [Memory::SetCursor(offset);
" |/ \1 l! v+ [6 Z; a" M% c& B6 DMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);0 Z4 f/ L4 r) L* J
E9 @- j, l# v
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])$ O) W% Q7 ~ w" U( a7 p% q! V
{
0 @2 B% w6 }, W' L9 E //Init data for print image
7 C: b/ N2 |8 W sDrawImageInfo data;
K4 h, C) M$ L7 m2 r ZeroMemory(&data, sizeof(data));. m0 d0 D, }) e4 z
# Z& P. H ^) N5 |1 \# N
//print background
) ` V+ J* q( v+ m setImage(&data, waypointBackgroundImages);- `! ~0 D7 A; f/ U
setFrame(&data, 0);/ \/ s- ^: y- _6 q' `
int fixx = 0;
) |/ U: W- H7 [& _( d( ? int fixy = 9;1 V/ I9 N8 Q% E Y3 [
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
" Y$ Y2 k! ~9 Z; ]1 W9 ]4 V setFrame(&data, 1);
4 b. w3 Y- S' U# _5 [5 j" u D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
" ] A' C T8 t E# X. j% [2 Z setFrame(&data, 2);
x- G U; p' H$ X, C, W7 p/ Z D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
- }3 _) h7 ^# ?" w setFrame(&data, 3);
) {- X5 b9 E# D, j9 B D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);/ x) F5 c! D1 q7 ^% V
I1 ~+ X+ m" M9 V+ M
}
* `; _/ r! ^/ P( l/ S' E; {__declspec(naked) void caller_WayPointBackGroundFix()4 T& V7 F5 J+ r; Y5 P' j
{
' U$ k( M }8 M* t8 e7 H3 Y __asm
2 k, c7 T4 e0 \+ r( F4 \ {
0 {4 I/ O( T/ ?/ G6 x PUSHAD& W$ ~9 \, e: D4 E; ?5 U' I6 Y9 H2 C% Y
lea eax, dword ptr ss : [esp + 0x38]0 r+ B! t2 [4 o* p5 _) {' x$ P
push eax
/ w. K6 o' i" m3 g$ d push dword ptr ss : [esp + 0x38]
2 x% o/ @: ]. i6 B6 u push dword ptr ss : [esp + 0x38]! w9 s6 v% l+ Z% G
lea eax, dword ptr ss : [esp + 0x38], S9 C6 |4 {3 a0 L% `% n# z
push eax
- R- L8 c: V3 }) i lea eax, dword ptr ss : [esp + 0x38]8 {9 k# h/ E; v. }6 _
push eax
! q. P0 o+ S; p& [/ Y push dword ptr ss : [esp + 0x38]
0 h% t9 F( y1 [( m- { call m_NewStatShow_WayPointBackGroundFix# x6 F6 |- G& D
POPAD& R; @$ A8 P6 b/ V6 w$ U
JMP D2Gfx::D2DrawImage( T4 t0 d. m2 k6 ?* e5 D
}
; u" M* P$ `/ R c% r5 V- K7 k+ }}
3 H; W1 v. a9 a
- G8 v7 o# W! |0 H" W4 x3、以下可以搞16*16超级箱子-腾出我们需要的边缘5 L8 l! W( D0 L- P% u2 \4 B# O# R
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)( A+ s1 c0 N9 I
{
5 n, I3 O& u4 } i7 J O class D2MultiRes : public Library<D2MultiRes>/ [6 s; i' i/ }' s" E
{" e& ]7 ]1 a4 p2 m9 w! j" d
public:1 J+ ~9 _+ u* o" T \( L
static void Init()
! y. @% V* _1 `4 b+ [ {
6 f7 T$ |7 d/ v( V" [4 q Name = "D2MultiRes.dll";" E+ k6 Z( y3 _) U
Offset = LoadDiabloLibrary();
% w( j3 t% q' p- l& N }
! C3 b i |5 i% [# t E };7 K- j1 F' W v7 F5 v5 Y
D2MultiRes::Init();
- A) ~! Q X" X& C D2MultiRes::HookLibrary();. ^# K2 t* f4 z7 H. ]. M
' R/ D1 I. T( X# j) b8 ?
- ^7 v7 I4 f0 l1 i# Q
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);; O8 I: ~9 `4 v% l" V# ]
Memory::SetCursor(MiscFunctionsOffset);
7 h' x4 `6 v- G! w Memory::ChangeDword(0x1b0, 0x200);
- ~' y$ V% C7 ]2 c: N( Q3 p% J+ b- r! o0 z' ?9 |3 o. N6 U+ O; J- H
4 q* o: n5 K: R% O MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
3 B# |+ k, C3 T( {" {/ K" M* E* K7 S Memory::SetCursor(MiscFunctionsOffset);% z2 g' V' P3 b' X ]0 G
Memory::ChangeDword(0x140, 0x200);
" d8 b, A* I' U' M: w: J
: P. V" h$ n& ^% m6 M" y) n" h
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
, [5 T5 L% X' q9 \( v Memory::SetCursor(MiscFunctionsOffset);
6 h `/ C7 ]' S3 a4 m8 H Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
3 F4 s. E+ z8 e' }) D7 f$ `( J3 Y$ R5 G, x; b
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
( I/ h6 k3 H: g! K! ~( V: F5 k; Y6 c Memory::SetCursor(MiscFunctionsOffset);# j1 ?2 p$ e. r1 k
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
8 B5 p- {! v1 l3 { n, ]3 l8 `' u- i( O
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);, D. o* K R" w
Memory::SetCursor(MiscFunctionsOffset);& c( x% x# H. e
Memory::ChangeDword(-0x280, -0x400);//这个不要动
1 |( W; S+ d6 h' k& H }; \; u. i% b1 V) }
# E: C( Z+ j( h) c2 J
4、快完成了,是不是发现金币啥的位置不对??) g( `+ E, I4 `
. G7 n4 M3 X$ U$ Y
//这里修正我们的装备栏+ f1 X+ @2 ^' v3 R9 [ E: W* d% Y
offset = D2Client::GetAddress(0x99B6C);) x$ A* H% t6 o' X, b) p: {
Memory::SetCursor(offset);0 d- H8 _! s5 V
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);9 q) ~" |1 W/ |; {* p6 k( d( u
X* a4 ~$ Y9 h4 v/ U6 u0 H i- T( O
offset = D2Client::GetAddress(0x99BA7); o) |3 i" ]+ `1 I8 Z
Memory::SetCursor(offset);. ]$ n0 M9 {/ o9 q" S
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
5 q; e# B/ W3 A$ @( v1 ]6 j6 j) K1 }9 H, w
offset = D2Client::GetAddress(0x99BE2);6 d- Q4 c2 ~3 x: A) N. [! q* ~5 ]
Memory::SetCursor(offset);5 |; m4 R& m0 q* h$ u
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);0 e, t) M5 E9 ^0 y0 C2 O
; B' O; _, f9 l4 b) o' c8 H+ T0 s- s! p0 J
offset = D2Client::GetAddress(0x99C1C);2 R9 ~7 [! m5 ^1 b7 d1 ]6 c
Memory::SetCursor(offset);
' a+ j5 T% E+ P& [ Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
6 t: O8 N% d9 V) [# [/ O
; u0 K' Y/ h( W+ Q/ y8 X# J e //取消两个popup,偷偷懒不过分
7 j( a6 h2 T0 a" K/ Y offset = D2Client::GetAddress(0x9386d);- ^% G% n# n! M* e. P% v8 j# f
Memory::SetCursor(offset);
# E/ h% y$ @3 D Memory::ChangeByte(0x8b, 0x33);
# m& H' n2 C& q3 z* Z0 o' I Memory::ChangeByte(0xc8, 0xC9);
, U7 h2 X5 g$ M8 e offset = D2Client::GetAddress(0x9390b);: \6 r- D2 g6 y
Memory::SetCursor(offset);
/ V4 f/ C$ Q+ u n Memory::ChangeByte(0x8b, 0x33);
7 d( L- Q6 o1 E* x% D0 Y Memory::ChangeByte(0xc8, 0xC9);0 W; \6 C; p& P% i
$ p5 C. D `3 N //修正提取金币! M. i1 @( O- p4 G% H. P
offset = D2Client::GetAddress(0x8D3E5);5 T' N3 Q2 }, |- @4 r
Memory::SetCursor(offset);
1 r4 r% l9 E9 Q6 P! b# | Memory::ChangeByte(0xA1, 0xE9);
1 W2 m& A& D! ]' _- `7 l Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);' @# y& e' L* i1 O
, T7 q; U# p2 f! {/ R
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);% @$ [" D: l2 Z+ n! ]+ K
Memory::SetCursor(offset);" R: k5 A1 _9 F/ I" N2 B+ S
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);6 l0 C7 U; S E0 X; J2 n
7 f) k( p9 _( h# |( F9 H offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
2 N* ?9 M; M0 S/ F% g$ G Memory::SetCursor(offset);
% s4 v, d4 E5 G- Q Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
7 a+ O1 _" A2 h3 K9 v* x( _8 h @1 \* P# _) v
//修正关闭按钮
9 Z* d9 T1 K3 a4 [: B offset = D2Client::GetAddress(0x8BD90);
4 D9 _1 Y y2 E8 _5 J4 i Memory::SetCursor(offset);: d- ^) K8 o3 A8 m1 g
Memory::ChangeByte(0xA1, 0xE9);
# \& N9 V# l8 D$ u( p2 v) d# t% q Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);2 N1 {+ i& e/ n E: B8 [
9 }2 |8 l, X- E# R0 ]' D2 D1 ^ offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
Y7 H+ S6 _ s9 k5 O: e! x/ b Memory::SetCursor(offset);- y g( I# V7 k# q1 N
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
8 c2 J& n& x# E' [: t8 b
0 F( `; Z& E1 r5 P& b3 u" c
+ H1 ~7 K9 \. e, x, x2 Q//以下是细节
) m( Y& ]. i& h+ L#define getXGoldCoinFixBtn() RX(0x2d0)
0 t# O- t: X5 U) C7 Y: s#define getLGoldCoinFixBtn() 32
t* k/ g, k$ V! D, ?3 T#define getYGoldCoinFixBtn() RY(-0x59)
+ C" U5 S& ?+ o% r( h$ C" `% _% N#define getHGoldCoinFixBtn() 325 m5 P( X9 n+ K
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
3 e8 L2 ~) }# {. y% w# s% {
1 M" M8 [* z+ n& R/ L+ z5 B$ ^#define getXInvCloseFixBtn() RX(0x3db)0 h3 t; D+ u" H7 H1 L
#define getLInvCloseFixBtn() 32
: I; u/ g( K" [3 \2 Q8 I#define getYInvCloseFixBtn() RY(-0x63)
9 w# q: r* Q7 B9 M8 m) V#define getHInvCloseFixBtn() 32/ ]$ g$ ^, V7 R. p! _) N! v
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
( y9 ] Z: g" E' b* z+ c0 r! p U, m; t3 i t
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)8 ^7 k: U3 x& p: @/ t7 w$ G( N
{
" k# M3 J* L# {% n3 H DWORD mx = *D2Client::ptMouseX;
. }1 N) Y$ q2 x3 m& o, f% s DWORD my = *D2Client::ptMouseY;( M3 e2 ~4 R) i/ V; L
if(isOnGoldCoinFixBtn(mx, my))1 u2 A' a+ ]. L4 i( c4 D2 Y
return TRUE;
8 P( h) u- c& a7 k9 P& Q: Y9 e return FALSE;
) q) f0 z" t: Z5 b5 V2 r# @5 o3 e0 `}
: ^3 O, x+ c+ ^2 O' [" h! Q__declspec(naked) void caller_goldcoin()
; X& B0 q2 B/ E2 `, S* R" e{
: ]! F, r7 N) H# k: [3 i/ t __asm* s# z# F- M6 ~4 u
{
% D& c H; ?1 f2 U push ebx
! Q" ^* _. N# t. G. J* M' o mov ecx, esi
2 I3 ^7 @7 i0 g" D- w! u- x0 L mov edx, edi% r" a0 o4 l6 u% X. X5 [
call m_NewStatShow_goldcoin2 s/ v3 U+ X# z5 k+ B
pop ebx
5 S: t( C9 {$ s6 [2 s0 w pop esi
7 Z$ [: {' b# d retn
2 L# [5 W6 ~6 h0 C# V# N8 c }
! c& ] Y" T4 w}( B, I9 _3 u4 h5 y5 F' |' S0 w# p. v
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]). _4 y/ h3 h9 Y
{4 V' @- b9 D# o1 t) {( t
if (*nXpos > D2Client::ptScreenSize->x / 2)
6 z/ [2 B/ E5 K+ e {# T4 _. f6 w+ f" E) _
*nXpos = getXGoldCoinFixBtn();
6 G7 C7 j+ O/ a *nYpos = getYGoldCoinFixBtn();+ P9 K" @* a7 N$ ^! u [5 R9 l
} s/ ~7 F3 S+ _5 ?2 \% W6 T; x
}# V( F+ }3 l3 o* h
__declspec(naked) void caller_goldcoinimg()( z8 x/ Y0 m0 n9 A9 ~
{1 H/ J! b- R7 a
__asm
+ Z1 D: h# ~$ f {0 q5 ]7 ]( Z+ Y, S
PUSHAD q/ p' w! D7 V. P) V
lea eax, dword ptr ss : [esp + 0x38]3 P: p0 x Y6 A; c- \
push eax
2 k7 O8 [+ T; c( K' N& D0 M4 y push dword ptr ss : [esp + 0x38]/ J7 g/ {4 a- X! R$ @. c% X
push dword ptr ss : [esp + 0x38]" m9 h, s b; ^) _/ Z. ]
lea eax, dword ptr ss : [esp + 0x38]
! W0 I0 m: T; [0 n& R+ E push eax
& ]0 ^* K5 `% o lea eax, dword ptr ss : [esp + 0x38]% O! s$ z, c, p9 {2 \4 C6 T! C
push eax4 v9 R, o* g3 w& [9 t' e+ G/ P
push dword ptr ss : [esp + 0x38]9 d4 U! i9 v3 A% s# X: q2 O
call m_NewStatShow_goldcoinimg
. A. w, ^: G1 B* C8 U3 W POPAD
% ^" |- [4 y& D JMP D2Gfx::D2DrawImage
0 k: b$ `6 D" R* S3 X0 H% h/ ^" U }# s" Y4 s, L+ R) j
}
' M: }* j# o9 F4 b$ NDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标6 {* S/ K3 ~8 o
{
$ Q. y# f9 O P% d if (x > D2Client::ptScreenSize->x / 2)
: r$ c( [3 q: Q+ w0 r {2 q5 P) F) C e3 H
*y = getYGoldCoinFixBtn();: L, Y& p& B0 `) }- }4 y3 D
return getXGoldCoinFixBtn() + 32;
! L/ B" w, c+ d* e9 {8 F+ W) V }
8 r0 m% {! n+ H. @" K, }) x return x;( Y* n# q8 D# O
}) d3 _5 b/ y7 `$ z0 M9 {1 b
__declspec(naked) void caller_goldcointext()
3 Z D7 j f" K! W% j8 u{
% ^( u. ^ `& U, w3 W __asm0 O9 O5 i' p3 b; Q; _* L, Z) M! ]
{* J4 v- k; j+ B; p
PUSH ECX8 s7 h( d% N5 b! F' f2 A/ ~' y- s0 [
PUSH EDI
5 O2 l9 c: E1 Q- N PUSH ESI
) M' h$ S+ \5 A% C4 {5 \ @0 S! O PUSH EAX
0 o% y" @. z9 I, Y2 p- K MOV ECX, EDX2 {: Z* L6 F- O8 ~. }4 e8 z3 }
LEA EDX,[ESP+0X4+0X10]
9 ^9 _4 a: W- z CALL m_NewStatShow_goldcointext
- ^+ Z: ?0 x8 r' [2 E MOV EDX,EAX
- b, e4 m" S# ^0 v POP EAX! K6 {9 n. [9 `: S9 r
POP ESI( O" ~) k- F; }$ p# ^" O' K( i
POP EDI
: X# B, N/ D7 R' q' [! @" J POP ECX+ J3 A) G( }/ m( X
jmp D2Win::D2PrintString;
4 T* D9 }+ Z- W$ d/ w! j } t5 t3 F# t1 ?. `: d
}! M: a/ o& f0 ]$ X7 e" h
# t7 r; J9 W) t4 B" @BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
. `+ `' l( m, J1 {{5 j1 w, q2 B5 m6 \# z8 e* r
DWORD mx = *D2Client::ptMouseX;
3 ^" Y7 e; l3 k8 o DWORD my = *D2Client::ptMouseY;
! U1 f. H% X: q: b if (isOnInvCloseFixBtn(mx, my))
, w" k: A6 D' x! s7 L- W8 y return TRUE;. V& J& C4 `9 g4 w" d3 U5 t" g/ S
return FALSE;
! T& ?* r2 Z a$ i; B2 Z8 f8 e}
3 y; _ n3 o/ t: t1 K. {__declspec(naked) void caller_close()) Y- ], s2 j D( k& _: F* R/ Y1 U
{
4 b' e) Q1 e g2 q: ] __asm
7 m8 e+ O" E' v' D" M {( U9 T5 @0 Z3 `; B( y9 z- W4 E5 |. ^) s
PUSH ESI
) r4 N- }3 E; X) S% X+ `6 h" g push ebx
- _" n0 _4 g' }9 k call m_NewStatShow_close
/ y7 Z o& G, _. g pop ebx
5 M! H* ^, ^! \0 y9 d7 W$ c pop esi
0 F2 j- z: Z, v1 H5 c retn# D2 U9 r: Y3 i5 B, R, _
}
5 M4 L) D: b1 U7 d; _}1 z/ S( D) E& M0 O8 V% ~
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])# {5 U; E) M" B( K$ j- B4 x
{
7 V# w* G, K' F1 Q *nXpos = getXInvCloseFixBtn();" ]2 G: f& k( O' H* A" A
*nYpos = getYInvCloseFixBtn();
6 f. \& H) @8 d# c s}, n- M: W0 D, O3 p6 f' _9 s
__declspec(naked) void caller_closeimg()1 A9 F \7 l F7 O1 Y
{
- k% |6 }6 Z; w- U4 C) _% \ __asm7 {( N" {& a: I$ U; S
{
. J0 w4 T9 Q$ `* R- v PUSHAD0 t8 x/ \; p8 h" k
lea eax, dword ptr ss : [esp + 0x38]6 O: V2 z# M! a7 c( [
push eax6 K7 z) a W) } {5 w9 z4 H
push dword ptr ss : [esp + 0x38]
* C) |4 z4 m! h" E7 A3 B) ~ push dword ptr ss : [esp + 0x38]+ N- C, V: N; M7 h4 H$ n
lea eax, dword ptr ss : [esp + 0x38], p8 C9 V" R5 v2 |
push eax
, t7 |8 g4 v5 |! b1 s) \ lea eax, dword ptr ss : [esp + 0x38]
2 b8 n, U2 x% h% K push eax
5 P5 K7 u, C$ b3 y9 v1 _ push dword ptr ss : [esp + 0x38]
8 S5 C f' D. ? n8 z' Q7 b: c call m_NewStatShow_closeimg8 L# H L) i9 b' @& o' f* q
POPAD
/ z7 ]' ~1 A$ {) H JMP D2Gfx::D2DrawImage
5 ?1 g; S$ E T! o- `! [ }
9 r( a4 y/ Z/ W5 T% \7 Z}
% H% P! ?& {. l! k U' o" k0 g2 c8 z1 `+ z; z) W5 n# O
( W2 @8 [4 \) l k: p2 }- x |
|