|
|
转载4 i# r) Y( R9 D8 g
BY SJ
$ O3 t! B- ^1 I l o首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)0 W/ P0 M& J; {8 n6 p
: Z# c/ Y2 I$ i, ^
D2Gfx::D2DrawImage-10041
, h* d! Z) p$ `( t- H7 R) Q8 I1、修复技能的背景(不需要可以不要)
& @: Q2 ?0 o/ Z+ v: x. xoffset = D2Client::GetAddress(0x77AA8);
: A6 I7 c" ~0 r+ S, Z+ T" |& kMemory::SetCursor(offset);
?" Z% q3 |4 {, n, rMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
4 @: J3 g( z5 u0 b- o3 U5 l8 w+ Z4 H# O2 d
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]) e3 S0 ^6 m2 F% W1 b: u
{( T2 r% G0 k, u0 C7 e
//Init data for print image
% l! ~0 L* Z2 s, S/ z4 e3 K7 H sDrawImageInfo data;
* o/ ^: d, D. z2 M5 B4 @# Q+ H ZeroMemory(&data, sizeof(data));
/ w: X- g7 {* S0 V/ J
1 ?& t' d3 n- j |4 J, G //print background
$ Q7 L$ \0 a5 @' d) U- C8 y setImage(&data, spellBackgroundImages);
* o5 Y; X$ a; t) h' v2 W v+ R" ~, E setFrame(&data, 0);$ y3 `, y. L6 `! l" @# D( b( u
int fixx = 511;( @2 R# n" K9 U' p: e# Y- q
int fixy = 9;
W L4 u+ V- R+ [1 \ D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);7 |. @# k' S) g: ^
setFrame(&data, 1);7 j( O( n" _% b7 Z
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256, a5 |1 m: y9 d/ U8 D
setFrame(&data, 2);& B8 S( H$ Y: H$ V4 t2 y
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
3 x8 Q0 `1 q$ [ setFrame(&data, 3);- I% `( C' @5 i4 O
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
& W9 H( o Q; m9 e- G. c}6 n2 t; I' \7 G" X
__declspec(naked) void caller_SpellBackGroundFix()
8 I6 @6 H2 O) ?( J{& e% |) z& M4 w' I6 @6 Z& ~# H
__asm
6 F1 i* b7 j1 a, K+ s {/ I# \4 x7 J% O6 ?- e8 J. g6 n
PUSHAD$ A- K2 `! h; j3 o
lea eax, dword ptr ss : [esp + 0x38]
6 [6 P) ?2 {1 C* z% j4 Y push eax
7 v* ^* A* X& v- t' A" Q push dword ptr ss : [esp + 0x38]) g( J# ~/ B' B: Y4 O% x
push dword ptr ss : [esp + 0x38]8 s! o- Z% Q; [' b$ U, i: o* @# J
lea eax, dword ptr ss : [esp + 0x38]
: f0 z! W& d* ^8 i. J push eax
W" R7 R& P5 ^8 U7 Z- V7 T lea eax, dword ptr ss : [esp + 0x38]
1 W; j, t! G3 S# l; g push eax; j, ` u4 [) f0 e
push dword ptr ss : [esp + 0x38]" C: n7 x: Y% s# \0 r
call m_NewStatShow_SpellBackGroundFix/ S. k: k/ u$ {
POPAD
8 h! b0 Z0 W* m! i i Y1 C JMP D2Gfx::D2DrawImage
8 }! A* @# ]8 y: g; j: Q# A }
\9 Y* {4 u! Q8 E& p}
5 K! T: X) r6 @5 A3 d2 Q, t8 V* x5 o. J/ g
2、我们如法炮制小站的背景 V2 w8 h8 |+ s9 c# t- m
8 o; d' Y/ ]. {# y! A# x3 J/ k5 Toffset = D2Client::GetAddress(0xAB010);
; Y8 ] W% b4 Y1 s! l( [0 `Memory::SetCursor(offset);
5 g2 N; @; w( C5 hMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
' o' G+ x- t# O) e- D& H% C+ K
- m& }7 ?* q: ?; _void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
$ l% \, c, _4 V{* _/ {5 y0 L5 d* u8 r
//Init data for print image8 V4 n5 t+ G9 f$ y! Y- P
sDrawImageInfo data;9 g9 l% y8 z, a9 o! k& X# _
ZeroMemory(&data, sizeof(data));2 V6 J m& U3 s4 W! F5 v* ^( w
0 E& u+ }+ a0 W/ l, h //print background- g8 n, t+ T3 {" V
setImage(&data, waypointBackgroundImages);
5 u& d7 s. e6 @2 _0 g8 S" C8 E setFrame(&data, 0);' v! H4 T( d# t: W; o0 S
int fixx = 0;
% S6 p' z7 Z6 V8 d int fixy = 9;
% J: |- A6 W# u# n+ m D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
5 w* g5 T T: a2 V+ C setFrame(&data, 1);
: L3 G+ m& y0 {1 ] D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256# c( Q3 R3 l, s" G. u3 s7 w
setFrame(&data, 2);( u0 B4 f1 [- g: b7 Z: B3 ] j
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432& v; e8 i2 y8 @
setFrame(&data, 3);+ c6 g) f/ G9 F5 I
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
) Z3 h/ O/ `. _6 l+ `! a. q
3 a5 J9 C4 u5 p: D! _5 p2 M% t3 k}
( X1 n3 {2 q) n/ G$ e__declspec(naked) void caller_WayPointBackGroundFix()/ \8 H0 K7 W" q% \5 U
{% t' d5 }6 n$ m7 N6 l4 p' X; a
__asm
& Z+ G# v2 ^2 C& p {) F3 ], {7 h6 v- ?( Z0 R# H9 ?
PUSHAD
4 |7 A! N. Q+ k) \2 y' m% N) O9 S lea eax, dword ptr ss : [esp + 0x38]3 f% \- [1 \8 k1 O8 l4 W/ t0 _
push eax* |9 R5 [; @" d6 l4 u- b
push dword ptr ss : [esp + 0x38]
6 |+ T8 X$ O& b6 h' b* ] push dword ptr ss : [esp + 0x38]. e: a- O' K1 [, T( `
lea eax, dword ptr ss : [esp + 0x38]$ e& |( U& m4 Z3 c" b2 I
push eax
7 _% H% r7 H' a' p' E lea eax, dword ptr ss : [esp + 0x38]+ E$ _2 } \7 }' c: X
push eax. a( Z6 ~. `2 J' G2 w% g
push dword ptr ss : [esp + 0x38]
7 V7 t# r8 w$ ^7 n/ W call m_NewStatShow_WayPointBackGroundFix
" {! V+ ^" }% h; M. S POPAD7 r! S( H/ l7 i- g- K3 N6 m
JMP D2Gfx::D2DrawImage) B: y' y% d Z# L/ G8 x$ C3 {
}# H. i. ?3 f0 Q V
}9 e5 e. M+ g1 g* |# s
/ O% ] u% L# W% A1 A
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
, I; [7 U8 ?" h2 `2 ]腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
) x1 b+ p- f# |6 ?" I3 p {3 {/ }5 U$ ?6 f7 m2 }% ^2 m1 {
class D2MultiRes : public Library<D2MultiRes>
$ X9 o) Q: I$ Q. Q% V# ]: [4 I {9 q" Q* _" L4 o
public:5 \7 ^7 {5 F" J1 A( j: l9 R
static void Init()3 { y. x% |* A
{1 u' G7 l+ Q* X6 @# B
Name = "D2MultiRes.dll";
6 I8 g* d2 P! [ Offset = LoadDiabloLibrary();
1 b( X8 C. ]% ^6 N7 f1 _6 a }, O3 f4 ]& q. |0 J4 f
};
0 j1 U5 F1 a3 f; _ D2MultiRes::Init();
' \5 ]5 `+ w2 f- P0 O5 | A n D2MultiRes::HookLibrary();
! A0 ~0 K( n0 c4 n% E `
( W0 @* B6 l+ o
/ e1 F% B. K c MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);0 ?% {# u1 _4 s. e( A
Memory::SetCursor(MiscFunctionsOffset);& ~3 i6 k/ x& j+ i/ u" i
Memory::ChangeDword(0x1b0, 0x200);& |1 ~4 w. Z: T a4 z4 A& z
4 |. K! x# }7 G# W
/ V7 ^* m; f$ }+ Y MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
8 R# a$ `( ^$ M3 @& M2 ~ Memory::SetCursor(MiscFunctionsOffset);
) L' g, F4 Z( j/ d) h, w. p% l+ i/ ` Memory::ChangeDword(0x140, 0x200);
7 F3 J' p6 G' E
+ V# I* K4 |" u& y
7 R0 T/ ?+ e+ r( X- b' O" G8 ] MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);+ y/ j/ u$ Z2 G
Memory::SetCursor(MiscFunctionsOffset);
: O1 [0 U; @% e7 J1 x- n3 ? Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
& M3 C( j' @$ C( v7 H7 @
( y* o+ D% y, B MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
1 J1 i+ z- a" b+ P) P* b/ A Memory::SetCursor(MiscFunctionsOffset);
5 l7 O" M$ E! U Memory::ChangeDword(0x200,0x299);//下边缘 299最大
! O s5 p6 p" l/ [) J$ Q& ~9 P- ^% E( E; |" \2 z
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);4 O8 f: n5 t4 M& a. C$ f$ w
Memory::SetCursor(MiscFunctionsOffset);
: r9 H i6 x8 W& R% ?( b Memory::ChangeDword(-0x280, -0x400);//这个不要动
! | Q1 l: E: ?6 i* B* L1 i- V( X }( q( h/ e; y8 G9 k/ c' O2 J
% @' K: |$ y; P
4、快完成了,是不是发现金币啥的位置不对??
2 k( z( j! C& w! A1 q1 N$ \3 h- G
! R' L7 M! R% K' d( u8 A//这里修正我们的装备栏" j' B. X1 r' g4 s8 h8 S7 K
offset = D2Client::GetAddress(0x99B6C);' N" y% E7 j) S5 n- {
Memory::SetCursor(offset);: q& Y7 v1 u: d, K8 w Y% c$ m" I
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
* p w6 u, t; d( ], w8 g, k8 }+ l4 H7 {9 F! L, T
offset = D2Client::GetAddress(0x99BA7);
5 C: X( N7 T7 I: Y8 c Memory::SetCursor(offset);
3 C1 K7 y3 G, d. A; ? Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);$ ^' @! d3 F- k7 a" t- L2 k
% U: e2 N: l3 L ~
offset = D2Client::GetAddress(0x99BE2);: V6 O& @; h, N0 a
Memory::SetCursor(offset);' ?8 ?! x1 Z# c! U
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
" _4 l* }; l* {' k/ L! u* x' I
7 _* Y/ v. \9 _/ ^ offset = D2Client::GetAddress(0x99C1C);9 O. M. F' b. h# x
Memory::SetCursor(offset);3 J' b+ [! `0 C) a' T/ q* W
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);5 k# w# T3 \1 V o9 G, ]0 p
9 g* Y' K2 Y a0 x
//取消两个popup,偷偷懒不过分8 b& d8 C9 N7 o) N7 q: V' z% o* b: n
offset = D2Client::GetAddress(0x9386d);
. ~; k7 ?, b1 A* j! I/ t Memory::SetCursor(offset);
8 g% N3 _8 n2 F4 k Memory::ChangeByte(0x8b, 0x33);
% n! |& D) m' W; u( m Memory::ChangeByte(0xc8, 0xC9);
3 L% C5 j) h* V6 v offset = D2Client::GetAddress(0x9390b); Y. c' Z/ V" e4 T
Memory::SetCursor(offset);! |$ V( a2 d6 `* ?/ x
Memory::ChangeByte(0x8b, 0x33);
" u2 V0 L* P: C" g Memory::ChangeByte(0xc8, 0xC9);" m+ d9 m7 N8 U0 Q8 G) W6 }, j# z
5 _ H1 K1 B2 `( n2 Y
//修正提取金币# K; r5 k% ^( Z
offset = D2Client::GetAddress(0x8D3E5);: s6 `+ u# Q; S7 Z ^: I
Memory::SetCursor(offset);
) K. P8 r6 l8 _" ~" ^. K9 O Memory::ChangeByte(0xA1, 0xE9);
" d# T6 O, K1 I+ @ Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);( a% F j3 @3 g
, V- G& M, ^4 P offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
9 @. b5 v! Q) B0 b Memory::SetCursor(offset);3 {! Y! r7 e- g1 _
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
9 v! h' j& S3 ^9 k/ o4 U1 Q# ~% T3 H! e
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);- t8 q4 Z& M" l- W& Z; e/ J% Z
Memory::SetCursor(offset);
3 k1 _" \$ e7 M$ ~4 y Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
! Z) n2 ^: }- \; J e& Z+ n& a5 a2 d" M$ _, R8 Z, W8 M- p
//修正关闭按钮, [2 f, Q) A+ t% e; r" Y1 k1 f
offset = D2Client::GetAddress(0x8BD90);# O: v8 ?5 @# S3 Z# g9 _- }: Q. e
Memory::SetCursor(offset);
. [' g7 n1 ?9 a4 g' s5 m: K/ O Memory::ChangeByte(0xA1, 0xE9);0 ~/ h" {; F3 o2 u& N7 s/ T
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);+ N$ l" A" g' i P$ `/ i1 P
- J) J" ?$ s& y. u; a1 n
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);# b6 Y: w" W. A/ `+ B2 F& J
Memory::SetCursor(offset);( I! {. |6 G* Z' L; x5 m: v
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
' M1 w: O3 P/ i* ~) [! P8 T
" B4 E# b" u1 T" Y* z3 g: Y0 K5 A1 k5 G% J9 ~7 h) R; u9 |1 B
//以下是细节* R9 e3 `4 ?" O; J
#define getXGoldCoinFixBtn() RX(0x2d0)
$ x; p7 C! x/ ]: O4 ^#define getLGoldCoinFixBtn() 32, E# q1 J1 w7 V3 k. c. X
#define getYGoldCoinFixBtn() RY(-0x59)
9 ^7 ?# S% U0 I0 I. u) W2 \. p#define getHGoldCoinFixBtn() 32
4 e5 o1 [8 H$ K#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
& j- \; ?2 a" o4 Z W
. h% z; F7 [8 O z( r#define getXInvCloseFixBtn() RX(0x3db)
9 K/ o$ h, k! b7 n#define getLInvCloseFixBtn() 326 G3 x$ X3 `' h* N
#define getYInvCloseFixBtn() RY(-0x63)( ^* M) @, ?* u# d
#define getHInvCloseFixBtn() 32
& v. O @- y& P0 b/ y#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
' p p3 E$ X# [$ E0 c1 i- `0 R1 m0 t# Z0 X, d
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)$ W/ m% q, h8 s9 T- Y
{
- m5 e; q! C# o6 A- g" V1 [$ X DWORD mx = *D2Client::ptMouseX;
1 |) ~$ V+ v: m- b/ u DWORD my = *D2Client::ptMouseY;
2 z2 j7 F5 v' B; R: { if(isOnGoldCoinFixBtn(mx, my))& C0 ~1 s6 s+ u* c& @$ { u
return TRUE;4 Q, r1 g: k4 t3 H! F
return FALSE;
4 f" a- w" A( p) `9 ~}9 M: M9 j3 ?3 }5 D a
__declspec(naked) void caller_goldcoin()
* K+ a6 D3 J2 t7 y8 ]{# C' t& X% A( ^ ]' A+ J& c# N
__asm
$ G0 c( [& T* }, m c( q {
6 n. f" G; `% T+ r% b4 O4 @- ^ push ebx' Q- _9 ` G" }) y+ x; B
mov ecx, esi
% ` r! j3 z# M+ G U- d8 g mov edx, edi$ f8 r* e/ I- M$ u& W* @
call m_NewStatShow_goldcoin+ P. J# U3 H. P
pop ebx, ]$ A- V( a& A( q; a
pop esi# G" Y, J! Z' Y( O _2 L: q! F8 Y4 i
retn. x7 n5 F3 S2 E/ E- E7 O
}* `3 m, K2 g, e: c
}
$ W' t' U: n, j# yvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])7 q$ E4 |& S% r' {
{
: ~2 W; W3 Y' G9 B! L! s2 w: U if (*nXpos > D2Client::ptScreenSize->x / 2)
7 s4 I+ v1 c0 ` {
2 S+ O2 m( I4 q& K% `. L *nXpos = getXGoldCoinFixBtn();
6 N6 D, W- u; p" g( R9 ? *nYpos = getYGoldCoinFixBtn();
9 ?' K) x* H" w) F. ^ }
& }0 X% v: ^6 J8 a5 f* N}1 i# d/ A/ e- t3 e; y; k4 l
__declspec(naked) void caller_goldcoinimg()
1 O3 O+ l; n' M{
% Y5 J" T! U9 \* T/ Z/ P1 j __asm. }2 k; W1 ^9 H. p
{
$ q# u. X* l' _$ _/ |+ _5 l4 q PUSHAD5 ?# b+ t" E! f- x& Q2 j
lea eax, dword ptr ss : [esp + 0x38]
+ \) _: ]6 M$ s% I push eax$ Y6 Y$ F- O2 `! l/ e P
push dword ptr ss : [esp + 0x38]2 [# x c3 n& s; v) L d
push dword ptr ss : [esp + 0x38]
: O' A8 [, L9 r8 X# Y2 A8 v6 d lea eax, dword ptr ss : [esp + 0x38]
- ^6 h2 Z& o) A push eax8 r# c9 ~$ w! N w4 Z. `
lea eax, dword ptr ss : [esp + 0x38]
8 Z9 S I( S- p. W! i3 i8 s2 E push eax# x0 J- `" o' E; I2 I c: V% G
push dword ptr ss : [esp + 0x38]9 b" u+ K9 r1 w8 m1 d) w; t% u
call m_NewStatShow_goldcoinimg
* l. A. K \- b: d POPAD. k* X6 g+ t+ W
JMP D2Gfx::D2DrawImage D' o: e2 H, }% E/ y
}( J/ _- @) }) C) g
}
# [0 @* f% S( c( I; t+ S2 _) Q* BDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标5 {; `; k% s( \
{( |7 d! E+ J& g; M0 y
if (x > D2Client::ptScreenSize->x / 2)2 Z, o! F+ y7 |4 z) G% [0 ~
{
( Q: O, O" m, j) @ *y = getYGoldCoinFixBtn();2 H' v y5 n& j( R' }. B! L
return getXGoldCoinFixBtn() + 32;
6 p* m8 [) d4 Q }
& t( L- b8 X) m- B return x;
( h1 n* P5 @! O5 V( H+ R) c}
6 U3 A1 e/ _5 j; ], l/ d8 \5 @__declspec(naked) void caller_goldcointext()) m, }3 @7 y5 L. B" q; v5 ^
{7 |8 s" g* {5 U% ?
__asm
4 }! k0 a+ B$ M1 `% d4 a, v {. Y) x! j) X" t0 _
PUSH ECX+ j! A2 R4 i0 p6 |- H# N4 y
PUSH EDI' {9 n# `+ c9 j' [& c% U9 _. f
PUSH ESI
& ^3 e* E% \' Q' O% {! T) ^ ^) U PUSH EAX
5 S' r% a5 Q, X2 G MOV ECX, EDX
" G" m) d2 @! R* i) [3 A& S q LEA EDX,[ESP+0X4+0X10]
( t2 U3 \; M/ J, X CALL m_NewStatShow_goldcointext
6 F1 P) Z) g6 F- u* }. i0 Y MOV EDX,EAX/ V; R) a6 `6 i& x' w: y
POP EAX
! n$ T. ?2 r: r6 l0 c4 g* I& _ POP ESI
/ D1 T+ C" Z" i: x: x POP EDI- z" F+ l: p U. O+ }. S; d4 Q. H
POP ECX
, }8 t) P" g' `# {$ Q6 x; q9 N$ y jmp D2Win::D2PrintString;+ {9 k2 c0 I* I
}: q1 T6 @1 r- W" z: P6 x
}
. S t* N$ d7 v: c' P( u% O9 P R/ }- g/ P# ^. \5 P, B- \/ S5 q
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
I$ t& e6 i4 k9 h, A1 e{! G: h6 _, X7 I2 d" Z
DWORD mx = *D2Client::ptMouseX;
/ k- t7 B- Y4 y. q. z" C2 ~ DWORD my = *D2Client::ptMouseY;
0 l* a: V, P8 B: O2 q0 {" v! j if (isOnInvCloseFixBtn(mx, my))
5 \6 Z# B6 {* R7 r. p) o' U return TRUE;6 E, c3 ^2 H1 v% a( j9 k
return FALSE;' R6 c$ W. ]* u
}
, t. i7 ]; O# b7 J8 w/ \__declspec(naked) void caller_close()$ T, p: m# B# V6 d d5 Z3 q* @
{
- q" W6 F. c# c! B& R __asm9 g$ v/ T* \4 P, E* F E6 b
{3 C. S" Q, T( Q3 p2 f) O7 c
PUSH ESI" U8 u# _8 k9 C& y# H6 {$ X. K1 c
push ebx/ O. T0 M0 s8 N8 X) b
call m_NewStatShow_close
5 z$ S- ]% G5 K; q2 G! N pop ebx* \2 Z# `4 t1 _% A0 `
pop esi: K$ H% l$ o1 O# P
retn
- J# L6 H) c/ r- K% S1 B2 g; O5 @ }- x" |& ~! U+ e' l v0 H" \) _
}7 R5 E; L/ l, P/ ` V+ J) D
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])8 _0 t8 c' |% H, K9 L# l
{
. m% n' g+ ~/ W' r; m *nXpos = getXInvCloseFixBtn();! g" x- N* }8 e4 |
*nYpos = getYInvCloseFixBtn();
1 P4 D( }5 A# r. u' a( u}7 J% O$ O+ b# ~* _ t2 }
__declspec(naked) void caller_closeimg()
6 H% Z4 g6 V# u& f6 y& g{' G" _8 ^5 ?) @# D* v
__asm3 d, J& E$ p, ?/ W
{
' s' Z3 o4 y* N3 ? PUSHAD% R0 K9 U; s8 p J6 y( _" S8 u" _
lea eax, dword ptr ss : [esp + 0x38]
# u9 i8 Y1 u; H push eax
! f* w8 k2 s3 n push dword ptr ss : [esp + 0x38]
+ s+ S$ M' ~* [, ]9 K4 c push dword ptr ss : [esp + 0x38]" n: l6 @1 F" U( M& r
lea eax, dword ptr ss : [esp + 0x38] ^3 B" U/ l( L5 ?) t5 k( I0 K
push eax
1 {" C- E# b$ O& @# `5 N( [ lea eax, dword ptr ss : [esp + 0x38]
' W! J; v6 T6 |, M push eax) [. w: j7 E& F* A% w: `/ b6 T
push dword ptr ss : [esp + 0x38]1 c. \1 ~! H/ o: h
call m_NewStatShow_closeimg& y/ C. \8 b# W, u0 y/ G
POPAD
: L3 U6 o& U8 k) s: H, `" D8 }" W JMP D2Gfx::D2DrawImage, C% W4 L0 q2 U2 g, ^. K
}
, P% F$ o. H3 T}
' [' I( B! l: |
7 _; I$ A7 U* f0 D' ]" w3 x) d9 W
4 v+ m: h. r2 l) A. d$ b |
|