|
|
转载
8 ?: r- s* J1 \# s0 W; j8 z& QBY SJ6 F; D5 x0 ]9 C/ ^, T
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
$ O9 k- w: t% K+ a* n' ?6 [
3 H6 T* i+ i# m7 e9 J: d+ ?/ R) QD2Gfx::D2DrawImage-10041" w; f1 }2 Z& }: J
1、修复技能的背景(不需要可以不要)
. _) f( }- B3 K. u% woffset = D2Client::GetAddress(0x77AA8);1 q- N) M, U. H
Memory::SetCursor(offset);2 g+ c9 r( k9 U) i
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);. p( W3 V* C3 f0 r' f
4 F( Q' q6 _- Avoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
) q; M3 K( ^+ c) Q9 `8 k+ c1 U{) ^$ W4 o0 `1 C4 O1 T# x) a9 X5 Q
//Init data for print image
' f$ w/ H7 b: }7 U sDrawImageInfo data;: t l- L0 R+ z5 u
ZeroMemory(&data, sizeof(data));
8 w4 m& r0 }2 s; C& L s2 z- L, D0 E" H+ t% ?* \
//print background
: u- @3 a3 B4 o3 {4 V% c' B( ^$ k setImage(&data, spellBackgroundImages);
/ l. Z$ t k6 a4 j+ w setFrame(&data, 0);
! t7 }" [9 g6 K/ }, l$ y int fixx = 511;3 z6 {% h$ I2 H. t( p4 s
int fixy = 9;- I9 ], ]# Y: N4 O7 ^
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);& }! K" P9 c9 z9 Y- i0 w1 K2 _
setFrame(&data, 1);
. t2 ~$ r- a" b D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
0 r2 X. S8 H' P setFrame(&data, 2);0 G5 ~1 | X% ^, H
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
- V" E# `6 e% Z. S' F( P- M' a setFrame(&data, 3);7 _( X5 X3 `; _' S% H5 [
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
+ ^* I) [6 G/ }- P}
& i) n5 C3 i( k0 l+ X__declspec(naked) void caller_SpellBackGroundFix()7 V1 A# [$ d# ~- ?$ h4 e6 [5 z) {
{* k) N! k3 D" [/ f5 I
__asm
8 l9 n w: z- [9 E {
: R U" I1 `1 N& a0 v' r PUSHAD
; c0 | B \1 h lea eax, dword ptr ss : [esp + 0x38]6 j6 S' W" y* t; s
push eax
( f4 U' R }! X( e push dword ptr ss : [esp + 0x38]* O0 o: f% T8 W- d0 A
push dword ptr ss : [esp + 0x38]
6 A2 [% J% p8 k lea eax, dword ptr ss : [esp + 0x38]7 _" u* N$ N- y" F" j
push eax
. h* a/ O; \% x2 |0 } lea eax, dword ptr ss : [esp + 0x38]
# @$ a0 |0 f' f9 I push eax2 |% e- Z" \8 y$ n. X
push dword ptr ss : [esp + 0x38]0 }, |; c5 d& U# V3 D3 y0 K, j; l
call m_NewStatShow_SpellBackGroundFix
/ m1 @" p) ]3 y3 a( K POPAD
" f+ V( M) p. [ JMP D2Gfx::D2DrawImage
8 R7 Q# Y, K [/ r9 G }& r0 B& k8 q# q( r
}: y5 P0 k' w0 E* W! v; V. G4 d
% v n4 [/ b# O1 R9 o& |+ E
2、我们如法炮制小站的背景
' r1 O* r3 Y5 R) o, n' c0 D+ F; j! J m! @- A6 E8 i
offset = D2Client::GetAddress(0xAB010);
! L9 K" O8 z- m* Y5 o& C" J3 e; H( BMemory::SetCursor(offset);
! d' [" J0 H( V% RMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
3 }8 F, W; S% I* H( E Y
) n J! E+ h& Bvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]), J% d5 E2 H, ^% k
{
5 C7 U6 n1 Z* W //Init data for print image
! N) c$ g# U) C% }* K( F* i sDrawImageInfo data;
' k0 {9 m- G' s ZeroMemory(&data, sizeof(data));
# G1 n2 m6 A- c8 C5 k f9 _$ G) ~
//print background$ o# R5 I3 k1 c% e; x, L" Y
setImage(&data, waypointBackgroundImages);
/ J. X% Q0 T0 o, u! X, d1 | setFrame(&data, 0);
! h; q+ d: O: \; ]" N9 M) a int fixx = 0;
! [2 G) `9 h- X$ C int fixy = 9;, _; w. U- ]6 d6 U; b* Z1 C: E0 H
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);9 Z. A' z* r6 ~+ u0 w; s% y( [- T
setFrame(&data, 1);+ ~, d( g# [7 e! X9 M! U* @. `
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
; P* ~! \6 i; ]3 @! ~5 d+ H setFrame(&data, 2);
7 i" o, T1 @* P5 M D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432 p$ q* P+ m5 n
setFrame(&data, 3);
/ g, j- d. A, A$ W D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);, s* i- p, s% Z# u& f
: z: y2 ^: q {, ~9 {; L
}1 V6 p; g$ ^0 c% P# W6 Q& O2 i
__declspec(naked) void caller_WayPointBackGroundFix()
; G% u- M- G) M- c{& t0 V! j" s2 M# c# s: P' R. i
__asm
4 O7 J% ^. G. A4 [% d! k* M {
4 O2 C% y a" q2 |; Z: T6 g& P a PUSHAD
# d) h8 ^% e3 l( `) J6 T) U) A& H lea eax, dword ptr ss : [esp + 0x38]: w, ?" ?( P4 ~( C# P
push eax
6 u7 [ ^* Z0 a2 ?. u5 [2 P; e push dword ptr ss : [esp + 0x38]7 Q! Z: Z. |% G+ `
push dword ptr ss : [esp + 0x38]+ D) L$ E0 C0 |+ r
lea eax, dword ptr ss : [esp + 0x38]
7 X& q0 o: s2 b push eax
) j1 V8 ^: v o) d) y( }5 C lea eax, dword ptr ss : [esp + 0x38]
: b1 F5 w; x0 s# V: T push eax) Y8 }6 J+ h v4 G7 g, o# v3 b) i" Q
push dword ptr ss : [esp + 0x38]4 u7 f- P8 o6 e; z; O0 D6 Q
call m_NewStatShow_WayPointBackGroundFix
! ], f4 } v; x' E4 ? POPAD
6 w# V7 g$ r. I. f JMP D2Gfx::D2DrawImage, P& k8 M0 r+ a( q- u4 o' S( z/ d
}
# U+ a9 F$ r; ^# B, A; i8 h}& ]1 ~2 L# w* N$ T- j$ S: Q Z' w
+ j$ l7 N8 v |8 r9 p0 I
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
! t2 g3 M2 U3 n6 p' V0 t' V腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)* b6 r" p' R# b4 C. v4 Q
{9 U% a8 y4 J8 C2 x% Q% t2 j
class D2MultiRes : public Library<D2MultiRes>, G) _2 f# y8 p5 {
{
: h6 D% y- O1 X# E$ P7 J public:
( Z* m, H$ _ C( R7 r5 Q static void Init()1 t1 i# B: |( C% k
{/ R2 y7 f, ~" N% l; t
Name = "D2MultiRes.dll";
5 U2 E% Y. p1 ^& }2 l# ~. E# u$ C Offset = LoadDiabloLibrary();" m8 m0 E! B& z: ~2 c$ L
}
/ l. J( F5 U. ]) o };2 a' l0 U# d4 u% g% L
D2MultiRes::Init();8 Y- g, c2 b6 A! W z
D2MultiRes::HookLibrary();
9 x* w4 ~: r" Y# j. K/ R6 d
# q* Z5 i3 w: P: w6 x. S1 u- o
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);. C9 ~) a9 S3 |# n0 T( X5 V& q/ C5 x
Memory::SetCursor(MiscFunctionsOffset);
/ Z) R5 |- p' t9 h Memory::ChangeDword(0x1b0, 0x200);" b$ J5 N- T6 Y( v$ m/ \& b/ u$ _
! R0 t/ V1 d$ q. Z' a$ @
3 f0 k' k# i4 r; I) e4 Z+ v MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
% Y8 x/ b0 O9 m$ C2 k Memory::SetCursor(MiscFunctionsOffset);- x7 M0 g& u9 }: p
Memory::ChangeDword(0x140, 0x200);/ g- K7 h0 u5 e# Y$ c; y
# J8 d/ O# h4 [7 _
8 n& ~! D* ^2 |3 f! u+ m
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
. W2 I4 C2 I- K' H2 | Memory::SetCursor(MiscFunctionsOffset);1 r9 D4 M9 e) y, x- I9 k% B7 i
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
. n- n) o3 h, \& Z6 n- h! R, t2 y [" S; z2 O8 h
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
) m$ j5 V( T! D( A* w$ n( W& Z1 l Memory::SetCursor(MiscFunctionsOffset);8 O9 f/ G6 b+ W0 ~* G8 y- W/ f
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
3 t, w( N! k3 F# S
. R/ e5 `( ?% u0 i MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
, ]" u- C8 {4 ~5 W Memory::SetCursor(MiscFunctionsOffset);
" m, s3 ~; D* U7 ^% V Memory::ChangeDword(-0x280, -0x400);//这个不要动
8 m& V; l* ?. R! ?8 L9 b; L8 K }$ @, o! `- X+ d. ]# U* J# u
* Y4 m; }0 _) D6 o; q4、快完成了,是不是发现金币啥的位置不对??4 q4 i. r. A8 |) n' P# N
, o2 v7 ^, J. A, B//这里修正我们的装备栏0 t% {0 m) ^8 B. T
offset = D2Client::GetAddress(0x99B6C);. ^ l. C9 Q, B& G' r
Memory::SetCursor(offset);9 E1 D* B5 b7 @+ B3 M
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix); h, P* q$ K+ L% F3 X" A6 c+ ?
2 A- b% w- n% z5 V offset = D2Client::GetAddress(0x99BA7);
7 X: i. p- v! G# V& X) w Memory::SetCursor(offset);' h' l9 U9 j* X/ m+ D2 \+ r6 A
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);: O+ I' J; j u3 h% B& z6 L
& K! j8 R" ~8 F8 w" `
offset = D2Client::GetAddress(0x99BE2);
+ W5 S; ~' ?0 L Memory::SetCursor(offset);
! l$ m8 L4 r# W8 A. r/ _7 O! P& l6 { Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);6 Q7 q( _9 Z. n( ^
# @( C8 s+ i9 I9 O offset = D2Client::GetAddress(0x99C1C);
/ e: ^) D( z% D' ?2 ~: e6 V2 E Memory::SetCursor(offset);9 m; M6 s( |4 z3 m
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
& _- l$ m* |5 q* x$ _: g( R, d/ H. J! z
//取消两个popup,偷偷懒不过分
6 }( r6 t1 N7 a offset = D2Client::GetAddress(0x9386d);
$ I$ d% j8 |. M: u) a( j Memory::SetCursor(offset);
' O; B3 j, m: q) a* A Memory::ChangeByte(0x8b, 0x33);
3 w9 l* l. A; _7 t( N, W Memory::ChangeByte(0xc8, 0xC9);
: j3 h& o- m, g& e k" y offset = D2Client::GetAddress(0x9390b); k/ c" W1 h4 j, b# z
Memory::SetCursor(offset);9 A1 Z# a* I! A
Memory::ChangeByte(0x8b, 0x33);
: R5 N% Y% @& n }, Y4 S+ X) |; M Memory::ChangeByte(0xc8, 0xC9);
! X4 V. e( S. {& y) p8 t# x9 u* P3 d5 X
//修正提取金币3 q7 }# y- ~+ K' c$ C9 ~: m
offset = D2Client::GetAddress(0x8D3E5);5 |$ H; i" Q0 _7 D0 l l
Memory::SetCursor(offset);
/ E# e+ }1 m# I8 Q# ?, y: {/ u Memory::ChangeByte(0xA1, 0xE9);. d' [0 U! X$ }% G0 N/ H
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
0 K, g& h' y% d3 y9 ^6 n% Z# i. @2 K- w; ^! O" |. N0 p
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);0 f1 l7 [7 T& S7 o. w
Memory::SetCursor(offset);
: w7 @2 s# p/ A8 e2 s3 B Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);- Z* c/ o7 |; o; O, N1 U8 f5 O5 ?
6 w. [& ^1 |3 V$ Z! J% x offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);( ~6 {1 z0 A& W5 r W+ i' ^
Memory::SetCursor(offset);2 M8 b0 U' e* R& `
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
2 ^( Y; N, E" {- r1 Y" c9 f' h9 x7 ^3 D$ i
: m' h" k' r7 R //修正关闭按钮; ~2 }, B5 p. Q3 A ^# w
offset = D2Client::GetAddress(0x8BD90);# J0 A9 R1 R& _3 m, i
Memory::SetCursor(offset);# e' e, G+ T3 a% k) P! J
Memory::ChangeByte(0xA1, 0xE9);
\1 I; P9 {0 |0 k3 D1 V Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
1 @- O0 _2 F/ m2 a+ r
+ }% Y/ v$ W+ M: y offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
5 b- p7 ^' ]) R" z1 l) f5 u9 a Memory::SetCursor(offset);) ?# N! }( v t5 m; W( i1 |5 `
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);; X' g8 f) S- P
/ [$ r7 E% h1 k8 | y
: N5 W/ H0 K8 r- J& P% @; s//以下是细节2 H7 n$ }6 ?/ H2 [4 {
#define getXGoldCoinFixBtn() RX(0x2d0)
, O3 U# j8 P" c" C. _' k3 L#define getLGoldCoinFixBtn() 32
4 i9 Z e7 v- W5 G) y#define getYGoldCoinFixBtn() RY(-0x59)
5 z3 I# z2 m: |: w9 z8 X#define getHGoldCoinFixBtn() 32
4 d( A- A- c8 a; C) A# [7 O' d#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
2 R6 r" J" \8 e. x7 D2 u- x4 x5 c9 _/ ?$ f7 |- H/ S! F* w- n2 @
#define getXInvCloseFixBtn() RX(0x3db)( C( E. j/ i3 P9 _& r6 e% P7 i) J
#define getLInvCloseFixBtn() 32
# }$ {* B- c8 S8 K# ?3 C9 P( e#define getYInvCloseFixBtn() RY(-0x63)" \ p. [3 Z$ h; L( k/ f6 u
#define getHInvCloseFixBtn() 32
* D3 r$ x9 w+ M$ p# Q P#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
. R7 Y5 A& h1 i+ a T$ U2 y' k8 C* @. t5 D
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y) R) @# {! ]" e8 ^/ o
{; q- T0 E2 k- x
DWORD mx = *D2Client::ptMouseX;
. D+ y, ^/ R0 q9 P9 x* j; [; Q DWORD my = *D2Client::ptMouseY;
9 U) a/ j, @) H if(isOnGoldCoinFixBtn(mx, my))
. N1 p X5 O9 {8 V! ]/ a return TRUE;
3 ~' J# ^& M% N' `: Z return FALSE;7 Q2 F* S/ V+ q A8 R* X% W# Z4 C# [
}, f$ ^- u" c& U8 W
__declspec(naked) void caller_goldcoin()
" i" ~5 F- J- Q' V$ O/ R{
' O& ?9 O* i! h$ I __asm
' i: V0 M0 K* M, j/ j" g1 N {
+ m( V- H% D! s! d2 c. S push ebx$ a; U7 K, K: h+ ? `
mov ecx, esi
, B' {9 H1 m1 N" w: }2 H' `) h/ s mov edx, edi4 k, Z" g+ x+ \" Y
call m_NewStatShow_goldcoin) P( E, O! y: ~% [" f: {
pop ebx9 _/ y l$ w& a' x
pop esi
4 o4 [& p( u! U( o retn
4 H8 { T2 V6 z. T& x }1 z( q: k. b1 v! ]
}0 Q; v$ R5 ?" y' Z6 W
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])* t4 {; q# M( q) I6 F* I' n; z
{3 ]2 {1 i8 x' X1 g$ r
if (*nXpos > D2Client::ptScreenSize->x / 2)
( F4 Q0 v+ ~7 A {; c$ b) t* Z0 ~) j2 J
*nXpos = getXGoldCoinFixBtn();+ O; a8 D/ n6 R* a& M
*nYpos = getYGoldCoinFixBtn();$ X+ V8 `' T: x; z0 [: S. f6 _
}
! e( q3 w$ a7 u& J1 [}8 f* S% \8 ]: \7 V/ d' c8 d
__declspec(naked) void caller_goldcoinimg()
9 k# b9 a* {4 ]- \* ~4 [- ^9 z d9 _{
: Q8 Q" h' f! ~# y4 X( d0 e9 v __asm
1 T! }' }8 ^& H$ d G B- } {
$ V$ |8 {" B& P: `7 U& D% P PUSHAD% u- G/ X; J- h! P5 U, G
lea eax, dword ptr ss : [esp + 0x38]
# O0 Q- _( q7 \& ^9 S push eax
+ I# b* X7 j* p push dword ptr ss : [esp + 0x38]
! \3 O1 A1 X5 h# i7 I push dword ptr ss : [esp + 0x38]7 r( n1 R4 t1 \8 M* Y
lea eax, dword ptr ss : [esp + 0x38]
/ `# t$ L7 `: L4 m- A+ h push eax
1 R2 `7 P/ k3 a lea eax, dword ptr ss : [esp + 0x38], z3 @& N3 C0 c! J2 v
push eax8 ]" B% z/ I( `. D
push dword ptr ss : [esp + 0x38]* z% I) p( [5 B! X) u4 V2 ]
call m_NewStatShow_goldcoinimg
' \) }1 W! x' ^% M POPAD
% U: {( W! x7 V JMP D2Gfx::D2DrawImage* J$ m4 W( ?& q5 W
}3 F1 |5 Y( H) ^
}# E3 y# Y, [' G6 G% t# `
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
% a$ }, H; L# p1 X9 h% }4 ~" T{
# B- m7 [" v4 H2 R0 R if (x > D2Client::ptScreenSize->x / 2)- N+ P* k# u$ G4 k) N4 w1 y" ?# k
{
/ C7 Q+ }1 d8 H% A, u; q* E' W *y = getYGoldCoinFixBtn();0 @# `( O' Y" M& K: {3 Y
return getXGoldCoinFixBtn() + 32;! g p& m R1 R3 f9 t
} ^0 Q1 @ z s, K
return x;
* Q; y' N6 @1 `( h7 K& E, A0 K}. a4 [* m' M: m& R8 `
__declspec(naked) void caller_goldcointext()
* B/ \5 m- y( ~) i) X{
% Y! d; }6 j4 g5 x6 H: J __asm% U2 G5 |! g% \: A! {( J
{* |2 V3 o/ R& Y9 X0 n9 X
PUSH ECX
0 ]; S! E6 g) `0 g K PUSH EDI) s! r/ T: O* o3 ^, Z; \ Y) X, A
PUSH ESI9 z1 f( F/ h, O* }4 v5 j
PUSH EAX0 C, s& }. y) v; M% f- H
MOV ECX, EDX
4 J4 }/ {7 a0 Y5 r( n" J7 j$ u LEA EDX,[ESP+0X4+0X10]) y6 d; K8 H- @0 Q
CALL m_NewStatShow_goldcointext+ ~& o* ? K$ \ F, H
MOV EDX,EAX
- {9 @1 H' a! r3 I4 H7 Y POP EAX: m g* f" X. H
POP ESI( a1 P& W) S4 L4 E6 O1 r5 i
POP EDI2 r+ D$ ^0 l% _% L8 M, G7 [. j
POP ECX
; X/ Z" [ [3 z% I( ^* w; K! J: H jmp D2Win::D2PrintString;
$ E2 Y4 I( q! p' O- H" w, {7 s }
, a3 U* x9 b1 B/ ?' k/ h}
" E p% N( R M& l; C# S/ ?: F, k3 \- j4 u3 O' X; w
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)0 {! u4 M) Y- v( o2 q: B
{
8 g0 R$ b, s4 H DWORD mx = *D2Client::ptMouseX;" {7 o, D& k' _5 b( z+ \
DWORD my = *D2Client::ptMouseY;, r# U) ?. s. s+ p0 u
if (isOnInvCloseFixBtn(mx, my))' u P; [: e, m5 G* E: \: q! R/ M
return TRUE;$ ?0 }, J2 J; v
return FALSE;% q/ N; \# n+ v5 n- J& W/ ?# k
}
3 Z& ?: Q" Y V! {/ t: {5 ___declspec(naked) void caller_close()1 K+ ?# I) j e/ p1 M8 L4 c
{7 S/ s$ r* Y4 g* i7 I5 E9 U
__asm
% ~/ p9 H+ |; B h1 E# T% N. E! \# ?" D {
) ^- D4 D9 q, @# {; M PUSH ESI
* t( f* _; V" S2 i7 c5 B push ebx
# O) W( u/ ~3 b6 p# N, u6 e call m_NewStatShow_close x+ a; ~- i( J: o4 T; v
pop ebx
" o# @+ W; h+ _- F2 X* M pop esi
& d6 E& N- g: |; l8 D6 J9 H retn7 g# b% ^ I2 i, U& B# f
}: R' j9 Q% X; L7 [
}
2 D" P; o$ X6 dvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])- W, `: H" U; B0 v
{) z. _ e1 B$ f% N2 G
*nXpos = getXInvCloseFixBtn();4 }! u1 V8 L4 q# }/ Z
*nYpos = getYInvCloseFixBtn();
! a0 H: v" L: g' ~3 e/ U/ i}' P1 ~: u8 k( x5 [: Q
__declspec(naked) void caller_closeimg()
- k+ i2 F* c7 v3 g# e{
" A, e' l' b2 \. F- ? __asm) `& T/ t2 O/ W1 B
{- I+ g* p M& T% X$ T
PUSHAD& D9 j- y! y9 z1 l$ S0 m" ?
lea eax, dword ptr ss : [esp + 0x38]
) W; I5 _5 Z. g push eax
* m5 v4 b) w h# l. [5 B push dword ptr ss : [esp + 0x38]
& Q9 p0 n& M: i1 g! J: }2 h push dword ptr ss : [esp + 0x38]
n/ e% S* F: g) E7 o lea eax, dword ptr ss : [esp + 0x38]
7 O/ P5 w1 r- R# { push eax
7 x5 @3 ~9 ?* [% f: R: S1 o, C lea eax, dword ptr ss : [esp + 0x38]
! b( I l# L& g/ R push eax
1 a* X9 \ B& K2 N% S& B5 Q* V push dword ptr ss : [esp + 0x38]* C+ A" ~% v0 b" ?( s* {4 a
call m_NewStatShow_closeimg( [4 U& z S6 j& @
POPAD
# }* s$ w8 K4 L9 }% ~ JMP D2Gfx::D2DrawImage* g9 O+ I6 {; s1 i2 F
}. h7 X7 D! s4 x x& b. I" P7 |# A
}" e) v! f" X* f( O
% Y. O5 [, |$ b( d- g5 `! K7 F: L# `5 T& H. q( ~
|
|