|
|
转载
4 T/ i+ S" z! |) a4 RBY SJ
( X' M' S2 B8 ~+ l首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
C+ \9 ?9 k3 K8 W. y4 ] `# V/ P/ D
9 x% b( u/ c( B" gD2Gfx::D2DrawImage-10041
+ ~" J/ z$ n9 j! k3 h1、修复技能的背景(不需要可以不要)2 s* v& c. b1 x( p( k; u# S( C
offset = D2Client::GetAddress(0x77AA8);
* n: Q) E: m! v" eMemory::SetCursor(offset);9 X0 d: Y! |' Y/ |" \* E1 ~" a$ k
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);/ H0 G5 g* a* u9 e. H) s: [
, a+ F! I; B0 h$ U4 T
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])9 ~# b5 M0 C$ v! p# \
{" A' J) W; v; n9 w9 Q2 J( J4 E( p
//Init data for print image3 G7 r. p4 A' S5 v! k
sDrawImageInfo data;
# M0 \ J3 v5 x; ?6 W; D7 j! S ZeroMemory(&data, sizeof(data));$ {" }' d6 J1 d, s% [
# t$ S8 K3 @; |; L Q+ l! J //print background, A m: C4 f( g/ t% V# q; s
setImage(&data, spellBackgroundImages);9 p F* K4 ?& l) T* A- k
setFrame(&data, 0);
; B6 E! J& t! d% Z- x int fixx = 511;5 |1 i# L3 n: L
int fixy = 9;' _; |, ~: A; G6 f$ u
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);8 s k. E6 A0 r) R: t7 E$ i
setFrame(&data, 1);
5 t! x6 Q3 c2 H, f# x0 I D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256: X# V3 [1 O; t
setFrame(&data, 2);
3 f1 Y4 s8 a( f" Z D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4329 T# ~! y4 Y5 e0 v8 \3 c
setFrame(&data, 3);3 f9 E* z) M& [
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
3 f5 U% k/ T9 Y- @: N# x}
; Z* ] o% C! C* @. h6 J__declspec(naked) void caller_SpellBackGroundFix()
6 w% _& v4 Z J/ L8 A{/ W+ r: ~) r& j8 I! B& S
__asm6 r+ U/ B0 L! L5 X
{- B/ s) G$ k$ b$ G! \3 N3 ^
PUSHAD0 e4 n+ f/ Z R' C
lea eax, dword ptr ss : [esp + 0x38]
+ M5 [% |: C8 x push eax! R$ T! T, R: a7 b* |7 q2 M
push dword ptr ss : [esp + 0x38]) r0 H' D2 {9 }* W. T+ R
push dword ptr ss : [esp + 0x38]
, T( T7 V: W6 X lea eax, dword ptr ss : [esp + 0x38]
+ E' w% |4 k. ~3 e8 i* j% o push eax
5 D9 H8 u2 j$ e4 V1 N lea eax, dword ptr ss : [esp + 0x38]* c4 V& H$ o- `* k7 M6 z! g
push eax
7 G0 u( I `6 k2 l push dword ptr ss : [esp + 0x38]" n; S8 F, x: J
call m_NewStatShow_SpellBackGroundFix
3 X8 p7 x8 \* q( A; f( W. S POPAD
! N( [# D! P( l JMP D2Gfx::D2DrawImage
6 u ]$ a. v, ^: _9 H }- t. A2 d+ R! e( _
}) J" _! U6 ? z; T2 k! l0 z
7 X2 R" u! K) R* L G2、我们如法炮制小站的背景' C+ m: G* { g# W Z: e' g
) P3 u3 e( t; w, W' Foffset = D2Client::GetAddress(0xAB010);" o4 x. K3 ~; J* m7 N+ N) ~
Memory::SetCursor(offset);
: o% N, K' G" u l/ g. }Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
" F/ |" `+ o% o, o" _0 S4 e y9 k; I
, K/ g# j5 v/ f- C, G/ c4 ~void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])/ q1 s: |+ g, \& V0 @+ R |
{7 i7 r0 G* U V& t5 s1 A) _, [ g
//Init data for print image6 W( v1 y `# r
sDrawImageInfo data; m/ G$ G4 w2 ~& s( \5 m+ B6 @
ZeroMemory(&data, sizeof(data));
! A- s# a7 V. g: E1 @
* I& F% Q; _* Y! q( l //print background% f B' ?" U% q, r* P
setImage(&data, waypointBackgroundImages);! u5 `8 O" P; H Q4 C: h2 V1 J! U
setFrame(&data, 0);2 r9 s5 i1 L* r* w L/ L+ ?( C
int fixx = 0;8 |$ N( L6 n* T
int fixy = 9;
: o) t! |3 b& r7 D N" l D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
: q4 `2 n- c5 \$ h) o setFrame(&data, 1);
; N/ s+ W$ a3 `/ W# D7 \ D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2569 p' Q& y4 p2 O2 N& G4 F
setFrame(&data, 2);
$ c% q0 f8 T3 W: A a" g! r D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432! _( X2 d, T7 Z" w- @! G- w
setFrame(&data, 3); g4 [' D+ f& U% }8 t4 j0 {
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
+ w3 [; ~5 n* o# t2 F0 I6 z6 Y( e7 X9 q% x0 M% _" E
}" C& {; i( w- B/ O M; D! e
__declspec(naked) void caller_WayPointBackGroundFix()9 H6 S; a6 G+ J# e
{2 N7 K" _9 v& a
__asm" K. d) q+ Z/ J1 y# w% k
{8 B- c/ p0 m4 D$ d2 T
PUSHAD: r) t$ s/ i+ {9 ]; B+ C
lea eax, dword ptr ss : [esp + 0x38]
* _4 d5 A7 C Q push eax& g- j) m) l+ j
push dword ptr ss : [esp + 0x38]8 t: A Y H) E
push dword ptr ss : [esp + 0x38]: Y7 X: r3 v9 ^3 x- \7 `: u
lea eax, dword ptr ss : [esp + 0x38]8 S; B: [1 c, V' l
push eax4 B# [/ i' K% |2 W( @* M
lea eax, dword ptr ss : [esp + 0x38]
5 d& _' S6 _" ~3 C( c; l( x1 O push eax" o+ A4 z$ t) S* U
push dword ptr ss : [esp + 0x38]
1 W' |& E0 L; Z$ m; m) F9 R7 F call m_NewStatShow_WayPointBackGroundFix
7 L' a: {7 x) c+ d, G POPAD
5 u( m( b8 b! |# R JMP D2Gfx::D2DrawImage; C- `( [1 U) x! M4 V* n6 L8 T
}
4 s7 \. i5 O# N3 W8 U* Q* x}
0 h: u. m5 D/ G8 _& Y- B/ B
4 X* q2 R; k" K3 u5 n9 C8 v3、以下可以搞16*16超级箱子-腾出我们需要的边缘
j% r; i' w; V( W3 t# c7 ~腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
8 `9 ]0 t" e: J$ W; K7 d {
2 y; s; {* V8 X; l; G+ X class D2MultiRes : public Library<D2MultiRes>
+ ?( K O2 X, X. H. o8 i3 o8 [ {" A( I; u" S3 c' _% R
public:4 C& G, ?: l5 t( R2 u
static void Init()
7 W" j4 N9 k2 d# l4 u* v7 N1 n R& H/ @ {
6 u/ K' [1 ~/ s4 h# U3 H s Name = "D2MultiRes.dll";1 F; A6 R7 f/ E- v# s, G
Offset = LoadDiabloLibrary();
2 @+ R3 w$ t, X' M }/ v6 ^+ B0 B/ c( n! h- Y/ z, F
};
5 _+ J+ s8 s) ?5 H- p) r9 D D2MultiRes::Init();
3 t2 Z8 a6 ^& n8 r D2MultiRes::HookLibrary();
) H' V+ a' ?! k$ ^2 `* g. _' I. x+ r8 B; ~5 u7 @
( K+ h7 |6 y4 {. p2 d. u MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
/ \" e. K" G% `0 @; G! _5 G9 h Memory::SetCursor(MiscFunctionsOffset);2 @, a7 y' f& l- _$ c
Memory::ChangeDword(0x1b0, 0x200);4 c* S) d( Y7 h" d
+ ~5 C% V6 l# }
% V; F7 ]# r$ X. [) }3 W5 {
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);( a3 `! g# N7 F& |! }# \* d
Memory::SetCursor(MiscFunctionsOffset);
" D! p: v; D0 Q6 [1 d! A9 {! J8 B Memory::ChangeDword(0x140, 0x200);
3 _) K7 g# K" w8 _! L C3 m3 Q
4 \* N* o4 Y8 W' T! o9 Z. A8 V# K
6 g- e: ^, Y1 Z. Z MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
# S( I/ ?; t9 U: q4 k6 P8 H Memory::SetCursor(MiscFunctionsOffset);8 y, {8 s% ]$ x5 d/ w
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块3 \; h* g# w" f
3 {7 k9 E/ m8 N& Q
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);/ h4 z4 i T2 Z' ?, b
Memory::SetCursor(MiscFunctionsOffset);9 B1 ]5 F# J( D3 L8 R
Memory::ChangeDword(0x200,0x299);//下边缘 299最大" y7 j/ @! f' r! w- i k9 [
+ r$ p6 y& B! i6 G0 ?# |0 ~ MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);. A' f* @# m \
Memory::SetCursor(MiscFunctionsOffset);
$ T5 w4 x$ B& d2 d7 p$ C' h9 t8 }1 o Memory::ChangeDword(-0x280, -0x400);//这个不要动
U/ i) N; A1 N! T2 R }
+ ^+ s( E) x+ S/ [5 K6 X2 E* p, ~# ?& K" u$ C* b, ^( @
4、快完成了,是不是发现金币啥的位置不对??
) l9 s9 o* x+ n( m }+ }! X: S8 f0 y- {# j, |0 p. v- V* w
//这里修正我们的装备栏4 [0 v; B( i! H7 z$ N/ W
offset = D2Client::GetAddress(0x99B6C);
% V* w: Y2 C& y$ }& O Memory::SetCursor(offset);. _* N" u- |: p& v/ X
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
' q* p, q6 r0 G* O1 }
( z. M' [/ B1 V# Y% v7 Q offset = D2Client::GetAddress(0x99BA7);
/ Q. X0 E4 }. N$ V' O Memory::SetCursor(offset);
5 N% y9 f8 w' g" V- H$ y& B$ d8 g: z Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
8 j9 l8 r7 {1 I& B+ B
6 ~ G+ U9 x" ^- Z offset = D2Client::GetAddress(0x99BE2);2 y7 p" N7 l5 d' T, l2 M
Memory::SetCursor(offset);3 `% J/ J! d/ r# l
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);/ W+ x4 ?7 v* h. u
! k1 l/ _2 y% W# A; A% ^) I' ^ offset = D2Client::GetAddress(0x99C1C);
+ Q3 b& @* U5 L Memory::SetCursor(offset);
4 X, e/ J! S3 Y4 n3 V2 ] Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
' B' F0 |. d* I4 V0 Z' X# d+ v
6 g& k! L; e: J //取消两个popup,偷偷懒不过分7 H1 n. r; Q6 l7 t3 L( x: n: v5 k
offset = D2Client::GetAddress(0x9386d);& m" ~5 e" k& V* }$ `2 k' R2 j
Memory::SetCursor(offset);
5 v% n1 Z- K6 ^2 o5 V# n3 P; } Memory::ChangeByte(0x8b, 0x33);
$ k/ D% }0 e" D Memory::ChangeByte(0xc8, 0xC9);( ~* a3 g2 f" P! x8 X
offset = D2Client::GetAddress(0x9390b);3 @- }9 C5 ^$ y8 U% i
Memory::SetCursor(offset);
( c4 I3 T- {; T" d$ L$ z+ R4 h0 [ Memory::ChangeByte(0x8b, 0x33);* K5 {+ b8 N4 e, T' Y: \7 p' u
Memory::ChangeByte(0xc8, 0xC9);
! h0 `1 U F) H: D. U: g
M, k) q8 p# ~ //修正提取金币
4 {* Y( G0 C I. |* w offset = D2Client::GetAddress(0x8D3E5);
7 B# m Q" ]0 x. X Memory::SetCursor(offset);7 h' n$ J& P% Q$ u/ d. ^
Memory::ChangeByte(0xA1, 0xE9);
2 H5 f* t6 w% I+ ?( K! \% b' m/ M Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);' A1 m* r6 f4 O- P5 N) l- [
1 M2 O/ T( D# h _7 Y8 e. i- n: N# `8 R offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);4 A% Z; v9 V; G5 h9 A; h- }- w
Memory::SetCursor(offset);: T, }0 u, I; ?3 i4 x0 @# U
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
" }1 f; ^1 i+ @6 B; c
9 W1 k2 v9 |* ?# A/ r' A offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
4 Z1 n. k! U& W" y7 q7 \ Memory::SetCursor(offset);6 V, E/ T9 K. \! t& O, S j
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
* I* p4 t' G# V' ?; `. m% V- A: H* ?& `% ^
//修正关闭按钮
: K6 O, D$ }0 ?+ z offset = D2Client::GetAddress(0x8BD90);; ^/ `& o, c' T
Memory::SetCursor(offset);
$ W# S% A2 a' c9 ^! n Memory::ChangeByte(0xA1, 0xE9);
) c! G( C0 @1 P$ ?: b, A: q# R$ o, o Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);: J9 {' d$ [) }3 J8 F7 b
) b6 U+ x) w- \; X/ W- E
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
4 u- H( i, F, E Memory::SetCursor(offset);
$ p5 G7 ^; r$ ] N& E+ T& S Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
6 V0 D; P" }7 B0 N" b3 s4 u( `5 M) M
" i ^4 R6 p7 g ~6 l
//以下是细节
* b3 K; \4 l8 i#define getXGoldCoinFixBtn() RX(0x2d0)
8 N' \/ F$ q' R' b: D) r#define getLGoldCoinFixBtn() 32( C6 J( a: C) f. m. F
#define getYGoldCoinFixBtn() RY(-0x59)# c5 f b& R/ V/ p- Q
#define getHGoldCoinFixBtn() 32% ?# o( G5 s4 Z
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
5 L+ P$ m& Z- E# ~7 C
$ F( |+ K1 ?. B, e, s5 V( W/ k#define getXInvCloseFixBtn() RX(0x3db)
" [& e, o) q/ W3 R9 \/ J* g#define getLInvCloseFixBtn() 32
7 a7 f# J; Y$ G2 M#define getYInvCloseFixBtn() RY(-0x63)
. j6 w. L3 ^$ G! @2 y#define getHInvCloseFixBtn() 329 I6 u" _; O* Y6 g- E; @
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn()); U$ w& O6 R/ F5 F
1 u! z2 s! z; F OBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
1 e4 G# m$ C: S h/ C: x# c{
8 S( @! f% U! ~. R DWORD mx = *D2Client::ptMouseX;
* N! H" x+ Q" O! m* Z5 Z DWORD my = *D2Client::ptMouseY;
2 o \0 z5 \# r6 U* g& V if(isOnGoldCoinFixBtn(mx, my))
8 ]3 N: c0 l8 i* |5 u$ A6 T return TRUE;
+ v3 U! z) y4 G. B. Y1 l) S% T* S return FALSE;. ]! E' k8 o: i* C+ y. \
}. c1 _+ _1 N8 @- t
__declspec(naked) void caller_goldcoin()" Q1 U {1 q) h* Y: ~, V3 |0 F6 g
{
6 ^" P' F7 m: |% f9 A8 {, @) s __asm5 ?; J# o" x* ] Y( I+ h" s( p7 {% s
{' C4 O2 a3 D8 g! d- i: y j) H: c
push ebx
, e1 O; J& @! r0 J, T9 Q mov ecx, esi
" F0 N' p, g8 O' g mov edx, edi- L% n1 x5 Z5 C( o% J
call m_NewStatShow_goldcoin6 t l5 z$ w! A3 x3 j0 f1 o' w
pop ebx
3 t+ P1 `) r/ ?: c6 Q' } pop esi$ J0 n4 p+ B! N) J9 W3 T! [
retn
2 d* ]" i- d# F }
1 G/ z9 A5 w+ c* N8 ~( f E}
1 ]) z2 I( z% i7 i; uvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])8 |, K5 ~/ ~" b1 B. c$ A# s
{# x! k& D7 Q% w" c; Z3 u) K
if (*nXpos > D2Client::ptScreenSize->x / 2)
8 G+ V: S, m# R% ^$ Y# e+ K {
7 E, j% f/ G% j U9 N' F* H: i *nXpos = getXGoldCoinFixBtn();- }! C4 k) d1 B+ C8 l1 r1 G. Z% t
*nYpos = getYGoldCoinFixBtn();$ j5 a. V1 S$ C& y" _& `
}1 h* s' @8 j' V+ u0 O( F% m% s
}6 E3 X! {( V) C/ @7 D
__declspec(naked) void caller_goldcoinimg()
- F6 S( c6 u! _( K{7 a6 [2 J5 r- f! H$ I6 n( c' v* x
__asm
- W1 A$ E |( t R2 k {) o" A4 j- I# ~
PUSHAD
+ E/ X) C) {5 {1 Y- Z lea eax, dword ptr ss : [esp + 0x38]+ @/ n9 S& a! ~8 H* f9 c* j
push eax
! K2 @- [( y% v y! T; ^ push dword ptr ss : [esp + 0x38]( o p- c- m+ l% H5 ^+ k
push dword ptr ss : [esp + 0x38]
( G( `* g/ m* T3 w) Y1 F lea eax, dword ptr ss : [esp + 0x38]
& y9 r* M3 ~: |2 y! I5 H push eax
w' w/ Y ?+ F& T lea eax, dword ptr ss : [esp + 0x38]
( ?2 L& K/ j# f push eax
% _: L N7 M: {4 O. V push dword ptr ss : [esp + 0x38]. v/ o! A! U8 T; v( ?) @ D4 G A
call m_NewStatShow_goldcoinimg
k$ T% @7 h0 Z7 P9 ?) v# {% s POPAD: B. w3 W7 M. N3 ^0 M" w( g6 x
JMP D2Gfx::D2DrawImage
. ~3 x$ E. f+ [1 e9 J } J$ i& [! p7 v0 f
}9 C6 P |) C, s, W$ _- K9 q: A) i
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
: T) ]" A& p; N! {. [, p% O2 v) Y0 ^4 y{" h# l k# \9 W; B
if (x > D2Client::ptScreenSize->x / 2)
; H9 H5 ~4 f3 G! K3 L* j5 q( @ {0 b7 q/ q- t% O& z
*y = getYGoldCoinFixBtn();5 R, @1 j9 W/ Q: f3 C% B
return getXGoldCoinFixBtn() + 32;/ m5 S" \% g# E* E8 e3 e
}; N" i- ]8 m Y$ e* P
return x;
! M6 B( H% b9 {}0 @1 I5 ?5 s1 b- x' K' ]
__declspec(naked) void caller_goldcointext()1 @- a: X- G+ x" r/ d7 Q) I6 n
{ N( d% B" @3 W4 v( V1 Z
__asm; g9 ]) E4 ^, |* }4 v. i
{
! r9 E, [# O0 z* Q PUSH ECX
& }4 R4 z' Y* y; D: \8 _5 t6 i PUSH EDI
! |/ {0 p/ i7 r- L' o( }& } PUSH ESI
6 |* k0 Y5 S v. Z PUSH EAX
% R$ t( ^& u3 h# _9 `) X MOV ECX, EDX
6 @$ a% ~; F5 M LEA EDX,[ESP+0X4+0X10]
5 b# M& N# ^7 I CALL m_NewStatShow_goldcointext. i Z' c- ^3 W. r) S
MOV EDX,EAX
4 b2 w0 d2 S) u' ?5 [6 h POP EAX& {) t* ~% O7 a: |# @
POP ESI' {% {# V/ i/ F) Z* ?, k' _6 l2 C t3 A) a
POP EDI
7 a, `& H' g" \9 T+ X, [$ e POP ECX
7 U* ?: W# i u jmp D2Win::D2PrintString;5 _4 d8 d: n* d8 z7 a6 [2 I
}3 T4 t0 i5 n+ }. l( I
}
3 ?( |( M+ y- U; b- A
* l! v/ X$ Q5 U! T# r. ^BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y) j2 c. G/ A' Z1 t9 s: t- d
{
0 H* v) J/ J) n, ?( x) r DWORD mx = *D2Client::ptMouseX;
4 ? U3 d" [4 h, B DWORD my = *D2Client::ptMouseY;, k e. F; |7 \) ?
if (isOnInvCloseFixBtn(mx, my))
6 Q3 D4 n+ U) a: K/ | return TRUE;8 D5 B. L- U! Y& e$ U2 s2 s
return FALSE;
+ r' n6 n3 c5 t}- g/ U4 V3 u% p0 q
__declspec(naked) void caller_close()" [0 M& w* ^$ P1 b$ q
{
: L9 C8 m1 J: \' ] __asm
4 B6 N7 a- L! I; V6 ]- ] {, r" a0 z! m7 m' ?
PUSH ESI6 J \2 r+ I5 @
push ebx
) u8 \; Y8 Y8 x/ U$ k call m_NewStatShow_close
( R6 N- O9 n) M0 N: F9 a9 k pop ebx" E) C2 o& ]* x+ G
pop esi
3 A( ~' d: U Y* b retn
: S# N4 \3 ]; h6 G% q6 c }1 Y) I: H* _4 c7 {# ] L
}
1 f* Q7 K" X1 C% j( Lvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])3 u2 d- M/ x* v
{
2 J x$ i( w H *nXpos = getXInvCloseFixBtn();3 Y( A) [9 `- `& `; f
*nYpos = getYInvCloseFixBtn();, U9 ^! u( I$ {/ V# P1 f
}
# ^, r# q! T5 H6 j1 o) @__declspec(naked) void caller_closeimg()
% u) h! I0 G( f- Z) Y! P: l& j, N{7 `1 J: e1 W8 y7 W7 s7 A
__asm! c" ^4 n! x% l7 a4 u8 a; A
{
9 k! h/ B( P+ t4 H$ q! x PUSHAD
8 M" B+ u. E2 j3 p/ K lea eax, dword ptr ss : [esp + 0x38]) L7 f& b4 }% `3 x1 f6 e) I
push eax; d+ A6 X' j: v1 c L( v# q
push dword ptr ss : [esp + 0x38]
1 e# t. m6 N, X( M- C8 j push dword ptr ss : [esp + 0x38]2 | z* U. a' _5 Z9 Y. @" R
lea eax, dword ptr ss : [esp + 0x38]
. _3 ~, z2 S9 U push eax4 B" r0 T7 e B a. H
lea eax, dword ptr ss : [esp + 0x38]
4 L1 J9 S, x5 t push eax
* `; R) ~2 {. g2 T push dword ptr ss : [esp + 0x38]
6 l0 S& B9 C; l. y call m_NewStatShow_closeimg
% O. Z. t! \" o1 e1 M3 H POPAD) W3 X/ G! Q2 P1 U+ R
JMP D2Gfx::D2DrawImage: {" k5 c1 `; a1 F- y' g1 {- ?
}4 `# D R3 d' U4 U( g. W
}0 {& X/ C& K8 s
8 b5 n2 T) e% J
7 m; F5 I c! S+ W2 X0 h( K |
|