|
|
转载
: J3 f+ I+ i6 SBY SJ
/ P: ?) p4 k, \' s9 I4 b首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)3 F( M7 S2 {4 r, c( i1 @* d. y
2 Q" u/ Y0 H1 k
D2Gfx::D2DrawImage-10041& Z- D9 A. q8 M* V: C' q
1、修复技能的背景(不需要可以不要)
6 h% e3 T% ?% J9 o9 k/ C/ [6 v% Doffset = D2Client::GetAddress(0x77AA8);
, A: C ~3 \9 C- ?4 c. wMemory::SetCursor(offset);
/ e( L9 n G2 sMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);' q6 L \/ u# m/ K7 d% w
9 T v3 ?# C! O0 c: k1 u7 lvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
6 x5 w6 G p* T$ h( V{
$ d' H3 |9 w. ` //Init data for print image; C+ T" @- y# _
sDrawImageInfo data;* C+ j7 a- s# R, S5 m
ZeroMemory(&data, sizeof(data)); j2 F/ Q" }2 u
& V2 r) J; j, v _4 U. I. K" z4 [
//print background
/ T8 M0 U1 k9 v3 r% H( K0 m setImage(&data, spellBackgroundImages);5 `# j0 X5 j: U! q
setFrame(&data, 0);
6 Q7 t) A$ ^# ^$ d int fixx = 511;( ^# c* W0 K% Q9 s- }
int fixy = 9;! i" s8 {- L% j% i4 w; P
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
$ q% g' R; C8 f+ i5 c setFrame(&data, 1);( h g5 `# W% u3 G6 `
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256) E- h; }$ [" @- D- r+ F/ \
setFrame(&data, 2);: Y; U" l t1 g
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432* Y) M3 r5 h, S1 V# d" T# x5 N
setFrame(&data, 3);9 I: f8 T( C: x& ~" A1 M& t
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);% u' o5 z' Q; [* w+ E, g& o8 t
}; j2 o2 O9 p6 H1 J ^
__declspec(naked) void caller_SpellBackGroundFix()2 x) @( I# i- @0 G# b
{
' }- K0 X8 D5 j0 @! H __asm
( a/ q# u* Y7 c' M: v {
4 W" A& c8 i8 u' O/ x1 ^3 t PUSHAD
, i8 d: j5 E \9 S0 q& z% V lea eax, dword ptr ss : [esp + 0x38]9 |! ?7 y! x1 T; q
push eax
5 r7 L! D, @: z9 K# A2 |$ f( J* Z push dword ptr ss : [esp + 0x38]
* v% m& N! W7 U, r1 g$ d. X push dword ptr ss : [esp + 0x38]$ |* d: E2 x: {! r, W( U3 c- A
lea eax, dword ptr ss : [esp + 0x38]: X, Y$ q- E. E2 M. h& X1 W
push eax
) Z! r* F0 k3 l7 d lea eax, dword ptr ss : [esp + 0x38]. j3 G2 Q& b7 X: F2 c, a! w8 N7 W
push eax) }$ a& n4 |$ X+ a& y, E
push dword ptr ss : [esp + 0x38]' a- w) W+ `! }; [2 j1 c, R' Y
call m_NewStatShow_SpellBackGroundFix
9 J3 A. d' m/ Q0 S! y. s# V POPAD
& |- L6 S0 w$ |- x& } JMP D2Gfx::D2DrawImage# O* Q* T& E5 M
}6 A" A2 F3 z! _2 z+ l$ a
}8 S' [# V) M4 n! d
1 i1 {. f) ]5 @4 e% g- j! F
2、我们如法炮制小站的背景
/ N: W7 ^( U2 U& X& o" k; m; T- w4 k- i% G
offset = D2Client::GetAddress(0xAB010);
t+ A3 z9 [3 Z f" M: T3 q) BMemory::SetCursor(offset);
: W( V0 z( v& N D6 PMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
( |& ?+ c, \+ H5 P1 p! j; C; X+ }6 n T# ]
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])) |+ Y9 X% }8 s
{ {) j( k @% i& H, a$ h
//Init data for print image& w: x, C" G Y
sDrawImageInfo data;
4 a" }- J6 Q0 x- `9 a& L ZeroMemory(&data, sizeof(data));
! V, }7 ]! x7 w( q: U# m
b; M. o9 J, \. B2 ~ //print background& b+ T4 m' O0 m( x1 t
setImage(&data, waypointBackgroundImages);# F0 u) P+ u' F0 k( }
setFrame(&data, 0);: T+ r+ h8 \) ~
int fixx = 0;$ I7 ?8 y9 c4 ^+ b5 O5 X0 n; r$ Z
int fixy = 9;
3 L& N1 U; I! F$ ~* k u5 j8 Q D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
/ z' U3 {) d$ l% v) G# F% [) D setFrame(&data, 1);
3 Z2 `& W f1 r$ o/ g+ O D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
3 ~% J: |; e8 A o6 x! E. ~ setFrame(&data, 2);* r/ q+ s9 d! l% D, R2 B" _( V
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
4 ^% A9 u; k: Y setFrame(&data, 3);
0 V" D' ]# D/ M) c D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
/ ^7 Y0 _( s. |. X: V) X% m0 [; Q
0 M/ X! R/ U& W9 ] r" b' x: p}
2 j" {' C6 P( N' E+ w__declspec(naked) void caller_WayPointBackGroundFix()
0 N* O/ @: {8 e4 y{! V, W4 K; k9 O# ?
__asm- i" Q# ]* k: D; F8 w
{
/ o$ ^* U( u& Z PUSHAD! q- _: h# E8 i+ P+ S- q# o: l! ^
lea eax, dword ptr ss : [esp + 0x38]
& {$ F& O" {& b& j push eax j. X0 Y! [% \1 Q( \
push dword ptr ss : [esp + 0x38]; v+ ?3 ^1 n- e1 F/ w; }1 Q
push dword ptr ss : [esp + 0x38]
* n% s# M2 E' q3 z, g2 L/ [ lea eax, dword ptr ss : [esp + 0x38]. W/ h, B5 ^% {# F
push eax
8 e6 a; v9 e& L4 o lea eax, dword ptr ss : [esp + 0x38]/ w& P) i) h0 N( L" c3 O4 o7 y5 _' T
push eax+ i, h# o/ y) g. j/ u& H
push dword ptr ss : [esp + 0x38], A+ V' ~6 r* Z1 L/ L( k) C. c& \) l6 a
call m_NewStatShow_WayPointBackGroundFix( e" {7 W* t& [! T3 A8 V
POPAD
) Y/ T. l9 P# D9 Z0 r JMP D2Gfx::D2DrawImage8 x8 o0 f. A" }1 D( x3 L* b" [6 G
}0 t6 ]7 |( w- r W' Z
}
( k% U) b3 ]% ?; Z( B0 Y ?6 i! T7 j2 }& Q+ D0 d; Y
3、以下可以搞16*16超级箱子-腾出我们需要的边缘4 }4 R5 l/ n3 d2 R- V" t y
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
0 k* T1 ]) K6 V* u& i% C {
: W3 q& g& u7 b2 E+ k; ]3 N class D2MultiRes : public Library<D2MultiRes>
$ i2 a# d$ U; M4 u, C {
, l: s5 R" s7 f! v3 o public:7 H* U8 g7 V" _% F
static void Init()
* o' L5 y" \3 t) C {) `8 y: K& a7 i4 t; u9 v7 k: j
Name = "D2MultiRes.dll";
' q- Q' r5 T7 f! n3 t( \1 m: ~ Offset = LoadDiabloLibrary();& H3 r! u. ~7 M5 ]/ ?0 \. \
}: O& \/ {$ X0 F2 L- V- N
};
3 {1 g5 @2 U" Z7 X% x- ] D2MultiRes::Init();# F/ O0 S, k; _! S& j
D2MultiRes::HookLibrary();, C% T5 `0 m% _9 G' p6 z; ]
" s! c) N, o' s" l
. t& g4 Q; c' W. @' N z. f. x
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);, P5 t* w( A H; g7 B; f- x
Memory::SetCursor(MiscFunctionsOffset);
4 v; |6 ~. b6 d9 S p Memory::ChangeDword(0x1b0, 0x200);
3 R2 I$ l" T1 F" q1 _& Q* |5 ~1 Y. {& W3 J, h! Z
) ^) D6 r0 u5 Z2 \" H MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
T3 n6 ~& ?1 ~. D! s1 { Memory::SetCursor(MiscFunctionsOffset);
6 k B. t5 b8 G! A8 O5 c5 U Memory::ChangeDword(0x140, 0x200);$ f* s, G2 W: V) T
0 X L, o1 a- v6 p* q
! c6 B( U* M8 F. t- Z) E MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);9 X; x S4 N5 ?5 ~5 \6 _+ S
Memory::SetCursor(MiscFunctionsOffset);0 u4 T4 y% \9 K8 k& y7 R q1 _
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
8 t1 k; k9 f" {3 c9 K# o! O9 i( Y' N) l- ^$ o, Q
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);3 s$ u+ T" c5 Q
Memory::SetCursor(MiscFunctionsOffset);
" s3 J, _- J3 N/ A6 ` Memory::ChangeDword(0x200,0x299);//下边缘 299最大
0 J N% C. f o
! h$ l/ @, v0 }6 \+ g( u$ \ MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);) j( b; p9 I ~. V& }
Memory::SetCursor(MiscFunctionsOffset);
; N: h: s: h6 |% _& E Memory::ChangeDword(-0x280, -0x400);//这个不要动( m! g* A8 H" X" [
}1 |. Q* a7 [9 d: I
/ E. k% ] n: l; o% [) R
4、快完成了,是不是发现金币啥的位置不对??: ^. U+ i0 b/ K5 p' C0 b
0 b7 G; z7 z+ M5 m) }" ?
//这里修正我们的装备栏
* _0 B! u6 U3 ]7 v5 Z% f1 p offset = D2Client::GetAddress(0x99B6C);
# m$ p2 P( e8 D0 S Memory::SetCursor(offset);- s4 w+ U4 ^3 [4 m, @# k6 h5 r
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
5 G+ [- `8 ?, N: k& v) G2 V
# R- ?3 }7 y2 ]8 W5 k& W. ] offset = D2Client::GetAddress(0x99BA7);0 a% m4 K# q2 m0 B6 ?8 E
Memory::SetCursor(offset);7 q, R7 j1 F [, Z5 o# q" ?1 G
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
- |5 u+ g5 n) y* q3 _& v) a+ m9 L, c7 L) Y
offset = D2Client::GetAddress(0x99BE2);6 ?- B) _7 E! \- O/ `. s8 W
Memory::SetCursor(offset);
+ W5 u) a2 b8 T/ r Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
7 h; n/ {3 I- A8 M3 _4 W- Z1 y. p8 B0 u
offset = D2Client::GetAddress(0x99C1C);
# K5 \* z5 i; X: q) n5 I* O! ~$ c Memory::SetCursor(offset);
, u- j+ C- S$ j$ P/ i9 U Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
7 V0 L: {% H# _% \! t# \
) v1 e7 U9 t8 k3 n8 E. ^6 q //取消两个popup,偷偷懒不过分. E3 ~( f) t9 |. l7 V- L' {
offset = D2Client::GetAddress(0x9386d);
' e* c( X! x/ B( o8 ]* K6 s' W0 L Memory::SetCursor(offset);
, h/ i0 D4 }* d! k5 r6 t# Q3 X Memory::ChangeByte(0x8b, 0x33); J3 Z1 x! {3 l/ O/ G' Q" O9 U+ _# F6 s
Memory::ChangeByte(0xc8, 0xC9);
$ T/ z: @4 f6 c offset = D2Client::GetAddress(0x9390b);
, S! R8 \4 y( x# y% O7 r7 U Memory::SetCursor(offset);
1 R8 ~) x# t9 d& N) v' c* w/ \ Memory::ChangeByte(0x8b, 0x33);9 ~4 q& I& J9 X7 J: J
Memory::ChangeByte(0xc8, 0xC9);
5 n# b1 y& |9 e! T* G& s* \8 N! E
' R2 Q3 J9 P/ k0 R7 `6 W# h& I+ H //修正提取金币
2 J) Y, D7 ?# w7 B offset = D2Client::GetAddress(0x8D3E5);2 ]: |9 a1 v N m+ F) t3 N
Memory::SetCursor(offset);
+ w! o' B C" ^8 g: D0 }! U Memory::ChangeByte(0xA1, 0xE9);
7 Q% S* U# `: P8 R9 s Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);" s: F$ ?0 [/ b4 @. {, T# P1 ~
% X: y1 O% r* U# ~) g: A6 U5 N6 u) U offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);, W/ ?1 D1 e r" @. |
Memory::SetCursor(offset);! ^, _& P( `! X' I& o: ]
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);& f% o; O" i" u: W
/ u* j- e3 f7 \+ m3 l+ B
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
0 i2 `- R5 O( d4 y Memory::SetCursor(offset);4 y. h7 v: O# v% O; T
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
) ~" |8 J0 h4 f, g1 r! D# L$ t
9 T, H: H2 T; b7 p9 O //修正关闭按钮! v' f; g i! Q+ G4 `
offset = D2Client::GetAddress(0x8BD90);
/ }' X0 |- X- w7 e+ N Memory::SetCursor(offset);3 ]6 e$ `( g6 O
Memory::ChangeByte(0xA1, 0xE9);9 d8 t% f3 ^- t
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);, G$ r9 c2 W' k2 K2 A! f
: d/ v! k% m6 E, C" j6 s offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);5 I4 Y! h- s5 |7 G
Memory::SetCursor(offset);8 R- t h% R/ b8 {" w6 Z
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
, o" @9 R2 y! c: G( N
% t# k5 T6 ^9 j' ~) a
0 h0 S, d" x9 _4 u# }6 J//以下是细节9 W3 r: P7 e# q: T& O" }) I
#define getXGoldCoinFixBtn() RX(0x2d0)1 M9 k1 \8 O2 @+ D
#define getLGoldCoinFixBtn() 32
' x) w# o, X* f* P#define getYGoldCoinFixBtn() RY(-0x59)5 }" N; `- }1 v4 o
#define getHGoldCoinFixBtn() 32
4 F5 P% r. u+ J' b F. p#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn()) B" d, g, r9 W/ \( v
5 s, o0 b8 D+ a1 v7 H6 v+ \
#define getXInvCloseFixBtn() RX(0x3db)
( L0 o( R v6 C4 F#define getLInvCloseFixBtn() 32
& n- R4 R) q: ^- B4 ~#define getYInvCloseFixBtn() RY(-0x63)/ I" h9 t8 ]. S4 _
#define getHInvCloseFixBtn() 32
) I' B& j: h( J/ p" _#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())) s1 q1 B0 w. f$ e% |0 v! _
$ `- A. S! H9 g+ f3 m
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)$ c8 f/ K- A9 b5 g6 x( g
{
% {$ K8 j w% n% u, C DWORD mx = *D2Client::ptMouseX;$ m) Q! U7 m- n3 ~. I& j
DWORD my = *D2Client::ptMouseY;, S/ v) W m" o6 O9 R8 {+ J! \- o
if(isOnGoldCoinFixBtn(mx, my))
+ s& F; l: r9 I4 b* k1 W, W' E3 O return TRUE;
! I& x8 V7 G: x( b& G, Q return FALSE;# N' r: l8 |1 O; ~. [4 o0 B! ^$ c
}
5 v" B7 Y- h8 S% E__declspec(naked) void caller_goldcoin()* b2 s- `0 I; |5 {$ f
{
- Y Z+ e, y/ O: ^ __asm
+ U1 r2 U g" ~& v {8 h6 A3 d5 d8 d
push ebx9 A+ N. [$ N3 O- d# U ?! P
mov ecx, esi; s4 @: U( {: b6 d
mov edx, edi( B! Z; K5 P& a8 ?& G
call m_NewStatShow_goldcoin
8 M# G6 h5 G+ k: ~; I# C) M pop ebx% F. Q, [% J# g3 }! \. I8 _' q
pop esi C m) `$ \ J
retn
" z4 Y! j% Z3 L2 @& ` }% q! g6 {' E! l7 M7 Q& w7 B' Z
}# u7 _; ~3 y1 I1 o3 T4 O/ b
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])0 \' A! F4 D5 h( ]3 K
{3 U( N8 N4 N5 x/ m6 p8 O
if (*nXpos > D2Client::ptScreenSize->x / 2)! s6 q9 J1 [" p7 q# a; d0 }& |8 A
{+ r( H0 t8 G# H( U
*nXpos = getXGoldCoinFixBtn();
( T5 s( D& k$ K( O *nYpos = getYGoldCoinFixBtn();
1 Z! W% T G% `4 B6 _ }
# {! h2 u3 @) ?8 @* e7 \% C}
4 Z3 v9 d2 u* B( b% x- v9 D__declspec(naked) void caller_goldcoinimg()
! Z0 p; x3 Q, Z* q5 p' C S7 s{- `- v( s; H6 P: R% E
__asm
8 N& d" @: S E% Q) Q0 k n {
1 n# }6 S. r2 f PUSHAD
* ?. w% L6 k- n% R lea eax, dword ptr ss : [esp + 0x38]% V- a; ]: {4 @4 c+ d2 B
push eax8 Q3 A) B; { G. d' F" W
push dword ptr ss : [esp + 0x38]
% `/ i) x7 Y! X( h push dword ptr ss : [esp + 0x38]
% ?: J- A6 t7 A lea eax, dword ptr ss : [esp + 0x38], {- Z. k/ P" z6 H% ]3 E
push eax/ H# k9 o I. V
lea eax, dword ptr ss : [esp + 0x38]
6 k; b% m2 q' E* W push eax
# A, [! \# F G& c& C2 K( r push dword ptr ss : [esp + 0x38]
- I6 \1 | O5 J' `9 h call m_NewStatShow_goldcoinimg
6 X! `9 i4 }+ p C7 H: Q POPAD
+ C- d3 L8 y3 i d+ R JMP D2Gfx::D2DrawImage
$ o6 G0 t4 m% K }4 K- [3 `8 M8 N6 _; s
}
; V; c% b5 | Q+ W. \DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
g) r; h8 p1 h2 N{
; ~) K9 Z' r* @) V if (x > D2Client::ptScreenSize->x / 2), Y" T+ L1 [) g, d
{& ~; @* k6 I6 i e
*y = getYGoldCoinFixBtn();
- O K6 p0 t: f# X+ L return getXGoldCoinFixBtn() + 32;: V f# j, l( O
}
7 p3 F d7 b; A% J5 | return x;! G6 C9 M8 N: n! o6 U3 ~% S3 l, B
}1 b4 X* N! N9 O
__declspec(naked) void caller_goldcointext()) {2 J( s6 J: \
{
5 z: N% O0 |- j( ~0 r$ _& L1 s __asm0 S- a* p- b1 R. z- Q
{5 g6 u9 v$ T, T; c
PUSH ECX) {; h3 O0 h6 l9 C. `" D
PUSH EDI6 B# ]7 J9 ]3 P* C
PUSH ESI* C5 R$ P4 f- \; K `5 p$ k) G" E* \
PUSH EAX
+ R8 m8 n9 m) x% a% K MOV ECX, EDX7 s4 g( u7 p; X% |
LEA EDX,[ESP+0X4+0X10]
: H( W$ ^+ C0 i; E+ R3 n CALL m_NewStatShow_goldcointext6 U1 a. R8 p9 y- H+ D
MOV EDX,EAX
. a$ Y. S# ?4 R9 z POP EAX
8 C7 B8 i# `: w( T) ` POP ESI
1 {& r6 E7 F' [( t$ Z/ n3 b) E4 g POP EDI
9 U# m. C+ }+ Y8 K/ ~; `: H# S POP ECX
* g# L- S- g# K& o9 f jmp D2Win::D2PrintString;
& d1 B; f2 P i; D3 y. W" j }
1 E) b8 | a. m" @' y: E}
( ^/ E) M8 M' f+ q: e
; _! B4 i# a6 C8 l6 R: ?BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
2 u. v& `: W1 p$ Q{
: C5 K" K& _: y. h5 L$ h- v: u2 s DWORD mx = *D2Client::ptMouseX;
% @9 V* P, m2 S# R, Z$ k DWORD my = *D2Client::ptMouseY;
4 r" N9 i% v2 [! Q/ L if (isOnInvCloseFixBtn(mx, my)); O& k/ S+ u2 N2 V6 h* Q+ ?$ |
return TRUE;1 y/ m: t% z7 A4 n0 K
return FALSE;& F5 `& T! w6 ~" [$ g
}. q4 x% Q) u( b; l0 c4 U0 x
__declspec(naked) void caller_close()
5 @2 ?: v5 s/ h9 |& R5 q8 U{8 T/ }& @5 `. j( D0 S! a
__asm h, B. k; Q+ Y1 ~' ~
{
- H6 i+ N8 w4 O) I PUSH ESI% f' P& t5 o6 y+ u, m
push ebx
1 h' z. \- V) C; P3 J call m_NewStatShow_close
! B$ d' w6 q# P8 M; _3 P pop ebx
i; v4 j4 B3 }: V- `) m( M pop esi
3 H$ i* d: a0 H* f) D retn
# E% X* R3 h+ d; v0 ~3 w9 U, G, ` }) b2 X5 N g6 ~6 }: Y6 I
}
/ s% _, X/ s9 |void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])% \8 I3 F$ a* E0 w
{7 t3 q% _4 V1 r# `0 r3 T, W3 R! l
*nXpos = getXInvCloseFixBtn();7 n5 H, Y- h) l4 G4 C* K
*nYpos = getYInvCloseFixBtn();
8 u# f2 `! H' s4 m+ Z}
! _0 N& `5 ~$ [" f$ O+ Z- j__declspec(naked) void caller_closeimg()
9 O" z: x9 }0 |{
1 ~# G& u: e: | __asm5 Y4 O9 l; [9 J& J% V0 O1 @% T
{
9 c! b3 F1 U3 L4 f) [9 S PUSHAD. {6 p! e+ Y! N- A: F: C
lea eax, dword ptr ss : [esp + 0x38]
! h' F9 a8 P$ p1 D9 v push eax
" G3 D5 l* [2 N push dword ptr ss : [esp + 0x38]% Y) l8 |7 D* N' N- h
push dword ptr ss : [esp + 0x38]+ H% e: \& W' I
lea eax, dword ptr ss : [esp + 0x38]
' h* y: z" \: @) \. u push eax. ~- \ s' i3 W# G2 k1 k4 M$ `1 W/ f
lea eax, dword ptr ss : [esp + 0x38]
6 J- Z, W: Q& n9 e5 B7 e& A push eax& x) q, `! y4 n2 ]5 G0 |5 G
push dword ptr ss : [esp + 0x38]
W) l9 v e, V% q call m_NewStatShow_closeimg1 c" c/ L+ q* B" y5 U4 d
POPAD* C% q3 g9 ~, n4 L. m
JMP D2Gfx::D2DrawImage1 F* K% w; s& D! H5 \$ X2 s3 B* U
}
: j$ _/ @/ ^. s3 a4 A) c}
8 o* F7 c0 R" d# ^. h9 D, c+ Y7 S9 Y
% I- X3 ~2 S! h# E1 U, z
|
|