|
|
转载4 r h, u2 \9 D% y: P; Z6 c
BY SJ
4 D1 S; l0 E) @& I首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)5 D1 x3 D$ G# \% E' [! L
% h. G7 I' r: @3 FD2Gfx::D2DrawImage-10041
, L6 j9 k9 A/ B/ G$ X; |7 x1、修复技能的背景(不需要可以不要)/ N/ B9 h$ {/ c3 z+ ?
offset = D2Client::GetAddress(0x77AA8);! m: L/ k3 [& l5 Y+ ?+ }$ q# L
Memory::SetCursor(offset);
+ `$ Y0 a) e! Q) a2 G" ?Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
. P- U# \4 a9 C+ G0 u
# F! K2 r! h1 }4 L2 kvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])9 u6 u0 z( C+ ]0 t1 _
{
+ m) y8 L- s v, J: U% y //Init data for print image
1 u4 M4 i. R9 r( J# M E& s sDrawImageInfo data;& A% m& g' J/ S! G4 I
ZeroMemory(&data, sizeof(data));
: I5 A+ f) I0 s& Z
8 C/ D: Z8 }9 g& _+ M //print background" m$ S4 z2 B) M9 {
setImage(&data, spellBackgroundImages);
5 {) h0 H" P i( m# S k setFrame(&data, 0);* z# ^! W# _7 U' A
int fixx = 511;
6 K3 i/ x5 [1 r/ L6 p int fixy = 9;0 l7 @0 p% z- v, g' X0 ~* y V/ v
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);. T) c' g& U) a: ?1 U
setFrame(&data, 1);$ P/ K' h0 t" A) r+ b+ J
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2569 m; g& c z/ O
setFrame(&data, 2);
9 Q3 u$ W' `; r: h; k( D D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
1 P. Y! {* Z. [ setFrame(&data, 3);0 \$ c. S8 c4 h9 h
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
. E) Z, S( [& G5 M+ w! h! r}
$ M% q/ X- m5 I) K! L9 v8 y__declspec(naked) void caller_SpellBackGroundFix() \! z( p4 Z* O2 h8 A
{; F$ _& X8 ~3 @4 ]
__asm# T* Q# s( N A( i/ ~) n3 N2 p6 K5 V
{
Z1 i& r+ Y y: _. @ PUSHAD
# x) V3 U: i& \$ H/ D lea eax, dword ptr ss : [esp + 0x38] J- C1 a D- e1 W
push eax
6 `* r" a# p2 M5 Q) b push dword ptr ss : [esp + 0x38]
) m% L' X) U5 ?# M* W: ?& C8 O! U3 C push dword ptr ss : [esp + 0x38]* C8 d) N' v0 S- R) F, E9 ~, m
lea eax, dword ptr ss : [esp + 0x38]
) ~4 L F. R8 z) S, [: b push eax
u1 ^- ?& w+ c+ v+ t1 I& [* } lea eax, dword ptr ss : [esp + 0x38]
, w5 R; r7 J U9 ^; [ push eax2 Y. w6 H7 I4 G: b3 t0 U* \
push dword ptr ss : [esp + 0x38]
' b1 S% w; f7 S; J# m! M call m_NewStatShow_SpellBackGroundFix
# c% o% a# b3 c# a( _7 X+ w POPAD; ~+ V* G) R2 D- o+ \' d
JMP D2Gfx::D2DrawImage
6 A2 o* G9 V; S9 G) }5 ^- r& d, G5 ` }* G3 i, u) Y8 ^
}( B0 l; Y. t+ z+ f
8 B8 z% K+ Z( b; Q/ G( z. l2、我们如法炮制小站的背景
1 C" ?: |8 ~ E
7 I2 W1 m5 u9 }, ^8 x# Eoffset = D2Client::GetAddress(0xAB010);3 p5 T% _' D: G' Z6 {
Memory::SetCursor(offset);- o- P! i8 [' u6 ^" ~& Y4 y
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
/ ^ ^# j: J) T! c% U9 ?& t! Y5 C8 L* K: r- S
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])6 {, a* c% u* a2 a$ J
{7 Q5 V# |9 e& V) m# |( S
//Init data for print image- s1 v! @: |8 ^1 |) G4 z
sDrawImageInfo data;' k9 |2 F: A) I/ L2 n s( I, U
ZeroMemory(&data, sizeof(data));3 x/ F1 U6 y; P
$ l5 r' A! @; h0 @* H1 b //print background
5 l: P. ]2 n) M) v: h0 A setImage(&data, waypointBackgroundImages);. _/ u" h* M% \% Q/ r
setFrame(&data, 0);
% O# A( |1 v, `% n2 y2 W int fixx = 0;
7 a) v+ ~# j* X9 ~* ~) Z$ @6 V int fixy = 9;
% s' C( u6 ?/ | G: m1 F, [* R/ I- z D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
0 ]2 _ e0 N4 f# y$ J$ b setFrame(&data, 1);
" A; V, E& {! @# X0 Z% n D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
+ a. S- F5 |9 B( W3 H setFrame(&data, 2);
' T3 `8 G6 B* x D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432) N8 D1 s: X+ N- |
setFrame(&data, 3);/ d/ Q5 e, ~, ]% l4 t
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
0 W3 N+ j9 K' _
/ ? I+ w' j4 N2 h s. ]/ B}6 w; `7 O% U& Z# e6 N
__declspec(naked) void caller_WayPointBackGroundFix()
9 \( V# W1 {* S. p' f{# A- O7 e* _! z) p
__asm
. y h) l+ y5 \6 N {
" x* A& V9 y& [/ [ PUSHAD
8 Z4 O6 m5 k. b( R lea eax, dword ptr ss : [esp + 0x38]
' c6 I8 E. @9 r' S" H9 o0 \ push eax
0 U0 ]2 j g4 s, p push dword ptr ss : [esp + 0x38]3 f8 F3 [5 @% k" s# t# y
push dword ptr ss : [esp + 0x38] Q. h# n# M4 T% p n4 E8 v3 H
lea eax, dword ptr ss : [esp + 0x38]
) L& ~* I& ^8 }5 C; c1 v push eax7 w+ R7 T) G0 d
lea eax, dword ptr ss : [esp + 0x38] A3 M& b0 ~! l# g
push eax
- e" u1 R% X4 L) x, C0 j& ] push dword ptr ss : [esp + 0x38]+ J* P" W& g& R
call m_NewStatShow_WayPointBackGroundFix
9 b! j( [1 V+ x* C POPAD
# s/ t1 D9 h7 p2 K) F JMP D2Gfx::D2DrawImage
+ R8 M) _' P+ D" @ }4 K9 H4 y0 I! O5 o# r
}8 b6 d, i( i. U
( ^9 @' [% s2 V
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
& p) ?$ N- j6 m6 ?腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
N' i* D. I! z W. ? {
( u, i, O4 D: z0 D class D2MultiRes : public Library<D2MultiRes>
( ?& W+ w0 ` g {4 p! ~+ `2 B4 Y
public:
" `/ |6 N, v' V8 X& o static void Init()
0 n2 F$ d8 Q$ l& [0 s l% ^1 L( g {
$ K% n# [0 p4 C# j. z Name = "D2MultiRes.dll";
% f$ Y% H: ^, g H& Q: S k; U Offset = LoadDiabloLibrary();' ~6 P* X; u1 ~) w3 M% O6 `
}
' [# t' [- b3 B2 A( g) h1 S8 { };
3 O+ g# {7 x3 W _7 c D2MultiRes::Init();+ u+ e, E8 d2 `% {4 b/ o& F2 `
D2MultiRes::HookLibrary();
: h. B3 {! ^. c2 V9 k( k( g) b+ { ]; C& S: D/ V i, Y
6 H9 A: D' l" W+ m( V0 L$ }7 b* o
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);8 v8 g$ n) X5 [7 W. q4 ]! h
Memory::SetCursor(MiscFunctionsOffset);
, Q/ y. U4 i/ |7 y- z( t Memory::ChangeDword(0x1b0, 0x200);
# U* @2 I0 }9 ]" ` r
: T* J1 z2 N/ {$ y& }4 ^9 h* O. [# J' A
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);4 L' P( N& h! H/ i8 [
Memory::SetCursor(MiscFunctionsOffset);: ]0 B/ r, I5 T- S
Memory::ChangeDword(0x140, 0x200);
( T0 q+ ~8 ?6 N) P" ~! H: L4 {: h+ x$ a3 ?
0 B& J8 w2 {# M- W, q* @# S3 |& a) @- E; |8 H! G
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);9 |# [( w+ A0 h( ]
Memory::SetCursor(MiscFunctionsOffset);
! T+ V6 X2 h! p) e m Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
* J$ h; W; s7 b6 \- U' Y1 c9 j; V5 o8 {: o4 I5 g
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);! i6 P: x8 y" A* W* B+ I0 n
Memory::SetCursor(MiscFunctionsOffset);, q n9 N& M) _
Memory::ChangeDword(0x200,0x299);//下边缘 299最大7 y/ O6 n# k- i5 ?5 Q1 g, D# F! ~
; r5 M# Q( z' A
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
/ M; t5 n0 p; ?) v+ Q' g; }" C# z Memory::SetCursor(MiscFunctionsOffset);
1 l, Y* [8 S5 u# v9 C& I) Q Memory::ChangeDword(-0x280, -0x400);//这个不要动
' B: k9 E( `# L" A" X: C, A }
8 S5 _$ ?0 d, m; w F
. O4 r N" V; S3 \9 \! _: C4、快完成了,是不是发现金币啥的位置不对??2 P% m# d; C4 m; f
6 H3 o9 h) W I: e4 v* g W4 a( _//这里修正我们的装备栏
- p( v; Z% M6 R2 [2 Z! a" X offset = D2Client::GetAddress(0x99B6C);
4 _7 e* ^" {" |$ n Memory::SetCursor(offset);
" w0 r b! x6 y+ {1 W Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
$ z: S& }: `& I& ^; w. T& P
# P6 {! z; o& H offset = D2Client::GetAddress(0x99BA7);& ~( h3 s2 a7 C% K1 U4 n P
Memory::SetCursor(offset);, `2 |# P/ m* w+ @3 k w
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
; u H2 M0 G! @) k* H) B
. Q; @/ h6 R, Z offset = D2Client::GetAddress(0x99BE2);
' L* g: f; y" M$ j# w1 ^ Memory::SetCursor(offset);9 {. ]. H, Z Z; W2 G. |
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);- j1 M" r2 _3 A. j V2 V7 G8 I
7 A2 n/ c0 X) i' L V) t offset = D2Client::GetAddress(0x99C1C);* E! M( s: {2 L7 p6 \
Memory::SetCursor(offset);4 p' g$ `/ D; X& A; D. {0 }
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
" f" b y u% H- k' h
+ r* m( h6 T; {! a" _0 F1 n2 X //取消两个popup,偷偷懒不过分
* w% Y' o. q9 u& o: } offset = D2Client::GetAddress(0x9386d);% @( [" G m$ n7 ]
Memory::SetCursor(offset);6 M, c& x/ t: t8 Y9 C8 a
Memory::ChangeByte(0x8b, 0x33);
( |/ C" a- D$ { Memory::ChangeByte(0xc8, 0xC9);
/ [" y7 _- ~# e6 Y$ w( _1 P& v offset = D2Client::GetAddress(0x9390b);2 H! U" h( ^+ K* M
Memory::SetCursor(offset);
! ?; R, W* i- Q/ ~) t, W Memory::ChangeByte(0x8b, 0x33);" O" h M- C4 f+ Q
Memory::ChangeByte(0xc8, 0xC9); W2 S1 K6 e, a* ~0 M+ j
4 J9 `8 X. l$ z7 t
//修正提取金币: h* e. h5 e+ o- U9 y0 p
offset = D2Client::GetAddress(0x8D3E5);
7 j) W* g# Q1 O; [" B, X1 K Memory::SetCursor(offset);: B$ I4 m: M, X3 d6 s8 Z7 R8 N
Memory::ChangeByte(0xA1, 0xE9);
3 N. N3 ^0 W- Q6 c Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
" j/ J8 A8 y/ G6 c- Q8 o/ {
' f! r. `$ x5 ? n7 d: o& i; \0 a offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
4 N- P7 H2 C) _& }- M0 F7 t( ` Memory::SetCursor(offset);+ ?: n6 W) N9 k" A
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
. `: F4 K, M2 H8 z5 B$ N1 n. A; H3 k! Z. i2 D. `% |+ q5 c( r
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
# A" V3 e: `1 w1 n/ X; h* _1 t Memory::SetCursor(offset);6 Q# G" c2 f6 N: W0 o6 b
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
$ y# l C; ^: g4 @; K# w+ m. \" |! ~3 A' C0 K
//修正关闭按钮. c5 l/ [ @& _
offset = D2Client::GetAddress(0x8BD90);$ @( q" @+ t* n8 n7 B& l3 e" w
Memory::SetCursor(offset);
. l9 _" u$ `. f2 H! w- U Memory::ChangeByte(0xA1, 0xE9);
7 a. j9 W/ ]. L4 ` Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
0 i# z& X; i3 K; n5 Y. P! j2 R' I) V4 Q2 q
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
: W$ ^: p6 n# _ Memory::SetCursor(offset);
* u; |# f" z' F Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);) t9 Q0 a3 r% K/ h% ~0 ]0 B' Z" Y
; o4 m( | B' {. r; s8 h& o* E/ \0 w2 {, E$ O$ d, Q4 `3 ]
//以下是细节- g3 B4 h6 b6 X7 d2 X
#define getXGoldCoinFixBtn() RX(0x2d0)
$ l/ M( I1 y- [) p/ m$ G& P, _2 `#define getLGoldCoinFixBtn() 32
! ^; b( m- B' x! |7 [#define getYGoldCoinFixBtn() RY(-0x59)) z, m1 j6 G" F% T4 j8 O. v5 Y
#define getHGoldCoinFixBtn() 320 `, t1 {3 E) J
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
4 M2 V8 K& p- }3 A7 \5 ~9 X& R! e$ R+ D+ h& d8 |0 J. `" A
#define getXInvCloseFixBtn() RX(0x3db)6 z' Q3 B, q) L" b2 u% Z
#define getLInvCloseFixBtn() 323 P/ x! _6 m- n
#define getYInvCloseFixBtn() RY(-0x63)
5 U' V: c& `+ J8 _#define getHInvCloseFixBtn() 32
' p) e: h0 H m" N2 k1 {#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())8 ]6 h) w; a. L i# n' x. o
7 C, {( i: K1 l0 \) ~, c9 ?9 l3 ?BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)+ Q) g* a0 P8 ]# _8 o, v( A
{5 J! ]; l& N/ c0 i8 A, Z( }' [
DWORD mx = *D2Client::ptMouseX;
: y3 y1 H, _, T! G1 N) F, F DWORD my = *D2Client::ptMouseY;
% @) Z9 T! w6 Z: ~7 A, L if(isOnGoldCoinFixBtn(mx, my)), j6 t6 U# l7 z
return TRUE;
; e# }" j# x" b- V! N. { return FALSE;
1 c s- Q" W& t( c}9 i8 I: O- R4 Z: {3 H
__declspec(naked) void caller_goldcoin()
4 I" `" K2 S! d) Q$ |. o{
8 X @$ a& G; A) _0 O __asm
6 M7 [4 \* B( M {+ U$ C$ ~! P1 o
push ebx
& q" \3 m0 B3 e mov ecx, esi) T8 d4 K _8 R% b3 L2 E3 ]+ S$ Q
mov edx, edi
! b5 r! A) \8 [0 |! x call m_NewStatShow_goldcoin
7 _$ V/ v/ Q; w' f/ Y pop ebx
' G6 q+ [1 G% S" {; c7 d pop esi6 F( p5 L7 ^; Y' g9 r" g% Z+ t
retn) G: ] T5 F2 Z8 `8 j' _5 v1 |
}
* D! c5 z- H5 V, R" ^}5 v; z9 `) a0 D) D% N
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
8 G/ ~* }; j& l. J; e `; e{
: E P1 D8 w( V% p E' H% ~' j9 V0 P if (*nXpos > D2Client::ptScreenSize->x / 2)( u: K, e/ G3 J8 Q' ]
{
: D9 C9 Y4 L' H, V2 v+ P$ Q# @ *nXpos = getXGoldCoinFixBtn();
( ^% {! z( J( Y; r1 |8 g- ]5 \( h *nYpos = getYGoldCoinFixBtn();, F+ F9 }7 K2 M- o
}; ?6 C3 H. ^. P) }) [
}, r& h5 A/ ^+ ^* B. [! d
__declspec(naked) void caller_goldcoinimg()
' s, i% F5 p2 f{& r, e, m9 f- S" C4 W: \* u
__asm2 g& o) l* e' _8 _0 A
{0 P% V4 i& Z D& C/ z
PUSHAD
* Q; w+ @- o d, V lea eax, dword ptr ss : [esp + 0x38]
3 u, W( _( r- w( |# ~. Z) s0 o$ y5 a push eax
|1 C" F8 ] U# f T$ J push dword ptr ss : [esp + 0x38], Z; M1 c& n. y7 H. \
push dword ptr ss : [esp + 0x38]
& i/ g# @9 \/ u2 L& L lea eax, dword ptr ss : [esp + 0x38]
, z5 Y" z/ C. l' S; @ push eax+ Y: P% O0 p' d0 e' M1 J
lea eax, dword ptr ss : [esp + 0x38]
% ^' c9 N5 @8 t) D! ]/ D/ v push eax
% o( I& m7 @$ [ W8 ^5 L7 B push dword ptr ss : [esp + 0x38]# t1 o+ R8 g9 Y o
call m_NewStatShow_goldcoinimg
4 n( g7 \: `( U* G$ h POPAD7 j/ \" |' f' t+ d# L" ? v. y
JMP D2Gfx::D2DrawImage. s: {- `$ Q: j" q W0 N4 j9 {" a
}$ O9 K+ \: P* ~! F5 q
}) f( A, H" e' s" W
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标4 y Y2 G: K$ p- d/ S
{
4 c+ @: |0 v, z" P6 p" A if (x > D2Client::ptScreenSize->x / 2)5 S" K2 U/ Z8 F4 T+ C
{! \: ~8 D$ E4 q( J5 ]* X
*y = getYGoldCoinFixBtn();
5 X; P" u1 M# X% L& S return getXGoldCoinFixBtn() + 32;* `0 B. e) ?& ?2 |$ X, |$ G
}( p Z6 @/ d: E4 m) z# {# L/ O
return x;
3 d# v1 C8 z2 Q7 |$ V' l}1 C; h9 T* n( e2 J0 @* I, X
__declspec(naked) void caller_goldcointext() Z/ D' O: {& H- ~ _2 o
{
5 ^/ U( Y9 d W, u( S; M) m4 c" g __asm
% |- C8 N/ S- ? {2 K) D' i7 x. N/ a# D# Z. x7 E
PUSH ECX
5 e. J1 s8 _: ]) e, g3 e PUSH EDI
% p, O1 @( h. y$ y PUSH ESI @+ J; x1 `0 S2 ?4 W
PUSH EAX
. ~$ {; l) {* S+ T MOV ECX, EDX
1 {- i& X" o! j; a LEA EDX,[ESP+0X4+0X10]5 B1 {& ~( J# h' v
CALL m_NewStatShow_goldcointext# U1 ]/ _( U5 v/ R, ?+ ?' G
MOV EDX,EAX
2 h1 l% E6 c) H+ s POP EAX$ ^: W; H' G5 Q- Z6 s
POP ESI. f5 L4 Y- R0 f2 [2 b0 L
POP EDI* V$ T+ z7 M& F! b. s, x( @$ e/ s
POP ECX
; [ x( G- W: D& G! z6 ]6 L jmp D2Win::D2PrintString;
7 W+ n4 y3 C# R" L8 l" R. c8 Q1 _% V }
) O- T6 ~. q. v/ P2 U}
0 L. }' {) Z u( r
, z2 ?5 J- ^) f! Z, ?BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
9 n8 v) S9 B% k% j# ^{( `; p i) |7 A! V. X6 z
DWORD mx = *D2Client::ptMouseX;5 R- h7 @) f G; K
DWORD my = *D2Client::ptMouseY;/ V9 ]0 w- _6 {7 a X/ b
if (isOnInvCloseFixBtn(mx, my))2 Q8 r( v) S4 ]( ^
return TRUE;2 Y# G4 @/ u& \. A; l' H, {5 ^5 o9 F( t
return FALSE;
5 f# w. p0 s7 s" P2 @$ p}
( C) q* J6 _# G9 Y4 A/ j6 m$ ~/ R__declspec(naked) void caller_close()
4 p! M3 Q* L4 I. |% o0 M{6 m2 [0 ~! F" I& D0 l- r
__asm: Z: C6 C7 _0 B( X9 m. p
{" k; ^, h. w9 W4 k) m" q
PUSH ESI
0 H. D1 ~8 q( r- f2 \3 W& h+ W push ebx! x |+ V" b' W8 n
call m_NewStatShow_close6 v5 D6 c0 i+ O2 ?* s: ]7 c9 w$ f
pop ebx
$ Y9 O4 ^* ], N2 B( ?* [, S pop esi
( B- [+ ^! \& i7 C& K' u retn
+ N% N: H! O7 Y) k3 l- \ }) U( Z$ b/ }) U5 e' B# Z
}# c7 d4 \8 j/ R' y
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])9 ^) c r( k$ V7 [7 s% W
{4 B" B- ]- f1 }" ]" v1 D
*nXpos = getXInvCloseFixBtn();
9 j5 I: m( ~! f6 D *nYpos = getYInvCloseFixBtn();
" r2 d* h; h8 }- M9 i$ L}0 g- {$ |5 H. X7 ^- ~) J5 r
__declspec(naked) void caller_closeimg()
. `2 ^7 y1 R8 y, N; }{. \/ Q$ d2 s- ~9 Y0 Z4 ?
__asm$ z+ J/ P* [2 ~! R1 o" U
{
' T5 O& S( B5 S8 ^# T, e5 l2 R PUSHAD! d! E/ a* Q% I5 J
lea eax, dword ptr ss : [esp + 0x38]
! V4 Q6 |$ w& b5 u2 I3 k push eax5 `8 i. G1 N) }4 R, Y
push dword ptr ss : [esp + 0x38]! n) D, a# {+ Y1 G% M. N+ D: y
push dword ptr ss : [esp + 0x38]* _) [7 s+ |* ~7 d9 U( U
lea eax, dword ptr ss : [esp + 0x38]' R8 D# t; ?3 {
push eax
) p* ^/ x6 |7 n/ v b1 d lea eax, dword ptr ss : [esp + 0x38]
, Z+ I2 [ o' N+ F4 O- B push eax
, a: j9 T% H5 y9 {8 H push dword ptr ss : [esp + 0x38]% D( {/ Z* X' ^7 t# s% w/ @
call m_NewStatShow_closeimg C9 p8 J5 f- c% ~0 X4 |2 V) c
POPAD
" ~4 A9 U- y+ b( m; C$ H JMP D2Gfx::D2DrawImage
! I0 g& ]5 ^8 N9 G$ ~ }
; x" l. e) Y* d; z# S! `% H, z- U8 a}
; C, k) A* c( v T7 q* G) B R
7 m1 E! ~! y5 B0 t, P# i5 W% {9 \+ c7 d) E4 d& |" y3 ~1 }" P
|
|