|
转载
8 X9 I i+ Q+ {BY SJ# ]9 S$ A0 e) D! L! [
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
2 O2 T+ s; z M9 k( p9 J' A& E# _* ?2 G& X+ u7 t V0 H
D2Gfx::D2DrawImage-10041: k) D7 _ p; G9 j2 l6 S# S
1、修复技能的背景(不需要可以不要)
2 D3 K' j x, N- Yoffset = D2Client::GetAddress(0x77AA8);9 n6 S0 J+ p! P7 p& Y
Memory::SetCursor(offset);2 M$ T4 {8 H7 |& [% c0 L
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
6 {7 G4 H7 j% o6 w6 ^
+ X( A0 t1 n$ q' x6 s. Nvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])1 y" D, e7 |" k6 @7 |" M. j
{1 I" m! f. |7 O7 A6 a* O) N
//Init data for print image
& N: H# D1 ? Y+ r sDrawImageInfo data;2 C: h. O* q# e# c* z, c) X1 P
ZeroMemory(&data, sizeof(data));
- |! h. d5 q6 B3 S& n
$ ~) I+ K' {+ `: t3 r //print background
% w {" `! s9 p" L$ x1 b' R& a setImage(&data, spellBackgroundImages);# G/ f0 h. K& F2 p1 A# n+ k; T
setFrame(&data, 0);0 a! k* t' j$ D6 e: B a" H/ A* ` \
int fixx = 511;! A }! o; \. a$ w! {# h
int fixy = 9;
7 E8 s4 K4 I! c3 [ D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
6 K' o1 e. S0 P i2 } setFrame(&data, 1);( x' e M( k; d
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2567 w) o H y: A2 d5 K0 |
setFrame(&data, 2);
% ]# P. u/ N2 U0 f D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4325 ^, ^( @0 Z1 Y4 {, x% r) l* x( |3 }
setFrame(&data, 3);
6 }) F$ o1 P% E5 D7 R4 P D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);4 i) f7 m# ^4 W. _; |
}& K7 h @" o! U7 P$ J# D5 M
__declspec(naked) void caller_SpellBackGroundFix()( P3 M. X: N3 a2 h s
{
, v( _- b) j/ j& d7 K& F __asm* H; A D/ y* x0 C/ P! D5 \
{
4 K8 C+ {. W" ~1 ? PUSHAD: \1 d0 }5 @1 {* _7 l3 ?
lea eax, dword ptr ss : [esp + 0x38]; Q+ _& \5 l0 K* P
push eax
8 J* S4 [" Y+ V, b# S: ^! g$ r push dword ptr ss : [esp + 0x38]
7 Q. O$ N0 ^# i. @ push dword ptr ss : [esp + 0x38]
6 ]3 \& q& F: Q3 x) B l lea eax, dword ptr ss : [esp + 0x38]7 q' Z: `0 p' H9 d, ]
push eax
/ I: L- P0 L Z( D8 J4 V lea eax, dword ptr ss : [esp + 0x38]3 F. P4 c2 D2 ?
push eax
8 J$ _4 ~3 ?6 u push dword ptr ss : [esp + 0x38]
9 f4 x: o+ f/ w call m_NewStatShow_SpellBackGroundFix% v7 Q3 A% }! i- |! \
POPAD6 g. Q& p3 y- D* ]
JMP D2Gfx::D2DrawImage; G% q1 L% n- ^" H! r
}
2 E& @8 U8 Y4 P* D/ K: ^7 X}3 i7 @; t) X3 T. F4 k1 h
) y$ D; B0 C) q
2、我们如法炮制小站的背景
) z' b% [& I8 j. q& L; C/ |/ Z7 r/ M# H/ J5 Z0 H
offset = D2Client::GetAddress(0xAB010);
3 @+ q8 \& U+ w6 WMemory::SetCursor(offset);
7 D$ w! B/ h% e& p% IMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
& y! H: ]( ^" \) L
$ Z+ Z* Z" ?/ y% tvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])3 N, |4 I, c6 R; r
{* N( W/ D) A% i
//Init data for print image
- W1 K8 a1 k1 s# C, w sDrawImageInfo data;& }- C, y- e: |0 Q/ H
ZeroMemory(&data, sizeof(data)); Q+ K- M4 r: O/ V7 O% u) Q
2 c# L8 [/ t! r( ?' i. i" T //print background
. ~+ E" _' e- {# r- q6 @ setImage(&data, waypointBackgroundImages);+ p% C0 a+ ?/ z7 D }
setFrame(&data, 0);
- C5 N$ ? C- _. Z& t int fixx = 0;
6 m- E E2 K5 M: C2 f: ^! | int fixy = 9;$ \! V- i( t! |0 t! p0 g* T
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);5 W! e7 G) m+ _; ]! E$ f
setFrame(&data, 1);0 M1 |; e) d6 C! f, x' a
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256( @4 @4 J7 _0 \* [0 u# i/ H
setFrame(&data, 2);3 d* k% L" @) u
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
$ \, a+ @" U! i$ z- v3 m setFrame(&data, 3);
& D+ S, ^6 Q0 ]: [! r" C! y9 V D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);& y* S- n7 s) f) w$ L
4 M$ [& y3 X, X( |, F
}
* E& f# u$ _: M' c__declspec(naked) void caller_WayPointBackGroundFix()
4 H _3 [) u8 Z1 t{& ~) a9 N' }' H3 L8 e; _7 K
__asm1 F# a* S6 M7 U4 E: F/ s
{
& F9 N. Z8 r, R$ K5 k PUSHAD' d& O o1 Z. b* h5 y# l
lea eax, dword ptr ss : [esp + 0x38]
* y& \1 d* _. I5 R% L push eax
* [; \7 n2 C5 ~: { push dword ptr ss : [esp + 0x38]
) A; E( r) j. r% n2 c9 | ~ push dword ptr ss : [esp + 0x38]3 l; F: o4 i0 x" k" g. A& B
lea eax, dword ptr ss : [esp + 0x38]- y9 R, ^3 D: _! s7 S" T" A7 B# ^
push eax
/ J1 l v' I$ | lea eax, dword ptr ss : [esp + 0x38]
6 n/ L% y9 O+ a/ a) f push eax$ s: H& s! s4 r% O
push dword ptr ss : [esp + 0x38]
3 A* c; b9 Z, q0 v7 V5 c3 U6 m call m_NewStatShow_WayPointBackGroundFix9 n8 H1 }0 j; U" \9 A9 |
POPAD
! ^0 |3 M7 @, u4 T JMP D2Gfx::D2DrawImage
( ~6 p/ y, p7 S$ {1 `6 f; v }
I' m" t7 T+ v8 T}4 D8 n L9 m, P0 b( M5 W* V# q
8 _5 x/ T, J" [! `/ t1 X5 I$ e
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
6 \' q4 z' c+ f( P A7 |9 N" I- u) F腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)' z9 i" f7 P/ N' l
{' b5 S. p& N+ g! I1 C; Y
class D2MultiRes : public Library<D2MultiRes>: B- C; v9 _1 a# W% l" r; k
{1 W" g$ s5 z& ^
public:9 [) A/ C, q f8 f' A) g/ H3 ]& j
static void Init()- r. e1 V( ^5 m& S# N8 K
{
' }& Z, @7 U; ~+ ~8 ]# e* r Name = "D2MultiRes.dll";
0 R$ ^- K+ U2 V2 n: H% V7 R Offset = LoadDiabloLibrary();
; O( M/ M s }8 f" h }
9 [5 ~& `& J9 g };
5 z/ i$ u/ I ?& J D2MultiRes::Init();+ E0 P6 |6 Z( ]- U
D2MultiRes::HookLibrary();
J& Q% R- h3 o5 ^
' ^4 ^& D2 c# q& A& q
7 G0 u& }% X- {4 `. ^$ V3 _: ?* s MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);8 Z& a5 D# u2 w. z2 h3 o, S5 u+ \5 E
Memory::SetCursor(MiscFunctionsOffset);+ a7 W7 Y9 X, l; ]- |, R; X( G
Memory::ChangeDword(0x1b0, 0x200);
1 @" {; R/ v% i) z! U: w
; X, ?. z y K8 ?7 ~/ q5 m7 i" R- V
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);+ m- j# w2 Y K+ O' w; J
Memory::SetCursor(MiscFunctionsOffset);, q- Z* d- z8 a% p
Memory::ChangeDword(0x140, 0x200);; x2 B: K5 I- [ s8 z* d/ z
' z; M2 N9 t- i; N% r2 Y! \# [' I: ^
6 o G% [( u9 F+ X1 o8 z
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
+ c$ [+ B" ~0 Q0 p8 a& |1 X Memory::SetCursor(MiscFunctionsOffset);2 X: b; [0 u v" M
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
3 z. q- x6 ^& ^# q- h/ ]& J8 S, e! u0 S. [
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);( j: l- g! t% s3 s2 [. v
Memory::SetCursor(MiscFunctionsOffset);
; Z# H% \7 M0 k |; V7 f) @' X# \ Memory::ChangeDword(0x200,0x299);//下边缘 299最大
; ]! D8 K; |# i' o
7 j( j; O3 z$ @5 c MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);/ M n2 I" ]9 _/ u- U/ }
Memory::SetCursor(MiscFunctionsOffset);/ m2 K) X0 h3 h
Memory::ChangeDword(-0x280, -0x400);//这个不要动
! j: ]. R5 I9 d" F& w/ m, H$ C1 i }) m, }7 R8 E# {! M! e# f
$ z. _. G5 H" }# j
4、快完成了,是不是发现金币啥的位置不对??
% W, S' m" a% g' o, X5 C% u7 ~1 V: g( O. F. D- t
//这里修正我们的装备栏
, M0 l6 J t6 J2 N5 f offset = D2Client::GetAddress(0x99B6C);0 x/ X" h/ K' q7 D
Memory::SetCursor(offset);' W" G1 y3 U" Z. L1 L4 U( I1 _
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
3 c7 X! V/ o+ c
3 }( e7 h4 E- f) a* t offset = D2Client::GetAddress(0x99BA7);) F: y% n+ I- Z
Memory::SetCursor(offset);
9 B- {- ]+ o" f9 {5 w& ^ Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
3 W/ B# O: d3 z h7 i5 }
, Y" H% ]0 z d! N' ~5 v2 a offset = D2Client::GetAddress(0x99BE2);
* ?3 a* r5 M/ t5 H) N* `5 k2 Q" |0 @ Memory::SetCursor(offset);
0 ?' k% R: \! W Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
4 k# j. Z6 g+ A6 A9 M" w; }9 V
offset = D2Client::GetAddress(0x99C1C);4 ]2 S, w5 U) L2 V& n: J& t' t* C
Memory::SetCursor(offset);9 R0 a: n1 \# ]/ U- ~ k
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
i- O1 v+ e5 e: L; `/ b F! k# Q+ S7 @) t$ z' @# l
//取消两个popup,偷偷懒不过分) n7 P8 t. l0 J3 W) c
offset = D2Client::GetAddress(0x9386d);
3 o) a& A$ M8 q$ F Memory::SetCursor(offset);
5 w$ s# l" j, K% M( A Memory::ChangeByte(0x8b, 0x33);
# u+ z! R( E3 x Memory::ChangeByte(0xc8, 0xC9);+ x- v X( h! j* r! H0 y% I; z
offset = D2Client::GetAddress(0x9390b);' [5 x7 t9 {9 i( g' P
Memory::SetCursor(offset);
4 l" k7 S' ]5 ]7 y$ I" ?% \9 L/ y Memory::ChangeByte(0x8b, 0x33);7 Q9 M) l4 L6 Q" E3 e* Q! z7 u
Memory::ChangeByte(0xc8, 0xC9);: ?# q! n( @) N, z6 `
0 _& Q7 Z$ z- [
//修正提取金币$ x9 I( c# g: f1 v
offset = D2Client::GetAddress(0x8D3E5);
2 V' r+ @3 D t5 P; R3 ^ Memory::SetCursor(offset);6 @- w& h3 X3 T1 [; z
Memory::ChangeByte(0xA1, 0xE9);
# E! N0 F% a2 q) b* z Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
6 J3 @ N- m% Q" U
! I, |# S8 n) [% Y w1 ]' }& G3 E offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
" u& j8 `7 I+ k0 h. X Memory::SetCursor(offset);
1 S: a4 {1 Y' E& v, K- R" x Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);) J( a9 h, w8 v L! J
5 x" h3 ~: Z: q1 I% C; k- h) e: I
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);: f8 C. p, w7 y6 ~, }' a( U; b
Memory::SetCursor(offset);
( N1 j$ Z. i# |6 j& v Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
+ R. ^8 W5 A5 p
- x" W1 i0 B- N$ c" r& c& P //修正关闭按钮, F' f9 c! n, r: M# X8 e
offset = D2Client::GetAddress(0x8BD90);
2 c. w6 P/ s$ N5 m5 ? Memory::SetCursor(offset);' p! R. A/ a9 b0 h4 _& R! S2 O: e
Memory::ChangeByte(0xA1, 0xE9);
2 [) h" ^1 F* ^& ^1 q6 [$ s Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);* u6 w0 R& o* ?4 E, f8 y
" g% t, D" i) @
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);/ A! D* |# o+ T
Memory::SetCursor(offset);6 m% z1 i" \( k* b
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
) G: z+ d, ?; l8 e: R. x# x; d
5 b. e3 ^# Y5 P5 M$ @0 O4 Y. R' Z1 L: B& f
//以下是细节
4 A/ f- _; m% p. g/ r' j% j#define getXGoldCoinFixBtn() RX(0x2d0) ^, B; a/ Q" V8 T% H- X
#define getLGoldCoinFixBtn() 32+ [; ]# K( ^6 ]5 w
#define getYGoldCoinFixBtn() RY(-0x59). r! ^6 u$ f' S9 R0 M7 u5 W9 L$ R/ m
#define getHGoldCoinFixBtn() 321 Y& `3 A5 A- d& N9 m7 ^. O
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
$ D8 F4 J( V- A6 q5 `& t+ V/ B/ y6 L; W+ l7 k
#define getXInvCloseFixBtn() RX(0x3db)0 W+ s! S% m; J& M Q( m
#define getLInvCloseFixBtn() 32% N* E; x$ q! [" \& {& |5 Z" D
#define getYInvCloseFixBtn() RY(-0x63)7 X8 V8 a* o* {1 T
#define getHInvCloseFixBtn() 32, j0 o" V, g' O; T: |$ h" Z
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
& V+ T% {6 W0 R, U
) _8 q' S' o) j, F2 ~+ R) TBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
2 X: K# B8 N$ r4 O, l{
1 e" @+ i% I2 P; E DWORD mx = *D2Client::ptMouseX;
/ t Z0 g1 \7 R* `$ c DWORD my = *D2Client::ptMouseY;% M0 ]! Y6 x3 Y- Y4 p& [! ~) D; m
if(isOnGoldCoinFixBtn(mx, my))/ c4 J( f* j; o# T0 F5 P7 \1 J
return TRUE;
5 |! L) A7 g$ f! V7 T return FALSE;
* ]6 H) K7 m8 _: J7 v- X0 S}
9 _' |) e4 V s6 {2 m__declspec(naked) void caller_goldcoin()
4 K9 _6 e% X: e- T9 z{% [( {; R8 `8 B9 \4 A+ J
__asm
2 X) | `. N4 o1 S# H1 B {8 A5 z; c( i! o" f# h4 i6 i
push ebx) I9 E* W2 S: X- ]( t2 V) z
mov ecx, esi
* x" M* Q7 v i! M: |+ @# H- x mov edx, edi2 x+ `/ v! M7 E
call m_NewStatShow_goldcoin! b+ Q) B: f. f3 @4 B: m# A9 s4 ~
pop ebx2 G7 g% t$ g2 ?( L
pop esi
1 y1 v% r- C8 s5 Q& i2 X5 m/ `" y retn
7 _. c2 m, N2 e2 j; w, @9 d7 K }( j3 ^9 \$ M9 D l
}
5 h/ }- ]( \% p0 rvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])# u" a6 c2 c# K( V+ z7 S
{
2 R- T8 o( L. ^ if (*nXpos > D2Client::ptScreenSize->x / 2)5 K+ N2 Z8 t b+ o4 f! B
{! k6 K) ^4 N# G" I; P
*nXpos = getXGoldCoinFixBtn();
8 ~! h. S& f1 h+ T( X) _4 T2 _( [ *nYpos = getYGoldCoinFixBtn();
: a# |* g9 m/ H( E/ d. v+ i }
4 g. v9 t8 L& d}* H. F3 R9 x# e8 P
__declspec(naked) void caller_goldcoinimg()1 }' h- H4 ^# L) Z
{3 i/ t' W6 T2 K7 h
__asm
$ @+ A0 m* R- K4 i { V. e: r! d5 e
PUSHAD5 M6 A8 |: A" [; b6 b9 [5 x/ u5 q
lea eax, dword ptr ss : [esp + 0x38], o. g4 t4 Z; |" R8 d8 k
push eax7 P, J6 T( e- Y# @
push dword ptr ss : [esp + 0x38]
, T0 L1 n. o4 f# N8 f/ B' @1 o push dword ptr ss : [esp + 0x38]- @6 o7 D K# b1 E
lea eax, dword ptr ss : [esp + 0x38]
v- A% l$ }% ] t$ I push eax
7 f) ?7 u. M; B lea eax, dword ptr ss : [esp + 0x38]
* M7 i9 u- k1 X push eax
$ N9 ^/ S" ~# o ]4 ?" d( m& M push dword ptr ss : [esp + 0x38]
u' \0 H9 O, t" \9 W7 O call m_NewStatShow_goldcoinimg
1 w2 |( Q) [$ e' h9 S/ n POPAD
, f) N" z X7 k% S9 o" E# x2 n4 H JMP D2Gfx::D2DrawImage7 U( m$ c: Y1 a$ t
}* o. O2 }$ x% D+ G& r' } n0 h+ m0 ?
}
/ c) z8 {% I. u% U( \5 F. bDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标5 ~+ c" ^ f! d X
{
) d* j. U2 B0 f$ l8 u: S- t9 o if (x > D2Client::ptScreenSize->x / 2)
4 T6 Y( J- H- _8 B" q {: k' P( w- `: N* ?8 L% b
*y = getYGoldCoinFixBtn();
4 ~0 r, _& C* k7 E1 N return getXGoldCoinFixBtn() + 32;
2 F! H( E6 D) M6 W N }& D2 P! o l9 ?
return x;
% Z# m6 h1 L7 m1 N2 T( o}
" S" w$ W' q9 N9 f__declspec(naked) void caller_goldcointext()
6 p; k9 Q. Y+ h% {; K{# S6 s D4 V7 {8 f4 t! T) g9 S
__asm
+ y5 {) F L9 @1 I* O; b {2 t# J- h. |( b
PUSH ECX
( @' B" g- g8 Z$ f) n1 I9 N- J PUSH EDI
% U: w, V& K3 L- G PUSH ESI
3 Z! ^. u; i' j9 D9 z PUSH EAX& e3 O& Y& e3 F, D H
MOV ECX, EDX
4 b: |& t5 J6 ? LEA EDX,[ESP+0X4+0X10]
$ e6 k7 `9 R# x$ W CALL m_NewStatShow_goldcointext
6 B1 F. @9 O' v2 x+ A MOV EDX,EAX
, x. \% l6 x6 r M+ q POP EAX
' s; e) t# Q* }% ^ POP ESI
4 _( f; M$ s* Q0 p9 K+ Y POP EDI
9 h" T- A& {8 h2 E$ r POP ECX
' S$ s7 r/ q3 v8 l2 n8 | jmp D2Win::D2PrintString;: \2 F% F5 v# e. F$ y8 m$ d
}
! p0 B2 F, j! Z/ `' b}
/ o: s. l! b% k+ b4 y3 R" B" e. \5 ]$ r
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
/ ?% P3 D: B! [9 x; v8 ~{: P% p% x( C2 J+ T: g% r- P
DWORD mx = *D2Client::ptMouseX;
( p) q; W C2 E' l9 F% [. P5 X+ g5 F DWORD my = *D2Client::ptMouseY;
; a4 `/ U9 X. _1 g* X% F if (isOnInvCloseFixBtn(mx, my))
/ t! Q. ]3 X% D, k return TRUE;2 W) m9 S+ ~+ k8 [0 ]# s* O
return FALSE;
, c! C, q( l, y$ m' G# {" X% H}6 |7 P f+ b, q8 T. T( k
__declspec(naked) void caller_close()
0 O6 {: w+ c. O8 f* x{
, N( j; R. s2 _$ S __asm" f- l- Y+ r( _9 X! m7 O+ Y% a7 o
{
. X' V$ P( ~: q PUSH ESI7 z, I0 w4 e7 R% _
push ebx6 ]( O' g. @+ I2 L7 }0 p/ v
call m_NewStatShow_close
$ V: L s% J- k% A pop ebx
$ l/ s1 G3 ]% a: v# y6 x0 h pop esi
" k* f" Y8 N6 d o9 F& E retn6 S2 Z- @ l' P2 s6 P& I* j5 T
}1 w: x9 N+ W" E9 H* J$ D
}
! c8 H. L T3 R- T# Qvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
+ E9 V9 O: _( J- L{
. J* T& H9 t) z. Z; h4 f+ Q3 q *nXpos = getXInvCloseFixBtn();
9 a8 E* e* S- p; ^. I- D: O2 h *nYpos = getYInvCloseFixBtn();
) ~2 u: K/ f8 C; z$ W% q3 t5 V8 V- f}& y. H! ^* R; g
__declspec(naked) void caller_closeimg()
! \- u2 }/ m, j+ {{- U9 E' W2 f( ?
__asm6 ~8 h# |$ N1 R7 y6 l6 O$ Y
{2 x4 c$ _1 R& q9 ?0 F
PUSHAD
8 e, L! b* u2 x, l lea eax, dword ptr ss : [esp + 0x38]
$ K& B, | F5 V2 h* ], @ push eax+ h/ c% F5 j1 D7 M: h, U1 ]; t) ]" t
push dword ptr ss : [esp + 0x38]
( q; l3 X" @* J. d: r% ] push dword ptr ss : [esp + 0x38]& P6 {3 A' X. c) G
lea eax, dword ptr ss : [esp + 0x38]& |. M& s5 T& w. h4 L' a
push eax# t3 ]0 S, p( P D
lea eax, dword ptr ss : [esp + 0x38]
- {' H H# a. c! ?. j9 }! d push eax
& k" Y% U7 p1 C push dword ptr ss : [esp + 0x38]
% g8 i8 m k5 O( M) u call m_NewStatShow_closeimg4 K* C3 v! s! A E& P( E2 }8 Q8 h% l
POPAD. A% n. s. }2 m) ^6 X9 m8 r
JMP D2Gfx::D2DrawImage
$ v5 o' M6 o6 V, C! _8 _ }; D! w$ |* `/ I. ^
}: M; S0 M1 g9 [+ o. @) x# j0 ^
( r0 q- a4 }3 P$ H' p' I8 E _! @
2 r- M3 d/ }3 d# P |
|