|
|
转载
- z% D( c& S% N7 ]% FBY SJ
# \* j% r+ V0 R2 l' j首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)2 C4 ~2 n7 z$ e
9 v( w0 H2 Q. L! P' D
D2Gfx::D2DrawImage-10041; M9 ?0 Q @2 G( ~
1、修复技能的背景(不需要可以不要)& h5 z: C$ T2 R" [: V# n: G
offset = D2Client::GetAddress(0x77AA8);, s6 t# Z) w# U+ d- `" W
Memory::SetCursor(offset);1 W2 c' c5 o1 v& a
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
$ m- b9 n' S" e) K6 n$ Z, {; X1 M' q
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])1 E, w0 R8 U7 _( M, I# P! a# @
{
* P# n) S( j; _5 I# @ //Init data for print image+ ^3 Q m% V. v& i
sDrawImageInfo data;
0 O+ b( a, U- _; L ZeroMemory(&data, sizeof(data));
! X/ |$ f. h8 `# b8 p! e. s& b2 _- w9 ]9 z5 q) {
//print background
* f5 [( p+ A: i setImage(&data, spellBackgroundImages);! L: Y/ L5 U2 {# @1 q, o
setFrame(&data, 0);, e" u: j7 o1 Y: P2 m2 {
int fixx = 511;* r. Z, k8 c B
int fixy = 9;
8 ]3 f; t4 Q' W. [/ M F) u D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
8 @2 A6 e; _1 f6 E9 }& D setFrame(&data, 1);1 f* X0 f; m% h6 L& {
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2567 a& o& k3 @- p: U9 K' O
setFrame(&data, 2);/ k2 a& H# ~! ]# m, Y. k
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
* D4 K( w# l+ N& `/ w: X setFrame(&data, 3);
# d7 t* l* Q) j D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
, s- F8 A& s/ r+ i! Z}
! z8 I0 x) t C7 l__declspec(naked) void caller_SpellBackGroundFix()
: t ^4 O% k9 ~% o9 x6 P{" @. g5 m) |9 ^; r* X9 ~
__asm, l1 s. X, S+ d6 y4 N
{
3 b8 F5 ], }1 }' _1 F( q; n PUSHAD
0 C' p/ |! s' z2 a# E, s/ S lea eax, dword ptr ss : [esp + 0x38]
: `% h( h! A6 m k8 N }, H7 V4 O push eax' X7 G0 D' S4 j, ^+ F& Z: f
push dword ptr ss : [esp + 0x38]' n1 d% @: Z& G0 [% i
push dword ptr ss : [esp + 0x38], T4 T4 B# G2 K& Z8 T) f4 }
lea eax, dword ptr ss : [esp + 0x38]5 M& g& ]1 E" d o; p
push eax
W) x, d1 t: m0 D lea eax, dword ptr ss : [esp + 0x38]
1 U* r& @8 i& W' p1 E push eax
7 ?( f3 O, s. o0 ^ push dword ptr ss : [esp + 0x38]- B" j7 `1 w# i! L9 v/ V5 `
call m_NewStatShow_SpellBackGroundFix. D. U2 o T+ y8 H7 r
POPAD
: h' B! z5 G! C6 K1 r JMP D2Gfx::D2DrawImage% l6 k. L# A8 U( ^9 V! q
}
& g% E# S5 |% _" {& {. F}2 L3 M. @+ _) `4 W3 ^
/ C% v( \+ Q; k0 I1 b) _
2、我们如法炮制小站的背景- P: l/ f1 A: ?7 l0 a
8 c# F- Z4 J6 N- J Voffset = D2Client::GetAddress(0xAB010);2 ]7 n( U0 b9 J. [
Memory::SetCursor(offset);( X5 H& c6 t/ E$ c! x
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);# Z( Z* f- @# \1 s) Q: t! V
w, o% _& ]' Q9 C7 h3 u R8 W
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])6 I& t% P7 Y& u& T, @1 z
{5 T: ~# D+ N O U% W# a, G
//Init data for print image
4 e# D0 `( Z& S j7 e2 q sDrawImageInfo data;' n: s5 s: `: V
ZeroMemory(&data, sizeof(data));7 _2 E& v" E* [$ J
/ M4 L4 u) ~) k
//print background Q! s9 z. w/ h- E: h4 w$ O
setImage(&data, waypointBackgroundImages);, q: | }- `( ?
setFrame(&data, 0);
5 G' @. E& P" B- g! p4 o, Z int fixx = 0;) T& H4 X1 l, t8 r f
int fixy = 9;
5 E2 U* {. {# x R! K# y6 f D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
& |% Q I) @" } setFrame(&data, 1);1 W; R# l, T5 _& A- R: R
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
. r* \2 D/ e5 T9 w( H! P$ P* ]' M setFrame(&data, 2);$ r2 K! [) b k. X6 c) z
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432' e0 S# P" U: j- h7 h7 X, W5 d
setFrame(&data, 3);
" E% T5 Y" r- X2 q+ q; q1 [2 J D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);* m, L2 Q4 L' r+ n6 E
% ]! v0 |8 \8 b2 v}
, m5 D& K% g4 E3 F__declspec(naked) void caller_WayPointBackGroundFix()% p8 n% C Z& N% C9 U' P3 o
{
: I0 [) Z: l! u( c" @, q7 r __asm
$ Y8 l& x' o4 |) z {
* P7 K6 y: w, U( D2 S" r PUSHAD$ V& N$ U2 p" f& F
lea eax, dword ptr ss : [esp + 0x38]4 v8 t# L l8 X' X3 U
push eax
- {" u m5 x( }) g push dword ptr ss : [esp + 0x38]$ {0 w% c4 |$ x. ?7 p1 l5 @5 u
push dword ptr ss : [esp + 0x38]# B, m" j7 |1 N( Z
lea eax, dword ptr ss : [esp + 0x38]
# v `+ x& R8 k- a push eax
5 f7 f1 S/ t F9 D) u, S lea eax, dword ptr ss : [esp + 0x38]
* m: p: B; w' n6 i. H push eax& z! Z! J$ Z- l+ k1 {
push dword ptr ss : [esp + 0x38]' K7 a4 Z+ g! V- ^3 D
call m_NewStatShow_WayPointBackGroundFix* l1 x; R5 E8 t; a+ {0 A
POPAD- E6 W3 ~+ {$ H0 I# s3 S: P
JMP D2Gfx::D2DrawImage
8 X: q) k3 K) q* j }
! S) X1 {: q# ]}
+ j: a6 Y9 x: t' J
3 r- l3 q; w3 u3 e" H; I4 b3、以下可以搞16*16超级箱子-腾出我们需要的边缘5 J. o' N& v, H1 u( e) L
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)+ V$ i$ L* D3 n6 o0 K0 X
{
. v: Z8 |% I w0 k0 F( c; o6 F! G# d class D2MultiRes : public Library<D2MultiRes>" `8 W# M2 f9 q0 U' W% K: d& [ q. G
{/ H# j4 R0 P) c3 K" m3 d* l
public:
3 w# n9 c9 g7 C ^1 T static void Init()
, L, a1 k! ]* C. }, v& }! L {; N4 t9 S9 K+ a% ~
Name = "D2MultiRes.dll";
( V ^, B& @+ y" D ~$ ?9 N0 E' E9 d" [ Offset = LoadDiabloLibrary();; ~* Z2 k, C4 P% s# L
}
& \" i8 u% [# d" k% k, j };
4 U/ c' K d7 x1 Z( w* G& J D2MultiRes::Init();2 E3 y5 _# l' h$ A: K
D2MultiRes::HookLibrary();
" ?; }; I5 |; b1 k
8 I% `) v+ Q, b j G; ~% f# S, k" K
" ]- U+ [" N$ J; i3 X) { ?4 ` MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);( j/ R4 `3 M( m, P
Memory::SetCursor(MiscFunctionsOffset);7 X; b1 ?( a) n6 I
Memory::ChangeDword(0x1b0, 0x200);7 ] t8 F6 F. @& q
, s5 x/ L9 g% L3 X3 d5 q
. D2 k5 h, Y: {0 g- N( l. V
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);' @' f! E: L1 q) x
Memory::SetCursor(MiscFunctionsOffset);
+ S+ U" ?$ Z, R# d _! F Memory::ChangeDword(0x140, 0x200);/ B& K; E/ M5 W I O* B7 k
& Z. G8 @3 P7 r V
) ?: [0 S, Y, T+ \' w P MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
- m6 ]2 t* D# d/ V* i Memory::SetCursor(MiscFunctionsOffset);
8 |' j8 D7 J7 x. W, Z Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块8 t6 N0 ^+ ^3 y/ {% o+ P; Q
8 r; S i3 Y7 }+ j5 O MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);3 Q2 F) z6 P7 U5 J, j' ~
Memory::SetCursor(MiscFunctionsOffset);! ~5 j$ ]1 p6 x! \* b* P* k
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
: N2 h6 @- R, X! O' m1 ?
6 n4 u" ~8 l. Z/ J/ |8 O4 J- d% ]# D MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
) s1 o7 W/ h$ k% Y# x5 R9 @ Memory::SetCursor(MiscFunctionsOffset);8 I% f. F3 Y# g2 R" f( e! g6 B
Memory::ChangeDword(-0x280, -0x400);//这个不要动( S+ x* T5 k, V3 C
}* D( j7 S$ {5 ]3 Q
' S. z, F$ y, ~- n- N" {4、快完成了,是不是发现金币啥的位置不对??/ U. Q5 l* R- u, X4 ~
/ n; `$ M* N+ B4 T
//这里修正我们的装备栏
" \) k8 Y* B& |/ f/ C, i1 V offset = D2Client::GetAddress(0x99B6C);
$ h2 g$ }; G) m i) e6 B3 T Memory::SetCursor(offset);
, R" c. _+ g5 l/ Q6 { Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
' A; c% b2 A) T/ |0 V. h" A M, F! T8 P
9 i( @% ^2 l5 Y3 \+ v; E) J( W offset = D2Client::GetAddress(0x99BA7);2 ?- r) ]6 t9 C
Memory::SetCursor(offset);
9 i% {4 _# p% N& g; Y+ g/ G Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
, ?/ @0 M8 o2 F4 n8 K
4 I! W1 X; Z3 u' G& i% E offset = D2Client::GetAddress(0x99BE2);
, _0 N/ w/ x1 A2 R0 A7 g Memory::SetCursor(offset);
, e& ]: v ~: C1 k Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
1 K) G" H8 |( t0 `6 H
7 \" P( o- y6 ` ~8 `7 B offset = D2Client::GetAddress(0x99C1C);, b3 |( D0 M2 ]9 L5 `2 }
Memory::SetCursor(offset);
4 m5 B/ r( _4 Z* ^: R Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);' f8 _, f* F9 f+ R9 L+ O: E5 `
' {; i' P8 M$ V7 p- Q
//取消两个popup,偷偷懒不过分
5 }0 B; |8 V- S% z offset = D2Client::GetAddress(0x9386d);1 c& }: K2 y8 s3 m
Memory::SetCursor(offset);1 S% P! `; p2 C5 K7 A1 v% f9 N
Memory::ChangeByte(0x8b, 0x33);# R* z& i" O) V/ O
Memory::ChangeByte(0xc8, 0xC9);; f% w3 O* i( Z6 A& y! p6 [
offset = D2Client::GetAddress(0x9390b);+ l7 q: R6 L/ G' c
Memory::SetCursor(offset);/ w; \0 @; {3 v1 m# x
Memory::ChangeByte(0x8b, 0x33);
% | D% {- h' ?1 f7 f1 [8 t Memory::ChangeByte(0xc8, 0xC9);
' R, U* E) L& a
& k4 B5 B4 h) l1 @- X* D5 n0 ~2 U //修正提取金币
% h5 D0 ~/ ~% J0 V7 Y. p- B offset = D2Client::GetAddress(0x8D3E5);! V. E2 i7 y. u! B9 u$ f& }
Memory::SetCursor(offset);% |7 j: Y- | g
Memory::ChangeByte(0xA1, 0xE9);+ \# v+ w l; h' Z2 Y. K
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);7 Y/ P3 \" V6 z/ |
) |6 l2 Q6 B# X% p+ A2 Z; S1 s$ w
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
4 W3 u; I0 V; H Memory::SetCursor(offset);
& v" ^6 u7 m0 _2 a Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
0 h; a# y& Y8 q3 J
0 P+ \& s: y6 R7 x* L( \ offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
' h* b- N+ j B0 {8 T8 c" d Memory::SetCursor(offset);# L8 j) ^; e2 s7 \: C( J8 |
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
% X2 g/ C% F. p
2 i3 D: W1 {2 u4 y, c //修正关闭按钮9 B# q+ _' C. x4 p7 o! A7 G
offset = D2Client::GetAddress(0x8BD90);9 U5 c4 I; | n' K
Memory::SetCursor(offset);# c1 u! }# u0 u ?: }) }# A1 u
Memory::ChangeByte(0xA1, 0xE9);
. w l3 T: K1 ?7 d e/ I' [ Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
+ _+ ~3 `+ P: |6 j6 v+ a1 {( P! [% N1 |7 F# `& U
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);# J- R# l# |% D9 k+ h9 L( U& i
Memory::SetCursor(offset);" L w2 V$ H9 c) ~
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
5 | f8 U: S$ Z* v" B( \7 N
. R$ }3 Y/ s/ \4 G* _: A0 F9 f" \5 z& r
//以下是细节* U9 ]0 H( j1 @' {* S* k5 E& ^. y
#define getXGoldCoinFixBtn() RX(0x2d0)6 I9 Z* i- e3 E5 A4 e& q' q! ?
#define getLGoldCoinFixBtn() 32
# F' Z1 b" W: J0 s0 B1 ]' x#define getYGoldCoinFixBtn() RY(-0x59)
" \5 ]+ d2 p1 w$ R3 j( T/ F/ t7 f8 C#define getHGoldCoinFixBtn() 32
; ~* B* S% Z+ ^8 P. r9 y#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
6 y2 [6 l1 p* I& q& ~( K
5 n' @( U/ j5 o8 h#define getXInvCloseFixBtn() RX(0x3db)
2 s8 N( q$ y+ v#define getLInvCloseFixBtn() 328 B: z. ?$ Q$ m
#define getYInvCloseFixBtn() RY(-0x63)
: N Z& B& X! I! a; G5 q#define getHInvCloseFixBtn() 32 \, v; q& v9 N" D! B
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
$ G! @& G% W7 N* ~6 J- L) s/ z
+ h9 B; ^ h% FBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
* y; o$ G# H2 i{, B6 o2 w7 M$ | m3 ^
DWORD mx = *D2Client::ptMouseX;
0 y2 q3 @8 h, D7 X" w5 r. p c DWORD my = *D2Client::ptMouseY;3 n0 I2 G( @; C* r8 {
if(isOnGoldCoinFixBtn(mx, my))
7 ^# |3 `0 c A1 a: }% L& ?# Y return TRUE;
& B8 w D8 `. T1 x8 ~ return FALSE;. V- G/ g; S( N' x* {
}
0 s1 o$ n8 \5 u__declspec(naked) void caller_goldcoin()
( f3 r7 B' h4 s, X( t/ {, ~{ ^% {& m8 d9 }- H0 m6 `! }2 J
__asm" p5 z0 n! C) v( e/ u G6 u
{
; c' {8 B' @; d% |$ y push ebx% q) V6 ?1 e: q6 y- Y* w3 o
mov ecx, esi
6 \0 y! i: T$ m mov edx, edi3 @9 l( o) l) ~
call m_NewStatShow_goldcoin
" X5 P6 {, j# [& c+ }$ ~ pop ebx
- u3 _3 l9 `% p/ s& N5 y# I pop esi; u; G4 ^- m6 e8 U
retn
) L( Z) k2 f, ^% w' K) q- N } ?8 |7 M5 V0 n* |8 r5 Y
}
2 }; l$ r8 X7 |2 K7 J# cvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])( p: z7 ?7 [1 |
{
0 l- K0 d0 t1 q* w- p6 D0 G' V1 ] if (*nXpos > D2Client::ptScreenSize->x / 2)
5 s' Y o6 z" H) ^& a {
; ]$ |# F v3 N& ? *nXpos = getXGoldCoinFixBtn();$ u& o( s1 L( h v
*nYpos = getYGoldCoinFixBtn();
' f. t' _3 A8 J1 F }4 w0 v0 K/ x: S7 l& d/ ~; p
}9 o3 M( y. N7 o/ p2 R7 b7 Z" ]
__declspec(naked) void caller_goldcoinimg()
' u6 l4 d& P- m5 Y. _9 c @6 m7 b% Q2 z{
|3 A& Y( P, b1 P# X __asm
( `' A" j1 u5 y0 K$ x/ g8 A, j- Z {
* K% ~0 |4 W) ^/ |' Y9 V PUSHAD
% a" L2 Z2 e$ D7 U lea eax, dword ptr ss : [esp + 0x38]
2 W+ t! x8 N. V7 N7 ^1 z push eax) I9 @' K6 j' b, @# v$ w# J
push dword ptr ss : [esp + 0x38]7 C' j: G1 H+ e8 ^. k
push dword ptr ss : [esp + 0x38]
# P) V' x, I! g+ X7 i lea eax, dword ptr ss : [esp + 0x38]/ N4 D3 `( p! A, A: d
push eax
; {: U% T6 \6 V3 K6 c/ R' P lea eax, dword ptr ss : [esp + 0x38]- z1 ^6 P Z' o: B. v
push eax
# v. ^) x$ p5 l( d& J push dword ptr ss : [esp + 0x38]
g2 A) [3 c" h/ L call m_NewStatShow_goldcoinimg9 ^5 J/ q" i3 o# k" F
POPAD
3 ^/ D9 X6 H+ G% W: A JMP D2Gfx::D2DrawImage
/ j8 m5 P+ Q' A: s5 B0 ?! b6 O }* Z. k' D% t6 Q
}/ Y1 ?& p9 w" j5 S ^
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标4 m" r" u$ i. ~( ~# k+ g
{6 D- M: Q; [) m1 N# T
if (x > D2Client::ptScreenSize->x / 2)+ k" Y% J/ t( E! g
{9 w3 H8 [: A6 Z" k& ^/ P2 C- @
*y = getYGoldCoinFixBtn();
9 i" L& Y5 y- l" ~3 X, T, r return getXGoldCoinFixBtn() + 32;
) W, G. R$ W6 t2 n3 H2 i5 j* p8 C$ @ }
" Q" V3 _* l+ U0 E+ m- T2 a# a return x;
7 q' c6 l9 V' V# O1 P}
& @# l- R2 D7 l [, u__declspec(naked) void caller_goldcointext()8 @4 @+ J& B) K0 @4 o6 I
{
' E! ~; h* b2 e0 K __asm
+ {* v4 F" @/ P& X; ] {& w7 O. T$ \( S/ `6 a9 r# J5 ~
PUSH ECX
! ^1 d% ]7 u2 M PUSH EDI
0 d1 b9 n- s# @3 Q6 M PUSH ESI! Q* g+ @) A; c% h( U5 L
PUSH EAX
2 A* G/ _( Q }: z# s8 W" L" u% ^ MOV ECX, EDX
m) F! l# K" }/ L LEA EDX,[ESP+0X4+0X10]
2 j! U% ]' J6 C- n, ] CALL m_NewStatShow_goldcointext
8 m+ W1 r( t, a MOV EDX,EAX
% I7 ^' z: V6 [8 W- i7 A7 o' W POP EAX
1 e# i9 T* x8 b9 _" s" ] POP ESI+ \. U5 L! _7 r2 W5 Z6 X4 V, p
POP EDI
b$ O; _" w( q2 [) x, }. x6 D POP ECX& C% A; Q/ `# M: `7 K
jmp D2Win::D2PrintString;; b3 Y# P$ O1 Q8 e$ k
}
( N, Y; T' Q1 o% z}
7 W; q: B3 Q( ~) t4 j) p* e! y3 o1 y3 V5 T0 x; i; W/ f
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)3 V4 i: H, k: O& _# N
{7 p" U$ o* t& Q) n, _& |! Q
DWORD mx = *D2Client::ptMouseX;9 n" s; y2 c8 R; Y0 j* S
DWORD my = *D2Client::ptMouseY;
1 b' B w, H1 p if (isOnInvCloseFixBtn(mx, my))
& ]; D3 r! D6 P return TRUE;
& @. Z1 c6 S1 p% ?- U6 A y return FALSE;- d5 N9 \# e; e0 I" R& Z) }
}: \* I; {/ {6 Z. f' k
__declspec(naked) void caller_close()
2 ~# H6 i2 u- y x1 |: f{
* G% o8 S7 e0 P& ~2 R2 G __asm
% `' }( K: O5 M" t H# y! [/ H {
4 \& F4 X% F: G* l5 G. Q* ^! o PUSH ESI
4 h g) N: D/ h H push ebx$ j; B7 e. P/ z( f
call m_NewStatShow_close
$ k! A5 n ?1 z& ? pop ebx8 g7 q# G5 u4 O) ~
pop esi
& q* x( v" C: J" ^+ ~6 `3 X3 G retn9 c/ z" @2 T1 B. Y
}
4 V% Q! E; r" l) f& ?3 a# @. T}
( j+ B u: K K! V; R/ H) ~; Wvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])1 f& W8 z" {: X9 P+ i& B+ E P
{/ ~; z. ?% ?, H4 M0 o
*nXpos = getXInvCloseFixBtn();9 c. R4 F% X6 N. F
*nYpos = getYInvCloseFixBtn();
/ |, d7 C6 U* x7 ]0 [} n/ y: K0 D3 ^! t6 u
__declspec(naked) void caller_closeimg()
* y, V4 h( c4 N9 j) i{6 u) C$ ^' W8 p& i' O- r
__asm
# Y5 N+ j; M3 y6 ]. @$ Z! B7 w {
- j6 I' ~+ D4 `" x0 J4 D; P PUSHAD: p0 ]1 l7 Z5 y; P B
lea eax, dword ptr ss : [esp + 0x38]# W+ C) c3 j2 M0 w/ _4 p* f
push eax/ [9 w" J) N) M. a5 C0 m& k
push dword ptr ss : [esp + 0x38]6 x) ^1 N% {3 ?7 I z8 C. [
push dword ptr ss : [esp + 0x38]
% F9 l2 ?- w- \8 P9 H lea eax, dword ptr ss : [esp + 0x38]
/ c% J$ f7 J. J" n) T push eax
( J* \1 G# Q; j lea eax, dword ptr ss : [esp + 0x38]0 m/ @/ P& ~6 o) {
push eax
1 `; a7 i1 R6 p' l push dword ptr ss : [esp + 0x38]
! |5 ]# B4 n: [/ d5 Z$ {2 y( Z3 u call m_NewStatShow_closeimg e% l4 p. T7 _% F! ~# z$ N! t T
POPAD4 q4 v4 S$ _+ L! ^9 S" p4 \* G
JMP D2Gfx::D2DrawImage
" U% g( n$ |5 X }$ V3 R$ e1 s& f' ~
}
: A% v/ u/ W( _9 n
& O1 I8 N+ I. s U& d R/ D; I8 L* {- r3 h( @
|
|