|
|
转载
9 ]. Q) G Z; W$ V( S: kBY SJ$ ~* n1 U' x* X- V6 s! I9 j
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
% ]1 U$ \- x1 V" f" ~- }+ D; p4 m9 b3 e6 U/ ]
D2Gfx::D2DrawImage-100414 b' f! O# [! A7 ~0 Y
1、修复技能的背景(不需要可以不要)
/ S$ x1 P4 ^' _7 {: m( [3 J8 {offset = D2Client::GetAddress(0x77AA8);6 D2 b" O7 T+ a
Memory::SetCursor(offset);
6 H# {% A& ]: Y6 A" u8 l) w0 W" d* n5 |Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
: ?& @5 N: _6 }0 l- w2 _' F5 v
+ U# G; w0 \& L, [void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
, V/ p; q1 I* }7 E7 e7 _5 }{
8 J% a$ K! ^! u //Init data for print image
$ L$ J! B( | B, G: v sDrawImageInfo data;' \* h7 ~2 c$ o
ZeroMemory(&data, sizeof(data));: G0 r7 n3 |5 `( m2 c
, Q9 z0 C- H% r7 N, J //print background& J: _! ?5 h) X
setImage(&data, spellBackgroundImages);
6 l) A- n4 B& i setFrame(&data, 0);
! M. S9 q4 g2 u# j$ v8 G# @3 V int fixx = 511;2 ^& r# V6 h: x* a/ D
int fixy = 9;
( n5 j$ n6 e2 l3 W D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);/ S) M) U# P0 ]/ \
setFrame(&data, 1);- `; T$ ^, m( c9 v9 c7 t
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2566 ^+ Y6 S$ A: g7 ?+ g7 ]
setFrame(&data, 2);
+ R F. o" H0 z4 v D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
! ^* F1 ]6 x/ H6 f: t2 J- E setFrame(&data, 3);
D1 ~* D. G) _1 z' U& u D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
; x7 U# u9 [7 Z) v}. ~# k: R" r" R T0 W+ z" d8 i7 [
__declspec(naked) void caller_SpellBackGroundFix()
1 q$ E; N# I% e! Y+ h{
% w6 q, Q7 H3 h. R9 _ __asm+ P, `2 N' C# @/ C2 z
{0 e- D* k2 O4 B4 O
PUSHAD/ f) ?& B; z3 N A( K3 u
lea eax, dword ptr ss : [esp + 0x38]: ~+ w7 |+ N- A- S
push eax$ p, t2 o& u0 b
push dword ptr ss : [esp + 0x38]
5 H! V6 u+ Y0 I% [ push dword ptr ss : [esp + 0x38]5 u5 L% @% Z' L5 c
lea eax, dword ptr ss : [esp + 0x38]
# ?: j& ~( q0 K' G& m1 j) G push eax. u' {+ R4 d7 Z* _' p. J
lea eax, dword ptr ss : [esp + 0x38]! j0 S' ~. j( N2 I
push eax: {: ]+ z- s* h) X- y% ^* [
push dword ptr ss : [esp + 0x38]
3 C& a1 e; L7 G, R! p- y1 ?" @ call m_NewStatShow_SpellBackGroundFix
+ ]; c$ ~9 q7 z% Y POPAD
! k* z+ W5 [: [5 x& q7 P JMP D2Gfx::D2DrawImage
e. E8 w2 P2 {$ I& J. O0 [ x }0 E$ _9 k% U' x5 i& k& f `
}
3 Q) k- i% e5 J( G# w+ f: k9 w' ^3 Z9 i* V) o+ A; `
2、我们如法炮制小站的背景
2 I$ }$ G. M1 W: [6 ?' m% D- \% @; ]
offset = D2Client::GetAddress(0xAB010);
( _. p3 P7 e* x/ NMemory::SetCursor(offset);
! @& E1 k4 g# O B# ^/ Q, M' `Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);( M6 q; x; c& j
& {; G* H* j2 v: t# q L; U
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
5 C+ g6 E! y( x% [) I$ I{: S" ]) G* ?' D# l h
//Init data for print image6 P, M: @/ Q1 P+ D8 ?
sDrawImageInfo data;+ ?' Z* Z8 T: ^# `2 {$ d* }* @/ ]
ZeroMemory(&data, sizeof(data));2 ^, A3 L& T6 K
* H) z" }, M) O$ V5 m3 c //print background
5 z9 B8 u& j8 C4 D setImage(&data, waypointBackgroundImages);0 l* S5 Q' M `9 }! F
setFrame(&data, 0);( ~' ~! l' B* [% g9 g
int fixx = 0;) q/ J3 J4 z4 n! |; E$ X
int fixy = 9;5 C6 U8 D c" _! L- f) ?
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);, x$ |7 w A0 P" ]. C
setFrame(&data, 1);
8 z; N5 t, Q. J6 W, ` D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
/ U1 U1 H4 f6 G' A! R* S. U+ ] setFrame(&data, 2);4 G( B/ I) A) x2 z4 A9 C
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432# x& m4 e5 ^3 [
setFrame(&data, 3);
& d3 b) d M) f. k) ~# i- |' c* g D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
, M+ h& q- \1 ^& M5 G9 Y1 f% F
% Y3 ]4 [: a' J5 r1 H$ ? C}3 S9 J5 d5 I* z q, o
__declspec(naked) void caller_WayPointBackGroundFix()( _& k$ z& }# d# g# F7 B& e" S
{
1 d6 x. Z7 W, b __asm
8 @' N; n7 \# t( Y1 f3 N {' p! H! J& _1 V7 n* N/ x
PUSHAD
# [, u/ H6 n% H: ~ lea eax, dword ptr ss : [esp + 0x38]
% \9 e' W" j$ ^0 [; B" h push eax
0 c: ~: C. g5 E5 n% u# } push dword ptr ss : [esp + 0x38]
1 B0 k; v2 b, P$ l) I4 ^& _ push dword ptr ss : [esp + 0x38]
2 v# e5 \9 ?8 t* M) k" j$ P% H2 I lea eax, dword ptr ss : [esp + 0x38]
; P4 g0 f, t" s: ]7 j push eax
1 J. Z: t" O/ ] a lea eax, dword ptr ss : [esp + 0x38]( g, V2 o9 S$ j; ~
push eax
4 c" q2 ?( o# \% W push dword ptr ss : [esp + 0x38]
# S! C% \9 }$ u5 `& H ~/ P. m, F call m_NewStatShow_WayPointBackGroundFix' g! ]1 G+ K: y+ `
POPAD; X/ B& ^8 B$ A6 f' g
JMP D2Gfx::D2DrawImage
: K! U4 n }( T1 Q: { }7 o: o* R/ z# i+ f
}1 `, m9 T% K: l: _% o, O# s
7 X$ J6 i2 F* d2 S5 g* r3 j4 i( }3、以下可以搞16*16超级箱子-腾出我们需要的边缘
" T* I0 S K# D; U) J1 n: L腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)6 n% F% L: d1 ~. V
{6 E x4 [0 F: q0 p! D
class D2MultiRes : public Library<D2MultiRes>! E, u# f$ E- w8 w" V5 B
{2 P+ W$ _" }2 N7 ]: T3 X) z: y
public:4 I4 K; S7 z- b/ c
static void Init()" v6 V! C) \* s( F( e
{
b3 V4 {$ P6 N Name = "D2MultiRes.dll";; f/ {8 P+ p% d: s9 I. D9 c G8 h6 I, K; G
Offset = LoadDiabloLibrary();
( A: w, n/ Q* `; ^5 ~; a. n }
/ B1 T/ H' J& M( r9 m( c };
7 ^0 x" @9 B* Y! q( Z6 s# r D2MultiRes::Init();
. z- y' G% q/ X3 L7 M D2MultiRes::HookLibrary();
: m$ R! X# t0 E) X, [( L; \% v$ t4 \) |3 \
& ?+ ?( b8 y" O0 a MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);$ u& L! X( I0 B& `
Memory::SetCursor(MiscFunctionsOffset);& r% k- F Z0 J
Memory::ChangeDword(0x1b0, 0x200);
3 U( w; u+ b, \ ]- w3 g0 {+ m3 b
0 u! k& H, {4 k7 ]
0 H" \: q$ f0 a: C) N MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);- A1 s1 W# z2 q
Memory::SetCursor(MiscFunctionsOffset);) i# b ]2 O$ V; f+ v: b( Q
Memory::ChangeDword(0x140, 0x200);
) d8 A& [' o7 U' y! {3 N% X3 {6 r% X' C) z4 `. y5 N1 Y! B
, D9 R+ z m- q0 Z! S MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
4 _1 _% D* ]$ b3 U0 u& B Memory::SetCursor(MiscFunctionsOffset);
% y. \) e* j9 h Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
0 J) F) k' ?& d$ o c" t- K' E5 w5 e) O' J- t+ ]* m7 H
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);6 z2 j' ]; c; y3 M* z
Memory::SetCursor(MiscFunctionsOffset);! Q5 Y: U' I; L f
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
& z& w( V4 [& W- R4 E! X8 P" }* w, o! f; L
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);2 q# S/ D" C! Z
Memory::SetCursor(MiscFunctionsOffset);& }: x, X, J. ^- k2 _
Memory::ChangeDword(-0x280, -0x400);//这个不要动
, \- E$ A' I5 p }3 {! e1 Z! p- I2 m) B' O
) t0 @( h3 [0 M% {
4、快完成了,是不是发现金币啥的位置不对??+ ?* `& |8 y# n8 k- U" s# R$ z
5 s% f' u t$ }0 n//这里修正我们的装备栏
' J1 A* V& c' f/ v; m. A. D- S offset = D2Client::GetAddress(0x99B6C);
! i9 A6 Q; Z ]7 K Memory::SetCursor(offset);, o. h3 Q' h. t
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
. O( C1 x2 |$ a }( n. k* M* C" S! j ?+ H* J9 I3 o8 {' r8 A8 p
offset = D2Client::GetAddress(0x99BA7);# i+ ~1 N; D" h0 l, u3 b& E( j( ^
Memory::SetCursor(offset);
1 @1 q6 s R. o Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);2 e: i0 h" Z3 L. d1 {/ Y9 D
! U+ G; W* N2 H( Q offset = D2Client::GetAddress(0x99BE2);8 Z! D" N2 I' I/ Z7 g' V! r
Memory::SetCursor(offset);
9 E: i, L) E2 L% n, e; R& o4 [9 K Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
. K, M' G. H* g: B' R( w6 w$ I+ ^1 Y
offset = D2Client::GetAddress(0x99C1C);
1 M* U) ^# A( j# K$ s+ ~ Memory::SetCursor(offset);. l% l" w8 V3 _
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix); @6 e; d6 I. W: P
6 g# S$ b3 J- E. R% f: h; ^0 Z
//取消两个popup,偷偷懒不过分
0 X4 c4 g# W+ d3 _* ~ offset = D2Client::GetAddress(0x9386d);
v! U8 {% h! l& n! t Memory::SetCursor(offset);
/ o g, M! B; o. g- j0 I/ _! ~ Memory::ChangeByte(0x8b, 0x33);
2 D$ ~/ I6 v0 Q+ I8 I Memory::ChangeByte(0xc8, 0xC9);
) i7 B- f+ b" | offset = D2Client::GetAddress(0x9390b);/ w# y+ Y1 P" E9 ~9 r- x& w
Memory::SetCursor(offset);
. ^# z: _5 h8 |6 C, b0 R- M, Y Memory::ChangeByte(0x8b, 0x33);- Q, R% ]7 L" e+ Q2 A: ]
Memory::ChangeByte(0xc8, 0xC9);' i1 T/ }+ ~! ^! S# m, | C) r
& r2 X! R7 I8 K //修正提取金币
. }; c I! S8 x# U7 W offset = D2Client::GetAddress(0x8D3E5);- P0 g1 V/ I. g* T' P
Memory::SetCursor(offset);
e) f6 F w$ M( R Memory::ChangeByte(0xA1, 0xE9);
$ _# O6 w. ]3 `0 l Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);5 w" T% i- A$ h& w: ^4 {" |! E
X. C2 s ]5 K2 k+ J _$ b
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);. u- j# v2 E$ h( {. W5 c
Memory::SetCursor(offset);
6 `( H; o( D% p1 x0 l Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);( }7 f% I1 D6 c: U) @
1 g1 d. E. Q6 U$ ]/ D; g
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
3 @3 I! T- P) [: Y2 w H7 x/ [ Memory::SetCursor(offset);
- n. c0 q) s$ v' x1 `; Q' P Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);0 o; l# ?1 a$ c, \ E
/ k! r+ V0 d+ | //修正关闭按钮
0 H! x; a- [- A1 M& ` offset = D2Client::GetAddress(0x8BD90);/ h! |' m: Z$ _/ [8 Q& u
Memory::SetCursor(offset);) v3 Q4 {( h* L. A s( w
Memory::ChangeByte(0xA1, 0xE9);
: z/ v. c' r1 Y) t7 \- ^, C Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
2 N9 N' O9 J5 ]+ ^$ p' J7 I' _
6 m/ Q1 m) }% P% u2 `$ w ]/ d offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
2 E+ R- p" | Y4 w3 g Memory::SetCursor(offset);" ~: W8 f0 `5 u8 u# z1 D
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
* |" f" I$ C( `; L) n: b2 z
: R, E5 z# B& E7 ~; Q6 L: l' ]
( B0 _& ?8 E, k& f9 l$ w//以下是细节
: C) B! t1 W$ V" {1 J# Y* x! B/ U9 A#define getXGoldCoinFixBtn() RX(0x2d0)
3 G0 L3 d5 H/ N& v, \3 k3 u#define getLGoldCoinFixBtn() 32( @0 `! C! H* u% r
#define getYGoldCoinFixBtn() RY(-0x59)
# G7 R/ S4 q& \6 o# G# v3 A#define getHGoldCoinFixBtn() 32
1 C ?1 o( l- y% |$ z N#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
; s' D. R! t2 z) {9 u- R% t0 H8 M+ d4 q& a4 ^5 M
#define getXInvCloseFixBtn() RX(0x3db)' c* F* z. T0 E' K9 W" }
#define getLInvCloseFixBtn() 328 X' |: b A' r1 e6 y8 d. A6 C
#define getYInvCloseFixBtn() RY(-0x63)8 Y: v) i" ]) M: y- t3 _
#define getHInvCloseFixBtn() 32
: I$ ?, g6 C9 e3 q& U R#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
9 z' e* H. W! z* F/ t) w5 l! M- w0 \
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)5 q" q; i, I4 u* _: g; H
{
- @4 u) n8 W4 i1 { { DWORD mx = *D2Client::ptMouseX;- \0 R& Q, ]0 h8 i. U8 _9 q8 {
DWORD my = *D2Client::ptMouseY;
' ?6 n/ Q8 M0 D0 o0 j if(isOnGoldCoinFixBtn(mx, my))
' V+ x5 ^3 l2 L$ ^3 G return TRUE;
$ d4 y2 o& U3 D3 z return FALSE;8 c- a u/ `0 u% _5 t/ Z! M
}% ?8 p- ^: o2 F) R& m" s
__declspec(naked) void caller_goldcoin()
& @% n* G0 E$ ~+ Z5 T% n{5 G4 [, Y/ H" i- f$ }, { h$ n3 N
__asm& n; ]0 d7 ^3 `1 z! d% z1 W- m( I
{
9 a m/ X- g b' B push ebx
" Q" X# L( D1 ` mov ecx, esi
% U$ Z' O- q0 ^( i: r mov edx, edi
8 I) Q" Z1 k w& S# R call m_NewStatShow_goldcoin7 [2 {4 G6 C7 Q
pop ebx
8 c: W+ X) S7 g+ s; C( l1 K: } pop esi
2 l; p! A9 Z0 M/ F- } C/ |! V retn
% M1 V2 z6 P: r, T Q9 c7 L }
3 l8 ^8 B6 v& m2 f1 i! n7 h2 L}4 P3 U% p8 q R0 i% \
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])( c: \9 Q# Q$ X) z+ ]
{9 S/ }) |$ j o q
if (*nXpos > D2Client::ptScreenSize->x / 2)
. n( d1 I1 `! O {8 x# A3 G1 K, C( e0 ]+ k9 |
*nXpos = getXGoldCoinFixBtn();, D$ ]7 r2 P9 |5 V z
*nYpos = getYGoldCoinFixBtn();1 V" K2 F+ y3 i1 t
}5 l$ X9 Z$ \# p* ~; V/ @
}9 l5 F' y2 E; T {$ F4 ^. A
__declspec(naked) void caller_goldcoinimg()
2 x% p6 t: M/ ?6 Y& Z1 N' t{' \% K: A* I3 ^$ M
__asm8 A; L+ v b0 ^7 c
{! J+ Z( f9 }! E" J
PUSHAD- O/ S# o9 H7 `& B% M2 H
lea eax, dword ptr ss : [esp + 0x38]
: r: c5 M7 y# r2 C) z' } push eax. S5 g" S! P- `) b& J) Y
push dword ptr ss : [esp + 0x38]
! U( V1 c+ Q% D% L! X( l, G2 G6 ] push dword ptr ss : [esp + 0x38]- f# A7 ]1 Q; O
lea eax, dword ptr ss : [esp + 0x38]7 X5 ~/ b& e3 M& `% s
push eax
( f/ c* |: T5 W- I' F* T1 ?4 i5 ]0 ] lea eax, dword ptr ss : [esp + 0x38]
( v5 |7 r! E5 w. k6 r& k; ]' D push eax
5 N1 h+ E3 B3 A push dword ptr ss : [esp + 0x38]
2 T; s3 R2 Q% F+ ~0 C$ v5 f3 c7 I call m_NewStatShow_goldcoinimg
# c) I' V, B$ H/ S; e POPAD
. V, ?' y. i3 s# J; @ JMP D2Gfx::D2DrawImage
. ?9 ^- K" f2 _" b' \4 \3 X) l }9 [, C6 Q" G' ~/ M$ o. _. n# b
}% Y) O6 _& A) Y6 t
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标" L' p0 K: _& w% L7 u+ z7 c& M& }
{
1 Y$ ?8 X; h( Y1 S. P if (x > D2Client::ptScreenSize->x / 2): C) D* }; Q- F; R; [$ ^
{
. m% f9 ~' w( A9 Q* y1 d/ F$ ^ *y = getYGoldCoinFixBtn();0 i' F# N7 V' g
return getXGoldCoinFixBtn() + 32;
) L7 D% |- _5 V }: @/ u) s# m, j1 y
return x;
+ _6 Z% `/ H! @}
+ L0 I5 [/ n4 ^- [, U& ]3 a__declspec(naked) void caller_goldcointext()
. K9 M' s$ V1 g" K( a" X{
/ K/ j1 ]6 H! o4 f. a$ L1 Q( \8 | __asm1 f+ s3 ^+ F2 ~* R% K. A
{& A% }! s+ X$ i' r
PUSH ECX* q3 R3 B& M8 e
PUSH EDI
U, n, y5 ^6 A' O3 d# e; K PUSH ESI
5 J, L, o4 L6 ? PUSH EAX" |, N- T2 P0 i" B: k0 h8 `4 ?* X
MOV ECX, EDX5 n2 y+ D2 H' q7 H
LEA EDX,[ESP+0X4+0X10]
' l+ x/ w- p$ |7 p# C! \, Q CALL m_NewStatShow_goldcointext3 z$ l1 @' e0 ]8 Z/ f' a6 \
MOV EDX,EAX
* a @" J) z% G9 m4 ^5 R POP EAX+ Y# R9 G/ [) i3 x
POP ESI
$ X8 A1 o1 X3 l3 j( F POP EDI
4 `7 c2 R. r# p# ~4 d POP ECX
! q3 ^& [' S0 v4 Q jmp D2Win::D2PrintString;3 v/ |- ]- m5 ^' ~$ N, E3 n
} A$ Z* f) z! w9 @* q$ c A$ R
}
! x7 X+ ]: h! j* Q. I0 D. q h1 E9 ], B2 k0 Y8 J
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)' T2 T3 Y' s. p; Q8 M# S$ R
{6 i2 e" l( W5 j2 U+ J; i
DWORD mx = *D2Client::ptMouseX;
/ {8 Z3 i& c0 ~ S DWORD my = *D2Client::ptMouseY;& Y: b" X Y& t- G" z( m3 ^5 J
if (isOnInvCloseFixBtn(mx, my))
7 C$ \! U; I; L+ c+ R3 ~ return TRUE;4 ^, H" d" U7 C( A7 x; d
return FALSE;
2 ^3 U& z* G3 _+ w; x; r" p/ ] W2 y% L}3 {& q2 Q0 G% T$ V& u
__declspec(naked) void caller_close()
- S) \/ M1 v' E/ ]$ Y" g{7 j' W: ^% Q& L0 q" L4 J' B$ U: _
__asm
3 b& u8 V$ |1 h) i8 u- {0 o {
+ f& _# ]# r2 X) y- S! d PUSH ESI
- W- } `" v, Q O3 ] push ebx
! D" n# m; M# F2 P) ^4 L call m_NewStatShow_close
. c( i" }$ h9 L8 L+ j1 e pop ebx& G# u. _7 ]$ K
pop esi
# c' H/ a2 X8 {9 [9 T retn
; m$ @8 o3 K0 F$ | }; C6 S+ N3 T8 l
}8 F3 b7 c$ a" c/ d( L
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
4 ~* ^) @# \: m8 m0 ^ r2 G6 q& r' W3 \{
3 P3 f! C! a# f7 | *nXpos = getXInvCloseFixBtn();
; l6 n4 U. }" F *nYpos = getYInvCloseFixBtn();7 t. I+ Z% ~( M5 E5 _4 O
}4 I5 g6 L& C; `+ Y' P3 m$ u
__declspec(naked) void caller_closeimg()
. o' {6 p* n" C- L, s6 {{
3 U% Q ~1 c! I- P- W4 s$ w3 W __asm
$ Z8 ~' b% K6 K; X {; I! T/ B% G: K4 r7 R2 S
PUSHAD
' R2 R$ d$ {, ?' K1 I/ G* ^% | lea eax, dword ptr ss : [esp + 0x38]
1 U! {) ]: O. I3 R* H/ \) d push eax# \# i4 |! \ T' }8 y6 a& P
push dword ptr ss : [esp + 0x38]
: y! ~/ f" K: s0 `+ \ push dword ptr ss : [esp + 0x38]+ m/ N/ c$ _6 R& u
lea eax, dword ptr ss : [esp + 0x38]
2 S8 ^2 f! ~! C; i1 F+ h& R push eax' @; S7 s. i0 Y& Z) i* u# d9 f
lea eax, dword ptr ss : [esp + 0x38]3 i2 d l( }% D/ k
push eax' Y- ]1 h' r6 @$ u6 t4 i3 \
push dword ptr ss : [esp + 0x38]% J2 o+ h+ V# b7 g: G/ y6 |$ d
call m_NewStatShow_closeimg
1 `6 T$ _7 ]& X$ G- r POPAD1 I. {, b" Q+ }' o0 u2 E5 B6 ]: r
JMP D2Gfx::D2DrawImage- y7 j3 o3 ~" m7 T1 D: H+ ?% ^8 h
}' O0 Q6 g% e6 \; Z7 |5 w7 W
}0 B( W" |; E9 |, [7 z3 h
2 f; X3 g' Q. z. o3 a: x3 M
7 D0 N& D0 Q/ G" ?% M1 g
|
|