|
|
转载5 \* |( n H- x" H' h5 D
BY SJ
7 ]; r2 W+ |# F2 i, w9 n" F/ `首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
. ~; B3 w/ B4 W. B4 J8 v$ G. u
, ]" N# H# |$ J5 {! N* R# mD2Gfx::D2DrawImage-10041
3 K2 ] j1 f1 A5 U1 O% { {1、修复技能的背景(不需要可以不要)6 g2 T0 V- X; i7 S; F
offset = D2Client::GetAddress(0x77AA8);; ^% q5 d! K" H0 E
Memory::SetCursor(offset);# N: n6 F3 l% m I0 ?9 X* ^
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);/ ^$ S q0 Q6 B1 d
% H! L* @9 n/ f5 a' |+ M
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
. o- P; L9 c! |8 p{+ j$ o- p1 C2 U5 E1 d. r% r& F
//Init data for print image
& Y/ r7 I4 r! _$ s+ Y8 ` sDrawImageInfo data;& T* \7 }( | Y8 Y9 }, p
ZeroMemory(&data, sizeof(data));" B& W! H% S5 n" k1 c* G! S' Z/ z
+ l2 Y& y& r0 U6 a. J4 C+ }- g, Y# _
//print background
7 A& a. i$ W/ Z- G% t, _ setImage(&data, spellBackgroundImages);
; _9 |% p/ [' ]7 X: R2 Y setFrame(&data, 0);
, V- ~0 @% o8 x" l! b w$ p int fixx = 511;) p, l9 l; }0 s: q
int fixy = 9;. d! D8 k0 }( X+ E
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);# u: e/ c6 u6 s7 x7 P
setFrame(&data, 1);
9 T* n7 ]& s$ ]1 }4 x D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
4 L4 z X! t" Q setFrame(&data, 2);
: _' N- l" e. T- x) F D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
( }# {) H* q+ V% x setFrame(&data, 3);2 |* z* e" k1 g( z; Q6 G, t
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
9 c/ @' d0 l* a3 Z- m, E6 R7 }}2 c+ x8 B6 f+ |! |
__declspec(naked) void caller_SpellBackGroundFix()
! L5 O4 }5 s( _{
# C" p8 h9 c b/ d __asm$ n/ [# B m- o$ }: r8 E4 _ \1 ^
{
; r- }+ T& c8 }( u. L# R, C' r. g" { PUSHAD B8 h0 r4 t- x' t3 Y
lea eax, dword ptr ss : [esp + 0x38]5 I' n. ]8 D9 A3 _
push eax
1 b4 y+ l9 M, z# l push dword ptr ss : [esp + 0x38]
) K( q% S( ?- b' V$ G push dword ptr ss : [esp + 0x38]
7 ~# Q" g# ]! F4 A0 A. w lea eax, dword ptr ss : [esp + 0x38]
* q B: e2 F' X. `+ v push eax9 l2 f5 p( C2 n
lea eax, dword ptr ss : [esp + 0x38]
& z' _5 S6 P# X. _) L/ b- N push eax2 r+ A% R: C. z; w
push dword ptr ss : [esp + 0x38]
+ B P" @4 o5 [2 L; ?* w, [ call m_NewStatShow_SpellBackGroundFix2 E3 g( R% A8 _
POPAD
1 J2 P9 B. ^+ r JMP D2Gfx::D2DrawImage
& K6 K9 z7 d2 Z }4 y5 o* E' \( y4 n$ M8 x
}+ }4 ?* n: u2 [5 U! R
- O4 l4 b, q- E# m/ ?6 `
2、我们如法炮制小站的背景
3 C" ]5 ]+ J; r) T2 b- H2 _, S; [) a: K) H# h2 \
offset = D2Client::GetAddress(0xAB010);( u/ q" B$ [: s( \2 C
Memory::SetCursor(offset);9 j1 w* f- T/ K
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);, d+ s6 \ i7 m5 {! O. P/ |% y* e
: @- h5 Y# ~$ }" N0 H7 f$ g
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
$ ]" J2 N( [6 K# L7 B: d: d{2 e$ O# p( X9 N, Y$ _
//Init data for print image
4 F2 w2 Y" S8 J: K2 U+ n5 J7 g sDrawImageInfo data;
& b4 l- s: B( w( ^ ZeroMemory(&data, sizeof(data));
) k! ~6 T; c; m! a1 ?$ m s
7 X- c2 |( |! C //print background" m: @9 Y# z: |
setImage(&data, waypointBackgroundImages);5 _' ]+ i* @/ B/ c2 ~0 q
setFrame(&data, 0);
. j9 t* P4 D+ M1 A" I. K6 j. [# f. H int fixx = 0;
( {7 V" b, h+ K. H) j* x, m6 R int fixy = 9;- {, Q" B* a) h( s: }2 f
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
4 b7 h" G+ \9 `/ m setFrame(&data, 1);* f: M* Q' B/ }( l" S& v! T
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2566 _% o( }7 j% r4 z
setFrame(&data, 2);) [# G4 c4 a- {0 |/ o
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
4 G0 g- C/ M. i9 J6 K- b1 C setFrame(&data, 3);) o5 w( y! d' b6 N
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
# J2 `' ]/ u8 y. M, F/ C% u; o8 ~4 g& ^
}
8 W/ H t4 F+ K) }6 B6 c5 V7 R3 K4 s8 e__declspec(naked) void caller_WayPointBackGroundFix()
6 c4 q. c9 s$ A- o Q" |- N, b4 [{
6 N* y: p9 h. c0 [ __asm& z) N3 [ m) n* u3 l+ c7 ^, R
{
% }( n3 K, B! q! L# H3 q. _ PUSHAD
" v: u6 P0 \4 W lea eax, dword ptr ss : [esp + 0x38]
4 [# a# T: W2 R; j# }4 E6 [# s* M push eax
J7 U F: H9 O% b push dword ptr ss : [esp + 0x38]
2 r' I Z4 i& i6 F* y' ^7 l' l push dword ptr ss : [esp + 0x38]
3 w1 R3 h; Y0 ~! V lea eax, dword ptr ss : [esp + 0x38]
! V% @8 [$ N/ ?' k2 t H, Y. t9 T push eax
4 a: {0 x8 ~/ e" P% l lea eax, dword ptr ss : [esp + 0x38]
! |1 L4 {' h% m4 l, L9 K push eax
. @- j7 j4 h: ^5 q% o% A0 X; `0 Y push dword ptr ss : [esp + 0x38]" M- r& J6 {9 @0 B- l+ J
call m_NewStatShow_WayPointBackGroundFix$ g6 o J* E1 i; _) O
POPAD
! L8 z, i' q; y* W JMP D2Gfx::D2DrawImage
$ \# Q8 `2 k2 N- Q) ] l }: J6 g/ D0 g% ]5 B' y$ T
}
7 K% k" f) M6 [) a) a% x
4 ?+ J5 N6 e* `' z" |: n$ _ T$ U3、以下可以搞16*16超级箱子-腾出我们需要的边缘3 d+ L( @6 t9 x) z* r) @
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)7 I) W) r( C3 e
{
" H3 }0 Z/ n1 A class D2MultiRes : public Library<D2MultiRes>/ b9 f2 P8 ?- n- A# x; L! G
{" e6 \4 z# M8 {: ?
public:0 ^! s8 R0 I ^; Q
static void Init()
+ B' |; e( `$ ^ Y {
' q2 f o- l8 \9 F: l Name = "D2MultiRes.dll";
, @4 `1 s9 I K9 u1 A8 f Offset = LoadDiabloLibrary();
6 T- n N, `1 q9 ^& h9 o' u; A }
; F- f1 Q4 S: P) I: h* p. T6 W };0 O. D x6 I/ G0 e0 C
D2MultiRes::Init();
f* T- v; e; ]' V8 m9 `7 z. o D2MultiRes::HookLibrary();
: L* T4 Q6 o) h* Z
. s b7 E8 m) u. F% k7 Y) B" q- M! p
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
2 X& E4 B) O5 q' C3 p" H Memory::SetCursor(MiscFunctionsOffset);) y# w' U4 ]' U. [4 D- I g3 j" V3 I
Memory::ChangeDword(0x1b0, 0x200); ?5 s: w3 M# u" ^: g& a
6 G8 V, j2 c, e) i# `* j2 B
7 F r$ @- w5 m. y2 o MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
5 u/ P9 B7 y% r6 M' e Memory::SetCursor(MiscFunctionsOffset);
. W; t. P2 T# U' I( J) o Memory::ChangeDword(0x140, 0x200);4 V% s* h1 r0 w {! Q
7 x* @9 s2 f/ H2 H
. t2 ~8 b( V( H1 M& j: n* g
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);1 D7 B6 O9 D( Z) i; l' Y
Memory::SetCursor(MiscFunctionsOffset);0 N G0 h$ N# C* G
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
+ D! c* l( F8 d+ V; ~% F D; a" X# V1 X& H3 \# l/ b5 }) F
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
$ t1 {. A8 G8 \% }' M7 z Memory::SetCursor(MiscFunctionsOffset);
/ L7 ~& i/ |! s; M# I* l6 M Memory::ChangeDword(0x200,0x299);//下边缘 299最大
, ~* F, I" s: x. R' e+ v
' X7 c- j0 K9 v MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);1 h# p' T# h& u, C
Memory::SetCursor(MiscFunctionsOffset);
, J$ S) z) _7 h" Z: J# A: [ Memory::ChangeDword(-0x280, -0x400);//这个不要动4 O2 o8 R& l( k. G
}
* g8 l& z5 ~0 I, z" r7 \/ Z( N3 I( K, |& `0 x( g ]
4、快完成了,是不是发现金币啥的位置不对??% G2 x5 {4 J) h' H4 c1 l
3 ~$ f8 A7 ^7 V$ I$ s
//这里修正我们的装备栏
: s. f* d2 `+ a0 ^* S, A offset = D2Client::GetAddress(0x99B6C);
/ j( G4 D5 C8 i( p' u$ y s Memory::SetCursor(offset);
& B# g/ P; k% X. C! v Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
) w1 o) l; S, t) L/ p' y! A9 n8 T \
offset = D2Client::GetAddress(0x99BA7);
/ w6 s2 F0 _& w0 O7 e! S. E/ D( `4 q2 z! K8 k Memory::SetCursor(offset);% N8 l$ W, E. @( H
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);. a" ?. i/ q2 a5 q4 Y! d0 c
# k* w+ a W# g; ` offset = D2Client::GetAddress(0x99BE2);* d, O+ ~- [; s" u) A/ @. R( a% l* Y
Memory::SetCursor(offset);& W# b N& k8 ^8 D( e# W) c! f; C
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);) S$ A N/ V/ R* e2 ~8 X
* G3 _! h( H5 p- d* c7 E. D offset = D2Client::GetAddress(0x99C1C);
5 v7 } j# x0 T% C7 j/ P Memory::SetCursor(offset);
v- K, [ |$ L/ t1 C* b Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);+ P4 u$ O& a% {
' _9 b" `- c3 y1 V: D" q# P: B$ l
//取消两个popup,偷偷懒不过分
( W, D- p. s x, D offset = D2Client::GetAddress(0x9386d);
5 Q1 w9 l) U1 L6 ^ Memory::SetCursor(offset);
0 z7 w, b# b5 `. K1 [ Memory::ChangeByte(0x8b, 0x33);
; M0 D7 n, _7 B% j7 ] Memory::ChangeByte(0xc8, 0xC9);
( D o$ i9 `& u. j" ~ offset = D2Client::GetAddress(0x9390b);, c% s2 D6 t- M- C
Memory::SetCursor(offset);, E# g+ `: R0 R9 i' I
Memory::ChangeByte(0x8b, 0x33);
5 L( _) s5 j9 u Memory::ChangeByte(0xc8, 0xC9);4 ~6 b. e' [% G. F8 Q( v
, o' A# [" n9 _! @; u //修正提取金币
u2 i+ m( X1 t5 K5 Y$ `: ~ offset = D2Client::GetAddress(0x8D3E5);+ r# M* E0 I3 \1 z& ^
Memory::SetCursor(offset);/ A7 C. l7 l/ m& `
Memory::ChangeByte(0xA1, 0xE9);9 \' E, v- Z, ^9 Y* A! a# K' e
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
, t1 `; T% Z, E# J" s( x. r* s8 M/ p: h
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
* O# A- ~+ y1 H! ~# ? Memory::SetCursor(offset);
; e k3 L( E) u, f' {6 F! I Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);! @8 { C8 j7 W
: r) f' v; P* v5 ? offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);! O/ X0 I3 s, U3 I
Memory::SetCursor(offset);9 |0 m' Q1 g1 A$ u& }* o) r
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);% S9 u' h' `! d% J& w) _) p: p `0 O
! B( X5 A0 @6 a6 r6 r. y
//修正关闭按钮6 {* W' d& H- E; ?+ v
offset = D2Client::GetAddress(0x8BD90);/ j4 v$ p4 _' _' Y! f
Memory::SetCursor(offset);
; S, U E1 `6 e# { y Memory::ChangeByte(0xA1, 0xE9);
! S( X6 J6 B; f& o$ \! l Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
4 v1 O( f9 Z8 Q! Y1 P9 d' h" T* b6 P
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000); n a8 g0 t, C1 C, x0 U( K
Memory::SetCursor(offset);
* }0 Y! \# j) c/ y3 n Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
# _4 c: C+ r4 _. t% o9 Z( V1 n5 |: k+ k4 d j1 Z4 K+ i! @
: }* \7 G W7 s( b1 u, F
//以下是细节
; f# I/ ]8 {& ^5 o5 Y$ N#define getXGoldCoinFixBtn() RX(0x2d0)% N( T- Y* m! ]" v
#define getLGoldCoinFixBtn() 32& ]" W( L: [7 W' W# q3 m
#define getYGoldCoinFixBtn() RY(-0x59)( I' L+ p& U$ s6 o: d, V
#define getHGoldCoinFixBtn() 32$ U" I3 t) d9 G8 Z9 o/ o" L
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())4 u4 C4 Q B! x* ~3 ^7 J
& a! h9 _& A. ]* m, z#define getXInvCloseFixBtn() RX(0x3db)
& }2 o5 U9 Y8 m: u#define getLInvCloseFixBtn() 32
, U( k. v8 \. y) J$ b#define getYInvCloseFixBtn() RY(-0x63)% c" G( j' n9 _# m0 n
#define getHInvCloseFixBtn() 32
% O( P: t/ s) s; H0 O2 Z#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
/ X4 ]( y2 y% I @# l2 `) ?; c
2 t# g& l+ w( L: ?BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
8 |" J" Y, d" x9 I" z6 w{, t6 U- X* x1 @, c6 k" q7 j
DWORD mx = *D2Client::ptMouseX;& B; O* t+ m% `7 }3 k" J
DWORD my = *D2Client::ptMouseY;( E9 ~8 h$ [# [! h% q! K) }, i
if(isOnGoldCoinFixBtn(mx, my))9 X; H, a. ^) N
return TRUE;) Z, ^* ~* G) p a0 Y
return FALSE;
7 Y$ i# Z5 W( ^; F% k* R% W, D7 X5 m} u1 z& V: ^% O! T
__declspec(naked) void caller_goldcoin()
. E2 ~5 p8 g. R% s1 M0 q0 X& C" W{% G3 V$ c6 u' v
__asm
2 ?+ b9 y0 v: L1 Y: H: s+ f {
. A4 ^' f2 G. V* k, L push ebx
- J7 d: O( p p mov ecx, esi$ T* b2 ?. P, ^( t: N
mov edx, edi6 v( ~4 F. D9 m" W3 Z6 x8 ]
call m_NewStatShow_goldcoin
7 P* ^, a. C% _+ F# b4 S" G, f) k pop ebx
, P% Z v* ~% o; g9 b8 h0 j pop esi* z- X& y5 y6 G+ l0 C4 ~3 ?9 s
retn
7 w/ y+ a- w. i' T m; E }1 ^7 A8 y2 }& y% Y8 [9 @8 i
}
7 V( B/ J5 S5 V& t9 @# n% F4 M! q+ {void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
# @9 m% @. t" ^- Y& ?- ]{
* p, L4 I4 e# p$ T8 {: [ if (*nXpos > D2Client::ptScreenSize->x / 2)
9 v7 B* c' a1 p8 k9 Z {' o1 [0 E& k; I8 S
*nXpos = getXGoldCoinFixBtn();
, C7 M: h5 Z! E7 p( s9 M *nYpos = getYGoldCoinFixBtn();
8 |* |( J4 H; S- E. T1 u* Y }) n- a a: |8 D* l! X
}+ Q. ?- |. K& H' i% l
__declspec(naked) void caller_goldcoinimg()
8 E% _3 ~' R8 ]. x2 z{% r, a! l- ]5 t$ W+ Z
__asm! s" r- @" M( G* p# p
{# C! e2 J8 t* u( g
PUSHAD7 m) |4 M/ K A5 |( t" T
lea eax, dword ptr ss : [esp + 0x38]
A; @) x. ?0 Y7 p- X2 u push eax
5 N3 P0 G. p' F1 j, w/ }6 k push dword ptr ss : [esp + 0x38]9 f; d5 y0 Z* p, L% {+ L) u
push dword ptr ss : [esp + 0x38]
. W0 v# v8 e; Q lea eax, dword ptr ss : [esp + 0x38]& o9 h. F1 U4 ~( ?8 O2 D$ g& Y
push eax
) k% J2 g+ Z7 q. _) @0 Y, _ lea eax, dword ptr ss : [esp + 0x38]: D% m9 A" l/ x+ z
push eax% s# C' h/ i8 }9 |9 l9 p- \2 h
push dword ptr ss : [esp + 0x38]- W4 w3 V# a& j5 k! C
call m_NewStatShow_goldcoinimg
! x" Z( x8 ` {" W! J POPAD
) A1 s% M* e+ M4 J/ X9 [3 g3 x5 x7 U JMP D2Gfx::D2DrawImage; H# ?. O0 f' }9 i4 {* z7 a
}: C! A4 P% c- P. q
}
; s9 W" r5 X8 R! yDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
1 v: Q6 N# T1 `{
8 S2 r, e5 J2 c# S( }5 q; y if (x > D2Client::ptScreenSize->x / 2)
* N5 Q- \* ?- X' ?# \2 O, l8 r {9 m$ S2 w1 z" ]7 J' w3 Y" S+ u- x% I$ v
*y = getYGoldCoinFixBtn();8 u3 I4 l( J3 I& |- Q. h' k3 `
return getXGoldCoinFixBtn() + 32;
. Y2 S/ G' n" w }% R6 v% ~4 H6 k; Q4 z _
return x;, K/ k! j: a3 E0 ^. n
}
$ ?4 m( Y5 l* N+ L8 X' M__declspec(naked) void caller_goldcointext()6 e) r% {2 _# j3 `
{8 v8 b6 ~5 M) X% C0 m
__asm
# L& w# T8 v( g! U2 ] {0 M' s. Z# f" W/ R" z) m
PUSH ECX
8 W4 p: _- ~, O0 I& f PUSH EDI
Q. n$ V z0 ^ PUSH ESI+ O# K7 U2 n/ C( q) U
PUSH EAX2 B" Y8 ]: L8 }7 F. A; j
MOV ECX, EDX
, m- C3 b$ U. e3 V; W LEA EDX,[ESP+0X4+0X10]/ @) t5 W- n! A+ i
CALL m_NewStatShow_goldcointext
9 P @; h7 b7 R0 K+ d MOV EDX,EAX0 g3 q5 ?" L$ n2 Q5 m5 @8 ]
POP EAX3 ^6 X; F! L" a# @+ K5 H& Y" a
POP ESI
; H. n' s- J0 s( J0 z1 b: F POP EDI
; I6 y- J i1 w y6 W POP ECX5 C7 M" r& q, @" o5 R& J
jmp D2Win::D2PrintString;
* c$ {4 }9 c" G, O7 y) }7 E }
: F: _" G* J+ N E6 P}
% g4 T0 g& F4 K3 @* Y. s) N4 t, m, o: c' g. D. \1 L! x* J! j# Q: o$ O
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
& p8 t; f+ R1 c( p0 E{2 I$ S# D* a0 \2 ]7 J
DWORD mx = *D2Client::ptMouseX;
' t& [5 l) y5 B2 B- k+ ?: V DWORD my = *D2Client::ptMouseY;
2 X. a6 Y# }$ ?6 \ if (isOnInvCloseFixBtn(mx, my))
* i4 \: w. @# Q! E return TRUE;
5 g1 c0 k! s: v6 \- \ return FALSE;
4 Q+ j: g3 R" n: C; N}
; U$ l5 J0 \* s7 Z( Q$ |: G__declspec(naked) void caller_close()' E' X3 P; N9 U( J
{
& |" q! n# {- L- Z. Y/ @ __asm
3 y, I3 R2 f, V+ S {/ d3 o' l' ~, o6 A6 J) O) |
PUSH ESI
0 p; u( Q* W: P3 a# K1 F. f9 s, n push ebx4 F4 N! }+ {# O# a$ b) f
call m_NewStatShow_close: C9 K) y+ K$ z/ z- } n4 s
pop ebx
& J2 k$ u2 f5 Z; n { pop esi
" {- k6 M; z$ e9 T @, n) G retn
- U7 U. o9 L6 Z; }7 z- z }/ d0 b! D/ Z, q- ]' ^6 Q
}9 y' ?) o( R" y' a& S2 S! g
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
5 d# t x/ p5 z' @9 R{
0 i- \5 u+ c$ S$ S" @ *nXpos = getXInvCloseFixBtn();
0 B8 D& R9 L0 j% ~ *nYpos = getYInvCloseFixBtn();4 E6 D5 t, E+ Y) `
}2 u3 `, c1 s6 Z! r
__declspec(naked) void caller_closeimg()- h" N. ? W# h" N$ U
{0 D$ B, d0 u1 X8 y
__asm
$ }- H8 a) y0 M! T" w {' ]5 I0 h8 {- e' U) l6 [
PUSHAD2 s Y- o' Z% M! }8 d2 H* t
lea eax, dword ptr ss : [esp + 0x38]3 O/ E S! h3 |( ?; h
push eax
4 e% g9 _& d/ n5 }9 v3 E push dword ptr ss : [esp + 0x38]
/ i+ N1 }0 x) I0 o push dword ptr ss : [esp + 0x38]
" |: U, d- P7 v, g2 h lea eax, dword ptr ss : [esp + 0x38]
! A3 W9 S1 f+ ?7 x! A* k1 B p push eax; f' m6 c( c! B4 E8 J+ J) \8 _, j
lea eax, dword ptr ss : [esp + 0x38]
1 n( q/ i6 q( C1 L4 H" p$ M$ \ push eax7 w8 w2 [2 {5 {! q, ^; K1 k- M
push dword ptr ss : [esp + 0x38]
% F* t& P$ Y, j4 x" ?! ?6 z call m_NewStatShow_closeimg: R% I* y3 R" Z6 v. p, ]0 a/ R
POPAD
' |- o" @5 ~% C) G' j JMP D2Gfx::D2DrawImage
3 Z, G9 R% ]& S! {. x1 k8 Q: n }! B7 l- M+ x& Z- G, F" Z
}) _# w- ^+ d4 r5 d0 t# D- o5 M
8 u6 ^4 a5 U) M9 Q
0 v1 L4 f Q1 d0 B
|
|