|
|
转载7 \3 c+ w6 h& L9 S# V' F
BY SJ" M# j6 N% Y7 O( J
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
6 v: S" [+ ?3 `( X& c- u/ J7 Y# i/ ^
1 L3 i/ w& y2 W3 I$ ]" q/ WD2Gfx::D2DrawImage-10041
$ b) I# u# n0 F) j+ H1、修复技能的背景(不需要可以不要)6 j9 f# [* ]+ l3 R4 k0 E1 I `
offset = D2Client::GetAddress(0x77AA8);
) t# C' t6 M" w0 V2 k# {Memory::SetCursor(offset);
) U) g" s8 Z6 q& GMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);8 a! A/ t5 G( s9 q; M# ]
# O: r( }- E8 lvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])% P/ f, h0 n/ `5 P; q
{
: V& Y: C _3 ?) {$ V; o //Init data for print image5 N2 w* f4 s: q$ ~' q
sDrawImageInfo data;# u5 A' ~1 n; B& D
ZeroMemory(&data, sizeof(data));
" f6 U; a3 k8 ^; f
6 {; S! s! b$ ?7 Z9 {$ f, w //print background
% ^+ N& Q- j& r) t. X2 g setImage(&data, spellBackgroundImages);
+ l5 |' ~+ C6 Z: f( m setFrame(&data, 0);
5 U- l# t4 \$ P1 q5 w& `% W" g# | int fixx = 511;
% l# B$ ?/ t/ B int fixy = 9;# J/ B; ^' u( H7 I, M
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);4 K& ]+ ?. D" A2 |5 I8 m! b( d
setFrame(&data, 1);
1 u" Y; J# e6 v- w; J- l/ x: I0 X4 d D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
, ?. y0 F7 r6 m setFrame(&data, 2);5 A j8 h: y6 {0 @, @+ j" T
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
0 C; P' W# m! u8 i- B1 f setFrame(&data, 3);! D# h$ i8 f7 l; K) M
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
+ _( U3 X j: Y, ^& O}
6 E/ [8 E; \+ ?$ [__declspec(naked) void caller_SpellBackGroundFix()$ w/ G" |$ v6 F( s1 x; R
{
: O9 V4 U; r8 L: B9 u9 K3 u$ ] __asm
# I/ w2 L1 u7 Z {
% G) T7 B# J5 y6 f. t PUSHAD
3 N; p: p1 l% h6 a; [ lea eax, dword ptr ss : [esp + 0x38]7 J4 d( ^+ w1 ~8 D# J6 w
push eax
8 F; ~+ S* B' w push dword ptr ss : [esp + 0x38]$ F; N% D9 L3 |( q E, H
push dword ptr ss : [esp + 0x38]
% z p/ c5 q" D& o+ k6 c lea eax, dword ptr ss : [esp + 0x38]
M) n6 g: K2 ~4 x- F! ^# z push eax: L$ W1 x* T; ^4 x
lea eax, dword ptr ss : [esp + 0x38]
$ x/ L, c4 x: d push eax6 o ^0 `$ Y' O0 z; K- I
push dword ptr ss : [esp + 0x38]( B) s+ [" g* B/ y
call m_NewStatShow_SpellBackGroundFix$ J4 i" ]3 h! G' ]
POPAD
3 D. @9 d1 z3 ?; ~: I, D JMP D2Gfx::D2DrawImage
# U( x/ h+ [" D+ C }
: l F% m7 ]6 ]. {! t1 t4 m# u}
* K8 r( x9 Q0 g+ b) }1 u8 A9 h6 ?/ K$ ?
2、我们如法炮制小站的背景; I( \8 p7 ?6 a& C! h! G
7 D, ?( N- t9 q9 v4 E- ?% Loffset = D2Client::GetAddress(0xAB010);0 |' f- o4 f0 `+ K
Memory::SetCursor(offset);2 J- T5 n0 x* _ @6 R
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
6 n- t% Y- T$ h
8 j* I0 f) b; _' @# Kvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
- P- ]5 ^5 H* U. T# \# j{
: d" k. t9 M7 [ //Init data for print image
" T5 J( r! V4 l/ e/ i6 |; N sDrawImageInfo data;5 s( T1 O( E# ^8 e2 g
ZeroMemory(&data, sizeof(data));
7 t3 ]* ]1 b/ M0 G6 A
. K; R+ g w) D8 G( J //print background. b# z' E% B. Z0 O: M
setImage(&data, waypointBackgroundImages);5 o; R$ z' @& P4 v
setFrame(&data, 0);# U" G. ]: w' e+ f( s: m6 _
int fixx = 0;
1 L6 S* `2 R( o. a& u int fixy = 9;
. }2 T: z/ T( @# U5 r" \ D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);- r2 C6 A* l* G
setFrame(&data, 1);
1 d* J" W: g1 h# [ D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
* v5 G# E" M% u2 n; [- t* F( } setFrame(&data, 2);+ x( ~4 \* D" E8 y/ `
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4321 S9 Y2 l$ G+ u: b( ]! K. {
setFrame(&data, 3);0 X6 `9 S, c1 L! k, q* l/ f. z
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
( u6 T4 {6 K! T6 b+ p; P- m7 a1 r& a- P0 v4 r) ~2 J
}
5 n/ M4 ]% ~, F" {& N8 C: R__declspec(naked) void caller_WayPointBackGroundFix()
$ x& l3 f. E" s# J{
7 _, Z; i; _; ~ __asm3 z/ p4 W' {& t4 \
{7 O9 a1 C* ?# e @: O
PUSHAD
) [9 v3 I) [' j5 W% T+ ~ lea eax, dword ptr ss : [esp + 0x38]
6 G, t0 U# N& _! k5 F g" q. ` push eax
+ I1 ?$ ?4 l' P/ [& H6 a) T push dword ptr ss : [esp + 0x38]0 t# D+ t- g" g) p+ N7 a; N2 a7 P
push dword ptr ss : [esp + 0x38]% d, G! n, ~' ^- M4 I
lea eax, dword ptr ss : [esp + 0x38]) ]$ r0 Z$ B0 U. d8 V K+ `
push eax
$ h( J/ u3 V- l; m lea eax, dword ptr ss : [esp + 0x38]( ?0 Z* `/ k( n; \. J) i( G( u
push eax1 e4 {; P# |9 R& I2 |/ }% |
push dword ptr ss : [esp + 0x38]
/ z0 L7 ]* u; [1 O" y9 v+ H call m_NewStatShow_WayPointBackGroundFix. x: R* Q2 |2 ^0 o1 K8 e; q, C
POPAD
/ R: e! f& L ^' I# T JMP D2Gfx::D2DrawImage7 E: _# _3 L, d1 O
}
! q' O: }4 S& D* \}; }3 k0 j! y8 O* N7 j7 T& t
K2 T P3 T) B3、以下可以搞16*16超级箱子-腾出我们需要的边缘$ U* E. B! j' G: z7 J+ z/ @
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
* j2 V, Y3 \. V8 \7 T) h6 d y9 [ {
m Q, q, I' _, _6 t/ W7 L" C class D2MultiRes : public Library<D2MultiRes>
7 j4 Y$ r. F+ [6 p0 v' N: g {1 a+ C4 A& Z) t
public:* J7 N- M: {. }# H0 E; s8 h5 _
static void Init()
0 \9 M0 Q* [1 ~: Y' c$ H {
; R& |. `' A! f4 x/ d Name = "D2MultiRes.dll";3 b: a6 f/ V' y
Offset = LoadDiabloLibrary();2 ?( A3 C2 {% O
}
6 e7 M/ _* \% N I. b };7 m- W* F$ |5 }
D2MultiRes::Init();
, L5 Y0 }' B* {6 _ D2MultiRes::HookLibrary();
' Y% w! w0 Y( J7 y# A+ g
0 H( u1 z* E/ i. {1 b
/ D) F8 o9 e; `7 |" Y2 P3 F MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
* N! ~2 l5 G& o; b Memory::SetCursor(MiscFunctionsOffset);
: }) L$ c. C0 p2 |3 [! Q6 `% h Memory::ChangeDword(0x1b0, 0x200);" ]( ?. e+ O: b( b( S
) }+ O2 ?% @2 m% }
; V0 ^0 I8 K8 {# L) P" w
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
, v$ U4 @: W5 Z9 C$ _ Memory::SetCursor(MiscFunctionsOffset);
+ |& C) H: e1 A6 L v Memory::ChangeDword(0x140, 0x200);: _* R: N* \6 t& }6 G1 E' N
0 m& i& q& a' v5 k# O/ N s
: z4 P. \* E1 }$ T1 y; K- w MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);* J* O* g& n* V
Memory::SetCursor(MiscFunctionsOffset);7 S- e. w/ G9 p- C# l9 b# K1 ~
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块4 {; ]' z% m8 n
* X7 N/ N$ Q' b" J1 ?1 t! s" U MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);: s! ~( e( [8 J# M9 t/ I' [- B
Memory::SetCursor(MiscFunctionsOffset);
# G! {- Z# m5 |8 P/ d' G Memory::ChangeDword(0x200,0x299);//下边缘 299最大
: k% ~5 `1 W; W$ T) G$ z- m5 }
6 g i: t! S* D0 U6 p MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
) G& p2 b- ?+ C Memory::SetCursor(MiscFunctionsOffset);- G; D! ]- d$ P" D4 u4 T
Memory::ChangeDword(-0x280, -0x400);//这个不要动3 d# i e% I4 w5 |3 w: g
}$ J! \: V' B7 ?* t/ s
9 e- v( n% y" R# U' V
4、快完成了,是不是发现金币啥的位置不对??. T2 N4 ^8 M/ `1 R5 ], h( Z* O1 _- t
9 Q& ?. W% z4 G( n9 l
//这里修正我们的装备栏6 U* N, J. W/ J( y
offset = D2Client::GetAddress(0x99B6C);
; g$ |( L7 g3 B Memory::SetCursor(offset);
8 @3 X+ Z" u6 G0 d+ T6 R Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);3 \; e5 r9 v& L2 ]! @5 E
# [: e; |6 Y2 L# c* S+ x
offset = D2Client::GetAddress(0x99BA7);
- z. x$ R2 a, L( u! X* e Memory::SetCursor(offset);
9 X! I" d( f) [ Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
3 f, l) k! d4 k) m6 t
& x2 D' q3 n) b) x1 P offset = D2Client::GetAddress(0x99BE2);% B3 T3 h5 U6 _/ B; g, V, ~2 F
Memory::SetCursor(offset);, O8 V+ _ p! M. ^ {- f
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
: B* |4 n% D5 x' H/ ]) @2 c% t6 D& a4 s
offset = D2Client::GetAddress(0x99C1C);% P. H2 F7 E* X* M8 p1 f7 A
Memory::SetCursor(offset);/ L, D" L' q; q2 t! S( q
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);% l, ?, [7 J L* C& S
' A6 G9 @+ r" `8 k2 L" U& r //取消两个popup,偷偷懒不过分
4 \" i, W9 C1 W0 K5 M4 X, w+ e offset = D2Client::GetAddress(0x9386d);
0 _$ `# D6 L4 S* q' {2 K$ P9 d, T Memory::SetCursor(offset);
# k6 x: a) z* @. I5 K( q Memory::ChangeByte(0x8b, 0x33);
: {$ y; L |/ Z4 u- d Memory::ChangeByte(0xc8, 0xC9);5 s2 h$ Z9 k- f; I0 E
offset = D2Client::GetAddress(0x9390b);
i- G4 s/ t7 x7 k# Q+ F+ Y. C Memory::SetCursor(offset);1 T1 o) l) e7 j# Y6 _! e4 [3 Z7 Q
Memory::ChangeByte(0x8b, 0x33);
7 m# ? s3 @6 V, G N+ k- y) l! { Memory::ChangeByte(0xc8, 0xC9);3 x3 [7 t- E' F; F
( M8 y) u. O3 H( P; I. d
//修正提取金币
5 U# N, y, v; X8 w1 a6 T8 O offset = D2Client::GetAddress(0x8D3E5); y, X9 b- x: R c1 _6 E
Memory::SetCursor(offset);
, _' L C4 ~6 x: e" x! u Memory::ChangeByte(0xA1, 0xE9);
! ~3 b6 ]+ b: w Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
3 _3 \/ M( s: [" c7 r: Z; |0 a( V+ O( \# x' C+ Q" B
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
5 X: |% m: I( u2 t" M0 ` Memory::SetCursor(offset);' v, V' i% F- ^! N/ V6 U6 ~, T
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);4 I) M+ x, K, Q! O
8 x8 Z6 G; h( i offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);5 k8 S4 v8 }( E( N( Y+ u
Memory::SetCursor(offset);" u W" l. h* [. t# H' z2 M
Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext); n+ Q a, J; h
# k' O8 O# `8 [4 h& {. f //修正关闭按钮. A" n, }/ o2 g
offset = D2Client::GetAddress(0x8BD90);
5 _. Q& p9 ]1 S& }5 n Memory::SetCursor(offset);+ F5 k X( d, n" s6 c
Memory::ChangeByte(0xA1, 0xE9);
% R! V* ^" b4 C3 O7 ^ Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);0 `% W% O0 p3 a1 l% o! m
9 q" g6 ?7 Q) V) j B/ J offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
# S) C& V8 d' V" C+ ] Memory::SetCursor(offset);( w; I- M$ p& N0 G
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);$ d' ^5 c3 O7 O; E, V' u
! W+ s1 h& x" _7 c) Y" ]
. [5 X1 B8 B( K0 x) z* \" {! A//以下是细节& @) t, ~7 {4 D6 o/ O
#define getXGoldCoinFixBtn() RX(0x2d0)
6 a3 x' |- ?. L#define getLGoldCoinFixBtn() 32# F8 \$ l; Q/ ]! A" k
#define getYGoldCoinFixBtn() RY(-0x59)
4 ?* y) T' p$ c# }#define getHGoldCoinFixBtn() 32
( B" Q: J* L: m% Z9 V#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
* ~( S5 B9 Q" q; k" ?
{) `( I" U$ [) j#define getXInvCloseFixBtn() RX(0x3db)
$ z$ O$ G+ {* M2 W; d# {4 Q#define getLInvCloseFixBtn() 32- Y; `2 I+ o- H- Q
#define getYInvCloseFixBtn() RY(-0x63)
4 M/ Q8 U* t9 z9 ^5 z#define getHInvCloseFixBtn() 32
- f8 C- f k7 s; R$ ~#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
& R; a8 z( _8 I) K7 d0 z! H3 p
; u/ h& C7 @/ [1 e+ mBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)& @6 A: v6 t: c
{
2 g0 d. ~; j+ I+ c4 b2 ?2 U: ^ DWORD mx = *D2Client::ptMouseX;
" P# D# N/ c8 M# x! S1 Q- F DWORD my = *D2Client::ptMouseY;
# p4 |7 B4 q1 h p% a5 l if(isOnGoldCoinFixBtn(mx, my))
# M( e2 w( \) ~: o5 k; M+ X return TRUE;
$ Y$ V/ M! P& \# d e D( ~+ B5 n return FALSE;
9 ~) F5 }* d" H}/ `0 b' m* b1 A4 ]2 m+ R' I) p) C
__declspec(naked) void caller_goldcoin()7 ^$ C! z" U+ ^8 F3 Q8 u! r" H/ v
{( v# }5 T* M; |0 _
__asm
- v J4 z8 C/ P' \ {
- h* O, T+ S- [0 _* V9 k push ebx
/ P! y' `: l i/ q" Y mov ecx, esi
& p* @4 [& l# R( t1 Q/ d K3 a mov edx, edi
% i: b2 b( _1 b8 Y% o3 {4 ` call m_NewStatShow_goldcoin: \# a0 n& @/ a3 h
pop ebx& w+ \; a( |3 a2 W; S ^
pop esi
7 u; p' B% b J. U) n( { retn
6 H" _7 u" X$ F }
6 H, w8 e; k6 ?9 ~: c4 B, b) ?, y}
# Z. X2 w2 |% {void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])- X& p8 H7 g6 P- |
{6 T' K, c/ @/ f
if (*nXpos > D2Client::ptScreenSize->x / 2)) Z& W! C% d) P2 S( n2 I/ T
{
8 l, v( N% k9 f2 |* B *nXpos = getXGoldCoinFixBtn();
6 o* Y% j/ Y7 d/ ` *nYpos = getYGoldCoinFixBtn();) t) J: l: |8 A e9 T: u
}) i7 h& r7 e: R, t6 I" Y
}
3 v+ W* o8 R9 m( Z" Y+ o__declspec(naked) void caller_goldcoinimg()7 P1 m% ]% d- |8 ~8 T
{
4 d; N, H& G) L$ A! y __asm$ k( u1 b% e7 {; D8 H* c
{
, c& v/ [7 O3 u0 u; @ PUSHAD( w/ M8 E/ G$ U. @
lea eax, dword ptr ss : [esp + 0x38]$ X" L1 Z0 @( G( `! U
push eax
/ X. F; u+ p$ w8 p2 Q6 e" l9 F; g; ] push dword ptr ss : [esp + 0x38]
' P, C( D5 @. ]5 t& K" v push dword ptr ss : [esp + 0x38]# J" y% j" v W8 @. `
lea eax, dword ptr ss : [esp + 0x38]5 T0 ]& z6 r4 A0 v% s% I) b% N
push eax+ v& L" P3 E* u1 {. O
lea eax, dword ptr ss : [esp + 0x38]
3 `( Q' L0 ?, o( z; Y! } push eax
. [- [ H8 H/ s( {& ^: d push dword ptr ss : [esp + 0x38]
7 R( ]$ f9 R+ ]2 i call m_NewStatShow_goldcoinimg4 ~7 }: Z: q2 }
POPAD
: z, l* o8 U+ D. X JMP D2Gfx::D2DrawImage+ n7 y0 c, `5 Q
}+ q G% V7 p4 u
}6 F' a, {, ^' c" L4 Z
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
3 t. O, V5 ]! ^9 z{$ ~! ^2 p0 h+ O- D' P+ Y
if (x > D2Client::ptScreenSize->x / 2)
3 z8 s& A& N0 W+ A {$ D* Q/ }; G+ a
*y = getYGoldCoinFixBtn();
$ e* Q0 i5 i+ R3 v' _& S- M% R return getXGoldCoinFixBtn() + 32;
. z: |$ j9 r8 k, x [ }
4 _' `2 U9 y" @ return x;, z; k: a- @1 A. b+ C% ^
}! k+ W) e/ Y* P$ C7 a) \/ U
__declspec(naked) void caller_goldcointext()
) G7 S& c' P4 o7 W) J4 X. [6 }# v{" V! O- B. v, n
__asm3 }: O: \, m! e2 q
{9 }; I3 Z9 x' o
PUSH ECX
# O7 i0 ]* a' X6 v3 A& J* E PUSH EDI
3 U7 p# @- k* C' E1 c1 a PUSH ESI
3 z. p5 c% _, C+ p4 { v; o9 E PUSH EAX
+ y! Q+ J. t$ Y% w+ v& ]; U: z MOV ECX, EDX
+ a4 N! \8 [$ P6 K: C1 b LEA EDX,[ESP+0X4+0X10]
; a, Z1 x1 G$ h: [) w4 D6 D+ b CALL m_NewStatShow_goldcointext. G8 H3 \8 o) b7 Z8 Z1 F
MOV EDX,EAX& p* D. _1 z5 r: b Z
POP EAX! B0 K. P- k, [
POP ESI& G1 n( ^( a( j; ^' \( s
POP EDI; ]6 c0 O0 d1 x4 j0 w! W8 L
POP ECX2 H6 l; M0 O( ?4 C- ?" t
jmp D2Win::D2PrintString;
- {. {! {3 \1 _3 K' y$ r* s0 j" t }* }: O/ [$ v0 M1 F
}
* d o6 ^2 Y7 N8 n0 u2 H( ^) d
5 @% M7 U: }6 g$ [9 R$ aBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y); g% E5 ]/ A, |# D1 Q# G$ z
{
0 c# h4 j0 r/ ]9 N( Q& l, r4 V DWORD mx = *D2Client::ptMouseX;% s1 ~' [+ b. R3 j d
DWORD my = *D2Client::ptMouseY;
9 { g. O4 {/ D$ \, w* G: N if (isOnInvCloseFixBtn(mx, my))- e2 E) E* J/ W* `1 @! k4 d% a
return TRUE;5 y* c' C6 {# Q H2 ?6 `
return FALSE;- S2 D7 z* I8 I m
}
1 s% D1 G$ x. e; z__declspec(naked) void caller_close()
9 v) }5 H7 c2 a8 y7 C{1 q) K5 I, i+ H9 y$ O
__asm
# c( O1 u" p( v( e! h; k* _ {5 H2 S! W1 D( s* F" A* `( O
PUSH ESI
" ?0 v; v3 p( X. W push ebx5 g6 Z) c3 E! Q! D0 m! a' k: D
call m_NewStatShow_close9 M! l+ L% g' r( K( U8 B6 t3 X
pop ebx
- O5 r3 J) P" ~2 q' g. [ pop esi. o( ^5 X" ]6 J
retn
- n) b5 Q6 h4 c' H- u }1 ?, a( [4 }$ _; ]: ], o
}
# Q& d6 _, C, jvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])! E- W0 G( [& ?
{
% ]/ ]2 c$ T# O, U% I9 `5 P$ @ *nXpos = getXInvCloseFixBtn();* I0 ~3 J4 m6 \8 u k, F4 P
*nYpos = getYInvCloseFixBtn();
7 ?3 i0 c' x; G7 n" M4 m' ]+ a}
* K' y0 _9 K; R$ }2 T1 g3 f__declspec(naked) void caller_closeimg()
! o5 d( j/ e% }+ z{ q4 @5 d& p5 J2 R
__asm
7 P3 T; y& w* ^- L* x8 ~0 M {
, r3 _. v: }. R% X1 S PUSHAD5 M3 _4 t7 b. t" L7 A8 h
lea eax, dword ptr ss : [esp + 0x38]. ]6 [" e3 F, W S. {' L7 t
push eax. v/ [% H- I& \# [0 k- f
push dword ptr ss : [esp + 0x38]* N: v5 c" q1 R" c; p4 }
push dword ptr ss : [esp + 0x38]8 i* `0 |- H$ P8 T5 D' A5 }
lea eax, dword ptr ss : [esp + 0x38]
8 g. x( o! h& T+ e3 u8 I push eax
8 Q1 t6 ^1 ^ a2 O$ C) t# n& |8 c lea eax, dword ptr ss : [esp + 0x38]" K2 |2 A! i! K
push eax
9 K5 h9 J4 \0 x push dword ptr ss : [esp + 0x38]
+ ^1 m& z, H" M0 ^' H) K call m_NewStatShow_closeimg
7 u1 i6 F& n1 \ POPAD
; A& F8 z0 o' [$ E; M( N8 L h JMP D2Gfx::D2DrawImage
7 O& B' u, V( o# n. \# `! e3 F }0 C! g0 D% i d; N
}
8 P8 G% z' K. J8 H- i. Q
& y0 V/ T( G* l6 i# z( r2 m
) \$ @" s3 X% x, ~0 }& r! ]# X/ s, L |
|