|
|
转载
9 `) b4 C6 u e! G) N. cBY SJ6 G& U: m% }* V6 C- x
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)( s; d) W; P4 ` l/ Z
" }# K9 c) g3 V- m$ ND2Gfx::D2DrawImage-10041
! } ^# D! P& @# N* P/ x) t1、修复技能的背景(不需要可以不要)
* r( V5 n. i/ l# G# M- C3 c: x: Boffset = D2Client::GetAddress(0x77AA8);& S( b6 l; ^3 m- h: P5 t9 G
Memory::SetCursor(offset);3 t1 E2 W% Q% u7 g# A
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);3 X4 p! ~' c# E; ^. G" t0 K
( L y( c Z" {5 r$ M% Q1 T3 n5 B
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
) N& y) ~ Y, M" M. b; z, q{
q* q; e" u# p2 y5 Q, i* S //Init data for print image
. |! a7 ?+ G2 a8 n( u sDrawImageInfo data;
& S, j9 u. P% C0 l x ZeroMemory(&data, sizeof(data));
- [/ b+ m$ p0 s4 w# w& P! N
! {- V% n) }9 ^9 W //print background: Y; h. `0 P: I6 B9 t( \+ _
setImage(&data, spellBackgroundImages);
2 a8 R) y. Y# y setFrame(&data, 0);4 _ e k8 c5 g% {2 D
int fixx = 511;. U: S: O1 i" q2 R
int fixy = 9;% ~5 g" s I9 ~& c2 g
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);4 d, V- e1 ?8 j5 ` h2 m5 P2 K6 |
setFrame(&data, 1);
, B( Y3 ]& G7 Y; J7 ~) \) T D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
+ d4 G* P- G0 f- ]3 @ setFrame(&data, 2);
! Z' Q; E5 `0 N+ L- s/ T D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432% N" [) c1 |* J8 f' W9 x
setFrame(&data, 3);( ?& U3 {2 N* }. P0 d2 [
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
! j) v6 E" F. u+ h: \}
8 U0 z( G* d9 T4 o3 i) d__declspec(naked) void caller_SpellBackGroundFix()
* \# p+ C. H$ I; e6 w{8 ^- m) K* K- Y# s1 c! S# e
__asm
, G, i& m4 j; t+ ~" U0 y {
- z$ k* K6 a+ M: d% w PUSHAD
$ |5 g0 n( e& ^4 A, C, ? lea eax, dword ptr ss : [esp + 0x38]
$ G- f/ E& h' P0 ]5 d push eax
/ V J5 M+ U! a- K5 t push dword ptr ss : [esp + 0x38]
" W, P9 D; y' {1 Q/ z$ z( D: j push dword ptr ss : [esp + 0x38]. K# T. Z9 i' t5 \
lea eax, dword ptr ss : [esp + 0x38]
4 W4 `, ]1 x. ~4 s9 n push eax
\. C& u' j4 d' o P [6 v* c lea eax, dword ptr ss : [esp + 0x38]6 c, b+ Q( x l+ a' Y" J+ f# u
push eax
' J7 ~" C' Q+ P5 e push dword ptr ss : [esp + 0x38]
! M7 v. F0 r7 _0 l7 l3 e( N call m_NewStatShow_SpellBackGroundFix
+ ^+ e3 E5 d) V1 L* k y+ B POPAD
. c' ~$ B5 @: |& O JMP D2Gfx::D2DrawImage$ ?8 a$ E! z. v. L. r% b+ Q
}
5 }( H6 N1 |; W2 `}9 b- R# \, i3 ?2 E
: }/ \, ~) ]/ n4 o( z3 p2、我们如法炮制小站的背景
% D6 g( i" ?3 {0 Z. ~1 @% Z# L1 _% d1 U) O9 }9 ?
offset = D2Client::GetAddress(0xAB010);- Z2 Q7 J. y# ~- b3 S, Z9 X
Memory::SetCursor(offset);+ p ]+ g5 Z- d0 n" b
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);$ e9 ?4 Z/ T* f) A0 R
" k( V. h# q8 o7 h4 g2 k
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])% N# E: `$ Z: P6 d. ?- T
{+ i( ~1 i2 S4 e" x9 W/ s
//Init data for print image
9 y2 B5 q: }5 i% @- e sDrawImageInfo data;% t+ c; @) M; u9 _# i7 j6 l
ZeroMemory(&data, sizeof(data));8 B! U9 X R4 l; n. X
* L% m4 V7 O' V6 u2 S //print background- K& Z0 I) w1 [; ]
setImage(&data, waypointBackgroundImages);7 \/ b* x% h* a) Q8 b
setFrame(&data, 0);9 ?7 A" T, V H$ b! l# o' a; r
int fixx = 0;1 \0 c. P4 e+ q8 g
int fixy = 9;
# v3 E" q; d& |, Q D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
, T7 o( f: N, o6 G* L( V setFrame(&data, 1);; {2 U, x" o% t
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
/ ~# j0 c: _/ `( V2 k. {0 q setFrame(&data, 2);( }* P. t3 V- S; n* U
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
9 J& {: k; b# M5 p8 f setFrame(&data, 3);3 {* H- w5 c$ s) V5 P z1 D5 E
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
P- U8 M4 `( K+ x
' r. m% l* X2 m3 Z' p4 e# O}( b% P2 z2 F" j* b$ W
__declspec(naked) void caller_WayPointBackGroundFix()
! H2 e$ s: N# V! I: [' b{* O7 V# A$ Y& S$ _* T
__asm
% w: j: Z) ]5 T( c2 U9 y {; U5 E2 {3 v* i/ k6 L7 _
PUSHAD
6 _ ~. Z4 U0 ]5 m& S7 j. g/ J+ M lea eax, dword ptr ss : [esp + 0x38]+ n' R# h5 E( P! ^& x% a& b
push eax
- K: z+ _ h0 O push dword ptr ss : [esp + 0x38]( H) n" B7 L- v) b, J2 Y- q& w3 {
push dword ptr ss : [esp + 0x38]
- z9 \. k6 f& Z3 P lea eax, dword ptr ss : [esp + 0x38]
$ a6 \/ ^( J8 H" y, h push eax
% N( j. | p/ {& T, l3 g5 } lea eax, dword ptr ss : [esp + 0x38]/ `2 N& U/ e2 t. z2 ~ W4 q
push eax! A" \! ~: ?6 c$ x3 Q! w
push dword ptr ss : [esp + 0x38]9 E( s+ } m0 y
call m_NewStatShow_WayPointBackGroundFix
+ x7 v6 X9 O" x* \ POPAD
8 b2 B: M5 W# `+ `! i! l2 x JMP D2Gfx::D2DrawImage
; N" B! x9 B, i4 x }# B4 O% Y1 X8 N6 G) j. m
}
6 M5 E, F2 i' i; S* s6 u6 ]0 t, R& f7 V |/ l
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
4 X' a+ v1 _' V; w腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)7 s9 U. c! V8 @% `: t) n
{. ]1 g% @- j) O6 O0 Z% Z3 `0 ~& O
class D2MultiRes : public Library<D2MultiRes>
1 A' R. ^7 P1 h$ F& X: o/ W# g7 z {
1 A- n" h! `% L% v public:
" j( u6 N9 T: n! `$ K( ?8 C$ H l static void Init()( }* X4 Z: b9 @6 N3 H
{
4 A4 a1 @- E4 ?7 r7 E3 J6 q Name = "D2MultiRes.dll";5 i7 f1 R- t9 |$ g# \/ d* E1 N
Offset = LoadDiabloLibrary();
; h5 d8 W0 x$ q3 |2 H }
6 @) y# S+ g( q G3 u4 \* X- ]+ j! L };
- ?) A( b, d' ?' V. C: v D2MultiRes::Init();
0 e; U3 { b9 C* L6 F0 m D2MultiRes::HookLibrary();* S' X5 A* L% L( n
& m8 q% m' S8 W/ t5 ~+ n2 V
" s, o+ H9 w5 H2 I- e MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);/ w" @! @3 T$ t+ h+ G* E2 @8 N
Memory::SetCursor(MiscFunctionsOffset);) Q3 z" L9 \! ?3 f: y/ C! W
Memory::ChangeDword(0x1b0, 0x200);3 x0 D% f# ^, U7 ~
4 ]! u0 r. J, m U1 k$ w
' Y6 j! f5 l5 m MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);0 ~7 B+ ~$ P; V5 Y$ A7 A( x
Memory::SetCursor(MiscFunctionsOffset);' ^4 H5 O; d: ^' t5 g8 m) j
Memory::ChangeDword(0x140, 0x200);' X W; @: l A7 q a! Q+ D. _
( v6 \: {; O2 e5 F# u1 b
# T4 k9 ^5 E! u6 x MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);& s4 ~* e' j6 A% y; _
Memory::SetCursor(MiscFunctionsOffset);
' i; {' L3 J0 A Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块" o* I& z. m2 h: p4 g, s
d# O7 h9 v4 S) G' T- Q
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);" ^) J4 ~ F* s9 @
Memory::SetCursor(MiscFunctionsOffset);
+ f3 S/ p" A6 Y' n4 U Memory::ChangeDword(0x200,0x299);//下边缘 299最大
6 w- y7 I! E5 w& [" K! r4 X( d/ O- W% |$ b5 u5 F. X; {9 N
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
8 R) M- Q* a# B% p Memory::SetCursor(MiscFunctionsOffset);
0 m& X+ {. }% e/ H Memory::ChangeDword(-0x280, -0x400);//这个不要动1 R O1 N5 Q! N1 S7 v& q
}
9 H* D5 d, \- F k
8 T! U# G7 R6 V" f/ j# ~: @. _4、快完成了,是不是发现金币啥的位置不对??
6 D: _* j+ v" {5 p3 |- _5 B* J
. [$ d3 k! q* }//这里修正我们的装备栏7 y* x q: z3 ]: M: D$ }
offset = D2Client::GetAddress(0x99B6C);' S$ r0 q P) f9 K( L
Memory::SetCursor(offset);% y% {9 E9 p: u. G Y# y5 v
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
) H" c- Z$ C9 ]) B' k3 m5 L/ Z
( I, x1 B \; p; f offset = D2Client::GetAddress(0x99BA7);7 G, |7 O! J3 R: V/ Y+ G+ I
Memory::SetCursor(offset);
2 J1 D$ o' |* u2 d8 s Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
7 {9 p0 d! \/ K& A5 i+ a
1 _/ B4 }2 n8 c+ r# Z; x* h offset = D2Client::GetAddress(0x99BE2);
" r* v2 s. {' t; h& B Memory::SetCursor(offset);7 E8 |+ Z2 L1 h% u! g
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);7 D r) ~: o) Y5 A) S
8 I. b1 X$ a' n1 Y& P! Z' K$ q offset = D2Client::GetAddress(0x99C1C);
8 t& i: c6 i* ^ Memory::SetCursor(offset);1 s0 X; n2 G2 a! c# K. x4 |3 n! a
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
! _) ~) u3 c- O. q
, d# V/ |, `7 {) M) |- E //取消两个popup,偷偷懒不过分9 L- Z) R# ?6 o7 V- x9 @
offset = D2Client::GetAddress(0x9386d);- z0 G- { F9 p; r$ E0 L
Memory::SetCursor(offset);% M M2 j; ~' k* o/ h5 M
Memory::ChangeByte(0x8b, 0x33);
: o. e: I) e/ Y- M3 u/ Q# j0 n Memory::ChangeByte(0xc8, 0xC9);
3 J; `+ w1 R* @6 _' F. Z offset = D2Client::GetAddress(0x9390b);+ r% k4 J8 t: G5 Z5 d$ x
Memory::SetCursor(offset);
5 o. P' G) V. W0 g8 }6 p9 _ Memory::ChangeByte(0x8b, 0x33);3 d: M! i! y+ s! }+ x6 V
Memory::ChangeByte(0xc8, 0xC9);5 v5 w: f: m& r: z4 F6 p( }
# e3 G& Y/ W# \; [
//修正提取金币
1 y* L" r& }4 l offset = D2Client::GetAddress(0x8D3E5);2 E6 s. G( f; g' H$ M. E! u, l3 v& s
Memory::SetCursor(offset);/ w* H; X& u% W
Memory::ChangeByte(0xA1, 0xE9);$ A7 H# ^) P$ A! H& V% g
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
# z) ~ M' z" r' ^7 {. \2 y. @# d; c6 ? t
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
# S8 s7 L9 @9 b0 Q" D2 S Memory::SetCursor(offset);
0 z. t% ~: D) F7 X- ]( U- n% ^ Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
/ C) V$ `! j$ o# _5 Q" b) q
+ ?' E, m5 p1 x5 w1 g( F offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
) `4 l# b4 v' R1 { Memory::SetCursor(offset);
9 J+ ]+ k" U$ M$ K2 { Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);( \0 O0 o+ v) r( w' j, N: i! y/ e7 ^
( b, n( ?0 ^2 J0 M
//修正关闭按钮$ E! i0 k( A1 j3 t6 S
offset = D2Client::GetAddress(0x8BD90);
' E0 m" a2 E1 @5 V- ] Memory::SetCursor(offset);/ ^) T& i% n. b" q2 H7 g: `5 ]* n& G
Memory::ChangeByte(0xA1, 0xE9);" i3 w2 q/ ?5 ~$ I) ^ F3 I4 X. S/ ]
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
: N8 d1 T5 I7 A) [7 s$ s( L# n
- P3 |( |$ ]. f1 _; A7 E2 k1 _ offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);% d/ K$ _( a/ \( t e3 U
Memory::SetCursor(offset);
4 D+ _2 c, H6 E2 u Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
8 T9 T! G) Z+ m; z
8 p3 \9 J. ]- B2 M" S' x
; g; g- X) N7 N- e; M//以下是细节 q" f& S+ W- P" A' z" g
#define getXGoldCoinFixBtn() RX(0x2d0)
$ ~3 x, r8 f- H: |7 x#define getLGoldCoinFixBtn() 32
P W- q; X% x1 z#define getYGoldCoinFixBtn() RY(-0x59)
0 b8 W, r. o9 w J* ^0 r& z! P* y#define getHGoldCoinFixBtn() 32
: m5 D$ u9 {7 d$ K7 i9 K+ g+ T3 P#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
, g, P# K: {' `0 v# [& k& N) t
6 F i" a" E; O* R2 |& }#define getXInvCloseFixBtn() RX(0x3db)
. n* E" Q$ W& t v#define getLInvCloseFixBtn() 32
+ l( k8 W% Q- `/ t0 p#define getYInvCloseFixBtn() RY(-0x63)
8 V! y3 Q; Q, i1 F% Y/ n#define getHInvCloseFixBtn() 32! f2 R. Y# T0 _0 {* A. x* }- |( d
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
6 Y; ?3 l% J) R* c$ a. a5 R. w
& h# e4 {" K1 yBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)" `5 v! W% k2 i* r$ A; t" O
{
; e# ^+ n0 ~7 ^/ v( [ DWORD mx = *D2Client::ptMouseX;
, q0 b- u% d, w# D) P8 R" k, \ DWORD my = *D2Client::ptMouseY;
+ X3 P0 |# v, k/ X# _9 X if(isOnGoldCoinFixBtn(mx, my))
* s/ F( U d2 W) U return TRUE;" I) S+ } e* Q( k
return FALSE;$ J( `! a* o: P$ K8 p
}+ v8 K5 f, ]$ o' l) B. X# Z
__declspec(naked) void caller_goldcoin()' o. h# Z" S: X M/ N, M8 U/ z# w9 I
{
/ X' d" }8 I% ]5 Q0 x' K __asm
2 |! h. d; T5 ~$ @6 F( V+ S8 P {/ G4 J2 t5 {% a* [$ m
push ebx% t8 d, b @& F6 y
mov ecx, esi
8 t" w) K+ d5 ` mov edx, edi- J6 W2 U6 n: d2 ]
call m_NewStatShow_goldcoin0 E% t& h& ?2 ^. q5 U: u, i* W2 i
pop ebx
6 h% r! Z" r: W( c* Q, F9 h1 @% `2 Y pop esi, d7 T( W5 [" C$ {( R
retn: |% B$ Q2 R( R) [
}
5 I% D# u7 ?) F* k% S. V* ]# o7 Z}
8 F- P$ [8 y" N2 pvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]) c3 a/ e# W3 E/ x
{
6 i1 X# ?- A# \& t if (*nXpos > D2Client::ptScreenSize->x / 2)3 k& ]% X- t" {/ s" q
{
" p. @; e/ A2 p *nXpos = getXGoldCoinFixBtn();4 f. p* O3 d1 ~" V5 \
*nYpos = getYGoldCoinFixBtn();* K6 `- E: g& G ? t
}6 I5 t3 _5 Y$ i* n4 C
}6 d0 O1 s5 p+ q" K
__declspec(naked) void caller_goldcoinimg()
+ [) j1 ] B. ~) W+ y% M* X8 p{
; X9 O6 Z3 A! L3 c __asm) o+ U% p+ }1 k7 m! c! c+ C6 O
{
' J$ T4 \4 g# Z6 | PUSHAD
$ A9 D3 l; H3 V9 w- D- h lea eax, dword ptr ss : [esp + 0x38]
c$ d5 [, v$ c. T4 E push eax
8 H7 y, G0 \0 ]' N push dword ptr ss : [esp + 0x38]. W3 p3 p' z6 J) U
push dword ptr ss : [esp + 0x38]. C) l& }) \3 K. r$ ?- J
lea eax, dword ptr ss : [esp + 0x38]6 `* P, w) ^/ }, E& n {; o, X
push eax
* k& C. K% w" `/ E! ^2 J( Q0 L9 F lea eax, dword ptr ss : [esp + 0x38]
9 z) C* Y9 n5 ^9 F- r push eax
' Y" a7 H+ {* Z r# u/ \ push dword ptr ss : [esp + 0x38]. v$ L. x( v; K/ h' c( u
call m_NewStatShow_goldcoinimg J, a/ J: j" q
POPAD- \5 b! T$ m6 b+ `) {2 k% h
JMP D2Gfx::D2DrawImage
+ f( _7 P; ?! ]& M' B }/ N) t7 O5 g2 o7 d, C# B
}) q8 \* @: h9 f* ] E( n' Y
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标& I0 k! n; T q2 ^- u: D3 Y! _
{
2 `. a. X! H3 D# |& Y, }1 E if (x > D2Client::ptScreenSize->x / 2)# L) [5 G! J$ i; O! B4 d
{: F, Y7 S9 n! h
*y = getYGoldCoinFixBtn();
- h) R8 I% v I9 Q return getXGoldCoinFixBtn() + 32;2 ], T1 d. l* Q/ B2 u% u( j" f
}1 {; M0 w- R! z' d' h' }3 L2 E- Q
return x;
y7 g9 ?5 [4 }6 y5 |}+ C0 t: p( [( J. O
__declspec(naked) void caller_goldcointext()) O* ~ K( I" |: c- M
{
4 K: E$ j* g2 I. {: ] __asm
% }" ?4 i) t( P8 k0 L9 m+ p {
. i3 L: b' J" o7 p3 x" Z { PUSH ECX3 e* d2 A3 j4 N' [
PUSH EDI# I! D+ \! G. \; r( U5 Y
PUSH ESI; q; D6 l+ ^& k2 U w3 r. y, @
PUSH EAX
: C1 d R6 y1 Y. s MOV ECX, EDX
) D. h5 c! R$ l; K LEA EDX,[ESP+0X4+0X10]( ?% \) W# _6 l
CALL m_NewStatShow_goldcointext
( E- H( f1 T& k# \ MOV EDX,EAX# ?2 x- G' S% ]1 `
POP EAX
. T+ F8 |/ I2 s; j POP ESI$ I; m5 a% i% R$ K3 _+ u! K
POP EDI. `1 I3 ]& U. z
POP ECX
8 z+ c/ O3 r E x% l jmp D2Win::D2PrintString;, O: u u% V& ]# d& Y9 [7 x# v
}
2 V9 a3 c" b2 d+ ~! _7 y: U' z}4 i* A1 H- ~: e6 S$ i
" }5 a B; ^ }7 {: I9 O2 Q8 yBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
J4 S/ B# P+ S1 P' I. @{8 Z4 f1 f& @# c* g9 C6 n) g
DWORD mx = *D2Client::ptMouseX;9 W F5 v! ]; ^: W" V
DWORD my = *D2Client::ptMouseY;- J$ s D. L. H$ C. \
if (isOnInvCloseFixBtn(mx, my))
+ C& u) R/ Y6 }! M+ B/ l, T return TRUE;: T$ y) @) c' Z
return FALSE;
$ |$ p" ^4 _. w( k! g}* W0 ~7 N7 M) g7 t" ~4 {8 ]7 L
__declspec(naked) void caller_close()
- x& c5 c! R3 ~{/ I- m# Z1 G$ ]: h2 b
__asm
, I) N/ u+ N& P% q; R: g {" \: q8 M( z: Z D2 m- N0 {
PUSH ESI
! H$ K9 a. ? n6 o6 ?+ q& W3 w push ebx
+ u7 ^. d2 k, W$ R. e9 H call m_NewStatShow_close
8 q- r& Y3 s. |* U6 ]& {; c pop ebx. Q) t5 `2 n: o# t
pop esi
( a8 v' k" q, v4 P {$ ^; z* G% T retn
1 h( _* Z* g3 ~ }
+ J; _) z+ ^1 \* w2 R: x. b}6 q# X/ E/ ]4 i0 B
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])+ [- ?0 R1 p! ?# K6 P& M( l/ `/ I2 m
{
& ]7 }9 t: u s *nXpos = getXInvCloseFixBtn();
8 u) y2 {$ E7 J' d *nYpos = getYInvCloseFixBtn();
8 @: h+ a" j! P5 s) Q1 w1 q' ]}
" X6 z# y) @0 t__declspec(naked) void caller_closeimg()
! H2 m0 n3 a8 R{! q7 l* t- K. i- J! U; F
__asm
. [8 a, Y5 u# e {( H+ I p7 p# e. b; K
PUSHAD
2 q; `: ]; H7 r lea eax, dword ptr ss : [esp + 0x38]
1 n* _' P9 r6 G) Q j push eax9 @% Q. n8 B2 Y* N0 {
push dword ptr ss : [esp + 0x38]% p+ n3 W# }2 g2 B9 b
push dword ptr ss : [esp + 0x38]5 g) u6 C% q3 k" H# w3 Y/ [& K
lea eax, dword ptr ss : [esp + 0x38]
! K1 K @; a0 K- q* D. E( R2 c push eax* d# r, ]0 \/ w: X% E
lea eax, dword ptr ss : [esp + 0x38]1 @" W* c+ Z2 U! O5 `$ }7 x
push eax
; G( b9 ]8 s" t# N# e1 p" S push dword ptr ss : [esp + 0x38]
/ o3 `7 U9 k; n5 I' f1 r call m_NewStatShow_closeimg' a- {2 v% C1 G# M- e9 H
POPAD1 W6 Y9 ?/ c5 y$ T
JMP D2Gfx::D2DrawImage' ~5 v- w( _0 Y/ Z9 Z% \5 s
}
* W' E2 K0 O9 k% u1 u}
' l& E& K% o9 ~: l, h+ U0 ?6 j
@0 |* d( {( [0 D/ L: B( ^* \
( t7 u( W# Z+ \1 Z4 z |
|