|
|
转载; U- m! t. l1 H# k/ g4 N
BY SJ
* I2 h+ z9 w8 G( G% |' Q首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)- E/ }- J* B# r* V% O( w3 A
3 u/ [$ ?+ O" {/ e6 o2 GD2Gfx::D2DrawImage-10041
5 s$ j8 m1 N4 t; |7 r" h2 `& }4 N6 A9 Y, E1、修复技能的背景(不需要可以不要)* [* M& @9 d# q% A4 |! B5 B
offset = D2Client::GetAddress(0x77AA8);
) \; G0 {/ k3 SMemory::SetCursor(offset);
- K d5 o) K( M4 B1 A, v& l" T* iMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
6 P# |! r3 j8 W: h0 K" z7 |7 b; V5 l! Q3 g
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
+ ]6 N# `4 G9 x# Z0 A( Q3 C{
. }, |9 Q$ r1 g1 L //Init data for print image6 o9 h. f$ V" F* [0 v4 B
sDrawImageInfo data;
6 a8 S7 ~. M, K! X, B- m) d+ d ZeroMemory(&data, sizeof(data));
& d- h, y/ ? F2 r
. ~" t- [0 h) N, h/ X" S //print background
8 O5 k' `% X# ~ setImage(&data, spellBackgroundImages);; `; U. C M8 X, _
setFrame(&data, 0); Q; W; V4 I. i* p: l1 C" J
int fixx = 511;6 A+ ^! {& h2 c& H4 j
int fixy = 9;# q# ~4 H: ?6 A) ?3 e; Z9 a
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);" E4 m, _! P/ r% [ j" y* C3 C
setFrame(&data, 1);
p ]& i2 V% V1 ]9 r" D/ ^; i* Q D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
$ ?* E6 K/ {% h setFrame(&data, 2);
% }5 ]& a1 b+ G3 d0 p, ~6 N D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
# R4 ] E" b0 H6 }3 p4 k0 o setFrame(&data, 3);; w1 z3 |/ v& f7 C! v( h2 c# Y
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0); ^% |6 ^5 {8 f- e4 K& ^1 F
}3 a3 K5 V, F( z' ~" L/ z& e: S
__declspec(naked) void caller_SpellBackGroundFix()
7 s- }7 }" ~4 L* s3 f1 i0 P{8 [# h) g! b+ ]2 z6 f
__asm' L4 u( x1 X4 _4 w
{
3 [; H4 t$ O% ~. @4 c# d PUSHAD
& F6 k+ F, }7 X& \ lea eax, dword ptr ss : [esp + 0x38]
) d! _0 L6 L. f push eax6 c+ x8 {* n2 H3 j6 y
push dword ptr ss : [esp + 0x38]
X E7 D6 W y: S2 _ push dword ptr ss : [esp + 0x38]
( Q' v8 b5 {/ z3 L+ `! R lea eax, dword ptr ss : [esp + 0x38]; ^5 E- @0 k, I+ e3 g6 r4 V
push eax
- A! W: p ^% w0 J: J4 n6 ~ lea eax, dword ptr ss : [esp + 0x38]7 X8 c, |' b9 s
push eax
5 \+ A. R0 I# v- V. N push dword ptr ss : [esp + 0x38]
. v- S3 ], H; M/ O/ l2 e call m_NewStatShow_SpellBackGroundFix1 D3 Z2 N6 R- E/ e) f' A' t8 ~
POPAD3 s8 N: [. E% N# c+ {) ~# y
JMP D2Gfx::D2DrawImage
9 d1 N1 U. x: M; @% w+ _ }% F. F" e# y" n# W; e
}
& |1 E, R6 H( R* b# [ n
2 O- h: j. x6 u' S( Z% F1 ]2、我们如法炮制小站的背景
. p) c! K% s; d( |- L! h' L$ a2 n8 s, `, U' O) U
offset = D2Client::GetAddress(0xAB010);) D/ a" k, r" _- ~# V
Memory::SetCursor(offset);
: j% F8 X3 s# {1 n+ H) C$ d( ^Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
7 C; _. M% ]: m; H \5 m" f: d |; s+ @1 E2 R. p
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
' K# E/ T/ D- g5 {8 |{5 E6 f _& k+ H6 `" F8 x
//Init data for print image# n2 D1 n: O" @9 L
sDrawImageInfo data;
( p1 C( C; {4 f ZeroMemory(&data, sizeof(data));
: h9 U$ |' Z0 t2 j0 h. B3 C# W- }* d: o+ W( P- e- [; t8 t
//print background7 G8 W7 ]' @4 E' t Y
setImage(&data, waypointBackgroundImages);
6 f* _+ T9 ]1 S" M' c setFrame(&data, 0);9 _6 j0 @" U8 B4 `
int fixx = 0;
* R I* F( G" [( D2 X4 P: A int fixy = 9;8 | k+ i G6 W# K; ~
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
. q- r7 M; s* y! Q; f setFrame(&data, 1);
% J9 J; X; b7 ~$ ~1 n3 c D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256" `; L4 R; o2 Y( Q
setFrame(&data, 2);
: Q$ e5 e3 d+ | D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4322 @9 A; N1 @; q' k
setFrame(&data, 3);
6 ~1 @- ^+ h7 d+ t2 b5 X' \# | D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
. E' p U9 f1 C6 B/ e; U/ b& s6 O; e/ {# m3 k" m0 o/ ~; |
}
5 Y6 i. L1 X2 g7 a. w__declspec(naked) void caller_WayPointBackGroundFix()
1 W4 s7 d3 K/ _$ t- q2 `{4 `! h5 Y) V2 y/ y( p6 A; Q( X
__asm
, n' k$ F" r# V9 C/ U7 U {
: D6 R8 _" s6 ^* F PUSHAD( k: U3 l/ h: A% i) r$ K
lea eax, dword ptr ss : [esp + 0x38]0 k, i# ] f$ |$ C/ r0 X9 c
push eax
% n5 C# R6 S, ^0 Y1 w) G* F' Y push dword ptr ss : [esp + 0x38]
0 c: w' @$ a6 P8 X i push dword ptr ss : [esp + 0x38]
& u# _; c- Q: P5 X) y) a" q lea eax, dword ptr ss : [esp + 0x38]
* O5 N: v- l# s7 { push eax
; [2 N& ]' w* ?, f lea eax, dword ptr ss : [esp + 0x38]
0 {* D A" A5 a. C6 @0 r: _ push eax6 b$ ]2 y3 m; Y& W* e
push dword ptr ss : [esp + 0x38]
3 r2 t& [2 v6 w3 n- I- V call m_NewStatShow_WayPointBackGroundFix
/ A! ]1 T, p5 E n* K3 m4 \+ X: B POPAD9 [+ U* G H J7 P# ?. j" d
JMP D2Gfx::D2DrawImage
* A- z2 E/ s: t; r }: L* c; _1 x& ?
} ~6 q6 A- \6 D+ k# W7 S
# w9 k4 {' p4 ?. u& U( R1 @1 Q3、以下可以搞16*16超级箱子-腾出我们需要的边缘- V* d6 F8 G( H8 L9 o0 K
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
/ d& H# K8 Q9 d" I9 R) w2 L& C {
9 s0 D* J* }+ ?4 ] class D2MultiRes : public Library<D2MultiRes>
( e7 e5 o7 E" ?: z, g7 s- Z { O: v$ J/ ^3 I& b$ S4 W: ~
public:
2 G, q* R( H; T3 m; S) p1 p. U static void Init()1 E+ Y- m' w0 K' Z
{
# x2 N! l; A0 u. ~+ d* x Name = "D2MultiRes.dll";
4 \ @% Q; G- n. ~ ` Offset = LoadDiabloLibrary();
/ o/ h- X1 k. f }
3 |1 x( l; p$ o3 b };
& O& _0 E$ {- F7 m2 T D2MultiRes::Init();
/ _! B! p3 M2 m D2MultiRes::HookLibrary();1 [6 d8 ]% c. q
. j, t: T7 p) g
1 ?- t3 _; A9 g/ v MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);% L% J8 j6 [* K! |7 y6 k% u& K
Memory::SetCursor(MiscFunctionsOffset);
+ Q( l4 |; @/ N# a7 H$ a) r9 r8 S D Memory::ChangeDword(0x1b0, 0x200);
M3 ?/ ?! ?; K7 q( ]& `1 _2 F) O0 J+ Y
6 f$ J- G+ X/ O# Y* v MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);! F9 z& N8 N8 D
Memory::SetCursor(MiscFunctionsOffset);, I2 }8 |* g+ j0 ~5 Q7 l8 Z
Memory::ChangeDword(0x140, 0x200);
1 u- M0 k4 f$ J+ x4 e- M
0 T) `- t3 m9 F% Y+ u- g
- Y8 ]7 U4 Y4 x2 C MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
& ]9 n; y5 g. B, x3 A Memory::SetCursor(MiscFunctionsOffset);3 G: \% p9 t0 h
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块+ `- G& c+ ^# Z( A1 V/ R
; G6 x1 B, C+ c% o7 I0 { MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
2 V6 P. |5 P6 R2 q5 | Memory::SetCursor(MiscFunctionsOffset);( o+ G( Z1 _7 y2 z1 ^
Memory::ChangeDword(0x200,0x299);//下边缘 299最大- j/ D& }& ?2 I8 r5 X* v$ w
% c: U% _5 ^3 O% w! c- H MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301); _* k1 X) V+ h9 a- Y5 O8 s
Memory::SetCursor(MiscFunctionsOffset);3 }! E/ w4 r( W @6 t9 @
Memory::ChangeDword(-0x280, -0x400);//这个不要动
( _* L! O0 U* m! L' M2 @4 H }
8 d* J* V$ n' x9 d! }( ~" }: U/ E/ j; o. u) P- [
4、快完成了,是不是发现金币啥的位置不对??" m& t# ?0 {" T# p$ b3 g: u
2 y' a0 V' @) x7 L; ~//这里修正我们的装备栏6 {# x8 g+ R0 G8 t9 z6 \5 M
offset = D2Client::GetAddress(0x99B6C);
- A4 n" N, |' w3 m+ [ Memory::SetCursor(offset);
( O( g" _, a/ Z% c5 z/ t Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
& Y/ r! c2 o/ F) _" d8 i6 G' d, P+ g5 [+ O& ?& O5 ^
offset = D2Client::GetAddress(0x99BA7);
D2 |; b. a6 |, J, ]! S Memory::SetCursor(offset);
1 b- ?5 ~ _# q' W$ }5 e- s: d Z. U8 W Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
3 `/ M, ^- t0 x) l9 _! E( v6 O. L/ x t: s6 p, }
offset = D2Client::GetAddress(0x99BE2);
+ U! K2 w( P3 Z0 u Memory::SetCursor(offset);
% ]6 ]* T7 R/ P4 e( L" V Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);/ t9 ?+ j1 ^* s7 A" @
9 P2 A* [- u# o# r
offset = D2Client::GetAddress(0x99C1C);
. K. n" l/ |2 c8 R% B9 w' e Memory::SetCursor(offset);
J& W3 O! k- j Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);* s. `4 z; j4 L# M9 M9 E- d% w
. z3 A5 \) D, _! B1 s' x% Z //取消两个popup,偷偷懒不过分/ @# ?- O1 [2 ^+ b# K6 G6 a) y2 N
offset = D2Client::GetAddress(0x9386d);
, S0 h6 ]4 h; F& l3 F9 c: E) q: b Memory::SetCursor(offset);6 g) L( W0 k! k$ R) \
Memory::ChangeByte(0x8b, 0x33);4 z0 y% ~: C m1 D ] ^
Memory::ChangeByte(0xc8, 0xC9);
3 D3 ~( o( D" O2 [1 o! o }. G! \& Q offset = D2Client::GetAddress(0x9390b);5 Z# j: ~) y6 r
Memory::SetCursor(offset);
/ }1 C8 t; g# F4 [& O9 ]3 _ Memory::ChangeByte(0x8b, 0x33);: L4 h% w1 m% m/ Y7 U
Memory::ChangeByte(0xc8, 0xC9);
9 Y$ A( r. e0 G
) V1 j/ z6 h9 s/ v4 n //修正提取金币
0 f0 H/ I( G5 y6 p offset = D2Client::GetAddress(0x8D3E5);
0 w4 E/ W' Y, m3 H' x: t" v Memory::SetCursor(offset);
7 W5 X% X& N9 i, m Memory::ChangeByte(0xA1, 0xE9);$ K+ A! q& ~' ?: F9 u. [
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);; u4 V9 Z1 C6 J& J8 R
- z9 }' t f% s" ]$ j offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
& P5 `( [# z: Y @/ y( d* l+ ~5 { Memory::SetCursor(offset);
% L' q' x: r, ? Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
) \' b1 f/ P* Z9 p- }# H, h1 Z7 U$ S1 ~! }+ c- d
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);6 E8 U: D6 \, F) H5 N3 b% K4 ~1 C! i4 I
Memory::SetCursor(offset);/ K! r$ ` N6 z3 H3 |
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext); A4 n+ d: N$ C! s2 g1 }2 |5 w1 K) q
# T4 m& [' ?; M a //修正关闭按钮; p, v# S3 R9 D1 o, A+ w% J
offset = D2Client::GetAddress(0x8BD90);
, @ i* P. _. l. y Memory::SetCursor(offset);6 m( ~, K! |6 I0 R; c5 z
Memory::ChangeByte(0xA1, 0xE9);
0 e0 \: S; }' x1 |7 K# ` Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);. _% R/ M* B4 v% I5 G& d; c- U8 a% O
# ~& N! G; w) k
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
: I4 u& e) P+ { Memory::SetCursor(offset);
( u0 t1 H. N$ A- ]! B Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
E. ?) H0 L @4 X/ y
; }2 @" U( K) z* `
, T) |4 c, R# ~- {) L: t//以下是细节8 v! z2 V. R( q4 S6 R
#define getXGoldCoinFixBtn() RX(0x2d0)
t" I* n0 p* \6 z( t9 @#define getLGoldCoinFixBtn() 32
& H) K5 |" g+ M( `% h#define getYGoldCoinFixBtn() RY(-0x59)
. A# W- g& h# W$ [#define getHGoldCoinFixBtn() 32
4 H$ ~% }$ I1 O* d6 O' y#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
" q+ k& z+ S! j9 S
, M: o( v$ P- G( E' K* G#define getXInvCloseFixBtn() RX(0x3db)( Z3 M& o% V# K+ ^" f, N( O
#define getLInvCloseFixBtn() 32
* K5 @. w4 S3 {! ~#define getYInvCloseFixBtn() RY(-0x63). m( Q5 d% Z: z' E7 @% l
#define getHInvCloseFixBtn() 32/ \/ ~- ]1 ~8 `9 i a Z% ]
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())9 ~0 \. Y. M* J1 l: c
5 n3 t5 K+ Z. j$ x
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)) ^" P' \7 P. p m- y
{
# l9 l1 Y1 Y. k. S$ n- l5 u DWORD mx = *D2Client::ptMouseX;
* l9 H: y5 |4 b* G' v DWORD my = *D2Client::ptMouseY;
# v8 v. k: P5 l: `) F if(isOnGoldCoinFixBtn(mx, my))
$ _0 i6 e% G; i; J* x) I" M/ b return TRUE;
{2 i4 N# ~8 F$ g) n ~ return FALSE;% |0 c' p! t1 V$ I
}* K, R. L8 x. T3 y6 v0 `
__declspec(naked) void caller_goldcoin()- y3 l L* ]0 e6 ~
{
$ R4 h3 b- `- c- x5 S __asm4 T( ?7 ]8 V' t" M/ C( |
{, K- C; B1 f- F% W
push ebx
7 s" L/ A- J+ `, t mov ecx, esi
* |' J( i) T, v, s0 ~* g4 U mov edx, edi
) i4 w) r- Z. z call m_NewStatShow_goldcoin
6 u; ], y, T7 _. s7 S2 H pop ebx* q F, x. i+ f4 l) ^
pop esi1 x, s& G2 p8 ~! Q7 V W
retn! M) w+ k( `4 Q' K2 m' l. h+ J+ r
}
2 O- n. c2 {: h( C}7 m! M, V- H5 p2 { N# t6 p. L
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])' s8 ]" P* a" }1 p
{
. y- s8 i# T2 B% D* k. c7 C if (*nXpos > D2Client::ptScreenSize->x / 2)
# f$ u# @/ B# b* P* U {
! A! S/ S0 M' {9 K. E4 z& U" Q *nXpos = getXGoldCoinFixBtn();
8 k' V% T. m+ ~' w *nYpos = getYGoldCoinFixBtn();5 w) I* x. Y9 n4 M" r
}: O. T& `- m! A2 ^! l7 ?% x
} L ~+ G" f% [0 l0 J$ b
__declspec(naked) void caller_goldcoinimg()
$ x1 {/ R# ] ^. {: [{
, p# O7 ?- D+ Q8 I' n6 t __asm
& i; n' @, z; r0 f* D3 Z* ] {
- y% h; U! |* n |& @& T0 o PUSHAD( d- U9 H% ~0 p! \9 V* }- L O
lea eax, dword ptr ss : [esp + 0x38]! ^0 b Q8 c( y* S$ B
push eax4 N6 i) L1 P/ ^7 f) \
push dword ptr ss : [esp + 0x38]
& v1 u6 X6 H' a9 H push dword ptr ss : [esp + 0x38]
) j# y7 ~2 O* r: [- g! {& F$ N lea eax, dword ptr ss : [esp + 0x38]# Z& R* e- i* u# r7 L' }0 o
push eax
/ Z# b0 o/ c3 T$ M0 K8 ^ lea eax, dword ptr ss : [esp + 0x38]; I9 k! `1 \9 i, ~0 v( }
push eax2 s% u' |: S' Q/ E. i5 U
push dword ptr ss : [esp + 0x38]
9 u8 A* s% T* o7 V* w call m_NewStatShow_goldcoinimg
1 ]* k9 W; u2 N3 G' D2 O5 Q POPAD: S. c! b3 V" v: N5 r
JMP D2Gfx::D2DrawImage
8 \" [# F8 P. D! I4 A7 Y( l }
% A) l0 m, m" C/ B6 @& X+ \}7 I# q! A( {, V& A! k" {
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
# m8 a; H @6 @6 Z, R$ v{, q& G0 p( [: g, m% \6 F
if (x > D2Client::ptScreenSize->x / 2)& g5 ~3 ^: Z1 a; [
{
+ Q7 I3 N \, i: |0 K *y = getYGoldCoinFixBtn();
. e3 ~& t" Z$ ]7 e: { i- s0 e return getXGoldCoinFixBtn() + 32;/ F( p$ A& e @+ h- z. x
}- J7 _6 I" R% [
return x;
3 C& g+ O; C$ K& T2 M}2 y/ y* o3 B+ R; d: m- ?" Z
__declspec(naked) void caller_goldcointext()) h: ]/ E4 k* }
{. x% ^" V) [* ^, }
__asm" W; f6 M7 \) r! z, M; E b2 b
{
/ Q: f6 F5 E d7 V PUSH ECX2 [- T5 c# R: P, Y1 o
PUSH EDI- X; d9 s3 g8 V
PUSH ESI
5 V4 u" l8 Q, b+ k V c PUSH EAX8 e. H1 d- d: D# `
MOV ECX, EDX. _& ] M3 G+ |2 W
LEA EDX,[ESP+0X4+0X10]2 | X- A3 w/ V5 E" _5 g: p8 }
CALL m_NewStatShow_goldcointext
$ r. }" [6 r( O3 O2 ?* l4 f MOV EDX,EAX
U* l4 J4 D- t& {; R; _" w POP EAX* y2 z d8 T0 [8 G- M* u9 g) s
POP ESI
0 z! T$ k+ u$ g8 F" z; v' G) V POP EDI
' P; s: [1 C4 \4 G% ?; f POP ECX
6 Y$ ]' a0 c; ~$ Q- c jmp D2Win::D2PrintString;
& J/ T# [- R& R+ K+ x }0 v2 T9 P$ F3 A! X% [
}
% x( D, u" u% ^ `' y
1 f- {# g6 I% }( \. a/ \BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
! ?; H/ {8 M3 \{$ I) B( f+ X, ^6 }& w0 }0 H
DWORD mx = *D2Client::ptMouseX;
) |! R+ V+ u+ H DWORD my = *D2Client::ptMouseY;
4 y% {; q4 L4 U1 N9 X8 t if (isOnInvCloseFixBtn(mx, my))( p ^) x- S! o% Q. K
return TRUE;1 v4 Y( K; ] n
return FALSE;
7 D+ b$ M' w w; o}
6 p4 v* |, I, j__declspec(naked) void caller_close()
9 ~ ^4 A( P) o{
, @- S& Y. q0 E. t __asm
9 g0 h: I: a) Y) e8 E {
- [4 f+ A. B" R. u7 j$ k e% ] PUSH ESI- x2 ?2 D' X/ P5 }. V5 B# ~" o
push ebx
: _* x, k4 z7 x0 i8 e call m_NewStatShow_close
- r+ H; i5 N' K" E$ y; } pop ebx2 i1 }/ }3 k' x9 C: R* O
pop esi! l/ U& |# P! M
retn
, E5 _+ `3 i2 b" b! r0 \2 p- p2 F5 Y Y }
& F% [: |- Z# g' x# f- s5 N}) Z, k/ J; F7 O7 w( h6 a' \, W
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
; n' w/ ~6 b* c, t6 ~# i# F/ M{# Y, x( X$ v) A9 ?2 Z( Z/ K, ]
*nXpos = getXInvCloseFixBtn();
4 J: h* C* Z, {* ~" S: t *nYpos = getYInvCloseFixBtn();
' \. ^, ~( y: ~: L& j}
7 Z, w2 I( n( c/ }. p8 Y6 z__declspec(naked) void caller_closeimg()
$ K% X x5 s( h6 R5 i{
5 X3 `. `; R; F- { __asm7 A( j) y. g' _8 B
{$ g8 W7 Y0 }6 a! W8 s
PUSHAD
4 B4 [, }- m, Y) s5 j1 | lea eax, dword ptr ss : [esp + 0x38]1 c' c, N- Z/ a: Z, b
push eax6 j! Q* v5 w) I9 S
push dword ptr ss : [esp + 0x38]
3 e: w1 b h9 ^. n4 W; H push dword ptr ss : [esp + 0x38]
) J2 w& B9 D- d( k. f+ x lea eax, dword ptr ss : [esp + 0x38]
3 U' R! A- \7 A0 J& ?' x- c push eax
$ l1 S6 Y u$ Z lea eax, dword ptr ss : [esp + 0x38]8 ~) @9 R. q+ d3 a
push eax
' K/ _# m9 M! |% O( I% @ U push dword ptr ss : [esp + 0x38]
( X3 m2 J6 w# N, S% l/ I2 C call m_NewStatShow_closeimg# O* t9 Y. ~0 u5 P# _/ s
POPAD" ]1 b4 C) W; e; [. n
JMP D2Gfx::D2DrawImage
/ n: f7 a/ s" F/ u }1 Q8 u, n" G, q8 O1 r7 \
}2 m, Y3 l4 N+ V; c5 x; x$ m
% K2 N4 p0 W/ c' L' M" |0 _" L* K
* l7 N9 s. F7 V' L: [1 ], i6 a
|
|