|
|
转载
+ @7 T; r6 d" C$ \! ?BY SJ3 C. t0 ^6 w1 W$ V% @, l
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
" u* X: U" T9 p, }1 L2 c0 {, B
2 t8 l* G( c, E9 S4 d2 i: CD2Gfx::D2DrawImage-10041( u% p+ U8 `6 ^: p5 Y$ i
1、修复技能的背景(不需要可以不要); M, ^9 K; e6 w4 q/ ~4 n* n
offset = D2Client::GetAddress(0x77AA8);; U% p. w9 A, B" l$ w5 t
Memory::SetCursor(offset);% K4 B4 e6 }, ?. l4 p1 f( d. A
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);; w _7 F4 d) M4 ^& g3 W
) W1 Z; F; r, n% e: Evoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])5 `" k; P1 H& e- ?7 S% e8 @+ C
{
. G ^, p: b2 }5 G" M" U2 t //Init data for print image
8 f4 d! o) R3 j: m, ?+ K sDrawImageInfo data; P) k! k( |6 Z: ?2 a) J" h3 Z
ZeroMemory(&data, sizeof(data));
9 r0 K& p( K! Y* U& ?6 o
' Y) q1 W* ~) D* S# [( K //print background
. r- r2 Y- b5 v# }. |3 J setImage(&data, spellBackgroundImages);
" a3 j) R- N& x% a8 C setFrame(&data, 0);5 m1 e4 a$ \& \: B' o
int fixx = 511;
- V# }! D7 D- J8 o5 ] int fixy = 9;2 r* f8 H; x, T R4 r' O' A6 l
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);
) s. {. O' c0 W' g setFrame(&data, 1);
, ]0 @! {9 U; t D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
2 {9 J8 w: S7 m% J3 u setFrame(&data, 2);
9 l2 p- N# h7 i( Y G/ V# Y D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
* ]9 I* n6 I, S. ?* I. \; K' z, v setFrame(&data, 3);; R) J4 Y- J+ C& D
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
3 ]0 G. l; R% b; d$ Q) {! U3 d, t}; N; u8 N* Y! G1 y' y% o3 G4 ?6 n
__declspec(naked) void caller_SpellBackGroundFix()+ ]; k" a& g3 P* u" S) K
{7 E/ a) o3 o0 d o; ?1 Z
__asm( A3 X: z& K, l+ {) Y
{
0 h; [/ m% t& ` PUSHAD% z" G8 k f1 U/ N, B
lea eax, dword ptr ss : [esp + 0x38]: e# H" Q4 @ |/ a- o8 _; T7 i
push eax u. v+ c8 c0 V
push dword ptr ss : [esp + 0x38]3 E) r$ ~9 i8 I, w4 F" r* V
push dword ptr ss : [esp + 0x38]2 N6 r. i4 \: q" x. u; z5 D7 y! w% F5 P
lea eax, dword ptr ss : [esp + 0x38] j& O+ }; @. Y0 U4 m3 S: w( ^
push eax
( Y0 w( S/ n# ]8 K3 y* j# ?1 B lea eax, dword ptr ss : [esp + 0x38]
! a' B$ [% L) `& Y% D0 ?* D, h push eax
! e5 ~# j7 G$ f push dword ptr ss : [esp + 0x38]
( j, x6 I9 F R1 f1 O call m_NewStatShow_SpellBackGroundFix N4 I" Z( @0 i2 g* z4 x. ]3 [
POPAD& K' b; S. Y2 C: o0 L. J
JMP D2Gfx::D2DrawImage
) a5 x% X$ O0 `9 o } ^: S" w+ u; V! d3 E
}
K& F* N# o" p# P) `' I. j6 o! f0 a( G* A
2、我们如法炮制小站的背景
" v+ D1 o, \' k( K- P; t/ ^* @3 p) g- ^8 U( X# D6 f H
offset = D2Client::GetAddress(0xAB010);1 \+ G# Z# ^5 x1 B K
Memory::SetCursor(offset);* R0 a8 s/ L( W9 G1 i5 {4 z; M
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);. b. u% k% ?4 u2 S l: W
; [+ D1 Q" @" q7 P- Lvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
4 n2 M! R" f9 q& f+ ]$ C4 c{$ ~2 B# y$ R5 G) K
//Init data for print image
+ Z- `9 V/ }! ?$ h3 u6 m; e sDrawImageInfo data;
" a* o7 O( `6 z9 o( I; i ZeroMemory(&data, sizeof(data));. t8 W4 h3 E' D& s+ B! N% p" x
. Y2 Z5 y. o! A+ F; a% j: R
//print background7 D3 S0 n- P/ k: D" I, j
setImage(&data, waypointBackgroundImages);/ a8 j4 |0 x- {1 \' P( ^3 _
setFrame(&data, 0);
+ p6 @! |' g. L. K int fixx = 0;* T$ r6 {( w/ g8 `9 v
int fixy = 9;
2 P$ P! x7 O2 P D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);1 j2 O- I1 J7 p9 U
setFrame(&data, 1);; ], ^7 F8 z. r! D8 Q: d; a
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256% K+ v+ w5 ]/ H# s( i! |# r" W
setFrame(&data, 2);
' ^, M( y- o3 H D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432: ?2 Y! x; ?/ O1 a5 l
setFrame(&data, 3);
5 ]- w% X0 A8 l W: M+ { D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);( X% R/ ]: W! h* [' h
; g9 ` p! i3 J2 |: z1 n$ S# B
}
7 t5 W0 E4 a# }4 b3 ]4 B__declspec(naked) void caller_WayPointBackGroundFix()
9 B# s: \6 ?9 R( ?* I{
0 s! f% q7 P: ?) c __asm
' e% V3 [9 h, Y {
. A- f% J4 R' \ _ PUSHAD
; C# `& T3 F2 x+ O* } lea eax, dword ptr ss : [esp + 0x38]
: g! R, H" f* ^3 G push eax
@5 U0 G1 ^- o' D; l% G. O6 A push dword ptr ss : [esp + 0x38]0 w G" Y3 H) v- c9 L% W& I
push dword ptr ss : [esp + 0x38]
; Q" q7 }- R& k0 Q$ C lea eax, dword ptr ss : [esp + 0x38]
) _6 C; @* c1 _6 l7 u push eax* R; J X% z7 @0 e
lea eax, dword ptr ss : [esp + 0x38]5 u3 ^. h7 }- O/ Y3 c
push eax
& h+ B( C* y; z3 `- g | d push dword ptr ss : [esp + 0x38]
8 x% r7 Y& a, a; [) d1 p call m_NewStatShow_WayPointBackGroundFix
# J3 J ?: b$ Z, f/ N% h: R* e( S; b8 h POPAD
: R7 J" ]/ o! Z7 f( H' G JMP D2Gfx::D2DrawImage
' n& }4 K- L; B& @2 ~0 T }' c( k6 @& }4 c: |6 R
}$ ]* K8 J6 y9 T' h1 R, Z2 r0 ^
2 p) N6 D- ]7 R6 q1 [
3、以下可以搞16*16超级箱子-腾出我们需要的边缘 q0 |1 _# v; m: [$ I' t
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复) B( f1 k- k1 q! e
{0 z7 H: L/ n# S7 U3 `% B1 _( U1 w1 R: G
class D2MultiRes : public Library<D2MultiRes>
! V# ?- G) g: g* u/ _ {# z# y+ ^/ e: h7 D
public:
# q6 n5 Y. j. P( X static void Init()
8 V' k+ p/ C' @* l4 Y- v- w {* p8 u# w! |9 G3 z& E
Name = "D2MultiRes.dll";! [" V- B/ h' q3 p" h
Offset = LoadDiabloLibrary();
/ ?" s; M4 Q# y }
( I2 ~/ x! F5 R };
; `; {) u2 c" J D2MultiRes::Init();
( G* Y& b [1 x" t3 W* j8 s D2MultiRes::HookLibrary();7 A J. Q, Z" m. T- a5 w
I* J! o1 D$ A4 x9 f
1 ~! v2 f- ]9 a" W MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
/ W; b V) ^* m1 u' f. A& B Memory::SetCursor(MiscFunctionsOffset);4 u& X# K7 @& j* N; M
Memory::ChangeDword(0x1b0, 0x200);
0 m/ S4 V7 D/ r9 a/ `7 a" q. w$ z' ]; g" w5 @& x+ F- r1 {
: T0 a: g- ~; x: M
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
+ W$ g& Q! y, f& P& q: q Memory::SetCursor(MiscFunctionsOffset);$ A6 G/ j e( i, V6 s
Memory::ChangeDword(0x140, 0x200);
9 c% d' ^: n& X* w
4 h. i+ }' n* i$ j7 g! y r; l! X) _* }& |: _
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);; \$ n* Y; B: m. ]
Memory::SetCursor(MiscFunctionsOffset);1 g8 T- o* I7 h% ^3 `
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块( ^9 F( s. G6 d9 u K
s% `5 y9 J- s) W! h8 U
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
% x' _) Z" u g! a" e2 F7 d# Z$ r Memory::SetCursor(MiscFunctionsOffset);4 d, Y8 V1 |* M2 \5 m- I7 L& |
Memory::ChangeDword(0x200,0x299);//下边缘 299最大9 _& [9 ?( _" A% a. l6 [7 a% `1 h
0 J( G5 D* D- D) m MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
: h" w5 C- d" f: H4 f8 x Memory::SetCursor(MiscFunctionsOffset);* k1 O& e' u% G4 O
Memory::ChangeDword(-0x280, -0x400);//这个不要动& E# x! z( {7 o
}4 B% q7 o) i; Z0 S" a" I$ l
# u/ d% A7 e+ w5 P" _
4、快完成了,是不是发现金币啥的位置不对??- B5 r+ M! c$ [, K
* q" H7 H/ J/ Z' e) H//这里修正我们的装备栏
0 e" v) H3 k [) v8 ? offset = D2Client::GetAddress(0x99B6C);
$ L1 V" e. c( D3 o1 G: N r ^) J Memory::SetCursor(offset);& M- ^0 |8 ^5 `
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);* X2 R0 z2 |1 M+ n/ _; O
+ p+ o9 k: ]" N% [& w offset = D2Client::GetAddress(0x99BA7);5 U$ k9 S- ^* d
Memory::SetCursor(offset);) }) L6 s' h5 t
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
! M/ B3 W8 |/ Y0 Y+ Q
8 _, }4 e T- u+ z; m offset = D2Client::GetAddress(0x99BE2);3 ^; _- I6 }, B6 [) q: V
Memory::SetCursor(offset);
$ l1 o+ S Z+ p: } Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
; G( W# G8 _' `" E/ t& o( H& n3 b: O6 f) L4 J3 l/ s; a
offset = D2Client::GetAddress(0x99C1C);6 ^' V0 V" f# C" [2 z+ }
Memory::SetCursor(offset);
6 Z# T3 O7 e1 X# W Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
: b) g {! U, p6 y u7 q4 [* R' r" x6 t
//取消两个popup,偷偷懒不过分" u% X2 K" m" r+ _: n
offset = D2Client::GetAddress(0x9386d);- }. [5 N8 j: I
Memory::SetCursor(offset);# x+ P) b) B0 ]! C# Z
Memory::ChangeByte(0x8b, 0x33);2 N* r8 p7 [0 c2 \. ]
Memory::ChangeByte(0xc8, 0xC9);
; C# u, C) J; }- X8 j9 Q offset = D2Client::GetAddress(0x9390b);, x$ Y9 Y& M, r2 M; O5 x7 Q
Memory::SetCursor(offset);" J4 ?3 ]6 i+ }: j
Memory::ChangeByte(0x8b, 0x33);
7 l& t: l6 o/ Q, E Memory::ChangeByte(0xc8, 0xC9);, m6 L) w0 M& @8 |
5 p! @3 h$ o( q" c3 ^ //修正提取金币
/ R- `) l" }5 C- Z; D- F2 t offset = D2Client::GetAddress(0x8D3E5);
- O) U- D) ~9 L; P Memory::SetCursor(offset);6 e9 E4 f" T, H8 _( o2 u; _1 C0 t! l
Memory::ChangeByte(0xA1, 0xE9);* [2 e" C Y, g$ l
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
1 i7 |3 {0 `6 ^* \- ?! @5 z0 J5 r( W$ C; T# I: c
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
6 ~7 [' c3 e6 `+ V9 y' Q u( F- Z Memory::SetCursor(offset);+ j' ^8 [) Q1 x5 k% ~) h
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
5 ?/ O( l8 w h2 Q) t0 h) `6 g. [$ A7 c4 r4 c- E
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);; w7 z$ ?6 B9 G7 b) _, N
Memory::SetCursor(offset);# g$ [1 K) Z/ K0 N6 ?
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
k- z! _ L* S! a/ w3 r) E# b; R6 _
( w% T( W/ l" o: u1 c0 B //修正关闭按钮) H! F7 G9 ~7 M! P% e& Q
offset = D2Client::GetAddress(0x8BD90);
* ~ t2 }" Y2 V Memory::SetCursor(offset);
0 X& D( P- q% p, c) p! @0 a: s3 n Memory::ChangeByte(0xA1, 0xE9);
) H, _5 }( M& h$ T Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);* z! D! R$ `9 c& o1 Q
6 k/ O/ H2 L$ _1 `+ t offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);/ Z/ d! v# P2 }6 R' d
Memory::SetCursor(offset);2 {3 T! k/ z+ h1 m5 t
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);5 S# e; \9 B0 C" [
& ?8 }8 C0 V9 h% v. w0 { y
; A$ |0 m! K2 j# S& l//以下是细节
; Y/ ^' ^# F& H% Z, P2 ]5 K#define getXGoldCoinFixBtn() RX(0x2d0)
2 z) d# y1 z% K# H# _7 T( o. [0 v#define getLGoldCoinFixBtn() 32
: X! k/ r9 @! V' |* Z1 ^& c#define getYGoldCoinFixBtn() RY(-0x59)' I) k* O- {& [5 A5 s
#define getHGoldCoinFixBtn() 32; w; L& N1 f# \$ Y: N* Y* z
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())7 O; S0 i2 {# _
# @, D7 E3 l6 p% J1 ?5 A#define getXInvCloseFixBtn() RX(0x3db)
6 h1 a9 a5 w5 d! }5 j( p: t- S#define getLInvCloseFixBtn() 32
( \1 T. }" E7 w4 o3 Q/ _! l#define getYInvCloseFixBtn() RY(-0x63)4 X! z8 Y/ L9 c r
#define getHInvCloseFixBtn() 32
( e$ H/ r* u, x+ K" U: O#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())' _. k2 P' F5 A y
6 O& K! q' `3 y: A V, R0 b
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)% N2 d) x4 s" v; m) G; c5 |' o i
{
1 [2 T. {8 ~: t, t/ M$ G$ | DWORD mx = *D2Client::ptMouseX;% i( O8 q. W+ h9 Y8 s
DWORD my = *D2Client::ptMouseY;
4 L) [8 ]% ]4 H/ } if(isOnGoldCoinFixBtn(mx, my))
- g7 X3 y" u k' E5 H, G; q8 \' x" @' W return TRUE;
" |1 r9 `3 x$ ]# l: b8 K6 S# A' ~ return FALSE;; V6 V2 C0 f8 ^/ @( x/ i# j: d
}9 y% Z) Z( I8 t3 z% q" P+ Z: v6 t
__declspec(naked) void caller_goldcoin()
* S' I+ R' T+ S. W{
% r3 D2 O5 d5 k, {- f! u9 a7 ~ __asm5 i$ H* Z2 l1 h0 J. q. E
{0 \* F) s% ~- R7 P0 ?
push ebx# l! K1 Y7 b/ |8 v
mov ecx, esi
" F. W% e4 u6 S0 j3 x& k mov edx, edi6 k- V2 x3 p: d& W6 Y) w
call m_NewStatShow_goldcoin
9 T, h8 c0 D+ ?9 p/ p$ R pop ebx) _8 w# Y- z0 N, z: a
pop esi+ _9 g- Q6 ^. g: N) K5 h
retn" y9 q6 w6 m" x- T- B% x" p
}4 d) ^4 _4 X2 `* `/ ]+ E! W' z
}# }( n8 O2 X- r8 g
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])3 e5 E9 L1 J0 v; e& }. p- y7 u
{
1 t$ x3 R5 g0 R% @1 `0 h5 Z if (*nXpos > D2Client::ptScreenSize->x / 2)7 v8 k& m6 ], ~4 |5 s/ A. o
{
7 Z3 w; p3 q" Q6 o! K9 w( u *nXpos = getXGoldCoinFixBtn();6 ]1 V' B4 l8 ]% J0 l6 Z* b
*nYpos = getYGoldCoinFixBtn();% I5 W, z: ]: ]2 V0 F0 Z' b9 J/ g
}. U- K3 r0 w8 y+ D7 y3 K3 C
}- V2 m" g8 G& b* H) R
__declspec(naked) void caller_goldcoinimg()0 U9 F' C- g# ]+ Q! L3 ?+ R
{) ~3 I& s/ G3 T' s: Y* k
__asm5 F7 A3 Q6 o v V3 s) _
{. G# \4 a1 b; X; k$ \; N0 j1 J
PUSHAD: ?- r2 v2 k" V A2 a; I3 t
lea eax, dword ptr ss : [esp + 0x38]7 O3 T) [+ Y1 \6 c* S( S7 v
push eax
0 _9 s6 Z$ J. G/ h/ J0 _ push dword ptr ss : [esp + 0x38]
$ D% x8 l- F( _ push dword ptr ss : [esp + 0x38]
: N2 r" e. ]; n0 f. ^ lea eax, dword ptr ss : [esp + 0x38]
! m( `9 L" X3 N push eax; d8 Z" s3 s- j
lea eax, dword ptr ss : [esp + 0x38]
" p: a/ o! }1 _4 C5 @ push eax
/ r& r, X/ [' `1 ^! P8 \ push dword ptr ss : [esp + 0x38]" w! X9 s, _: J* z7 ~. f# w
call m_NewStatShow_goldcoinimg9 p6 i p, z/ @. K) ~/ \
POPAD
; _* ]2 O2 h0 q JMP D2Gfx::D2DrawImage
4 x/ \: b( N$ ?. a }/ V" J2 D; N J% C- `
}
/ x! Q( V, b5 y. x/ F" kDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标0 Q5 d0 G+ J6 n- }6 r2 Q1 c
{
, K- l! s& V& u b( \! M if (x > D2Client::ptScreenSize->x / 2)
1 Y2 J: G8 ~# B" D) Y4 Q {
9 E# d" ~3 f% e" {9 m0 b, s8 }! t *y = getYGoldCoinFixBtn();
$ F% A s! f& T4 c, s3 X( I- S" \ return getXGoldCoinFixBtn() + 32;
: o1 q5 s$ l7 m! v6 H6 ^ }& q3 ] A' R$ D- Z0 L. V$ u0 Q G, A
return x;" a2 P" [5 a" Y" E% A' N
}
; r R$ O3 g e' g+ K% k__declspec(naked) void caller_goldcointext()
" e) C1 @9 w' a% J, p{
: [2 b2 X8 c& ~/ s3 f2 z __asm% L, V$ d# h1 J& P! X/ b
{4 q% q* f7 u6 Z: o8 z
PUSH ECX( u, f! O7 T$ G1 J0 D* t0 F8 X
PUSH EDI
; F, L( P. I& @! w0 d PUSH ESI9 A, H/ h: Z. Q% ~: G, j) N; O, o5 r
PUSH EAX, `* v6 Y( u2 z
MOV ECX, EDX
8 S: X: O0 i* W5 X! n4 N6 M LEA EDX,[ESP+0X4+0X10]
% o! v1 q' |9 Y( b+ |1 m4 @! q) o CALL m_NewStatShow_goldcointext
e% W8 G& e& P. E' p4 ~: ^ MOV EDX,EAX
. n) P& Q) ?0 Z. b' @' j( I POP EAX
& o L, b0 [5 S% J6 \' l POP ESI
3 \3 n6 k" }+ _* B' d2 b POP EDI
; ^0 }/ ]& O# j. A8 U POP ECX
- y4 l/ R9 M5 h* G5 n2 N$ l jmp D2Win::D2PrintString;
. a( z* M7 M1 U( n/ I* e }
1 C" b2 W* O' q1 x}
1 y% L" h C1 O
" H: J% B8 V4 S k5 }& }) F" iBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
0 I) z- A) I& b k6 H! m{
. p H7 T- E# t r! D j DWORD mx = *D2Client::ptMouseX;
. ?/ x" l3 [2 C6 B+ z$ N DWORD my = *D2Client::ptMouseY;8 J% ~. L/ a$ ^' ?
if (isOnInvCloseFixBtn(mx, my))7 B8 O# q, _6 W0 Y# D+ r) G" r7 @4 o
return TRUE;
# K- J/ |9 @# g& P8 S return FALSE;/ ?: P# v5 M9 A' M; K
}
7 @) V8 I9 I4 ?+ D+ g__declspec(naked) void caller_close()
( r0 L! b B N{% B# Z- ?' X& [' T( {
__asm$ a: {& L# g. `8 t* b
{" e8 p2 m& L1 b* z% D+ P) l3 R
PUSH ESI' n5 A# T, X7 ^/ ]
push ebx& `% x G. }0 S$ r& A2 k/ \4 \' g
call m_NewStatShow_close
0 }; l7 _0 A6 o3 F pop ebx( T( g# x$ j: K' c% c3 w
pop esi
4 F4 X- j! u7 T, a retn
S9 f. O. v/ i) r4 _ }
1 I) m8 y- p; B: U2 _}3 M( o9 t' ~, Q* s
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
1 \7 j P; [, E5 y9 y; p{
7 |) n! F/ C# C% U* {/ P D *nXpos = getXInvCloseFixBtn();
& E5 |1 {% I8 h. w1 u" H0 u+ ~. Q *nYpos = getYInvCloseFixBtn(); l% c& h n# G- K3 c, r* u* ]
}
/ i7 `! |* ?1 o" [__declspec(naked) void caller_closeimg()
% `% u# E6 E7 o! ?' ?6 s; o{4 g6 ^$ K" T& W+ F
__asm
* E6 n+ l& A( E- @ {
3 _3 C, a( o! m2 L PUSHAD
# \) w8 B- e1 ~# x lea eax, dword ptr ss : [esp + 0x38]1 y0 C W: i- Y& v0 ^6 e% Z
push eax- H2 z) F: T" x* }' e9 A
push dword ptr ss : [esp + 0x38]
# D# `! |1 |0 x* q" k: [6 ^2 w! G push dword ptr ss : [esp + 0x38]# s$ D" k4 ^* Z& O. F0 O; X
lea eax, dword ptr ss : [esp + 0x38]
$ u1 u$ C# e; f9 [( a- V- ?5 v push eax5 V4 u- V+ C! ^) k( ~& x: A, c" C
lea eax, dword ptr ss : [esp + 0x38]
( x9 b: d* N% c push eax4 T( p; t, V9 H) @
push dword ptr ss : [esp + 0x38]
% V* ~5 K. p! d) C call m_NewStatShow_closeimg% g$ p3 S( }0 F% u- k
POPAD/ d" s" F* a {
JMP D2Gfx::D2DrawImage
5 D- N; X/ q3 K- v& u- a, `6 x# B8 C, ] }4 U# y4 n5 Q i! U7 r
}: _8 @7 f- t ^$ _( d6 U) {4 ]
9 e, \- ]( t7 L* I( V4 j. t# g$ Y$ [4 W/ u: F8 }$ M$ _
|
|