|
|
转载
. f: |! `! e* M* ?, t% I: XBY SJ
@# t: ?. a. _首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
- f8 U% R" O2 {/ `5 l5 y, y. f" g+ N
D2Gfx::D2DrawImage-10041
$ v# M$ \. t3 r* |5 q9 z- n2 D1、修复技能的背景(不需要可以不要)
% T8 Q* o- p* Doffset = D2Client::GetAddress(0x77AA8);0 B6 p! @3 k1 c. {
Memory::SetCursor(offset);. g0 D8 ?* d" M* m2 c
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);. Z! A' f$ q& G* }/ e- w
! f9 C% b; H+ `
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])/ ]. }( s/ S, @0 |( U7 d, o
{
; a, D1 W9 ~0 m4 q0 n //Init data for print image
# H% w# \* a( p) `; Y( ? sDrawImageInfo data;
0 p' O1 }, V) ?' P0 ]: A# k: m ZeroMemory(&data, sizeof(data));+ Y: u3 S" }0 N" ?: i2 [
7 o: }1 R( _) p //print background( Y4 T3 b2 U3 T; ^3 n
setImage(&data, spellBackgroundImages);5 m+ a& F) j* l- ^
setFrame(&data, 0);
9 g! F$ z9 v; z int fixx = 511;, E9 G6 H7 X6 [, c) q
int fixy = 9;* `4 N* j! _9 N: L( L' {
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
/ E T4 ]- S) e- k setFrame(&data, 1);6 h" I; M8 @! O
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
) Q. A& I3 A% W setFrame(&data, 2);9 ~5 D; W8 g. }. C% B
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
2 t: Z1 a. K8 i setFrame(&data, 3);
. i0 k0 ~9 x# W3 u+ ^ X D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
8 _9 ~" C5 g$ S: P}
9 L2 C E7 U. x__declspec(naked) void caller_SpellBackGroundFix()8 V3 @+ y+ P( `" ^) R( t/ c
{
% `- f+ [+ Y6 y9 ^/ ~ __asm
, ]4 D; z/ c) `# ?# \- V {
1 p- X# l# k4 L; {/ F PUSHAD6 U }! r/ W$ j, J( i
lea eax, dword ptr ss : [esp + 0x38]+ n8 w( u0 k- K6 z
push eax
( H' s, u& p- i2 t' y5 d push dword ptr ss : [esp + 0x38]
" I" G: [9 d5 u4 |3 x3 [4 A% c push dword ptr ss : [esp + 0x38]3 p1 h; L. l. s& I( G1 ]
lea eax, dword ptr ss : [esp + 0x38]# {% B' P% H1 i/ T8 e
push eax
- ]/ O5 q V& b4 j" H- \+ S* ?$ i lea eax, dword ptr ss : [esp + 0x38]" x8 k7 M+ [" ^2 j
push eax
9 y! e2 a& S" k9 V push dword ptr ss : [esp + 0x38]
0 F3 ]6 E l, K2 s8 {, ` call m_NewStatShow_SpellBackGroundFix
5 q# E2 _, f" @ POPAD) E; k; c/ W: p. n1 `
JMP D2Gfx::D2DrawImage3 ]1 ^3 u! J; ?6 l+ U/ F) l! o
}
' }0 @* a. Z9 h5 K# \2 C0 N}
2 {9 `, ?; l& z3 V4 l5 f( r; Z1 }& o
2、我们如法炮制小站的背景* J8 O( L% A8 g, f
( [/ k- { m1 [* eoffset = D2Client::GetAddress(0xAB010);
& U! O, J4 X, S) N5 m3 @8 [% h& RMemory::SetCursor(offset);
6 m2 f' v! g3 A9 r# u8 U# i2 ]3 fMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);8 o* X% g: @! Y7 {0 C% `" O, R
1 N' c; b0 m5 S% A' T j, n" L
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
7 ]6 N& K# C) t6 T$ `{' f7 B! z- Z& Y. m9 w. }8 {$ c
//Init data for print image
8 {: Q7 l" E; V; p9 X sDrawImageInfo data;0 c- B) o, s) {2 ^; b
ZeroMemory(&data, sizeof(data));- Z' w$ w& N# P4 |% E s2 [8 h% I
/ d0 |+ o n* ]. t+ m //print background p: r B! T, w7 E9 I
setImage(&data, waypointBackgroundImages);
" }) H/ e2 R/ G: G* F* r setFrame(&data, 0);0 ?* v& z- J3 Q0 W
int fixx = 0;! i# U% e' @$ E7 W, m
int fixy = 9;
% t9 H3 B" {5 M2 ~- O D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);8 O$ e; G- D% ^
setFrame(&data, 1);" H: x; ?$ d. e0 l: w
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
$ t: h# G8 |8 a7 R4 Y* x setFrame(&data, 2);9 {- L% c7 r6 T& Y0 c- \
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
5 t% E& {+ g5 v6 [) Y# E! x setFrame(&data, 3);7 J) [, V2 W0 J8 h. G; X, O' Z
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);, f, H8 T y T
8 f( j% M* w9 K( y& C5 `: i+ u# B
}
5 z- p# ]; l: P/ ^__declspec(naked) void caller_WayPointBackGroundFix()6 Q2 |) {" ]3 Z" E2 v
{
0 q0 m1 ~2 Z1 H __asm9 E/ I6 x) X9 C; s) Y2 V/ \& g
{
7 L: a- o) t+ U: a$ p, b- p5 ~7 p) Q PUSHAD$ ^. O' c( Z' s2 F N1 c5 P
lea eax, dword ptr ss : [esp + 0x38]
" W# p6 Z3 @- F6 C1 T: ?3 G push eax# M+ t9 h1 C @
push dword ptr ss : [esp + 0x38]8 ^' r2 |9 I( o1 q. q
push dword ptr ss : [esp + 0x38]$ k% w- l8 s& P4 V$ q
lea eax, dword ptr ss : [esp + 0x38]1 ?5 ]" K, d5 b0 W" S2 ^( R
push eax
' A4 z, d4 I, R: n lea eax, dword ptr ss : [esp + 0x38]! o$ W5 ^+ v( N S
push eax2 }/ O9 y' t& A0 P
push dword ptr ss : [esp + 0x38]
. L; ^ H6 ~' l call m_NewStatShow_WayPointBackGroundFix' U1 R0 U9 Z- X4 ?) Q8 W
POPAD
6 y" w- B% i* f& T: Q- _ JMP D2Gfx::D2DrawImage
0 k6 c9 _, P% L4 b! G) j8 @2 ?8 @( d }
- T6 v/ ? w0 h}
( G! {! h8 }9 k# p% Z9 ~9 g* [1 d9 M: e) F
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
9 @( U" L5 l' w' k8 o" ?# P腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
1 ?- d4 j- Q( ^4 a {: I1 S# z( y+ `1 y' `1 n$ |
class D2MultiRes : public Library<D2MultiRes>/ A" O. W) x& {- ~
{' o6 G3 _* i. S$ m7 @/ w( H
public:) b( }1 P, n& t- S7 w
static void Init()
% ]: t$ ?) [4 H" l) e* n {
# j6 [4 c& f" ? Name = "D2MultiRes.dll";
3 ]# ^0 C2 V8 ]; ^' b6 E: B Offset = LoadDiabloLibrary();
& w5 J; E4 B! C4 o: }' g }
% z. u3 K9 i% | };
$ u7 g {5 Q! ]* k D2MultiRes::Init();" M/ W) x$ k1 u3 U; N1 p3 j
D2MultiRes::HookLibrary();4 m! M/ F2 z0 V; \2 q' c7 N9 B
4 v+ w6 W6 Z* m4 Z/ {* z2 a G9 L$ l6 _ V: m0 [
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
; O7 U+ n3 q8 | Memory::SetCursor(MiscFunctionsOffset);; @+ U! |' v, w3 |8 q% s
Memory::ChangeDword(0x1b0, 0x200);& A0 M( q1 e+ ]
" \# F- Q9 s8 y% g
T) b7 Q" {) Y. ], s4 Q: a/ O
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);2 Y$ {: {- r9 e/ v
Memory::SetCursor(MiscFunctionsOffset);1 q% v1 W! E) V
Memory::ChangeDword(0x140, 0x200);
/ f6 ]- G8 o8 k
, [8 B# O2 w3 V2 Y0 }8 ]1 [3 H1 S+ b8 ?
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10); S% b) r- _1 X4 ~
Memory::SetCursor(MiscFunctionsOffset);* T, N: e8 A* A1 E0 E( W+ S# m
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
& c- d) A4 o) }: J6 l. g* g9 N4 w$ ^. e& z z1 z' C
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
5 i2 C8 l" F- f5 }3 j! {* ^ Memory::SetCursor(MiscFunctionsOffset);
w2 I) [- ]" o; q& y) y Memory::ChangeDword(0x200,0x299);//下边缘 299最大; ]& x/ C' K9 K' x; g. t V: A; T6 [
' g5 r7 K- h4 l( l, T$ s1 b" G' R MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);, |" y6 E6 d1 g6 j, Z" T5 P
Memory::SetCursor(MiscFunctionsOffset);
4 k% b U& s: l1 F0 \' p3 L$ K Memory::ChangeDword(-0x280, -0x400);//这个不要动
5 E7 R `1 ^; w }, m9 S1 R, h4 [5 O, e0 R$ l
k9 w& H5 N% Y) a C7 N" Q4、快完成了,是不是发现金币啥的位置不对??, L3 L+ @5 A2 G& X" z" V5 J9 Y& H
4 \# w; y1 ?" b1 e4 j+ @' y//这里修正我们的装备栏
# r N7 o' l3 _' \& ` offset = D2Client::GetAddress(0x99B6C);
+ s4 T# A. N/ R7 r+ ^ Z* p, C; x Memory::SetCursor(offset);9 a5 V1 t6 A8 K! S( ?) y
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);$ T- n3 B" m& w4 t; ~
3 E- q; s9 q1 J( o
offset = D2Client::GetAddress(0x99BA7);% B" A( e. I8 E I
Memory::SetCursor(offset);' {* k/ D4 C f$ k0 [
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);2 N3 S0 f* H* V
) h/ K+ p- F' `2 N: H3 q: j! |- U offset = D2Client::GetAddress(0x99BE2);8 T" m* f" }1 A8 R! m# d# Y: v
Memory::SetCursor(offset);
# d3 Z- x% a7 L# q& F$ V Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
8 l% d+ z" r( m/ h: T
+ I- b5 N3 J, Z* A. z offset = D2Client::GetAddress(0x99C1C);
* |. Y! i0 r( a7 d# v Memory::SetCursor(offset);# S! w5 D" ?6 n% Z- A
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);* S* [6 ^# e. y0 w* q" L5 O
& O8 ~* G& g2 {5 e
//取消两个popup,偷偷懒不过分
% ]) q& d, E0 e" Y4 H offset = D2Client::GetAddress(0x9386d);3 b8 }+ G0 t& h
Memory::SetCursor(offset);
Y! Y; f& e4 B3 \4 u% _5 U' |, M Memory::ChangeByte(0x8b, 0x33);
: R- R) T4 F) Q7 H2 Y$ j$ U; | Memory::ChangeByte(0xc8, 0xC9);4 S+ T! X' g# u- B7 A, P! ~; d6 v
offset = D2Client::GetAddress(0x9390b);) A' T+ e; l$ L7 K
Memory::SetCursor(offset);
, {) M: P+ I: E8 Q6 l Memory::ChangeByte(0x8b, 0x33);
/ n' G1 i \6 F4 ^4 s Memory::ChangeByte(0xc8, 0xC9);1 Q$ x, G3 P) L8 I o& y0 c/ L
2 X& ?) Y2 C2 f/ m
//修正提取金币
! X5 a8 b) z1 {: H8 Q3 ?4 F offset = D2Client::GetAddress(0x8D3E5);
) M9 [; R2 n9 O+ K, [3 }& d! }/ ` Memory::SetCursor(offset);2 P% T0 q- D% G: [
Memory::ChangeByte(0xA1, 0xE9);
" i- l! M2 p% {% r0 E; e9 L Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
?$ h5 ?# g; L8 @ x# G5 ]" Z$ {, f% U; y' q
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
' u E9 g3 {: r3 s2 c7 e Memory::SetCursor(offset);5 x& |. p/ j# {# X3 [5 O- p0 i6 }
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
9 z8 `$ A O, A9 O1 H
- a3 @* Y ^" G9 R) @& o# O+ U) m offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
; e3 @% T5 [+ m4 [2 F+ F3 M Memory::SetCursor(offset);7 E( x& t2 x1 M6 v- |. Q" o
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
. J% B0 l" P* \# ` v5 K% I! c3 S& v: s
//修正关闭按钮# H2 m& \5 @ f' @
offset = D2Client::GetAddress(0x8BD90);
: J8 M# s4 G3 p4 ~ Memory::SetCursor(offset);
: H7 R3 }+ D4 o* r- s. H Memory::ChangeByte(0xA1, 0xE9);
' O! i) w- m) t* i. s5 z. j Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);! A) B& j2 c: \9 }
) G* b) c5 N" Q* s; g7 D$ H- d8 z
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
& }. P4 ?/ g- M+ w, ^ Memory::SetCursor(offset);
) c2 \9 w: ^ z! i5 a, i9 K1 H Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
I- j9 Z; E+ I. J/ U# d4 _ d2 ]* U. C( H
+ H" F5 ~. y0 ^9 D8 _$ t, R. p T//以下是细节9 U" Q7 ~% D9 ]
#define getXGoldCoinFixBtn() RX(0x2d0)
$ `1 |" `0 g7 m( q" z#define getLGoldCoinFixBtn() 32
+ n: ]5 A' B. }' e! ]% G+ K4 Q R#define getYGoldCoinFixBtn() RY(-0x59)
- B2 f0 [! m, o/ L#define getHGoldCoinFixBtn() 32- E7 j2 g6 v5 I: K4 W8 v% m
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())/ e: w9 w( w Y6 t8 D# S
3 t& m1 } i9 e u3 v6 S
#define getXInvCloseFixBtn() RX(0x3db)
" N/ g; \3 W; K( l4 L#define getLInvCloseFixBtn() 32
* W6 m8 \3 y% E, u2 [" q, Z#define getYInvCloseFixBtn() RY(-0x63)# e) x) ~: {$ v/ b
#define getHInvCloseFixBtn() 32
' `+ }% q+ A/ f. Y#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())2 l1 \1 i5 r! o; P6 M
6 ^4 G b4 G/ Y( c) ^! ?" i2 E
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
' J- J" K/ U9 Q, `. c$ U{
, l! e% a6 h- f- w2 F8 d$ F DWORD mx = *D2Client::ptMouseX;) h! F! R( J$ v# u
DWORD my = *D2Client::ptMouseY;: l2 ~: A/ M( L
if(isOnGoldCoinFixBtn(mx, my))" ^$ w) r3 l6 K( K* Q8 D5 o/ |
return TRUE;
; c3 V( j" h9 F. a return FALSE;1 m8 U0 N' H U9 \; H% ~& A' W+ _! K( j
}
/ N3 R4 ` q. ^2 l4 p__declspec(naked) void caller_goldcoin(), o. Y2 y7 e: n" @/ Y1 E
{) [( J& L' i8 N0 x$ N( E4 Y+ f
__asm
) F7 O. J3 h) N3 ~ {) J7 _3 s0 O; Q! @
push ebx
# ^9 C8 i) ?1 x9 d mov ecx, esi
4 |8 ]- z$ i% _6 e# \* \ mov edx, edi
; c2 [, J( q4 r/ j0 O. ?' V6 \ call m_NewStatShow_goldcoin3 w5 U. O4 I x) n, Q3 w O
pop ebx: n! X5 x1 Z [: C9 K; i$ E
pop esi
! H$ k0 O$ G0 E4 P8 j0 F retn; b |2 `8 ~. B# }0 {3 `( I1 B( x
}
4 h8 T8 U: E& f4 e# I; D- Z2 ?}
+ I. u: c8 S) V8 u4 j. j) gvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
0 w4 \/ _8 E6 }* k& l, e{
: c8 w. ?) F. q$ `1 K& q if (*nXpos > D2Client::ptScreenSize->x / 2)8 Z! u# D j4 L! V3 b3 P6 \, [3 R
{6 l4 C, M* T( v
*nXpos = getXGoldCoinFixBtn();
( U/ V0 a: }2 ?( m2 | *nYpos = getYGoldCoinFixBtn();% y, B" a9 v0 V# z$ h1 a) r0 B
}& b9 T( l- }: W- H
}' b) e% D8 d2 y7 P
__declspec(naked) void caller_goldcoinimg()
- o# Y1 [0 Q* E& f; j{+ y4 F! ^/ j! [5 `1 }5 h/ X
__asm* N; k" {0 K) b8 V* Z! n: ?
{
) {: U2 d, e: C! {; M PUSHAD
+ [+ d7 `9 G; j6 S( g9 Z( G lea eax, dword ptr ss : [esp + 0x38]1 }1 [ j& [, ?$ ?
push eax- n, B% V. z2 ?& e" b% I
push dword ptr ss : [esp + 0x38]
7 B* M! L. }/ @" `0 | push dword ptr ss : [esp + 0x38]5 A7 V+ N6 t6 f J
lea eax, dword ptr ss : [esp + 0x38]; p; j* ?: Z4 S: N X# p- f
push eax
9 A0 J' W& z+ {* S t. |1 _ lea eax, dword ptr ss : [esp + 0x38]
8 N! K9 n' z& F0 z$ r push eax. _0 s- q t+ S7 R; t" Z* {
push dword ptr ss : [esp + 0x38]
5 ?! I! P/ H Z( p2 Z call m_NewStatShow_goldcoinimg9 |2 z( T9 y+ |5 I. G5 k8 U
POPAD9 \: G0 ?" f* ^% S# s
JMP D2Gfx::D2DrawImage
4 D* E" Y% k- F( |. R }
& x d4 R# l( e+ M K9 u! z* m' L, c1 V0 e}/ O4 S' q; Y* r4 G3 ]- p
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标0 i+ p& B' E4 V- r0 G
{0 Y, g# w6 i: F9 K
if (x > D2Client::ptScreenSize->x / 2)
1 P- x4 A$ N O2 C, t {- {$ H3 a& P8 b2 F$ r9 A
*y = getYGoldCoinFixBtn();
. q! t% E. c" J3 ] return getXGoldCoinFixBtn() + 32;+ Z, G/ i! G2 W) A
}
9 J3 p9 {- l" D7 a$ C! f$ \& s return x;- L9 v+ J) |( S; V( v/ _
}7 ^, ~" |9 H3 S6 j+ j2 h [! d* u
__declspec(naked) void caller_goldcointext()* W! t3 z# b% ~0 ]2 W" E
{
6 p# P; d# ^( a' r __asm3 J: J3 T* A0 j) V( n
{- T7 f" c* Q( t) Q. S
PUSH ECX, [. x4 r& [5 W
PUSH EDI# D" H! U+ G5 O9 I/ E7 Y4 d
PUSH ESI2 \: `4 ^5 T& f4 @& o4 M
PUSH EAX/ s- Z& e( M' H$ ^
MOV ECX, EDX0 t$ d6 Y& i& c. x
LEA EDX,[ESP+0X4+0X10]
( k! ?: t* S" l' D( P' M6 l CALL m_NewStatShow_goldcointext
& H1 H! V" \# }; B7 V0 g MOV EDX,EAX. X2 z& P2 |0 ]0 b# | @ O* c( c/ [
POP EAX3 w# O% X2 Y/ S; a5 Q1 m; ?0 B
POP ESI/ O1 y7 g" F$ `& I. |! b0 a
POP EDI
4 @9 S) k# z8 ^, s% j" @ POP ECX
1 H- M" g @1 J2 v jmp D2Win::D2PrintString;
8 l4 U* A: T, @ }% i+ l g& M7 r2 H5 X E- R8 E
}
" j, M! {5 Z7 l/ a2 y1 ?0 c1 S: `7 \) }
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
( V( z# y* ] u, t2 G{
. W+ E" Q* O6 q1 d @ DWORD mx = *D2Client::ptMouseX;
$ W2 y5 _1 ?9 I. X. x( K DWORD my = *D2Client::ptMouseY;
D9 ~! s3 d- h% w& D @: B if (isOnInvCloseFixBtn(mx, my))
5 c9 H+ A6 W9 i, G2 S, h return TRUE;7 y; l! g9 A& D' t: f& ` U! |) u7 n
return FALSE;
6 ?4 N4 G+ c. a" Q) T$ ?}; Z$ m9 \6 Z% J/ q6 [+ y. Q$ S
__declspec(naked) void caller_close()! P) z) O4 l7 Q9 ^+ D4 M e' e: J
{
1 o& q. j ]" V; x _0 { __asm8 n. F) d Z% q3 `- B+ v
{+ S% U2 w, }9 K
PUSH ESI
3 z) y6 e" m5 [. e push ebx% m5 T& b2 t ?$ E1 l" K
call m_NewStatShow_close- K+ H9 ^, z, y/ N' N
pop ebx
( S7 H% @ P: K+ b& b* y pop esi% `8 R. B9 g! c% N; W$ V/ ]
retn
+ a* a: r1 x0 w. {' M0 M. a }
& u- W" v( x2 L5 D8 ^* Q}; [5 k& X5 g+ ?0 q' }! B% [
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
; u& @ u9 X& ]9 d2 M{
, N/ x& v& ]' U *nXpos = getXInvCloseFixBtn();
" c( O) X# N/ M5 f& s1 V *nYpos = getYInvCloseFixBtn();
+ Z+ p( r& @4 J8 L* e+ M8 M}
* F, j% E0 c, ?__declspec(naked) void caller_closeimg()
, z, i; T0 V2 |# o* B& k{
0 |5 C3 ]& `" h __asm% F' M7 g! a4 N1 L6 s1 F3 ?+ U
{, w+ w4 F: w6 |9 J
PUSHAD
! U% c& H( P: R" S9 q, q lea eax, dword ptr ss : [esp + 0x38]
: J/ b( F7 p: ]# n push eax
: y: j6 ^9 u) Y, k! ~8 U push dword ptr ss : [esp + 0x38]
% ^8 y: z/ ~0 ^, `. s) \ push dword ptr ss : [esp + 0x38]" z y. t4 W# f- D9 T
lea eax, dword ptr ss : [esp + 0x38]
( R7 T( }+ ?% G7 ~3 p4 C X push eax$ {' I# _7 v7 K( I4 T) }! L6 r( O. I
lea eax, dword ptr ss : [esp + 0x38]
6 e" o o6 v2 b4 Z6 Y push eax
J- N3 e* Y3 s' O7 [' q. g push dword ptr ss : [esp + 0x38]: y$ o$ f4 X; t# \( s
call m_NewStatShow_closeimg
6 E+ a% S$ \8 y' O POPAD" ]8 |" J! F: G0 D5 l) N
JMP D2Gfx::D2DrawImage
+ _) ~* j# A5 N8 T, M! X$ } }
3 L$ P I! t) l# I, t}
$ M& x W# y4 C3 r: A$ F+ F, z0 ^" |0 _0 f6 X$ p! c9 v* O- t
8 `4 \# q; ?/ K, D' ?$ a" T
|
|