|
|
转载8 o) @4 r/ P- g' e
BY SJ
t0 I8 H: ]/ n& Z3 T首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)# u+ j# ^2 q; R
; X1 [( p/ ]9 l& h7 D0 c4 V
D2Gfx::D2DrawImage-10041) V5 Z8 G+ v& U
1、修复技能的背景(不需要可以不要)& Q8 j: A, b2 r* K/ |- t* ~2 L
offset = D2Client::GetAddress(0x77AA8);
! q* Y0 f9 C1 F+ Q) P2 [7 wMemory::SetCursor(offset);
, ?0 p0 d5 f! K$ @: C; k ]Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);, P4 v; `: e3 M: Q. @. d
- U" H2 u2 [8 E
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
9 R5 k' Y+ w( m* B. [% X{5 j8 j- f$ S1 t0 C4 Z/ o
//Init data for print image
- o+ i) T, z& I# }. q2 g sDrawImageInfo data;# M. B& o) G" E8 `( B- ?. G
ZeroMemory(&data, sizeof(data));( k9 A: X/ _: ?7 @
7 O, L. X; x3 l2 ~+ u //print background# S$ N0 X# |) F. s( l5 ^% M
setImage(&data, spellBackgroundImages);+ D) @6 e6 k& x0 x$ C7 m D
setFrame(&data, 0);
; ~8 G9 L5 r# }$ \/ d/ F int fixx = 511;
9 C% U" t% H7 H! P5 d int fixy = 9;+ R& B w3 ^( v: f% @- g$ S+ ?& ?% [
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
" @* M0 u4 g3 @/ ?- Z$ C setFrame(&data, 1);
$ j0 }9 z4 H9 V. C D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256; `9 u% t% O. S2 u1 Y" z b$ O
setFrame(&data, 2);
- q3 `$ i" y0 |5 g+ ^ D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432# C; [" z, X6 }' C8 l5 [
setFrame(&data, 3);- @7 U& n( m: e8 A7 T) h' h" c
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
* V9 I5 s! {5 K- ]1 w8 w( w( d}
3 N; H8 N/ r% i: |__declspec(naked) void caller_SpellBackGroundFix()
" Q# k; [$ `2 r. i S{ R, w7 `3 ?7 c3 t/ s- [
__asm6 k* D2 z' n1 w/ s% S' w
{2 s1 h0 S9 L, T; W+ m
PUSHAD' @# P2 }& E6 ]0 F) i; _
lea eax, dword ptr ss : [esp + 0x38]& C3 s( w. t; ]+ S9 k
push eax
* c( E K" d2 u+ Z push dword ptr ss : [esp + 0x38]1 R- `9 y, l( O( L3 b
push dword ptr ss : [esp + 0x38]
0 S. o. Y& w0 f) r- }' Z% Q' \2 v lea eax, dword ptr ss : [esp + 0x38]- w4 s8 ~/ J5 \: c( W1 T
push eax3 t6 f; n& C6 {4 @, o% D" e
lea eax, dword ptr ss : [esp + 0x38]; B1 e) ^$ U' H* f( t- P# ]
push eax
6 T. V6 A& K8 p push dword ptr ss : [esp + 0x38]
6 J% P, I) k" e B call m_NewStatShow_SpellBackGroundFix, _: O% m, ~1 T" U7 E" S; ?
POPAD
% H: [& P8 L- T- E JMP D2Gfx::D2DrawImage
7 o8 }) i# \/ C9 Y0 p/ q } q) L7 f8 p+ ^ q4 @. c
}) c. ]+ H+ R. d$ Y
Y0 c( L+ K0 q
2、我们如法炮制小站的背景
) |- X2 J' J. D" [2 h3 B, Y$ S1 s5 q. [) D" n
offset = D2Client::GetAddress(0xAB010);9 l( Y. z, r/ G* |
Memory::SetCursor(offset);" u3 a0 s g4 V. d. V2 M
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);; }% c4 a) b& ~8 L! S* a
- k" B2 c+ E# i3 P% g8 Nvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
7 x/ \( r1 b8 i9 _* @! r{
2 b" C) @1 E! i //Init data for print image" B2 V7 ~, j6 T: a) ^
sDrawImageInfo data;; T) x: J7 T9 V; _# H
ZeroMemory(&data, sizeof(data));. @ v1 c" ~" ]* f; b3 [
+ F$ {3 Q0 y# y6 R! h
//print background
$ h* m& L) u0 V2 Y( v8 L& f( j setImage(&data, waypointBackgroundImages);7 ~* K0 f% B# S% S5 |: g: U
setFrame(&data, 0);
9 Y8 P8 [! R: T6 y1 W1 D7 n int fixx = 0;- e) j5 J( P0 V9 \# W# C5 ^3 y) d! W
int fixy = 9;
- E* r9 H' _/ k: [ D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);+ \. @0 H, v# U. V0 g$ n
setFrame(&data, 1);; J+ T( h2 d' e6 g" B
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256& `+ T0 |7 `6 H6 \+ p6 T
setFrame(&data, 2);
1 z; x$ k1 E6 V% z0 k4 {- _* F D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432 x* T- |+ \7 M
setFrame(&data, 3);
/ K3 c# W% W- h/ F D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);7 u" [; i) R1 h9 ~& s
" o; E5 q& V& L) y}
' p$ \7 L' h/ w4 e" U, v__declspec(naked) void caller_WayPointBackGroundFix()
. s; i, {5 O# c5 K- o( w{
7 y0 j6 E9 h e3 N8 s8 n$ ^ __asm
. N2 U$ {& G# Y% @( I {" m6 C6 v4 O# a9 b* N. h: u
PUSHAD. g* @3 _6 b0 s: p' |. G1 o) o
lea eax, dword ptr ss : [esp + 0x38]7 n5 I. w" w+ g, O
push eax
' J Y( F% `% L' A' ` push dword ptr ss : [esp + 0x38]
5 F, ]) P0 w& O8 g push dword ptr ss : [esp + 0x38]
. \+ M( l! P2 [9 Z4 p' e3 s8 ] lea eax, dword ptr ss : [esp + 0x38]
( ]1 `0 W# H8 N+ p; g, R push eax
7 s% D; U6 R: h6 d/ \0 d lea eax, dword ptr ss : [esp + 0x38] R {! @: _6 j H. K
push eax) X' s6 E, r3 {
push dword ptr ss : [esp + 0x38]6 m8 K1 }) z) g( p: Y+ N& _
call m_NewStatShow_WayPointBackGroundFix$ e% q* \0 b1 ~7 J) c
POPAD
. [7 f' C' f( r& U JMP D2Gfx::D2DrawImage6 D. l6 P: b2 B/ H. v- O
}
% c1 |' S4 i% R, S}
, Q! c" n; H' D* a- M8 O+ @" Z( q6 B: f0 J+ b5 J. p1 Q9 F
3、以下可以搞16*16超级箱子-腾出我们需要的边缘 L% |9 t+ h0 {4 K2 u
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
) w1 ?0 \/ _4 Z5 U5 I, P {1 ?8 c1 h O) K' y5 J
class D2MultiRes : public Library<D2MultiRes>; c$ H2 ~9 D' @" D7 w* n% {( B0 Y
{
9 {; _1 c0 L% ~- K/ \, A public:
% B: d, ~6 \2 F; a' I5 G3 z9 w# x8 W static void Init()7 N/ b& |$ z: h: v4 W
{
4 V( }+ w) L' I: N' } Name = "D2MultiRes.dll";
4 ~1 o$ W: F& M4 h3 j' ^, f Offset = LoadDiabloLibrary();
- Q9 Q) d9 E z9 `3 l+ _- ^" b) {7 d8 ` }
* @: j) f4 T. s; _1 Y2 N. E };
( V/ Y& s! k! k2 W D2MultiRes::Init();( C! [& U c" x# D) W3 S
D2MultiRes::HookLibrary();% H- i, f) R; B7 y1 v# P! S
" {; ]' C- j7 R W& `
' f3 \1 J Z6 c& G+ V7 A
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);2 g6 f O: Y6 L P' E% R
Memory::SetCursor(MiscFunctionsOffset);
; v0 x. W5 }) [ Memory::ChangeDword(0x1b0, 0x200);5 T$ f8 K% b# I
. ^6 V' V2 F9 p4 Z, I# s1 d7 r; F4 U
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);6 T) Q* \2 o/ i% D6 y4 a
Memory::SetCursor(MiscFunctionsOffset);
, ^' ?% p9 n2 b8 m# S Memory::ChangeDword(0x140, 0x200);, _& @8 p* w* f- U7 p4 I
1 {0 J/ j$ S/ l6 c6 b! ^
) d1 I8 ~0 B E+ H; R MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);5 u8 U3 l( j0 Z/ H `+ S I
Memory::SetCursor(MiscFunctionsOffset);6 N: ]2 r2 W1 R! ^
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
, Y$ B: m- {* ]) ~5 ]/ s5 r: {$ W! J6 L I
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);2 D" i' O$ Z% W( [+ F2 _
Memory::SetCursor(MiscFunctionsOffset);% O( z- K, J; ^& q
Memory::ChangeDword(0x200,0x299);//下边缘 299最大$ e4 `) r; R9 {; W
6 p/ E# X \) m1 A4 u/ X
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);, W, _) A% p9 ^8 }: k
Memory::SetCursor(MiscFunctionsOffset);
/ t$ x0 P' k, d. [ Memory::ChangeDword(-0x280, -0x400);//这个不要动5 e a7 F- C7 [( S
}
; T# Q+ h3 K: q$ g1 I" s9 V8 b9 ]. ], g8 d* N# F* c
4、快完成了,是不是发现金币啥的位置不对??
, Y3 `5 E Q$ r5 w) _/ S; o9 R( G
) w+ Y* [; V# V g: m* [, J//这里修正我们的装备栏
- F' B5 R M4 J offset = D2Client::GetAddress(0x99B6C);) Q% o: G/ f2 H/ }3 y# M
Memory::SetCursor(offset);
! J! j; e1 A4 ^8 j" x: m" H Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
+ U7 N Y# z7 {% w. ~5 H7 F* O; b. Q9 N% E
offset = D2Client::GetAddress(0x99BA7);
, ?7 L& r3 x* F+ w5 C' P( l6 N5 E Memory::SetCursor(offset);# l: `3 Q& v# _8 G
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
" B b7 W8 I& a7 P) [. v' V
+ y) I6 Y' w9 p/ V8 [1 [ offset = D2Client::GetAddress(0x99BE2);9 k( M" T, v0 v
Memory::SetCursor(offset);
- L7 U, c5 Z: b; w7 a- u Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);% o/ D$ H+ c, p. Y
8 u: p8 W u: E
offset = D2Client::GetAddress(0x99C1C);
: `$ {$ b# U, ?4 O0 r' E6 V1 @ Memory::SetCursor(offset);
0 w- Q" J6 [% X8 D) F2 n Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
$ l% N+ Y3 B$ q$ ]
4 e" C+ h2 l x8 Z, i! ?. i' l/ e //取消两个popup,偷偷懒不过分- g: d }7 j# }! T* q/ J# o: C$ k
offset = D2Client::GetAddress(0x9386d);1 a" ^3 \+ Z* k% W
Memory::SetCursor(offset);
, v# }! F' E4 J$ Q2 f7 X T6 Y Memory::ChangeByte(0x8b, 0x33);
, x- e1 v. i9 F2 W# d Memory::ChangeByte(0xc8, 0xC9);
, R4 \) n$ W2 c5 T1 W offset = D2Client::GetAddress(0x9390b);/ p/ u- {2 d8 C: `+ u' u& p
Memory::SetCursor(offset);6 ~$ E4 c6 ?3 V
Memory::ChangeByte(0x8b, 0x33);# b2 M7 X" T# _" ~4 Z( [! i
Memory::ChangeByte(0xc8, 0xC9);, x& l% {3 F s6 X3 q
S/ m7 ~. b) _" I) F
//修正提取金币
f, T& C( c7 t, t0 ` offset = D2Client::GetAddress(0x8D3E5);3 W$ ]) X Z0 \/ N" B# N4 s( M
Memory::SetCursor(offset);
. c/ X- v2 o8 x' Z Memory::ChangeByte(0xA1, 0xE9);
* R; o+ I% w9 a6 i# \ Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);4 T/ D/ h1 ]0 `" v6 o% M# ~2 [
' L- c% l9 g( Z# y" Y8 e offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
$ Q& g4 E6 [" n! h( f6 H; A Memory::SetCursor(offset);
0 R4 I5 Y }( \/ ?% ^ G Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);! l/ F' z5 _. v2 d5 D2 f/ R
8 Y7 V q5 {' Q5 j$ Y
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
* Z5 b' A$ h, b4 { Memory::SetCursor(offset);
, Q) v- E R0 z: ^3 L5 t: b# h/ _) Y Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);0 x( C3 s5 Y D' i
' D2 n- c6 D0 ?! \' g" ]4 ~
//修正关闭按钮6 P3 q5 s% a0 Z9 E. I: @
offset = D2Client::GetAddress(0x8BD90);4 T# g) |. w6 s( M+ [0 n1 z4 N$ ]! j
Memory::SetCursor(offset);1 L- F# {6 X/ a$ }, @3 h3 |
Memory::ChangeByte(0xA1, 0xE9);
$ ]4 t! _- N8 A( N Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
1 q$ M2 `. f7 o+ R. p+ Y0 ~8 O1 U. K. }
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);1 `( |( ~7 i5 o3 T2 n
Memory::SetCursor(offset);
/ s2 f) V3 R" t6 _1 o Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);: ]0 b0 E$ }- ~+ H0 h6 I
0 c1 S9 n, ~, J1 Y
* E! @, y$ O3 `! N+ u//以下是细节
' T0 N* w0 z v& K Z1 S% D( @#define getXGoldCoinFixBtn() RX(0x2d0); \! C+ L( _! I9 Q
#define getLGoldCoinFixBtn() 32
3 ]4 D2 X( G' g% z9 ~/ F#define getYGoldCoinFixBtn() RY(-0x59)0 M$ s6 }' p2 h0 O8 |9 a5 `' N1 _/ R; ]
#define getHGoldCoinFixBtn() 32
! y0 a& C. _" S, u& e#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
* B( n" B x. x+ @
: f" p1 G% w f7 T#define getXInvCloseFixBtn() RX(0x3db)
% N! t9 ~2 W3 I3 i#define getLInvCloseFixBtn() 32% `4 W5 ~7 v2 x5 ]( V! V
#define getYInvCloseFixBtn() RY(-0x63)
9 l& y, V) E) {* b0 C* o4 A- `& P#define getHInvCloseFixBtn() 32& P# X6 a+ M+ ^- ^
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
+ H7 i3 L+ E8 h) h2 U- [ M# @
. b+ D5 s6 `" D+ D7 mBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)9 v& g2 s3 b$ K; T4 [' D
{# E! C( H5 t+ u% w& u: T& U3 B
DWORD mx = *D2Client::ptMouseX; W8 o1 G; d" f3 K! O* E# g
DWORD my = *D2Client::ptMouseY;& D% t8 l$ M) @7 x
if(isOnGoldCoinFixBtn(mx, my)). d D- D6 I8 M$ s" W% l9 a* j" K, {
return TRUE;3 }& r3 E/ N: |2 t# ]
return FALSE;
! G% d" \, w; d# H0 @7 N}
( d7 R. |% b2 `. c) t5 G__declspec(naked) void caller_goldcoin()& x1 Y5 G7 N# Q0 E
{
' E1 c, e% H3 R- X/ G+ W1 D __asm
0 y1 } \3 x9 m/ H+ i+ s# | {1 k9 k: J+ i) z- C8 w
push ebx
, O% B$ U( S M0 ]$ u: X) @' [ mov ecx, esi# P6 G5 o" x+ Q2 g
mov edx, edi
* V$ Y* ] w o9 S call m_NewStatShow_goldcoin& I9 x/ G. Y( q7 ^0 ]( u+ ]! [( c
pop ebx
7 I" X: Q: |" B! V% @& ] pop esi$ j( ?; p# g7 b( @) i8 }
retn
1 Q. Z( x7 T* h* y" m( d0 c) u" ? }
# M8 q% I3 {( c7 s+ ?}
! [1 Z& V2 W, Q& `* G; D% qvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
) \, d6 R* \2 t1 D" C8 p{
$ _1 p* N' Z/ Z- Y) Z8 l& T- U if (*nXpos > D2Client::ptScreenSize->x / 2)1 |4 q+ O2 h5 E4 i* O5 M- ^
{
' x. K O: Q- c' l *nXpos = getXGoldCoinFixBtn();
6 ~6 i4 E; F: s; A* C/ j3 [9 h8 d# c *nYpos = getYGoldCoinFixBtn();9 m0 ]; u# m% d; s0 g
}
9 G& G7 ?& U' |& |7 \}& P6 s- p6 P6 I+ X) x. r
__declspec(naked) void caller_goldcoinimg()6 }( C: N( K- T" U& d7 Y8 x
{+ W6 e3 y; A9 u6 i2 W- X
__asm
" O( {2 K H( T7 T {1 C$ c" _* ?9 Q, c& R, w4 y; }
PUSHAD% L: v4 Q2 f# W6 ?7 J0 J
lea eax, dword ptr ss : [esp + 0x38]
2 A/ L/ R% L% \9 ?2 u+ q push eax
7 W% O4 l" P- R9 A! _, J& L push dword ptr ss : [esp + 0x38]
, Z8 V1 ^) V# l push dword ptr ss : [esp + 0x38]
- M. ?% W' E6 B( [4 S9 M( v lea eax, dword ptr ss : [esp + 0x38]
4 z% z7 ? B) {1 _/ @/ x push eax
' d9 e, @' V# D- |' p$ T( F lea eax, dword ptr ss : [esp + 0x38] n: d" W, X! j8 d$ e* e" s) @
push eax$ J5 c; H _7 g) `! c* S8 X9 f8 Z4 b
push dword ptr ss : [esp + 0x38]3 I: W$ `: t0 U+ l. n4 g
call m_NewStatShow_goldcoinimg
0 D- Q7 P( ?* \: p1 F1 D: ? POPAD
% d% u8 I, e' `: W J& D JMP D2Gfx::D2DrawImage
; N3 H; R: G f: c5 G; A }
* W1 D3 q* t! G; d" T4 r" X}
, Z' l& O- ~7 y2 DDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
5 b; W( T/ V5 \/ {{& ~5 m0 l6 l9 C, u! o
if (x > D2Client::ptScreenSize->x / 2)6 h, |& T9 [+ c$ q7 F' N; {
{
, Q) R2 I' Y2 b+ } *y = getYGoldCoinFixBtn();: n7 z3 Q/ ~$ S
return getXGoldCoinFixBtn() + 32;
2 c9 H, l' v+ d/ P/ Q/ s4 M }2 C1 P6 }) K3 s- R
return x;
+ H' P0 B- D7 m}
0 x3 M" ]/ x3 V8 X__declspec(naked) void caller_goldcointext()/ L; P( A1 z; Z1 m- t
{
6 {' E, k5 k1 U/ x) b% M2 [: | __asm
% r/ [0 S6 I' u( z( h {+ p, m% C- ^8 e5 y/ a* N: c
PUSH ECX9 S( V, j( k" L" e
PUSH EDI
% f5 U; i+ L3 c, B- ^; W PUSH ESI
+ f5 y& h- c6 L PUSH EAX
$ J3 ?: L$ S$ B6 I5 l7 b MOV ECX, EDX
8 }/ [7 p2 T7 L' L LEA EDX,[ESP+0X4+0X10]
( p5 [/ Y7 C; ~4 L5 n CALL m_NewStatShow_goldcointext
2 N" F6 C$ H6 L/ E( X* e; l MOV EDX,EAX& O' D9 w V" z9 ]% z( X% b
POP EAX
# H0 D& D4 ~9 E+ R POP ESI2 d6 v0 f* Q2 I% A& h0 _$ ]" W% m
POP EDI
4 C9 G4 i; N0 A POP ECX! W& J1 Q- f6 ^% G
jmp D2Win::D2PrintString;
/ ~( B7 k% ~( u' a# y }' T2 m6 [# i/ M; H0 u
}
8 v# c6 v8 S, e h% P1 |8 W- f" \7 }% q2 T$ z3 K) \& }1 C
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)9 _: O) S! K6 Y# r I- S( a
{3 k- z9 e% [2 n4 o8 _
DWORD mx = *D2Client::ptMouseX;; ?+ i* ?: q7 t& P! s
DWORD my = *D2Client::ptMouseY;+ Y W1 F3 X& f: |
if (isOnInvCloseFixBtn(mx, my))% X- q* Y8 f! O) |. K
return TRUE;
2 J: l! G' c# P& o( H return FALSE;
3 @; f# B; h. S l: Q+ @, {1 z}
; c0 `0 n; p# g5 B+ L7 m__declspec(naked) void caller_close()
& |. J$ m' y% ]6 B( { |2 i{, u5 _/ ~- B& t: q) |3 w. B
__asm9 E+ r+ E _" |7 h5 M' I1 @2 Y
{. @8 G0 k' q: o* l" u/ g
PUSH ESI
D7 I O l% S2 a push ebx
5 n8 B5 e* d$ H6 }( f T5 C call m_NewStatShow_close0 m' r$ h: o6 p2 R. R" t B
pop ebx7 @% F1 _ |) l e& A( j# }
pop esi
* _+ t* M2 g3 v2 m+ V l retn
* b8 Z! D4 \! u; b$ ~% d9 W }
% N! b+ |5 `& ~1 v$ W$ t}: E, F K! @8 v c: c6 R
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]): i7 k$ `& m* g- {$ p: o3 X
{# F: ]+ i0 t. Y
*nXpos = getXInvCloseFixBtn();
, J( K8 l# B6 ]* i6 y; ] *nYpos = getYInvCloseFixBtn();. v% P! o. x% `1 u& L* p) \. O
}
; |, l8 G* X6 z. g) ~1 J__declspec(naked) void caller_closeimg()
+ b: U2 C. \: q' `: f/ \3 n) g{" S/ c. ]! Z* V4 @! g; r
__asm
; f2 I' p' ^ } D( S {' E6 `, G, v6 \! v
PUSHAD
+ V; ?3 R6 t/ h) {+ ~ lea eax, dword ptr ss : [esp + 0x38]
3 t/ s4 l2 m! Z push eax
$ Q! l0 A: m, p1 z4 x% m push dword ptr ss : [esp + 0x38]7 z5 k6 j" p \3 B! w& l8 R+ |4 L. D
push dword ptr ss : [esp + 0x38]
& s" Y4 l- I/ }* k) ?, O6 S lea eax, dword ptr ss : [esp + 0x38]+ k1 m: P( S- H
push eax/ m: R( d( ]7 E* V7 h( ]
lea eax, dword ptr ss : [esp + 0x38]
2 b6 s3 K6 t z2 Q3 T' a) h push eax
& A( r& Q; L3 d, i5 d$ k push dword ptr ss : [esp + 0x38]
6 o; d S" @' R, h7 H! b! D* Q call m_NewStatShow_closeimg/ o; ?& ~/ e9 R. P+ E
POPAD
/ {9 h* ~/ L3 @8 Q JMP D2Gfx::D2DrawImage
3 n5 M: ~4 x% ~, C" B }
8 O+ e& ?" B* S' l; A}7 A! C9 i8 D% S _/ k
( L$ L# `4 C1 r" X( g! V
" b D. r8 ]. {9 ^ ] |
|