|
转载
( F( t3 j) Z" L" KBY SJ8 J; Z' }1 R. S
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
: N0 b3 [) [7 K& L
/ t! C$ l6 _) Q r/ E/ |D2Gfx::D2DrawImage-10041
( l5 r: k2 I6 e* C1、修复技能的背景(不需要可以不要)
/ g3 v3 `& S. i4 S+ C1 zoffset = D2Client::GetAddress(0x77AA8);$ e7 D, u4 u3 g5 z* V
Memory::SetCursor(offset);1 v( W$ _, J' n
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);& ^5 A5 P, W3 x- H
; F3 d6 u! U' y$ {1 ]void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
" [& V; ?( n: t2 |# S' N6 b/ ~{
( `' M0 z2 m1 c f //Init data for print image
; L0 G! y( e9 O2 w- ?0 L N% A3 l sDrawImageInfo data;
& e6 o& q% H* W0 f ZeroMemory(&data, sizeof(data));; r: O* _8 c; u+ J* M
( H8 _7 o M$ g
//print background
$ M( G3 z4 W S% g: o setImage(&data, spellBackgroundImages);
7 m8 |3 h9 q4 y6 v+ t setFrame(&data, 0);5 B- C( f2 s$ h
int fixx = 511;6 s \! W6 G% {% b6 W
int fixy = 9;
, h# `$ z- M6 c# h1 M D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);! j+ _$ K& C3 j( ^- c0 Y2 T
setFrame(&data, 1);
$ B& Y; k" P) _' z3 w9 k D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
! y0 n. G8 m& H! Y5 r! T! R setFrame(&data, 2);
5 M2 o+ a! B/ H6 T8 H D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432' \% r# Y u2 ^& m! s/ `) s( J0 u, J1 z
setFrame(&data, 3);3 ~+ g- L, M8 R: m, x4 j5 q- {
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);4 S4 h. j6 X+ t: R% X1 q5 }7 R7 _
}
7 S2 d! I0 o) m; I% n; s__declspec(naked) void caller_SpellBackGroundFix()
. O9 A, Z3 I0 s{, D6 j3 s- p( c1 b
__asm
: V7 l( H4 b& v {4 \/ C! O! c) N* D9 D, D& i* c1 T
PUSHAD
5 @4 q& N5 f' o/ b lea eax, dword ptr ss : [esp + 0x38]7 j; p$ R( s) a$ @( V
push eax
0 J, q6 J3 F- I3 A1 V push dword ptr ss : [esp + 0x38]
3 M2 x0 `8 ~$ K7 U" C' B push dword ptr ss : [esp + 0x38]: {6 {' k0 q3 ]% [& h
lea eax, dword ptr ss : [esp + 0x38]
4 x5 D' P" x, h" H. T7 \* w push eax
9 |8 x( P% F. d! h9 V lea eax, dword ptr ss : [esp + 0x38]3 {: M4 B3 @7 x" W) a8 G- u6 o# n
push eax) {& x& k D& e8 K) \* H
push dword ptr ss : [esp + 0x38]. n0 X: C3 V: ^7 C7 p7 P
call m_NewStatShow_SpellBackGroundFix
: f2 ~2 Y" M4 o8 y% f POPAD! x2 T1 a, u v; P6 W& g- ]
JMP D2Gfx::D2DrawImage
2 T: G4 W" x% ` }0 q# G% K" i" [
}
, o3 v2 E2 X4 A; t; } _# I6 u
" f5 ]0 q1 M4 g7 f! [2、我们如法炮制小站的背景
5 A. f& q( m0 x9 d9 v/ m. q, o9 H5 i; |3 H+ T7 D
offset = D2Client::GetAddress(0xAB010);) _$ J5 o# [# I0 C& \
Memory::SetCursor(offset);# Q6 d' [& E% I9 u
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
3 t6 i* ]% z; X& h1 R& X% |) z# e# E! ~8 p/ @
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
! u! v: v2 `% u{
, c9 w; [# L% [- ?$ M" L0 w //Init data for print image4 J& y0 F- g" ~8 Y
sDrawImageInfo data;4 N( F8 s& @; _* a3 N+ v9 c2 \
ZeroMemory(&data, sizeof(data));
1 p! p; u) D, ^: g F+ ~
% B6 C1 q1 w, X //print background$ D5 m* g* {( z- [; S
setImage(&data, waypointBackgroundImages);
+ e+ F; W) X' i% J; r2 y" b3 B setFrame(&data, 0);
; u- B* s/ `" r& p* O9 r Q int fixx = 0;- p; M; q8 ]( q
int fixy = 9;
1 _- z4 W3 X" J2 m/ t D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);2 A1 z" b/ ?4 W8 E6 p( D8 d6 k9 r5 C
setFrame(&data, 1);
9 g# ], _5 r+ c! R' w! l- c D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
; A3 N/ y7 U% i! x1 k setFrame(&data, 2);
7 Q: K1 M0 G: A$ @4 q5 _4 k+ G& ~. Z* a D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432# K. t3 L9 \; I% E- Y% b n
setFrame(&data, 3);, K! R4 P$ p/ x& g, {
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);2 I6 e, K6 X4 c$ V, r# h9 T
+ L1 P1 j6 m$ x8 a
}5 s- E5 ?3 \0 C4 g6 s
__declspec(naked) void caller_WayPointBackGroundFix()
2 z9 T9 @4 Z4 |9 g+ l{
; U T4 [; |8 O7 r __asm
4 x! U7 [% D! @5 K {
& p8 z2 a c; \3 L7 |! b PUSHAD& l+ Q% |1 `0 C/ C9 k/ y
lea eax, dword ptr ss : [esp + 0x38]) d1 {1 C8 @) N( D$ {( x% k
push eax2 u* v$ M- R; G' W n; G s' A
push dword ptr ss : [esp + 0x38]
5 Q3 l! p9 I$ n push dword ptr ss : [esp + 0x38]
4 W: b9 ]* Y2 Z& { lea eax, dword ptr ss : [esp + 0x38]
. B' @0 c2 @' D+ t, N push eax
2 | Q4 S6 w% ~+ n9 M8 z. F lea eax, dword ptr ss : [esp + 0x38]
) u9 l# E4 }, ~+ B6 w# s! a push eax
! G+ q- p7 y5 Z# c8 @( \ push dword ptr ss : [esp + 0x38]0 Y- {/ C) a! z8 F: o( F
call m_NewStatShow_WayPointBackGroundFix
" c# v$ Q+ q3 i- W POPAD
7 ^! X, m& {7 B9 R JMP D2Gfx::D2DrawImage
2 T* X* i; x1 Q }
) w/ _/ M. q; x" H}7 b/ G9 S/ L4 C
9 }/ y+ O! |/ ^4 H L
3、以下可以搞16*16超级箱子-腾出我们需要的边缘! l$ j& n# Q6 \5 e
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)+ _. u- i& A4 t' m7 w
{5 j2 n$ [3 a8 W3 }
class D2MultiRes : public Library<D2MultiRes>, }7 k& v/ w+ ?
{
6 ?' y3 @$ \: S" e: H' f l7 s ? public:+ u) }/ T) o8 C0 F# _% r b) Z
static void Init()0 W' b1 z. Y; P
{8 e0 v* e6 q0 B; Y
Name = "D2MultiRes.dll";, I# G9 u7 b" g1 A" q
Offset = LoadDiabloLibrary();! T9 A1 u# i1 U( t% m4 q$ e
}
7 ?$ K9 `. [% a. \$ A3 F };6 _! s9 z/ n3 N# ?1 M1 r
D2MultiRes::Init();
, L- f+ N- B; I+ D) T2 p6 o5 [ D2MultiRes::HookLibrary();" N$ d* ]) D& p3 M. `
+ a4 P3 S+ z9 @* L7 R
2 }+ x' ?* l* r2 s' `, \ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
, X$ ?3 @9 d1 f( S$ j5 ? Memory::SetCursor(MiscFunctionsOffset);3 R I. q. L6 n7 a! u S( J+ @
Memory::ChangeDword(0x1b0, 0x200);
0 l; o9 S5 `( j G9 j
( Z/ {6 w8 v# p
- u: E, u0 w' C4 ~# o* m" \ MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);# A- s+ e1 o( O* S' _9 K- T
Memory::SetCursor(MiscFunctionsOffset);1 ^( H" X5 e w9 o( `7 t
Memory::ChangeDword(0x140, 0x200);- z) C# E$ Q! J3 K# [, V! v
6 F+ e8 J: h0 b2 D0 Y
# b( E/ ~8 ]1 O0 G MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);2 ?7 B/ `$ E# ~: P& J U5 v
Memory::SetCursor(MiscFunctionsOffset);* v& t" E: z& @& e: J$ F
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块+ F' t2 u, p2 J* _
8 O- w. x) b% M9 O1 F6 E" H# V0 I MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);8 P2 _$ _* E( D) B O4 k
Memory::SetCursor(MiscFunctionsOffset);1 }( A- R' Y8 F' M6 s4 Z
Memory::ChangeDword(0x200,0x299);//下边缘 299最大( _6 Z+ [% b. u1 q6 E9 r
3 n5 ?! S) w) ^
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);5 @7 m, ?& c; E5 S0 G8 x+ a8 x: [
Memory::SetCursor(MiscFunctionsOffset);+ Q. Q: m F, L8 m- H' Y# u
Memory::ChangeDword(-0x280, -0x400);//这个不要动
* H0 Q: [8 v( U% H ~2 T1 g: B }% h6 x& @7 e5 c5 K f) p# z- ^
5 k) N' e+ p: C! K
4、快完成了,是不是发现金币啥的位置不对??4 x7 b6 F3 _" | R- W. ^
4 q1 g7 |8 _4 r7 i' D$ C
//这里修正我们的装备栏- g3 P$ ~4 y1 |7 n
offset = D2Client::GetAddress(0x99B6C);
1 c5 a7 v# C) v) {0 \ Memory::SetCursor(offset);
/ e/ w; ^! s6 Q7 E$ R) M. E Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);7 _; R+ U* x( C6 e1 Z: L$ k
5 r5 X: q3 a- K* x. i0 U! h% M
offset = D2Client::GetAddress(0x99BA7);
+ Y( E4 G( ?3 v3 X x Memory::SetCursor(offset);
4 P# b5 }$ A$ f8 H Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
8 k. M; J1 B9 w ~0 s" c
+ n$ b8 j0 F0 Z0 Z" s& v6 e offset = D2Client::GetAddress(0x99BE2);
8 Z- h z/ ]2 h9 A' e Memory::SetCursor(offset);
, j9 F3 w# w7 h, v; d Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
& ^# Y8 a& r$ F$ S7 w* S9 S
" U! {6 E3 {1 \9 j4 ` offset = D2Client::GetAddress(0x99C1C);
8 d0 ~5 D* B+ R F+ | Memory::SetCursor(offset);
) B; @* T* c6 s( ? Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
) x& o3 x3 m: }. s6 g- |9 U
" y; b- y! E4 C" V# c4 T& q9 e //取消两个popup,偷偷懒不过分: y; @) Y# I. ~( n
offset = D2Client::GetAddress(0x9386d);! s5 K. W$ c5 u# z5 d
Memory::SetCursor(offset);
: f" }! q" ?/ f. P Memory::ChangeByte(0x8b, 0x33);. q1 F' Y, k+ E" v( _( ]+ c
Memory::ChangeByte(0xc8, 0xC9);1 P- F* Q4 V/ `: [( G
offset = D2Client::GetAddress(0x9390b);
: T. ~# f" A( z" _3 P" J Memory::SetCursor(offset);. v; Y5 g8 A: U8 ~2 W) d/ t; w
Memory::ChangeByte(0x8b, 0x33);
/ m5 p2 N) k1 O; b9 j, p) m Memory::ChangeByte(0xc8, 0xC9);
! w- D& S6 {7 h* w
+ [* D8 i+ h: L6 ^. d2 m( P //修正提取金币
; t7 }. x2 @0 \8 u% @ offset = D2Client::GetAddress(0x8D3E5);
4 x# x L0 V9 H- C8 c ^ Memory::SetCursor(offset);" p' `" j9 B. K/ A, U( e
Memory::ChangeByte(0xA1, 0xE9);
/ L' [$ f$ b/ E1 ^9 E Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
* g; `8 `. w; x1 [! T4 x; B% [# J0 G
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);. a/ Q* }$ S, }; T* ~/ ]% a
Memory::SetCursor(offset);: i9 C8 J1 l( K% l. `5 k: d' o
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);4 n1 K' s1 H6 i1 F- y/ {
9 ~* C. J; p8 V/ j# c1 C
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);3 |7 @( M/ {0 X( z5 t: R
Memory::SetCursor(offset);
' T1 k; t% P; @2 `$ f6 h Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);: @( K0 S& t) s( ^
& M6 q4 e/ K$ ^ ~0 E+ S, P
//修正关闭按钮9 [% D) K" D* _0 C2 J& V4 X8 A
offset = D2Client::GetAddress(0x8BD90);, s" i) \ A) c8 t- j ]- b& s
Memory::SetCursor(offset);7 P: l2 y' v3 y- H% p' i% C
Memory::ChangeByte(0xA1, 0xE9);9 e e) C5 k0 W7 V/ ~9 m: @
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);6 \4 o' y; U& t
; Q. ?& b( l: n7 e" J! H
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
6 h2 N: }. X" Q* m# c Memory::SetCursor(offset);+ l4 X! ^0 j* w+ I% L; S3 V" P$ V5 @
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);; w; y# r& L# _- y! d: |
/ O5 X7 H6 N! V" u; h8 T+ j
7 ]9 w" R5 X& A2 x! y//以下是细节
2 f1 V3 @. _7 D5 p; W#define getXGoldCoinFixBtn() RX(0x2d0)
1 B5 c' I+ L# O#define getLGoldCoinFixBtn() 32
" d! r/ R% y5 A' o5 M8 p* C#define getYGoldCoinFixBtn() RY(-0x59)
) y% V4 z j2 o# T: B( b2 i#define getHGoldCoinFixBtn() 32
: w4 E% R2 Y7 r. V( k4 Y#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
. e6 {* t0 m! I0 J' d) {( _% ?* f- j# n; l
#define getXInvCloseFixBtn() RX(0x3db)
! A7 K1 u* a/ [: R+ L#define getLInvCloseFixBtn() 32- S7 }1 a4 r. O, H; i% S0 b
#define getYInvCloseFixBtn() RY(-0x63)
R; v" I+ m, U) f! R5 x3 _#define getHInvCloseFixBtn() 32, m3 I7 v) u) j9 U4 G$ \
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn()). t9 P' @: {( J/ q' q5 i) [
* `9 Q T3 w, |, Z# A' i8 eBOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)3 Q: d( j3 O7 N0 s- c- F1 ^
{
+ N @3 z3 S( |1 F; \ DWORD mx = *D2Client::ptMouseX;
% k! W" F- u; s' J1 n DWORD my = *D2Client::ptMouseY;
1 t8 x$ h) g t! n7 V if(isOnGoldCoinFixBtn(mx, my))$ F' }! W; b- J
return TRUE;) [0 _9 A- ~, l) ^* d3 I
return FALSE;# G+ r/ x0 ?0 T. U+ P0 `# i. [: @5 r6 P
}
" C" Z) i- P7 [ t__declspec(naked) void caller_goldcoin()! v3 ?; w$ n3 ], Z
{
6 e# N" y) g: m+ D6 B" f __asm
3 q; [( t5 W6 v# r. d2 |3 P! L3 \ {
" `, q: Q, q) o) R# h. a. E push ebx7 }* c$ y5 W( Y3 A0 X
mov ecx, esi
`- o5 |- I1 M5 B1 h mov edx, edi" e* s+ j& _. K ~9 v
call m_NewStatShow_goldcoin
4 r [0 N6 p0 j5 {9 ?6 f pop ebx4 b! m% U. x) n N4 N# |2 Y
pop esi* W3 d( g2 N# p5 i1 h P
retn1 J& H$ }+ }. Z7 z$ H" c
}
) x; g3 h- _" @ C- N* p4 l}
) E3 K5 C s- }5 Vvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
9 Q5 g' D7 F! g- a2 L8 z{6 @4 x/ L8 p: u! Q( G
if (*nXpos > D2Client::ptScreenSize->x / 2)
2 b$ R T0 P) J* z8 t2 E3 O: } {3 f7 c: l" E5 N
*nXpos = getXGoldCoinFixBtn();
9 p2 F0 k3 ?( N7 {9 A- P *nYpos = getYGoldCoinFixBtn();
+ V& q8 H8 K/ f) d B }
S& g9 ~ e$ Y- c% n) o9 J}
, R m' [, ^+ s0 D0 g__declspec(naked) void caller_goldcoinimg()
4 G U# \, p2 v( `0 Q{! S. x! s# h* H
__asm% B" V$ w/ h$ `
{
! _/ n# \$ z {8 Z PUSHAD
: v( k1 Z' r, S2 M4 H7 o lea eax, dword ptr ss : [esp + 0x38]
, m- c5 t8 h. I' J push eax4 M1 E" T( i* C! K! S# S
push dword ptr ss : [esp + 0x38]6 p1 m( Z! o5 `4 \* p! G0 E
push dword ptr ss : [esp + 0x38]
1 e4 n2 D0 m2 }* ^' ` lea eax, dword ptr ss : [esp + 0x38]2 o# _( R' @$ E5 d
push eax
* u9 C; B1 o% m lea eax, dword ptr ss : [esp + 0x38]) r1 Y/ y- c r# {$ v) x
push eax- [1 Q7 \& u( p2 X& `; f
push dword ptr ss : [esp + 0x38]1 |6 R( Q' {4 X' |$ R$ d3 a2 F
call m_NewStatShow_goldcoinimg
1 Z" ^* o5 M; H3 d POPAD; Z" w( ]+ O2 `
JMP D2Gfx::D2DrawImage
$ |6 Z) a) o( L- d; Q }
/ T1 } ^! X# M}
: n, ]: o1 v6 j8 oDWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
/ g! k: s) j# i `+ n4 P{$ b8 b3 C/ |( V2 K& E) f
if (x > D2Client::ptScreenSize->x / 2)1 H% r7 x, B! ^9 }
{
5 c! s5 N5 e( v$ b7 [. J *y = getYGoldCoinFixBtn();! a) X8 ^4 L2 O) X
return getXGoldCoinFixBtn() + 32;
' o5 V* q) X% a6 H/ s }. A& P! B, P* q
return x;" X& C( m0 B+ u$ |0 f
} a! E5 ]( C9 _* ~9 `
__declspec(naked) void caller_goldcointext()9 _5 A& H- A, c' c
{0 u8 u9 e7 Z' i1 D" r4 n, c
__asm- R# t3 V9 z; x2 e+ K0 c
{
+ [$ k3 J8 E& U/ t PUSH ECX/ @2 `7 e, x5 W8 C& V4 b Z5 ~1 S
PUSH EDI8 a$ C# D' O1 T+ P
PUSH ESI- @2 N* j7 l7 n- M7 d: X
PUSH EAX* |- O/ ?$ K- t, T
MOV ECX, EDX
4 {1 D* N8 u9 A2 |& t LEA EDX,[ESP+0X4+0X10]
% b5 H6 R3 g) H) d9 x; p* E3 u CALL m_NewStatShow_goldcointext
: N: U {" h* B( V/ I) _ MOV EDX,EAX) `- q! E' O) m
POP EAX
6 F6 y1 u+ I5 x% }0 H n8 v. F# U POP ESI: q+ Q* |5 I& |$ @0 t
POP EDI
' k( \8 B5 J. B/ r' ?+ {9 g/ h9 Y POP ECX5 i3 Y: |7 t# n2 y$ o
jmp D2Win::D2PrintString;( D1 M" W: `+ b% ~
}, z3 q% j G2 \! V# q) f
}
3 _- A. o. w( p# n9 p( s \* m
3 c% N/ j, r. YBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)* v# d9 D: X: N$ ]& y' E6 S$ H
{/ U+ U$ ]. v# i, o/ X6 o. z
DWORD mx = *D2Client::ptMouseX;4 h- \% `7 I' L3 Z3 R
DWORD my = *D2Client::ptMouseY;
/ T; v6 y; ^9 o6 I, P L if (isOnInvCloseFixBtn(mx, my))! k. G) S5 Y4 _
return TRUE;
# e) ~$ P" [* g' D return FALSE;
& |0 `# m* r2 ?}9 {4 M0 \# h. l2 r! J5 e$ S
__declspec(naked) void caller_close()
. i7 c8 D8 s1 H{$ ^/ |5 T! v; N9 H
__asm6 A6 x* R& u, F' ~ i
{
' }! q! ~7 E7 m: Z/ d PUSH ESI
) L; K( [5 U: ` push ebx/ W; _# U ?8 H/ Y
call m_NewStatShow_close
. x- `+ S+ n7 e: F _ pop ebx
- v( i) H* F) p4 W; n7 W8 R* o pop esi2 r2 j8 c! y! i2 t/ D- V! W
retn9 [) C$ i7 m0 A4 y' u: Y
}
1 \2 x- U7 G9 `% h* Q( a}
5 a. Y- Q+ P2 gvoid __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
! h6 {0 G* ]- E( l{3 x1 G& c. J1 o# G, O1 b5 D- C
*nXpos = getXInvCloseFixBtn();. ]- a {; _1 M+ s" e
*nYpos = getYInvCloseFixBtn();
+ ?; V/ V1 V/ U4 o3 c$ W}
1 ^! d; Q) h4 u__declspec(naked) void caller_closeimg()
. O6 |) i9 } a{
% ?# ]0 p) J/ n3 ?2 { __asm% E f& \' V/ f1 n% M# A" `
{- F' a6 v1 N) ]2 m( N! `6 b& ^
PUSHAD
2 J% j. q5 ^& t- d7 W* {. N8 U2 ^3 i lea eax, dword ptr ss : [esp + 0x38]% {# C& V2 l I; f+ s
push eax6 _. m! W: L* r
push dword ptr ss : [esp + 0x38]
6 V4 B% W9 [2 {. D% d) H push dword ptr ss : [esp + 0x38]6 d- \0 [5 Y8 d9 U% [
lea eax, dword ptr ss : [esp + 0x38]
* p3 @- D$ P- H9 | push eax/ ~; H R* j/ q6 |# D# k* @, B
lea eax, dword ptr ss : [esp + 0x38]
: K6 k* ?- Y& G0 T push eax
$ A% D! N' K- g; w" V' T push dword ptr ss : [esp + 0x38]
4 u- }4 [ H/ s# l' M% F H call m_NewStatShow_closeimg9 y# Q6 n4 _3 ~0 c
POPAD) @) Q' r( P7 J" i2 e6 R; E
JMP D2Gfx::D2DrawImage( M" p' O! E) e7 ~# z
}# O- h' C1 u F6 v8 @
}0 t) H- f: J3 ]- V+ a v9 a; a7 r. u5 k
4 L: P: @6 O# g6 w$ y, \
! h+ K& Y, ]' O6 [" z& Y. Z* n
|
|