|
|
转载
* {% g. C( a$ A5 K' p3 d; }( UBY SJ/ c3 i' z- K% h% Q- n/ U" n0 a# i
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
# q2 `$ k9 E7 M5 L) i1 R4 d9 E9 G' y
D2Gfx::D2DrawImage-10041) [7 _5 i$ h1 m9 }
1、修复技能的背景(不需要可以不要)
1 l# }+ ?+ C. F$ w7 F% Z# j7 Moffset = D2Client::GetAddress(0x77AA8);
- n) f2 y/ d. u" W' P( ZMemory::SetCursor(offset);
7 E3 o1 p& ]1 v l) x$ h$ DMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);1 @7 R* a. v& d+ k+ b+ N0 L8 W
! u5 [) }* }, `' ?, e
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
$ ?( X. Y6 ?0 e6 ~* L" y) U! J{
5 r. F3 m+ ^6 z1 ?. B0 y# a //Init data for print image6 y6 l8 S2 _% d' U
sDrawImageInfo data;
7 S- d4 K5 Z2 J/ W ZeroMemory(&data, sizeof(data));4 G% t* P1 |( `/ a# Z, [
2 ^: w! C2 P% N- c* Z7 e% r
//print background1 r' a7 S3 {0 b0 z1 Q
setImage(&data, spellBackgroundImages);$ B; g- A& D" F. s/ g8 d' O( o% Z
setFrame(&data, 0);
; [9 a: ]0 ?% e/ @% U int fixx = 511; {! @& q" s. J* @7 B. f
int fixy = 9;
! u+ G$ G9 ] c) T: u" \ D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
2 R- C8 ~# K' G- {* \4 q* ` setFrame(&data, 1);1 r& r% ?$ i7 Z' j& A3 d% Y
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256! ~; p9 k1 x- A. {+ p, K
setFrame(&data, 2);6 ]' ?% t5 L3 a: Y, G% }7 E
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4321 @' `$ {* `3 |( I5 V$ h% ~; N
setFrame(&data, 3);. d* ]' T( ^3 {2 M6 T8 K$ w
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
$ a" J7 V! O1 F" c* a}# m4 M, N6 ^" w
__declspec(naked) void caller_SpellBackGroundFix() V, o5 t0 q! E8 D
{$ Q' [# h7 b# q! A/ j
__asm" j. c6 Z& y' l( e
{& y# m% w, Q: c; k' d3 S9 f
PUSHAD
8 O# T! K" c5 K1 x lea eax, dword ptr ss : [esp + 0x38]$ U! [0 ^! J ^: z! W: h
push eax
+ x) G% Z2 m7 I S% s" p5 u push dword ptr ss : [esp + 0x38]
% i* c4 p. V% b3 B2 u2 @7 v push dword ptr ss : [esp + 0x38]
$ h, F1 |: j; @8 q1 i/ \# h lea eax, dword ptr ss : [esp + 0x38]
$ m4 |2 w8 t1 T7 Q3 S7 { push eax% P# K" b& I# z& Q- [* U: r
lea eax, dword ptr ss : [esp + 0x38]2 L8 w2 y# D/ F/ J: q1 k5 x$ d( \
push eax$ w4 I: N3 j7 G( i8 X" x& x" w! \
push dword ptr ss : [esp + 0x38]4 M/ D3 \6 E7 S6 }! f2 l J
call m_NewStatShow_SpellBackGroundFix
$ {' V2 ]6 [ Z. H. T0 U x POPAD& [1 c- u+ w- c: m/ B
JMP D2Gfx::D2DrawImage+ G% f6 e9 e6 |* ^2 o( N; j8 Y
}
2 u& J# d1 y# W}
0 Z5 [0 e9 Y, I! X6 s* e
) C5 i1 e2 M# [( P" A! p! [2、我们如法炮制小站的背景' Q9 A- g( C: o" B
6 M+ A0 ?6 H. G& }! j' zoffset = D2Client::GetAddress(0xAB010);5 V+ }9 W, N/ x# p
Memory::SetCursor(offset);
- m9 y) b3 V+ q9 HMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);0 u7 q6 O! E3 h( W, z% |- i8 K
" Y/ y o0 f! J
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
* ? X1 B) O; r2 g1 e1 `& e{/ R! o7 H" c7 d* u8 U' \
//Init data for print image* k2 r1 ?: y3 e9 T
sDrawImageInfo data;
, l S/ A+ E8 Q* h3 }6 j- F! s ZeroMemory(&data, sizeof(data));
4 H( W# c6 s3 j0 |4 P5 [& a) j+ L4 a
) Z6 [8 y# y! _4 n //print background
, m" B3 x0 N5 V6 m2 D) f/ C+ F# I setImage(&data, waypointBackgroundImages);6 v1 | l: e- x/ s9 \/ p. P
setFrame(&data, 0);; o7 S: C1 g7 f$ F
int fixx = 0;8 D% p: {* z" I
int fixy = 9;
5 s/ g9 E! {9 i, P7 B D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);7 S- F3 F7 L/ ^& e, w: d9 ]2 J
setFrame(&data, 1);
$ w* q$ n* k# I- \" T3 E D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
( {! w/ o. @' D h# M" z1 f setFrame(&data, 2);) ?0 k+ a" f4 J
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4325 T* p5 e) l! a' W
setFrame(&data, 3);
8 g3 m% v6 B* M1 t9 B D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
0 B5 G$ a0 M0 J- {% I1 w4 v- K2 N" l
}# X" ^. p9 `0 m) `$ k2 X3 V: q
__declspec(naked) void caller_WayPointBackGroundFix()0 I* m8 m9 s5 k( t. n
{" W( z# O9 |; q- h" O
__asm* g$ J1 @9 H, x5 e1 h9 J9 r* E! ]
{" ]: Y3 c4 M6 ~) H% t# J8 O
PUSHAD
" R/ k7 t' b S5 y lea eax, dword ptr ss : [esp + 0x38]
8 n4 |; y9 r' a4 ^ push eax
O( E4 q% `4 x' I push dword ptr ss : [esp + 0x38]2 ~3 w z; c4 k; x$ Z$ [" H9 C
push dword ptr ss : [esp + 0x38]: F c; q8 F0 U; j3 X
lea eax, dword ptr ss : [esp + 0x38]1 W7 v4 {! Q+ f9 m n# A( W
push eax
3 e5 q8 w8 u: t' T' v' h& ]& a lea eax, dword ptr ss : [esp + 0x38]
9 \0 J6 H. E/ J; e- O) R push eax
7 S8 y+ ?5 Y: J) W' K9 f push dword ptr ss : [esp + 0x38]
9 `: }+ n. ?7 J call m_NewStatShow_WayPointBackGroundFix
" O0 J' d3 n4 _* l7 N$ h POPAD# M" s' ?% L+ h& S8 ~$ \
JMP D2Gfx::D2DrawImage' a- z6 ~: F/ Z' k
}* M9 i/ x/ y% G( T
}+ Z. i; n/ Y7 D5 [3 ]
4 \2 e; j; q3 C
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
$ {, ^+ N. O/ n/ @' n5 @4 C3 B% J腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
' z p% E. ]8 P6 u+ p+ n r: R; a {
3 w9 a2 n: ]! }# b2 D% K3 ]8 K5 w class D2MultiRes : public Library<D2MultiRes>2 q6 t* f1 V: }5 r( |2 [
{" o3 ^- [4 p9 h
public:5 b! R- }% g; ?; ^( F" l
static void Init()
& z8 Z2 {! V! U {* m0 ?+ y& j \0 u2 `- ~/ s% S# E- T
Name = "D2MultiRes.dll";, H6 O' B# T' s+ u( d
Offset = LoadDiabloLibrary();
0 D$ L( V5 X5 o2 H }. I+ G, C3 ~3 k U0 Y, ^* A8 x( [
};9 b9 N' j, R+ s! u, U
D2MultiRes::Init();
, U7 Q; F) V/ r: x5 u$ o) @9 U+ c D2MultiRes::HookLibrary();
8 Q/ P! v8 M* W) K7 j& v! n F4 T( W) N3 M7 B
9 V; X9 ^4 b+ v1 T4 _3 A. d
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
/ E6 q" {) ^9 f4 B! ~* j3 I ] Memory::SetCursor(MiscFunctionsOffset);
( q7 y: \; ?) p Memory::ChangeDword(0x1b0, 0x200);: E* s& Q1 `8 U
, J! x0 O# w/ e8 E
d4 G" O/ ]" z5 d7 ?' T MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);6 P; c0 _ J% b w! m* c
Memory::SetCursor(MiscFunctionsOffset);
( S. y) k& V- K+ M Memory::ChangeDword(0x140, 0x200);% ]; _* f# I5 O; {
* P1 j3 e% E' { A1 w7 d
2 E* l G+ z" [ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
5 R/ X, c- y0 F3 e( i& W$ v Memory::SetCursor(MiscFunctionsOffset);- g, B. H0 P) G. r# T# d
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块5 q0 O7 d: V3 d% d
7 U" M+ g9 S2 K2 h
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
( H( c9 t# G t" R2 h0 A9 L3 Z Memory::SetCursor(MiscFunctionsOffset);
' q( @1 q: O' Z) z: [ Memory::ChangeDword(0x200,0x299);//下边缘 299最大" I" {3 B8 A+ f4 p
0 N) n; ^4 Z6 h2 ]6 \4 H MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
/ p1 V% k p8 A+ T* q: Q Memory::SetCursor(MiscFunctionsOffset);4 [' ]/ y9 I, O" q3 u: z
Memory::ChangeDword(-0x280, -0x400);//这个不要动* Y8 [# V' w. ?7 X" ]
}
0 H7 A7 e4 b7 `7 `+ O V6 K" A# }, v# K" ^
4、快完成了,是不是发现金币啥的位置不对??
g" t2 M7 |) E2 y) D
; p( U% @, u0 X+ ~& D' V0 Y//这里修正我们的装备栏
' Q; D( Z) w% |. R offset = D2Client::GetAddress(0x99B6C);
. F; ^: I. \/ l1 Y5 L2 a/ m Memory::SetCursor(offset);
& l4 M, u3 }7 j" m8 k9 b Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix); `: S0 I+ c$ o$ Z
- l+ E$ b! R" a8 _7 S offset = D2Client::GetAddress(0x99BA7);, e8 n5 c5 {: L$ a
Memory::SetCursor(offset);
1 S/ i7 l( a8 ^9 z Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
' i1 R/ \, N. _1 g; N( `" a3 d& E) R, }7 ^
offset = D2Client::GetAddress(0x99BE2); k' K( C1 r4 a- X: M
Memory::SetCursor(offset);) V5 E* T$ R y. R; s* m
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
h% d7 b7 I* f2 g( q
, v1 ?, w, j8 b offset = D2Client::GetAddress(0x99C1C);2 B# ?! |# C* `0 _! E y
Memory::SetCursor(offset);
9 I/ k2 Q! c" B' }) l) o Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);! T( {) ^( N& v( N! S
4 ~$ b7 J, h4 |$ \ //取消两个popup,偷偷懒不过分: L# l4 z8 u* T3 ?
offset = D2Client::GetAddress(0x9386d);
) F. G6 \ l/ V# U$ j Memory::SetCursor(offset);' `" A9 b- g% E2 I" y: f" Y
Memory::ChangeByte(0x8b, 0x33);
# l" p! D# a* `5 F/ z# ] Memory::ChangeByte(0xc8, 0xC9);
: |( ^# A2 Q% i8 u offset = D2Client::GetAddress(0x9390b);& O! ^ @9 A5 p' K J9 K' e
Memory::SetCursor(offset);% d% d8 L' [1 w8 O0 w
Memory::ChangeByte(0x8b, 0x33);
* b7 @# P, w: q: ? d5 Y7 Z Memory::ChangeByte(0xc8, 0xC9);
; C% P& C# n% Q. c7 d5 e- M& x. Y# ]
//修正提取金币
+ u5 Q- K2 d/ s3 u+ ]) c2 ` offset = D2Client::GetAddress(0x8D3E5);
0 m5 \3 `% a7 E7 v) O: r; D Memory::SetCursor(offset);
- p$ f9 Z. J. C8 W" ^ Memory::ChangeByte(0xA1, 0xE9);- P" r& d- P8 z/ Q, a- }% ]
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);5 i' e8 i/ A, o% k, Q- J/ N
6 [% K: D3 ` Z8 k. d/ k
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
3 f; q) ?0 e5 }% T! o Memory::SetCursor(offset);
: z, ^# o. U/ f7 M& T `# d Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);0 h" L4 }7 o$ \5 p* E
@* \ T& Z; J; d4 j offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);4 V6 }& o w' N7 ~: p W _4 J
Memory::SetCursor(offset);+ X! H2 f& v% h- M- a# G% u" }% M1 F
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);9 l) {# s, x1 {8 Q7 z
& r8 ?/ k3 P$ P+ I4 _9 m7 R7 m //修正关闭按钮" h' N/ k3 H4 q
offset = D2Client::GetAddress(0x8BD90);9 R( D9 o: ?/ ~2 m0 d5 ?5 |; r. [6 G) x
Memory::SetCursor(offset);
/ W1 t" }5 f" A$ ~. X3 l Memory::ChangeByte(0xA1, 0xE9);3 `5 x, Y0 A& F# Y
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
" W5 d, n' j! E" j
$ x. [3 B( x0 j( d# |( e offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);1 U' `6 C& C5 [7 a( C
Memory::SetCursor(offset);
2 X, n+ A( Q* i( V( P- f% e Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);- |( ]3 b. x; c8 U
+ r& ^$ u6 a9 H5 Z; q5 C, l7 e. p
. R. U! d9 k8 b//以下是细节6 G1 @) `% F8 L6 D
#define getXGoldCoinFixBtn() RX(0x2d0)" H: s! F3 m! I' L$ G
#define getLGoldCoinFixBtn() 32
4 V. x2 s! A2 Y& L, _! P#define getYGoldCoinFixBtn() RY(-0x59)
, J6 p, v/ U- H7 c, s8 G0 h#define getHGoldCoinFixBtn() 32
/ l3 o6 M7 ~/ z3 C$ G#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())' R. R$ Z8 t- d) A! H
7 l) {3 o' V# L& d#define getXInvCloseFixBtn() RX(0x3db)( W6 z7 S- R6 k4 z+ j: c5 z
#define getLInvCloseFixBtn() 32 E3 V, W* @7 c6 x! G ^
#define getYInvCloseFixBtn() RY(-0x63)) C, }! w0 @/ i
#define getHInvCloseFixBtn() 327 R5 |# b9 ~0 } _* ?) G) x
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())' j* B U+ g; }1 P T
, U% s2 m& l# l' B2 ^2 z OBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)) [3 \! f2 @3 }2 N; e
{- ^0 J7 @; r3 ~6 M( c
DWORD mx = *D2Client::ptMouseX;
* N( _0 u" o+ u1 C% K b, `3 k, I DWORD my = *D2Client::ptMouseY;
* i8 Z6 l4 Z; j! y/ E if(isOnGoldCoinFixBtn(mx, my)): d0 j, }0 ^. N4 R
return TRUE;+ ?2 T! Q C- O" N0 t
return FALSE;' \* y. U6 B* t5 h; v, B( Y7 z
}
" Q3 X* n& |; F/ l$ w, T__declspec(naked) void caller_goldcoin()9 N! K0 \$ X. I% n
{
4 W# g+ x$ S: ~( {0 G! j( }' N. E) k8 ] __asm; U2 Y0 E4 x! @) a) X2 U5 G
{* L) [0 m1 X9 G) n
push ebx
% a% }8 U) m$ d mov ecx, esi
3 ]0 [/ ~: P: q" h* c mov edx, edi
7 d- q* [$ [9 j! d call m_NewStatShow_goldcoin( c6 g7 L' d+ x6 f1 t9 O
pop ebx' K, Y( |) j9 x' p. ^$ C* y
pop esi
5 R# B" v3 r5 a retn
) o4 S. d4 k. k4 H- M1 |% l }
( e% c0 d! a6 C0 E. Y( ]! ]0 |}9 |" \. ?2 }. \3 t4 I0 l
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
' r- u' g' b) R+ t: h{; F) ]4 ]7 a3 } [- [
if (*nXpos > D2Client::ptScreenSize->x / 2)6 [, I7 B$ W9 z
{5 N. X) }5 r$ _ R% m+ k& \
*nXpos = getXGoldCoinFixBtn();
1 }: R4 u l$ v( e* E$ Z *nYpos = getYGoldCoinFixBtn();! M% v% q; e$ @$ b4 H
}
# w, }( _) c3 i }1 y& F- e* v* e}$ I, m3 G! i# n- Y+ Q4 a9 a
__declspec(naked) void caller_goldcoinimg()9 L9 Q2 `$ A4 P. E7 [* j6 X
{
/ ]! |7 q: a% N- K' S6 T9 c6 w( A __asm" h/ R% t% D0 ^9 P, s4 I
{
2 H. X5 v: J( @* ?5 m' x+ K. t PUSHAD
a: v u( B: Q lea eax, dword ptr ss : [esp + 0x38]; T8 I! _4 [5 n* ^7 G- ]
push eax
! j1 Y/ G) @( o4 K. d6 ^9 y: z push dword ptr ss : [esp + 0x38]# k* H. r4 q8 _ z5 H" g& x
push dword ptr ss : [esp + 0x38]
# N3 V4 }( V' S0 u' ^+ \ lea eax, dword ptr ss : [esp + 0x38]
# f8 J, I, [, y- O push eax1 p# g( S- g! l" {
lea eax, dword ptr ss : [esp + 0x38]
. T4 w3 V9 v" ?& u2 T push eax
5 U7 h2 j! Z Q2 R3 g9 p push dword ptr ss : [esp + 0x38]
4 ~* L# U6 Y5 G! |9 [. l* | call m_NewStatShow_goldcoinimg" C" M4 A- c$ F% v( J- Q
POPAD/ O( y9 T! K, H- m) t
JMP D2Gfx::D2DrawImage
/ T* ?% @) w. N; N8 w# F }3 J1 o% `7 w6 J! K- s Y
}
6 O& w, a1 _, L/ e3 I' kDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标( D+ |9 v1 L0 t! ]: L
{
) _! d8 n% h) F* T if (x > D2Client::ptScreenSize->x / 2)2 q: ^; c* O! s! N" e5 \) j" q' h
{+ L; |0 z# L j
*y = getYGoldCoinFixBtn();
& d+ N: m$ L! T! E1 Z; U3 y return getXGoldCoinFixBtn() + 32;8 M) @8 X, @( I* ^2 D0 |" x( H3 Z
}4 I( A4 k I# N
return x;( s2 C0 {8 r B5 ?, U% m% V$ N# [4 M
}
7 U L R, o/ X4 S__declspec(naked) void caller_goldcointext()3 t' q) e R3 y: ]
{
C1 A; x3 T! j* c$ A1 n __asm
' m4 p0 H" n# U {
4 s2 {% [ q, _* U/ t PUSH ECX: K, o5 o! A" D! ]8 O
PUSH EDI" Z7 F& A% Z/ {! B5 f
PUSH ESI
, c1 @4 {7 P2 H; x7 F PUSH EAX
! H7 h- a- M% l- M MOV ECX, EDX2 }. V( I& d7 S
LEA EDX,[ESP+0X4+0X10]0 p/ K3 [" _' ?% l
CALL m_NewStatShow_goldcointext
7 j4 Q% E9 v) @. c5 k9 K* M MOV EDX,EAX/ {7 e+ e3 @4 X, M
POP EAX
/ ^! E s, a7 C POP ESI
' i7 z" l& t! o1 C4 Y1 _' z9 @4 k POP EDI
8 T$ ?, e; H' S) h+ ~4 G' ~ POP ECX' ^9 P* g# N$ g" u! A4 ^& F3 S
jmp D2Win::D2PrintString;
. o9 j/ O! ~% g8 ^ }
& |6 S$ B5 A; i8 d" W7 _} A7 n, _# m4 D7 }, V% f
1 P! J0 q+ W/ WBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
5 Z* v+ B/ ^% W# e{6 g# j1 [" N4 w" k, U) {
DWORD mx = *D2Client::ptMouseX;
$ u) W9 H- R" c F9 r DWORD my = *D2Client::ptMouseY;- D, W) Y& n( S& c
if (isOnInvCloseFixBtn(mx, my))2 @. s+ `, z+ x6 ? l, @! u
return TRUE;
( o6 d3 H; @3 G5 i$ x' A1 V return FALSE;
U: H7 O/ z, D4 Z. A}" f6 a y& c; L# R
__declspec(naked) void caller_close()9 `" W5 j2 z- G) p: Z' T
{$ j2 B' A: \* w& d% B
__asm
5 h6 L# [: F8 v( v# M' h {
" b- N6 v' e, O4 E PUSH ESI7 J" k( l, f8 u7 x# H
push ebx: X9 K; k* n* V; z
call m_NewStatShow_close
# u4 b5 ^& `# t pop ebx/ }8 y) }$ ~3 S
pop esi, c4 Q/ l/ A8 p2 X+ \6 E8 r. o
retn
' P4 Z4 E" r, e6 y; ~7 p4 Z }
$ r5 R* j! u. t1 w/ p7 N0 A}8 L3 G2 {2 o" @5 u; O' ?" G
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
6 s4 F6 Y% E" i{# B8 S" N( X4 m7 ^0 C
*nXpos = getXInvCloseFixBtn();
* k6 t. T# i( S# D# Q *nYpos = getYInvCloseFixBtn();
/ G8 J9 g( L7 S4 a' h; |}# y8 B S2 |$ ]) Y9 _6 M2 r% U* S
__declspec(naked) void caller_closeimg()1 d1 N: Y/ e: Z8 y0 [7 ]# j" p) b
{5 |0 y4 j/ E, n4 Q
__asm
/ _, X+ k; G: _ {
4 ^ ^; R6 b$ u* ` PUSHAD
+ |% o' W' ~( ^' ~ C. A lea eax, dword ptr ss : [esp + 0x38]
! g& v u$ }4 D2 a; c; S8 j push eax4 D: e& S) Z; P6 d
push dword ptr ss : [esp + 0x38]9 y. B$ y4 y$ G4 a$ v
push dword ptr ss : [esp + 0x38]
& ?9 Q6 J7 u/ u; X" f/ B lea eax, dword ptr ss : [esp + 0x38]
3 G4 H' \6 i7 e+ i1 K: h& ~5 ]% Z push eax8 q7 I( ~/ w0 H: E+ m: j
lea eax, dword ptr ss : [esp + 0x38]
1 C: ]: g3 J g, a! \' p& `7 o' a push eax
- o5 X/ A: y/ D push dword ptr ss : [esp + 0x38]
/ K# n; P4 p$ h$ D- L3 G call m_NewStatShow_closeimg& Y9 `, m5 y* e# ~
POPAD" U- J. C8 }1 {+ _5 q9 b) }
JMP D2Gfx::D2DrawImage
$ Y. V5 D7 P- J% K) J }, Y# A8 S4 {2 L- O2 y
}
) W/ t9 a: t2 `; G# I
8 e' N- V5 `7 k3 i* X' m3 W9 p8 a
|
|