|
转载
C% t- @9 D1 kBY SJ
: q- v0 K" L8 F首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)6 R" t$ K, V" f! Q0 Q5 V( O- ?
; \5 Y8 V8 `1 m4 Q
D2Gfx::D2DrawImage-10041
) w7 r; f' N* {& a0 |% F; {% t1 d1、修复技能的背景(不需要可以不要)( ?* ~; }( l5 f$ M
offset = D2Client::GetAddress(0x77AA8);- d, g; Z7 o8 }$ [
Memory::SetCursor(offset);0 c: W4 v1 p$ ]& Q
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);+ L8 l) c s# s
5 T5 O& e/ \- t8 a7 pvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])* Y* ^3 @) @4 z, H" H
{/ m* p \: Z5 r8 e1 b5 X8 G
//Init data for print image
" o( K! e5 d) m: c8 R sDrawImageInfo data;) ?+ B4 M! ?, [7 x! f3 c- x
ZeroMemory(&data, sizeof(data));
4 u7 e( v3 C$ E3 q- z
, L1 W7 o5 m* L( @$ R //print background' `* `: `" l3 {" ?& [8 e; C
setImage(&data, spellBackgroundImages);
; p6 z# Y( g; Z- d" `) s setFrame(&data, 0);
, y: h" C: |! [; t) J# D9 v" o int fixx = 511;( [3 F' C' \. V& w' v ]$ P
int fixy = 9;. M- _8 Y" @" y5 v, u( o" \) k
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
! r- Z2 A d) y3 d+ V setFrame(&data, 1);
1 k+ j& R0 w' G: S D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256+ a: X% v% U" i& j0 ], I5 D7 k
setFrame(&data, 2);3 M, z6 u1 O6 A- u2 w8 f3 ?# Y
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432* ^" T& B& O( k, T- l& j0 N" ?
setFrame(&data, 3);
! l. l6 S% q$ a. k9 M, Q D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);6 B& c8 @9 ?7 F0 O) F
}5 I! ^( p) e( ]% d+ S5 B2 [
__declspec(naked) void caller_SpellBackGroundFix(). D4 M; b+ p3 g& p+ ~! s
{
, ~8 l1 g* f/ ?( d __asm
- E* K. L4 C5 F: X {9 X& ?) W9 v/ S9 w
PUSHAD
- P5 ]: j }* b% C7 a+ R lea eax, dword ptr ss : [esp + 0x38], n( A( y7 `, X& G+ Q5 f$ I- h- X
push eax
$ [* b3 i* w" ~- V/ k8 c. y* H push dword ptr ss : [esp + 0x38]
3 _) e! M0 I% G1 ` push dword ptr ss : [esp + 0x38]
# v. q; I, a' P( q7 t2 H lea eax, dword ptr ss : [esp + 0x38]$ w9 h# h X* z! n
push eax
# d4 V0 {9 g, H lea eax, dword ptr ss : [esp + 0x38]
4 }3 D+ z! W( u, M& t push eax6 B1 j1 P% G" o; n& A+ i* X
push dword ptr ss : [esp + 0x38] b2 W# `. r& @7 Z, {& v' `, R. V2 R
call m_NewStatShow_SpellBackGroundFix1 O0 E: _% ]6 q3 m; E
POPAD; u& l$ z/ Y8 z+ Y- P, Q
JMP D2Gfx::D2DrawImage
' }: q7 V1 N9 h5 l4 O2 W }
2 D! ]5 t$ U$ |" W ~0 F}
( Z" ]4 m7 f# f" i
" G D9 d+ R' H# I. ~1 V2、我们如法炮制小站的背景
+ N2 k& P7 ?: G8 K) x7 j+ a6 J D' j7 b# t/ Y* E
offset = D2Client::GetAddress(0xAB010);
5 D [( P1 A+ E3 ^! i6 _; {Memory::SetCursor(offset);
5 t6 a4 g% G* \! f) T" w+ NMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
2 Y7 s# l5 z) v9 y: O" T& k: q4 h
3 i) z) ~! |# Q% K2 G6 L' hvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])7 T9 x9 V0 N3 f1 P( A1 j. ^( h( j
{2 |( Q p+ u3 I* J" y% t4 B4 u
//Init data for print image
) E" {$ i; s8 l9 `9 Z sDrawImageInfo data;5 ^) U& n6 f8 V0 i
ZeroMemory(&data, sizeof(data));1 a; t7 n/ _6 g2 H) e# h/ |
2 U* R. p6 v# H/ y9 _+ b
//print background
" W7 K* Z$ {; B( R setImage(&data, waypointBackgroundImages);" G2 E0 g- c+ Y5 C
setFrame(&data, 0);
3 X+ p5 l9 | {/ J int fixx = 0;
6 [: x/ C5 v8 c+ O* d0 A$ O int fixy = 9;
3 I. A0 q# v9 }1 z# {1 g D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
3 V O1 B* |" L0 x setFrame(&data, 1);
4 `" x# `1 v8 f; n- g5 |( v. S D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
7 M) c; D$ t" K0 V1 ?+ y setFrame(&data, 2);& i" L1 j4 D/ ?* v" \9 @
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
' }. p/ X. @+ k$ f setFrame(&data, 3);9 s) I4 T n, x) \
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
- ?8 M; @0 d1 m& D$ n% y. }1 ] b; T% r% P# t
}
. ^8 s8 u4 I. k! o__declspec(naked) void caller_WayPointBackGroundFix()
3 P6 ~' Q) M. F$ y& u{" ~; T7 ^8 G7 H! \, }6 Y
__asm
0 n$ m+ |1 z/ _- L$ h% X' \ {$ G+ o# B+ a& c# D' K$ Q% u
PUSHAD: R5 ^. U+ y) T
lea eax, dword ptr ss : [esp + 0x38]' ?) b$ u& l7 J+ O' W& ^
push eax6 ~7 ^2 X1 N7 ?" Q( K
push dword ptr ss : [esp + 0x38]
2 J6 E$ F) s/ @) ]7 K& d) d push dword ptr ss : [esp + 0x38]0 u8 ^; e! O( Y8 E
lea eax, dword ptr ss : [esp + 0x38], W: `8 B9 v, }0 l
push eax
~: {/ g6 |# W( V. S$ g7 h lea eax, dword ptr ss : [esp + 0x38]
. ~" m& o d) S5 G push eax- E6 T0 ]# R4 P/ @3 a
push dword ptr ss : [esp + 0x38]1 j; }6 t$ z* @9 |2 O- g
call m_NewStatShow_WayPointBackGroundFix
) v1 e: I$ V# o4 d2 B POPAD& F3 {* D* o5 T7 R* j) [
JMP D2Gfx::D2DrawImage
" P3 Q! `: b2 k4 @( h }) V$ m* D; b7 w0 s6 i& e n
}& L( r1 ~4 ~' }
1 T: V2 \( j# A3、以下可以搞16*16超级箱子-腾出我们需要的边缘8 f5 N* B# h1 T3 Y5 l: i* Q) _
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)! e- V3 ^7 w) ]- M: }3 Q: w* J
{
- A, m9 P! y2 h& r& H class D2MultiRes : public Library<D2MultiRes>+ J. G( L1 H: g% }0 \
{+ R0 y. l- \5 U) X
public:
$ n! }) @( D3 G) a. M$ p static void Init()- [- X. l- v1 i. b1 `' b
{
7 p2 j* N3 {; e% y5 c. S0 ] Name = "D2MultiRes.dll";
. ^. S5 ~/ R* Y: }. O) y. @ Offset = LoadDiabloLibrary();+ \- b* c4 s. U. b; l" b' K
}3 C7 f+ ~+ I7 ^, j4 e8 p0 {; m
};
9 W3 c$ I: ?+ c7 n9 ~8 C4 M D2MultiRes::Init();. X6 R- G* L# @( a. H I( Y
D2MultiRes::HookLibrary();& }6 [7 o" [+ A
5 z, _" `% ]2 K+ _" X
8 M* F2 E; Q, Y. l
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
+ e. P5 ?% p) j. ?6 ? Memory::SetCursor(MiscFunctionsOffset);! o) X! Y4 ^# k* o1 ]
Memory::ChangeDword(0x1b0, 0x200);. ]9 @& l5 F! x& K' r
! V* @* q* T- c+ i
2 Y2 w) O# s5 K4 V: b MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);9 x2 y/ p( _! X' d0 C
Memory::SetCursor(MiscFunctionsOffset);
; D; p7 u0 S" _' k/ g/ G Memory::ChangeDword(0x140, 0x200);
+ o! N6 C1 p, [( n' a% e
: s9 V4 E: D! v2 z, ]
4 x5 `: i; O. r3 a- U' c( ` MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);/ x% ^5 V& Z' g
Memory::SetCursor(MiscFunctionsOffset);
0 c! [' |# A: K5 ~4 U% h) W' T Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块0 s" I/ P5 y0 {% {
1 _9 ~% c; w* X0 @& Y, U MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe); E, y: F4 E& n- N3 ?
Memory::SetCursor(MiscFunctionsOffset);
2 X( @" d8 M3 a# W& v Memory::ChangeDword(0x200,0x299);//下边缘 299最大
9 v& S2 {; J5 D/ S3 L! ~; C4 r/ @* W, `
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);1 g! [: x8 |5 F6 b8 R
Memory::SetCursor(MiscFunctionsOffset);
% r& c8 s1 `! `/ X" _ Memory::ChangeDword(-0x280, -0x400);//这个不要动
2 u! ?" J) m- {- e! L3 E E }
6 T1 G5 t6 a% H) S; s
5 E) K2 j2 e/ v" k) p8 e: S+ i4、快完成了,是不是发现金币啥的位置不对??3 d) O1 M( A4 {5 {& t+ x
6 o* r8 u, V8 Y! _( ] o# A! Z% l8 V
//这里修正我们的装备栏
( i% m! p" S. ?4 ~ offset = D2Client::GetAddress(0x99B6C);
- K. Z6 M* z/ b) w; { Memory::SetCursor(offset);
" V# ~. b5 Q7 w3 `8 L( d: G$ M Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
9 j' p" `4 N X2 O
, ?) |( y6 S4 q+ T9 } offset = D2Client::GetAddress(0x99BA7);- r% a0 X9 B# i8 _- a7 H# F
Memory::SetCursor(offset);
; a2 {% _8 Y# w/ R1 f& H; Z Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);* y4 X: T1 c4 R2 p- {9 n* H
: }" a+ p Z5 L offset = D2Client::GetAddress(0x99BE2);
1 B |0 h- U! S: M" m9 @& s+ z Memory::SetCursor(offset);2 ^. b7 p P( k% @, D( h: E
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);) c/ C7 [3 o: X6 T5 T2 S
+ s- u# N" |4 t: w" n' a offset = D2Client::GetAddress(0x99C1C);6 Y. D/ _; w: i- L6 P, U1 Y) a' a
Memory::SetCursor(offset);% a( F% g8 E+ i6 T% b
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
% R; a, P& ^8 `, q* h. d- f2 i/ f4 h# H3 @" @% u' a
//取消两个popup,偷偷懒不过分
9 s2 c. Z5 Z! R+ a8 G7 _3 H2 c, Z t offset = D2Client::GetAddress(0x9386d);$ I1 P0 N; f6 ]
Memory::SetCursor(offset);4 k, L o/ @. _
Memory::ChangeByte(0x8b, 0x33);
* |. X4 K0 c: u1 L: }* G. x Memory::ChangeByte(0xc8, 0xC9);
) U3 c- d7 h9 d# X( c7 ?8 D offset = D2Client::GetAddress(0x9390b);; g$ z8 q) S9 ]! `
Memory::SetCursor(offset);
. d" l c1 A* }) d5 n8 | Memory::ChangeByte(0x8b, 0x33);2 U' H- H. ` ~4 d5 l4 N1 r# J
Memory::ChangeByte(0xc8, 0xC9);
' J( E( {3 R) u+ [) \
/ ~& h2 H4 e) o: v' z9 w; |! f //修正提取金币
4 U- p% G7 S" L4 H/ B4 A, _' s offset = D2Client::GetAddress(0x8D3E5);: G3 G/ ]! k( Z Y6 X4 o
Memory::SetCursor(offset);
4 d- x+ O0 n; p3 z Memory::ChangeByte(0xA1, 0xE9);
1 q- f# |4 L7 R Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);5 C- B* i1 l! K8 f# J% n
! W! h$ A+ E6 |" J: k! t" W1 q
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
9 G, D( J( r6 D5 i' f8 l3 @6 S5 i Memory::SetCursor(offset);
2 K7 @! Q7 W5 u. M- O; G) a Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);. i7 o$ Q1 n+ f' M
6 C, B# k' v1 U7 ?: a! ]0 }# o
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
* ?0 W/ C* u/ L3 G Z4 h Memory::SetCursor(offset);
6 b7 i% q/ X, S; a" ~, @ Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);" j, r1 h' s9 f' k
& D$ g1 C0 P" r5 J) W8 E m" H
//修正关闭按钮
9 p+ E+ V" T- c2 {7 q B, i! ]8 o* ` offset = D2Client::GetAddress(0x8BD90);
- b; S `) O, r7 {$ M1 Q& I# F Memory::SetCursor(offset);5 J4 b6 s' E ^3 Z" t
Memory::ChangeByte(0xA1, 0xE9);
6 ^" S( G" u: @, W1 B( K/ U9 Y Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
9 r: ]+ e2 V" i1 q) o% Y
: I( S- d0 _+ H/ _# T5 f offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);+ \! W& ]2 d. ^& ?
Memory::SetCursor(offset);$ t. J: P' p* w$ A
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
+ T- k( j/ c8 _/ Y9 T+ b; _9 B( _8 `, A
$ o+ N, T! h4 N! b: P
//以下是细节+ W' V& [; Q. e7 s( I
#define getXGoldCoinFixBtn() RX(0x2d0)
# |* _8 S5 u! Y+ ?6 f#define getLGoldCoinFixBtn() 32& J( }( G D+ U4 a3 Y1 Z
#define getYGoldCoinFixBtn() RY(-0x59)# c& u0 A9 {8 F6 }% B
#define getHGoldCoinFixBtn() 32) W- r, e* m! h Q' {0 z! j2 E2 ^8 _
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
% r9 l' p q' c- C+ d+ K. {, ^* n! F s
#define getXInvCloseFixBtn() RX(0x3db)
1 R) W6 {7 C* g% i% f#define getLInvCloseFixBtn() 32
/ Q c5 Z! t/ ?& E- T/ r#define getYInvCloseFixBtn() RY(-0x63)
l* V! O7 V; |9 A#define getHInvCloseFixBtn() 32
& H. I* z! e- t, t1 _, v# x7 C#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())! ~* M& T, I* {- O% r- y
8 H5 J' o! q- ~" \/ T+ oBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)) @4 O. D, }, N8 o* u
{
+ t: \2 p. _7 l9 m" n/ N# | DWORD mx = *D2Client::ptMouseX;
' g# g3 w2 P: K2 m4 @0 d; Q DWORD my = *D2Client::ptMouseY;
9 O `( Z4 ?( W. _* a/ N- K if(isOnGoldCoinFixBtn(mx, my))
% ~2 p9 I: ^3 t! x4 ? return TRUE;3 d# G( Z* t: p/ j0 q4 [; X! b
return FALSE;6 l5 i6 X* X9 \' [7 B
}
" i6 u. k$ W2 I2 N, b& \__declspec(naked) void caller_goldcoin()
* V* L4 p' b: G0 V# k4 h8 L! X{6 M% |9 |( J5 _9 t$ f1 T
__asm! D9 s% [, N; ]: C
{
" {4 E ^% l6 B' P; V push ebx
% x! m. @2 X# n mov ecx, esi" O* X, m$ F; D; ?
mov edx, edi
' R# g) U0 x& e; o call m_NewStatShow_goldcoin
5 Z/ R7 |0 J) B7 [+ ~" I: X pop ebx
& r! ]/ `3 }7 v pop esi
6 s* E: v9 Q1 v8 P2 G2 j I1 Z5 ?3 b retn( ~* e! {1 e/ n- D; k) D
}
) r2 J! X5 J* \9 m9 y# V7 A}
3 G0 @! N0 M5 s/ P6 Y' i7 Q( u3 g+ pvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])- Y8 _; | X: E. e2 e
{
6 W$ e2 {! W, B% E k1 w if (*nXpos > D2Client::ptScreenSize->x / 2)
0 }! s* z5 W4 o {
* m: t0 Z" K, Q; u' _6 a *nXpos = getXGoldCoinFixBtn();& x G; I. d4 Q2 X) ?) T4 R, X
*nYpos = getYGoldCoinFixBtn();" y. C! c% q0 B4 g! h+ U. U
}
8 N& a/ A& u" V4 t: A. t}! C6 e; \' c% F7 L3 \5 Q5 ^! O& s
__declspec(naked) void caller_goldcoinimg()
5 t1 G( m. n/ C R b' S7 R. t) F{
6 z4 S1 N [% y$ [. r) I9 e __asm
6 C9 l" I$ P% K! @* m7 p {, v3 P7 Y! L- ]/ I9 j/ q7 l0 h
PUSHAD# w" g3 }% C2 f
lea eax, dword ptr ss : [esp + 0x38]
3 \6 ~7 q+ w* y( p: L/ q0 e6 N push eax% ?) o1 k% s: J
push dword ptr ss : [esp + 0x38]
1 I# b1 k5 m, }; b( M push dword ptr ss : [esp + 0x38]
3 J0 C) U3 ]; s: R s3 J lea eax, dword ptr ss : [esp + 0x38]
+ T2 K9 H# i6 r( _/ C push eax
9 t" e1 j" |! `, o6 k+ D lea eax, dword ptr ss : [esp + 0x38]8 L6 e0 g9 f; e% ~1 z9 S, O
push eax4 D# B8 h2 K2 p- g* B1 h ? ~; _
push dword ptr ss : [esp + 0x38]
9 t: w+ [5 e/ F! w1 m# Q call m_NewStatShow_goldcoinimg
: ]' P3 O* X! ^" I POPAD
5 N) L! v$ K; ^ JMP D2Gfx::D2DrawImage
: p U- l# {! {; \2 ~/ v- N1 H) q }
. ?/ }: y( @0 b+ q}
8 X/ {4 i0 B8 d. \DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标7 O" U3 W- f" b$ _$ ^% |
{
' [6 o6 a$ h. y9 | if (x > D2Client::ptScreenSize->x / 2)
+ }/ V6 n! _2 m# W: B {- J4 w+ y1 R! X- C: ]8 ]
*y = getYGoldCoinFixBtn();
. Z, w' Z/ n+ x+ q return getXGoldCoinFixBtn() + 32;
; X. E6 R. P6 Z$ K* a, l }
1 c! d! y. u1 \8 i, x- X return x;1 t- K$ p4 K8 C' A/ c7 {
}
+ o* V o1 P0 {" L__declspec(naked) void caller_goldcointext()
, @8 X6 F& C$ K/ b{3 _4 ]6 S6 c, o& A' ?8 v7 z5 g: [
__asm1 [6 ]" Z5 J- d9 i
{% t9 T% k* s" ~% `1 r
PUSH ECX5 h$ {" p1 C+ R. o
PUSH EDI9 _- u2 @- ^& j6 s, q2 W% a
PUSH ESI
, _$ a6 B6 i- O/ j- V! m PUSH EAX, j5 U E F3 l6 l* f0 w8 X
MOV ECX, EDX% c, W1 b; L- } J3 p) |
LEA EDX,[ESP+0X4+0X10]# }9 n% U1 ~% M T9 l0 c
CALL m_NewStatShow_goldcointext
! F P% u3 j) G' Q; o# ?4 k( h2 p MOV EDX,EAX- G3 l: E( ^5 I9 B% o8 g
POP EAX
5 O. O: B+ c/ T. U% Q, u/ S, g POP ESI
2 P: N3 c" }' N POP EDI
0 ?% | G- a7 p) C, Y# ^. ^! p POP ECX0 d0 c+ o/ k! \' n
jmp D2Win::D2PrintString;
' A1 b; n4 @4 ~% i0 s0 s' X }
& G, P1 u9 K: z0 j8 Q* r}2 X1 M$ _% E: A7 Q
5 O: X3 I L, O" eBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)9 w' K+ t0 j* C3 d( Q
{
: S- P) h# n' y! A DWORD mx = *D2Client::ptMouseX;
5 o6 i* w5 t( D% ~9 p$ G2 p DWORD my = *D2Client::ptMouseY;
/ ?6 |: c D4 L; v if (isOnInvCloseFixBtn(mx, my))
" @: R* Y; G, e8 B* n return TRUE;
- ]. N, ~ h" d: u1 ]2 _: e# ]7 b- p return FALSE;2 ]& a+ z8 u& F8 h+ j
}0 @$ l7 m& A: c' [) ~. y5 D
__declspec(naked) void caller_close()) G7 ]( \% @* h D+ ?5 j5 D
{
' {2 j: V- X& p& H# r8 w __asm8 I- ~8 S E% o1 d
{5 ?: ^+ B/ H! V( T; ~9 K
PUSH ESI' k' x( j$ k* [9 r7 |
push ebx
0 K4 Q A: `6 N1 W5 T q3 |4 j call m_NewStatShow_close. G0 e3 W6 ]+ f4 X6 f
pop ebx
" F6 U7 t5 c+ D" i pop esi
. A5 H, u$ q$ M) [" ? retn. s1 T* C3 v% o" r
}
% e- S, t5 N, v# `* P% e9 t e}/ V6 E1 `: T/ R4 l- |
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
6 \$ z+ r& G4 }4 v/ T" e0 `1 h{; w& R) W! K7 o$ l: S) e
*nXpos = getXInvCloseFixBtn();
9 \+ W1 O: G0 u5 e *nYpos = getYInvCloseFixBtn();
' Q. F( {( v$ L8 w4 m}- v/ T% ? `6 N/ Q
__declspec(naked) void caller_closeimg()7 N3 C7 K/ {1 L7 b1 X2 i& I
{
# M6 G2 _3 y, K- H, N( x/ ?6 F* [ __asm
3 m2 D: `7 j. D0 u! s; r {
# d T4 F2 {2 @4 B PUSHAD
" t3 G. K, y# r2 O lea eax, dword ptr ss : [esp + 0x38]3 ~6 B% _+ S7 G4 Q2 z: {% a
push eax
. a9 v& u" k8 i5 O- Z push dword ptr ss : [esp + 0x38]
' k, y! D. j- F7 F' v ~! f push dword ptr ss : [esp + 0x38]
+ l8 p n# y4 S) p9 R lea eax, dword ptr ss : [esp + 0x38]& z( ?( H0 W7 b! t `
push eax6 ?, \% L% X8 D7 v; i. B: W! k" }: J# D
lea eax, dword ptr ss : [esp + 0x38]
; X N/ L/ d: H8 `9 @0 B push eax6 k: g4 x, q3 ]& ?; J" S9 P4 t5 M
push dword ptr ss : [esp + 0x38]9 A/ e" v; k1 f& Q4 V- Z9 t5 ?% {$ z' a
call m_NewStatShow_closeimg
: M0 G5 Y$ ]! s! A( }- [; v* \ POPAD+ q# H& w6 b) j% \8 I3 r! K+ r) y
JMP D2Gfx::D2DrawImage% j! t) U) W" P+ L w% j: y3 h
}" @2 ]1 n3 U1 J, t
}
: T3 S7 Q" {0 {7 e) n1 D- T s8 w/ c, h; q% n- b0 r- W3 E `
1 {" _" J- U6 d" _ |
|