|
|
转载
+ m2 E* @5 z2 g3 p; Q. K0 g- g) VBY SJ
0 }( h/ w' p$ p' R* U, h3 o首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)$ f" ]. r+ q( [& g1 k" ]' R( O3 f4 w
5 h, ]' M- ?$ k J2 R
D2Gfx::D2DrawImage-10041+ A' q( c, J5 [& w, R
1、修复技能的背景(不需要可以不要)
: }0 g C& z' _4 ]2 P: ~$ `1 J& soffset = D2Client::GetAddress(0x77AA8);' m. `- @# u; M l1 R
Memory::SetCursor(offset);
, Q9 k1 C9 R- A* W0 ^, Y! O8 eMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
% }9 X# x/ U( }( C( v# w
% C: |, w- m; L4 w3 N1 S6 bvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])/ v4 I) M* B4 ^& y: e1 h6 M
{4 o! l6 o/ o9 X/ l' `! U& ]& e/ {
//Init data for print image$ _6 ^. e/ B% _' |4 _& N
sDrawImageInfo data;
# S$ J: V5 [- w. w! C ZeroMemory(&data, sizeof(data));/ M$ j( Q7 ]$ s
. S- L5 u* M( O; X0 p S //print background
) A3 _% I; l9 c9 a- l2 h setImage(&data, spellBackgroundImages);2 u# W6 Q& z2 v! Y3 j9 b
setFrame(&data, 0);
2 ~. N, E' }$ B4 A int fixx = 511;3 N8 ]0 V2 m# i6 ?) Y
int fixy = 9;- [+ z4 U5 g" f* M3 @# c! ^0 T
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
: W0 ~" o+ C' t4 J y7 c9 W# W3 { setFrame(&data, 1);
8 X& \9 @& @. ]4 x$ E Q D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
* N* ]# c* d' P7 ]* n0 L1 P setFrame(&data, 2);
5 A- i, @' Z) x# G' M9 E D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
{+ L9 h8 x% l4 L- N, N setFrame(&data, 3);
- a2 Y( D7 L, o; P% Z- I D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);. \1 j$ z3 L0 p8 ]
}6 y; t9 b9 A3 u! i$ k
__declspec(naked) void caller_SpellBackGroundFix()
- \$ o& @$ t- Q' {% s' I1 `{
. F; [5 }9 {, d3 F) M __asm4 d/ s; k( P$ j. l+ b+ e* z
{5 w2 V4 y. z7 @! N i
PUSHAD6 ~$ v3 ]3 K5 |, E
lea eax, dword ptr ss : [esp + 0x38]- s u+ o( ]# O0 F! r9 Z% P
push eax
) u* N0 W0 U9 U$ J2 L8 t push dword ptr ss : [esp + 0x38]; p9 U4 ~$ L( R ^
push dword ptr ss : [esp + 0x38]( M, k& ^3 f& ]0 @) Y
lea eax, dword ptr ss : [esp + 0x38] [2 r% B- b- R
push eax5 T+ p6 O q6 F
lea eax, dword ptr ss : [esp + 0x38]
. h. r4 R8 ?& U) _ push eax# J- l7 p3 i. m
push dword ptr ss : [esp + 0x38]
( K8 [* Y, E* |3 x% I3 ^ call m_NewStatShow_SpellBackGroundFix9 D5 b1 e4 V% ~ [: G& K
POPAD
, u9 d' C- ~/ N- _ JMP D2Gfx::D2DrawImage
/ [3 H# ^$ a8 r; u }8 G( ?2 H4 f" i5 h& O" w* {
}
: i4 Q+ q9 P! ^1 j/ m! l G H
2、我们如法炮制小站的背景
' B& T7 G5 Y/ @7 x+ n
! {3 \* V( W' @7 u. Toffset = D2Client::GetAddress(0xAB010);
6 z' G2 E5 ?% c7 y! i1 T/ rMemory::SetCursor(offset);
5 l9 K6 z# v- M' k3 E7 bMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);' T9 |0 F" d7 L* G4 A: c" i S3 X/ C, ]
9 j/ r+ s( N( s$ i
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]) ? _' K; i* @- p
{
6 y* s+ `$ {" @5 m //Init data for print image
6 k7 D) E* I9 w+ E& B sDrawImageInfo data;
% I- h7 _& x$ P1 ?0 y ZeroMemory(&data, sizeof(data));+ o$ o3 H0 U# |
0 C* }: C2 \ B" |5 i7 f //print background. U" v6 V/ G, ~( e1 w/ u
setImage(&data, waypointBackgroundImages);' R! N0 x0 `# S5 b6 d8 a5 ^
setFrame(&data, 0); L3 O* M1 y+ f+ A2 L4 |+ E6 ~% F
int fixx = 0;3 J- y# i' s+ Z3 m8 j: O3 S
int fixy = 9;
Q$ s+ ?2 C! ]4 Q9 i8 j D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
8 \* V/ {% J. P setFrame(&data, 1);
" n; n2 O; z( @9 f! c7 y' G, f6 d D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
" T7 ~0 V9 T, q setFrame(&data, 2);5 W( s4 O) `" R8 }9 h5 [! C+ K! w" |* N
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4322 I( k U: k; g$ U
setFrame(&data, 3);
. |% p4 q" j% U- g D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);$ X" E6 _! v% Y" h! [' f* J
0 b: _& t, w! ?}
$ {) z- Y& z: L/ i__declspec(naked) void caller_WayPointBackGroundFix()
6 I- S3 r8 H. c0 ~. @{0 h& a$ ^; a, ^; Y
__asm) g) T8 \& I4 M6 j
{
" H$ [$ Z: s+ [6 E9 \7 B1 y PUSHAD
5 k% K7 N7 t& O2 f8 \/ j lea eax, dword ptr ss : [esp + 0x38]
* z/ \5 @/ @! B8 }8 Z% W5 h) x. U push eax+ Z" F0 S' W) j& \; S \- ]" s
push dword ptr ss : [esp + 0x38]
8 `* @- ]! t, ?& Y7 X0 a& R/ B8 n push dword ptr ss : [esp + 0x38]
r4 ^: z4 c/ x( @9 p lea eax, dword ptr ss : [esp + 0x38]
" S% {" T8 ]' }# B push eax' j2 {$ \( O! R; Q! U8 [
lea eax, dword ptr ss : [esp + 0x38], `3 v9 j4 H3 K) C/ P& n6 v
push eax
$ q6 o7 F x1 l. K$ D( B push dword ptr ss : [esp + 0x38]. M3 _/ b* ?5 I% T y- _
call m_NewStatShow_WayPointBackGroundFix7 ~ w0 f' a- B8 u8 u! J. k, n
POPAD
+ `% o( m2 t6 r1 @ h JMP D2Gfx::D2DrawImage
7 R+ M. p4 i. ^1 ]0 R2 T4 _ }( ]7 x- S2 H8 [- g
}
6 H; e+ o r+ J4 T2 G/ g$ Y* S" A2 ^( G+ g% v1 D
3、以下可以搞16*16超级箱子-腾出我们需要的边缘* M3 O' U C: ` Q9 h4 E9 a9 ?
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复): p z0 q d- Q8 t0 J" D
{
( q$ N" U; s0 N. A% U" O6 U4 S class D2MultiRes : public Library<D2MultiRes>) L* _+ v3 U( B4 ~4 j- ]6 |* K
{- I! ~/ R5 |( ^) s" S' B
public:! h: J5 W$ m9 n# K1 u" C0 w
static void Init()% v$ H0 ?7 I o. d" e
{
# _% f3 {; X4 g% J Name = "D2MultiRes.dll";
" D1 x; U$ E' c; r. B9 c Offset = LoadDiabloLibrary();
7 J3 ]) C. m" W( Y' F }
0 B: I- c' f: {$ y1 K9 x) U4 d! b };: H3 q8 C/ ]! Q' y3 j
D2MultiRes::Init();
1 k. c- e0 y; O* Q E7 Q# ]+ u$ l D2MultiRes::HookLibrary();
8 B0 q5 m/ v$ x) r+ j
- _: h/ b- u3 N1 V7 n7 @
; T6 ~5 k+ [) Y5 j" f/ i4 u0 H MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
6 Z3 ?! f. i4 X0 \$ x/ d4 ~7 l Memory::SetCursor(MiscFunctionsOffset);( w+ s/ W5 S6 s8 J; g
Memory::ChangeDword(0x1b0, 0x200);
: e+ R, p) c0 `6 V" p
" X7 `+ B% ?. n, b7 r5 K( a- J7 U% Y5 A7 h, z
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);; }, P+ g% D( f$ W. M3 J; l
Memory::SetCursor(MiscFunctionsOffset);
4 x+ C! d ?$ S/ b4 K Memory::ChangeDword(0x140, 0x200);
2 ~6 U. C0 o7 g! F+ h0 t. t4 B( o! r1 U d7 [% d
e; b" @% }" X' H( a# f. C
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
R5 D8 ?* J2 L( A) e Memory::SetCursor(MiscFunctionsOffset);
, o0 _, \1 I) S- n% Q$ `4 u! _) ] Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块0 G6 d' o- i3 G0 b! o( W* t8 q
& c9 h$ C0 x3 y% {: f8 o6 m MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);1 |- H. H/ [! C* c$ T4 G5 t& _
Memory::SetCursor(MiscFunctionsOffset);+ x- q, T; K% A% ^
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
/ {0 Y) Y: U! d E
! S2 C. X' a3 G4 q0 W MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301); y3 R2 A* b5 x
Memory::SetCursor(MiscFunctionsOffset);
9 h2 q1 e) s7 }* G) U7 d- g Memory::ChangeDword(-0x280, -0x400);//这个不要动 G7 t. Q7 c7 `
}* |+ M2 \- X8 b& f0 M. s
( k( A$ M. v& Z( o% F
4、快完成了,是不是发现金币啥的位置不对??. z( ?5 d/ F1 R7 {) Y5 ?
6 ]/ m! [# X3 B9 r
//这里修正我们的装备栏7 q0 O# ?$ W4 j1 P6 ]6 c( W
offset = D2Client::GetAddress(0x99B6C);5 t! @) d% g2 o. @0 d
Memory::SetCursor(offset);
# ]( ?1 }# l$ {4 H, ]) y" T( C: J' ` Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);$ ~ O5 i* K' d( q$ J+ s
( L' |/ v' D% ?2 }
offset = D2Client::GetAddress(0x99BA7); s( u! r' K* J/ _
Memory::SetCursor(offset);
8 ?1 f7 m6 J7 h& n Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);" k, a! B3 c5 k7 w: P
; v0 }, m' D: a; H% ]7 m1 O4 l
offset = D2Client::GetAddress(0x99BE2);
+ I5 V X. Y0 Q0 d" Y& U Memory::SetCursor(offset);
4 E& c' y2 d/ X# p Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
: u+ Z# V: p) F+ u
# l* w; A* T: f& ~ offset = D2Client::GetAddress(0x99C1C);( @) m4 g+ t# V! t, @
Memory::SetCursor(offset);) i2 l5 B" I8 M* D8 E; f
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);5 j; i3 T; x0 {! i$ F& j* C8 ?
! \: s) ]6 F/ j4 y3 q //取消两个popup,偷偷懒不过分: [) J1 A2 J- d6 |1 e
offset = D2Client::GetAddress(0x9386d);. u$ s0 o6 Q# ? n* b) d
Memory::SetCursor(offset);& G9 K' j4 M _. \0 S) u1 G% p
Memory::ChangeByte(0x8b, 0x33);4 S: @: u# M0 d. t& B# [
Memory::ChangeByte(0xc8, 0xC9);: E! }" s, A9 S7 O7 Y
offset = D2Client::GetAddress(0x9390b);
( A) [4 C$ A3 f- u( k Memory::SetCursor(offset);
/ a& _7 f; l& G' N6 q Memory::ChangeByte(0x8b, 0x33);
- j! r% E# L% U+ j+ Y: g Memory::ChangeByte(0xc8, 0xC9);
0 C+ F1 m" F$ l4 n7 q
) }; C$ T3 ^0 g8 c& d //修正提取金币
: }$ _! y9 K `. i; l offset = D2Client::GetAddress(0x8D3E5);" [" k+ G! o6 z: y
Memory::SetCursor(offset);
y1 P- d9 i/ S$ d- w3 K6 K Memory::ChangeByte(0xA1, 0xE9);* c5 T. d0 p7 T
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
& g) q; v, C( H5 e; H7 b E0 Z) v3 b
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);" \" Z; M r) t/ ?: _
Memory::SetCursor(offset);0 f' }* r+ E2 W& b9 T
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);: r6 j5 `' U; V r7 j" F) N- g
- w' U9 C6 g+ {$ r; I- f9 Q offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
0 X" A. |) t7 `9 L3 p a; e3 Z9 E" X Memory::SetCursor(offset);
9 F/ d4 n G; E0 _ Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
3 U4 o8 \( p, e& ?$ w; @/ E* j( n( ? y2 d
//修正关闭按钮1 O, C) _4 y/ T! S
offset = D2Client::GetAddress(0x8BD90);/ M) w9 X- I. y0 m' l1 W( R
Memory::SetCursor(offset);
* A- q0 v9 x. N$ G8 v3 T Memory::ChangeByte(0xA1, 0xE9);4 z; C5 a6 N" x2 D2 Z% Q2 h+ b/ J* B
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);( ]" w2 P- u x2 b6 k' r0 g. S
% j; ?# D7 s0 n offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);8 u4 o; w: h$ @8 Y: Y% b" `
Memory::SetCursor(offset);
0 Z9 F& n4 R# ` Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
: m$ k' |$ i, @7 Q+ K1 g8 d- G5 u1 T% l
4 Q: j V' ?2 b$ w* d
//以下是细节
; W2 f" c6 K1 Z" r#define getXGoldCoinFixBtn() RX(0x2d0)
: D9 z8 C& m1 F: l#define getLGoldCoinFixBtn() 32
2 h# y4 w4 T" a+ g#define getYGoldCoinFixBtn() RY(-0x59)
6 m1 S9 Y2 Y( d4 a# Z( c#define getHGoldCoinFixBtn() 326 R2 W5 D5 P, q: ^
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
# m4 x' m& x' A' x/ {, E5 A+ O; i5 S) s( s! n8 h
#define getXInvCloseFixBtn() RX(0x3db)* |: a8 A) h% ^4 S6 ?: j: ]0 h
#define getLInvCloseFixBtn() 32
4 A: e; K* C, V2 H; k" z#define getYInvCloseFixBtn() RY(-0x63)1 G, j* H# N( A$ J9 z$ s" v
#define getHInvCloseFixBtn() 32
, t0 d5 T( v I! j' L4 e1 d4 Z#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
. {% |, { j% T9 H
3 x& A# p. u9 ], V2 oBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y) u |& }; t( C0 \7 j Z
{; C" G- A7 c3 N. w
DWORD mx = *D2Client::ptMouseX;
& k u( D7 h1 E9 J* H8 j& s6 {5 E5 R DWORD my = *D2Client::ptMouseY;5 a6 U! u- W& h1 a& u7 y9 k' b
if(isOnGoldCoinFixBtn(mx, my))
3 o8 I8 I9 |- L$ p& x return TRUE;
, v6 G! @9 M* N: b7 o9 L6 X4 W return FALSE;
* U- P, {/ Y: `* ^+ h# I4 l! f}
" Z* x2 y; g, p6 d" @__declspec(naked) void caller_goldcoin()
# t) u0 `1 v6 z) R7 U{" j) r) Y9 S/ U5 g+ Z& E0 S
__asm* S p; p0 t4 @3 Y1 m& {
{7 d3 q) {, ^4 R" D7 ~
push ebx
2 x# g; X- t1 f$ A! A( z) R mov ecx, esi
9 K! u0 I# v5 `& {' e mov edx, edi9 M& O" V0 d% w9 o$ f
call m_NewStatShow_goldcoin- N# g0 ?& n4 _
pop ebx1 k" ?' J4 G( X7 G6 L7 q8 B
pop esi
- \, G/ f3 e" d u( F retn
5 m7 R* a' O+ `0 W L. b8 E5 o }
m" w1 f6 k% r}
! `& S `2 j; fvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]); n; _* U1 T: R/ I g6 J
{ @. y! l8 V4 n3 O7 j
if (*nXpos > D2Client::ptScreenSize->x / 2). N+ q# K" E" Y# r, s, d- h) n, {
{
) j. i2 Q0 j) j1 w; i i5 y *nXpos = getXGoldCoinFixBtn();: Y6 j# o/ s# C' Q$ L8 \
*nYpos = getYGoldCoinFixBtn();4 g, X [. h2 X* T
}4 m! |6 F0 H R0 F6 ]& q
}# r% F4 \) M/ S: m# z
__declspec(naked) void caller_goldcoinimg()
' A( Y$ l) G1 }$ K2 \! p4 h7 c{
" V- l( ~4 b' h+ q7 q" { __asm
8 k: U$ h" M2 o {
! z) A5 O1 ^1 j% k PUSHAD/ L& a8 e) A3 o1 U5 `, B
lea eax, dword ptr ss : [esp + 0x38]
9 a {# M5 h9 W% `( Z+ w push eax
?; g& x2 I b push dword ptr ss : [esp + 0x38]
/ A9 K) n5 X( e1 k3 w( P$ n push dword ptr ss : [esp + 0x38]
! @( D$ j' X' A, T) e0 M lea eax, dword ptr ss : [esp + 0x38]
0 W3 Q: D' U4 z1 o push eax s* A( x" [* A6 G/ g j/ l' O
lea eax, dword ptr ss : [esp + 0x38]
" V1 x, I) M* U5 K push eax! N- V7 w8 l- K6 u( {6 a
push dword ptr ss : [esp + 0x38]
' a: p' j$ s1 K( f5 ?! h" N call m_NewStatShow_goldcoinimg" i, J. l, ^7 G" W" ?
POPAD% A# H3 A/ X& Q: ~3 {
JMP D2Gfx::D2DrawImage
- I1 K& ^1 u6 N. M0 w# ] }
) U( E7 [4 n* Y5 I* `# E}5 G# _0 a b$ Y' p9 {! P5 L, o
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标5 @' g& D. L- D9 R+ Y: V( Q) l
{
2 g, j0 ^; C6 j# |1 j+ X+ c0 v if (x > D2Client::ptScreenSize->x / 2)
9 h+ T! E* k7 w% z7 {& G {
/ A4 K! G: O. I: Z: F Q *y = getYGoldCoinFixBtn();
4 ^0 @- g4 q \8 P& A return getXGoldCoinFixBtn() + 32;
. ]4 K, P' u7 [1 U) v }9 B9 H) O# o3 ?. {$ g+ T- X
return x;, o4 E5 b" I% r. g/ }
}3 ?' J7 N; Y# m
__declspec(naked) void caller_goldcointext()
3 N( G7 c6 ~( ?' J4 T( ~{
2 X4 b, f$ ~8 V. U __asm
/ w2 C3 @8 G1 w. e1 e {
* F+ |8 o, F) p5 C* ^0 h PUSH ECX- {7 M* v( ?$ x% i
PUSH EDI% o X* H8 { N2 R9 f" s+ s4 f
PUSH ESI% h$ a! i( P" g6 t2 Y
PUSH EAX# }+ B4 ]* K# b8 @. P% g
MOV ECX, EDX: n$ L- S# |. b1 Z' |4 p6 e
LEA EDX,[ESP+0X4+0X10]
! N, _2 Z. U, H( a! z CALL m_NewStatShow_goldcointext K: C# x5 C" t. x4 L. o" Y9 q7 c* m
MOV EDX,EAX
: ^6 k* M& y$ L$ |# ^) w0 D* c7 N POP EAX3 b7 b/ ?& h' v
POP ESI0 ~% p9 h* ^- j# x; h
POP EDI
0 l. Z( `2 U6 h POP ECX m# y+ P- U6 Q7 |& { a: T
jmp D2Win::D2PrintString;. | m: M8 ~7 Y# p
}
, n! P) L! L% G/ t. r}
7 [! Q- w4 s1 W5 P2 o! w
3 _! |& G k( _1 d* X+ G7 _BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
% M6 c$ n M, \- P5 b E& G$ L; A0 J{
; K. ~5 m1 C' i8 b DWORD mx = *D2Client::ptMouseX;
2 `) ?$ p$ R7 a A, Y: g DWORD my = *D2Client::ptMouseY;
0 e! k+ r8 K0 U0 ? if (isOnInvCloseFixBtn(mx, my))
1 E) I) k1 |$ ]0 W0 R return TRUE;
% q; U3 i# [2 q5 m return FALSE;
8 n0 ]' W/ }, }* r7 r2 t}
3 m( r8 B0 _5 z! @8 ]__declspec(naked) void caller_close()' }# c7 _: _4 r6 t9 A9 W4 m
{
% K9 n9 G3 I- q __asm
2 Q3 i/ w! f; S3 d* T% v8 A {
! u" ~. p8 z) X+ U) I PUSH ESI$ a/ T. Z$ {' K7 `
push ebx
+ _7 b2 T2 t) P, C8 \$ X, H0 _+ D call m_NewStatShow_close
+ E5 V9 b$ X# v& l pop ebx
2 O2 C, h! S6 {. `$ V pop esi
. y$ h+ c" @( {, b. t, @; [ retn4 ^3 @- K V0 ~! |$ `
}
8 H% m" c. k5 ?4 e3 g* A7 F% t# N}
z2 B! v( h b- Yvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
1 [$ \/ U y0 n; t{. [( w, w# U1 S0 Y# t/ a
*nXpos = getXInvCloseFixBtn();6 M' M9 N! d& J. O& f& p+ D2 f
*nYpos = getYInvCloseFixBtn();
; t6 u8 P- W8 H% Z) Y( B}4 [1 j9 O' S9 U! E5 w& z
__declspec(naked) void caller_closeimg()
8 k' d4 T7 N0 x: X& t3 M{' |( w) b, E8 q0 r0 E
__asm, K! j, E2 }1 \# a/ z3 E, _8 T
{! \2 B/ J/ R* K, D$ H6 b- h
PUSHAD# U* b; H$ z3 F
lea eax, dword ptr ss : [esp + 0x38]+ O" m, m; G& w. d) e3 U
push eax4 D: L" ]" n2 s* ]5 `
push dword ptr ss : [esp + 0x38]
. @- |" y _' `/ r1 B2 S) A+ S m push dword ptr ss : [esp + 0x38]7 M) S$ Q8 d8 N4 e* Z
lea eax, dword ptr ss : [esp + 0x38]
. u9 o; B9 ?( Y push eax
5 E% j4 \2 g E; \1 T/ E$ S lea eax, dword ptr ss : [esp + 0x38]
3 I. C& c* |6 z: \# H+ P push eax h8 S& M+ h% W" o0 }3 J
push dword ptr ss : [esp + 0x38]
/ v7 z4 V$ u3 |: j( k/ W call m_NewStatShow_closeimg! c) |6 O5 w( h% ]9 O: H
POPAD
2 p; \/ Q5 q$ l; F* A6 D JMP D2Gfx::D2DrawImage
- m! L% }; L8 O f% T' T( B, Z }
8 ^( i- F- R1 k; s- \}2 z5 u: k, e% n. S8 O+ S! ~
- w/ O5 u# C! o% ?8 P+ n) o/ M' h4 F; F Y9 j3 ~; T
|
|