|
|
转载9 d- H" `0 r& w
BY SJ
( y' D: m1 n) P( y# `4 t首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)# i4 Z' ^( D3 P- u
( L# v2 d8 @# j4 ^, L7 ~D2Gfx::D2DrawImage-10041
9 ]: ?3 ]& s! Z# P( A$ _1、修复技能的背景(不需要可以不要)
5 S4 H+ W3 o. T( K, p% P) foffset = D2Client::GetAddress(0x77AA8);, V0 h; {# t) w; n) {6 Q' z
Memory::SetCursor(offset);
5 D! j8 y+ F/ s( B0 O, S7 I5 ]Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
" G- x/ o2 |8 |( ^- `& H( O7 S9 x' B* l: I( U
void __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]), T; h' u8 A9 }0 g
{) w" l0 S8 k# ^3 l: Y* D8 G# X
//Init data for print image
" w2 X+ O9 M4 |. O& B: y sDrawImageInfo data;) ]5 E' R! j4 u
ZeroMemory(&data, sizeof(data));9 _# ]3 d! r% c8 L' n
- c5 v: u. t' P' H! s- @' {- H //print background6 g9 K! e0 a: ~) }0 O
setImage(&data, spellBackgroundImages);. h7 ?( e3 n" Y. y8 s! d
setFrame(&data, 0);
" F+ X9 L* o+ z& X% `7 H int fixx = 511;
, c& b2 X( I) T int fixy = 9;
; _* I6 z( f$ }& r D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);4 x. C. W5 g+ G2 Z% A2 `
setFrame(&data, 1);
9 f+ s6 J4 g; g \) b n, v D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256 g+ Y, w0 u" l2 [: O9 F6 q9 |
setFrame(&data, 2);
) {2 R* l0 Q- v1 n3 C D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432! x M. v* `& O8 ?2 ]7 M
setFrame(&data, 3);8 }& T: T' ]9 n1 r: i- j
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
; ^% p, o2 z0 m}& s' b% W% C7 d* n' b2 ^8 Y8 S
__declspec(naked) void caller_SpellBackGroundFix(); p( G( Q( _* L$ A2 }% l% U
{6 M M) r, j! n* t1 e
__asm
9 w" w& _1 U+ q {4 c# G! f* W6 x6 g
PUSHAD
/ F, N: O0 `3 S. M, e5 @ lea eax, dword ptr ss : [esp + 0x38]
, E( c: d& N" E! a- a9 Y push eax
: u# y m0 y% T2 ^( U push dword ptr ss : [esp + 0x38]. Z- p) `" g9 u$ ?! C U
push dword ptr ss : [esp + 0x38]9 E. B4 E7 f8 t' v/ L7 _! k
lea eax, dword ptr ss : [esp + 0x38]
/ P, r; H" e! \# @ push eax
1 ^: a$ [7 [1 g! Q7 j0 C: G lea eax, dword ptr ss : [esp + 0x38]+ h9 K$ D5 U* u/ U# e9 c
push eax+ L" T5 i/ A- c3 x$ v4 X
push dword ptr ss : [esp + 0x38]
5 p" k* N- j, R) k% | call m_NewStatShow_SpellBackGroundFix
8 K+ X$ I* k" b$ } POPAD
$ R& r6 z r& H2 [ JMP D2Gfx::D2DrawImage$ m4 Y$ K7 S$ O* Z
}
8 ~ k' S# f& E9 x}6 J1 s+ U) ~6 q F, `! _* q
0 X0 r5 G! R, X& D
2、我们如法炮制小站的背景
* `* W$ Z$ z" W) S" z) {! ^8 l; p$ T3 m7 `' s* D+ C' ^( Q& n
offset = D2Client::GetAddress(0xAB010);
: w- ?, F4 z/ H3 X% `& w, YMemory::SetCursor(offset);
9 D% q1 s) G O, R; d& I: e' |/ U8 LMemory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);
3 C7 |! g* M0 W% s
: Y8 w4 G5 A' C6 B y8 j( f2 uvoid __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])' v. E* T7 O& X2 o8 b
{7 R' ~& [- v) |9 S8 f9 F
//Init data for print image, A$ P+ K/ o. A; {. z) j, X% u
sDrawImageInfo data;: c8 K. y( v, c( ^
ZeroMemory(&data, sizeof(data));( P. S& @% @8 u) ]
8 N! @& f( C: k9 [; [
//print background
- [$ Q: z8 l. V* N% F setImage(&data, waypointBackgroundImages);
# }! s5 g5 o1 e1 u4 e setFrame(&data, 0);
' e$ |; C: `: Z0 |8 f int fixx = 0;
3 f6 E6 b$ B. f9 h- x int fixy = 9;6 _: Z/ p4 L( }! n& x7 r
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);) T! v. `+ F3 ~" J& K
setFrame(&data, 1);
% l7 Q; M! T/ E- o D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
/ g8 u) r& E& y9 S setFrame(&data, 2);/ |4 l8 f& y0 t$ {% r/ E$ m
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
: Q' @7 [* H' W8 g( g5 a setFrame(&data, 3);
/ j: _1 u) U: y. a5 O1 O D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);3 W6 Y. y* r" _% m) `
% b3 k7 ^4 r- D( i, k4 M" j2 i
}7 O' j8 r* D/ H9 \4 P F
__declspec(naked) void caller_WayPointBackGroundFix()' E- a- c J; o, H
{
6 p1 e* z2 e4 @ __asm
+ |9 V" O' _- T* A {- u3 O, k; N3 N3 y
PUSHAD/ [; ^- `) o- s9 i. N2 o8 ]
lea eax, dword ptr ss : [esp + 0x38]
- ]: {4 D5 f, b' B; I1 k$ }4 I! p push eax/ G) d. w' I5 u& z, [
push dword ptr ss : [esp + 0x38]
6 F; X _& @( c, f: p# N push dword ptr ss : [esp + 0x38]+ R) r" g6 A) x7 [
lea eax, dword ptr ss : [esp + 0x38]
1 s+ ?" a5 N( |0 _ push eax- r# l' s; E$ D! X
lea eax, dword ptr ss : [esp + 0x38]
0 O% b+ h. g9 s8 P: S push eax
" s7 m" i9 M# x$ U( q' v push dword ptr ss : [esp + 0x38]
2 Z7 @. g! J) O3 L% P1 g8 a call m_NewStatShow_WayPointBackGroundFix
) j" j% ?. W- g. e2 C- q- C POPAD
2 S1 `5 \$ k, T- m JMP D2Gfx::D2DrawImage
. P/ B3 z. l, i( k* D }3 W$ m5 J0 T( R7 u4 P' R( f
} s6 z$ ^. w# l
# J" m: [& M4 @) U/ e m3、以下可以搞16*16超级箱子-腾出我们需要的边缘9 X2 f/ w; J( p, Y# W" Z c
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
3 J% P+ n3 s/ b. K( e% @0 j. D {
& N4 N8 `* \$ K+ |3 f/ p class D2MultiRes : public Library<D2MultiRes>. k8 q* `0 W; |9 R" r: a. M6 F0 Q
{1 Q+ D! g) F: M
public:! D! V# o, E a" u! A& Y
static void Init()+ Z9 _6 b- @+ @& z0 M
{& X+ Q3 I5 E* A
Name = "D2MultiRes.dll";
) a4 I; @0 f; u Offset = LoadDiabloLibrary();- j% n6 K6 w' N3 l, I) @
}
' \" Y/ ]2 U& b n5 X+ T };
+ q7 b( A/ \. k4 l% e' d! y# i0 s D2MultiRes::Init();
/ O: T$ I. d7 U0 C D2MultiRes::HookLibrary();6 [* r2 U) l5 j! k( }7 x/ E+ ~1 A% N
1 o" A+ ^% Y8 t6 s+ a- n
B# a) r3 C& q. B9 `. @' e MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);
0 Z* l3 T! C' F Memory::SetCursor(MiscFunctionsOffset);9 f) ~6 I( S: g( P, a8 y" ] @& {
Memory::ChangeDword(0x1b0, 0x200);9 A5 I& P2 b8 u! i" a2 [' Y3 f
' x8 v# F! o/ g, ~, K. d) b ^# E
: X. E6 S- P" I- v. F& i! |" D4 U MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);) g* G6 W# E: f+ i1 c
Memory::SetCursor(MiscFunctionsOffset);: k% J2 z+ d( D! v
Memory::ChangeDword(0x140, 0x200);
1 \; g" y/ g4 N" b
6 w4 o% g8 N/ f& o$ k+ N, Z' H: k0 g. {- \8 M2 X
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
5 g s2 s( O8 c0 u n Memory::SetCursor(MiscFunctionsOffset);
$ J( y0 a: p- J8 ?7 o( u Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块3 Q I% O5 X' K+ o1 G! x4 u4 W1 x
; \! f0 ^% L1 p: ^3 v# w$ z MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);) G3 h' P+ V4 v# I& r
Memory::SetCursor(MiscFunctionsOffset);9 K7 |4 Q* G# B: P( O5 `9 m
Memory::ChangeDword(0x200,0x299);//下边缘 299最大
4 \" d' W) t- z7 r# }2 c# _3 V- s. d; q# g0 h
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
0 @- g* k% j2 e! F* x3 ` Memory::SetCursor(MiscFunctionsOffset);
[4 U$ f7 s! H$ ^" F% M" \' ^ Memory::ChangeDword(-0x280, -0x400);//这个不要动
$ O3 A* Q T5 R9 g4 | h }
. b5 g; u+ ~$ E7 Y" _. ^
" ]+ i" h; t, M! a- i4、快完成了,是不是发现金币啥的位置不对??
3 f* r- t# l6 R- F! Y7 B) Z
! y6 M9 J7 g* j0 |9 r! ]" S//这里修正我们的装备栏
/ Y, I4 G- ~' ~3 l, I offset = D2Client::GetAddress(0x99B6C);
& ?1 |8 l$ }4 ~% D/ e; U7 g Memory::SetCursor(offset);
" \& x: J8 _: S5 O3 N Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);2 Z9 n6 b( ?/ i
1 k8 N( l) k; k2 g! W
offset = D2Client::GetAddress(0x99BA7);7 b% [- F# U) t7 {% S
Memory::SetCursor(offset);' O. a/ R7 }+ ^9 o0 r1 p+ k
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
3 g B" X; w' y$ V2 b: @% m' z# ^- ?2 X7 s
offset = D2Client::GetAddress(0x99BE2);
: d+ X1 d S' e Memory::SetCursor(offset);
9 W, `6 @, o" i, K, m: ` Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
4 H' E5 @3 R5 }7 }# J+ L5 {0 j
9 y7 v4 H9 X. s4 E) \ offset = D2Client::GetAddress(0x99C1C);
' S5 Y! d9 J* s# @ Memory::SetCursor(offset);$ Z% |/ g I8 W. v' a \# h7 ~
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);; s# s8 A1 k- y
2 x. l' s0 i+ @7 `
//取消两个popup,偷偷懒不过分 a2 E3 Z+ U# o, D/ u7 a
offset = D2Client::GetAddress(0x9386d);/ X' p% P2 L" X, E5 c" N( B J
Memory::SetCursor(offset);( [" C; J& ~. _! V ^& z9 M7 i- E
Memory::ChangeByte(0x8b, 0x33);
. i7 J% y8 C0 a* b* ~0 Y% L2 y Memory::ChangeByte(0xc8, 0xC9);) B8 ~" c& z' g; ]. L7 [7 X5 S
offset = D2Client::GetAddress(0x9390b);
9 E) R `% L* y" W* d& I8 W Memory::SetCursor(offset);
! a! _. [+ F% @7 ?- ? Memory::ChangeByte(0x8b, 0x33);7 M0 g7 V7 _2 P
Memory::ChangeByte(0xc8, 0xC9);( W. F, L' C3 X
3 S+ R: C$ J5 {% X2 h/ d //修正提取金币
! D1 W$ m$ E+ e* u" w2 u3 W) U% z offset = D2Client::GetAddress(0x8D3E5);
! J" \! t8 H/ j Memory::SetCursor(offset);: Q3 W& G! y) R6 A W% Z9 g
Memory::ChangeByte(0xA1, 0xE9);
# R1 C/ R% B; [2 D Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);" y0 z+ U- }" V# w$ s; i) g
) o8 R3 \9 L% W% G( q
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);" ^7 A! D4 B. z( _4 Q( }7 |
Memory::SetCursor(offset);
& K1 U: a; f. U H Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
. A6 z6 N- L+ ~, b0 q( d) W' u s7 i4 i: m5 c0 Z$ k. a
offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
" a' g7 d8 D5 C- ^ Memory::SetCursor(offset);
+ o1 s! n* p' V3 R Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
# p, [/ U, C- q0 u
' `: F* y# b6 G* T5 D //修正关闭按钮" l0 \% j8 g1 Y; `! a! U4 E- J
offset = D2Client::GetAddress(0x8BD90);
' y/ h( T7 B+ Z! z/ b* F& d/ D! m Memory::SetCursor(offset);
+ d2 n4 N) u$ c. p Memory::ChangeByte(0xA1, 0xE9);
- ~* O, }0 o d6 ^; U; H: n" z: A6 [ Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);9 {6 E! Q1 d) p0 Z+ |! ^6 g
- m5 {5 R9 |' Z6 N* P! {6 ? offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
+ F& x' z2 [+ I9 [0 g Memory::SetCursor(offset);
) e |) Q2 u6 X' T* R8 S4 z" U Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);- U8 D: f7 A& C8 D
4 v! y9 q A# ] c/ u/ d2 R0 d3 S( V p Q- L; o! M
//以下是细节- X4 C8 b! F; v$ R
#define getXGoldCoinFixBtn() RX(0x2d0)/ S+ K5 x6 b: I5 V% H
#define getLGoldCoinFixBtn() 32
; |- ]1 ]4 L( R! V* v3 u#define getYGoldCoinFixBtn() RY(-0x59)3 u. F0 _' R! {+ [. x# E
#define getHGoldCoinFixBtn() 325 J7 {0 b/ \4 {9 e
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())8 o g# E: ], V
( H3 s5 e$ S8 H& [9 X6 Z: _#define getXInvCloseFixBtn() RX(0x3db)( W5 s/ l w1 G! d- p
#define getLInvCloseFixBtn() 322 X4 y( M) E3 \; k- i
#define getYInvCloseFixBtn() RY(-0x63)
5 r% k" ]+ f; c#define getHInvCloseFixBtn() 32
2 v: i3 q7 `) |, D2 y2 x( R N#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())8 `% E: l0 R* U, ~: z' I8 B
5 U# O" m' X a2 ~) `* ]7 d
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)4 F8 W( h$ P9 t% H' v! O$ R! T
{
& z' W5 |; j1 w DWORD mx = *D2Client::ptMouseX;8 U# _, \# a: J8 \' i" R
DWORD my = *D2Client::ptMouseY;% o. T) v+ i: G: }( H$ Z
if(isOnGoldCoinFixBtn(mx, my))
/ `3 g, X: V0 o. E' N; K0 ` return TRUE;
, w, {8 f6 _8 @6 d" C5 N return FALSE;
5 X F; w+ l5 i% E% ]}
) \. f+ T+ T% B, D7 H: S$ I' B__declspec(naked) void caller_goldcoin(); _2 y8 S2 T8 Z0 c" f1 x# w
{
+ s# ?4 S& V, u7 K; {) f% j9 L __asm2 a: `" _; L& Q; k( S8 t
{7 I2 a! {5 F" g
push ebx
" c* Q9 C' B4 g' F9 F9 p mov ecx, esi
1 X% L5 Q3 \1 z/ R. [0 n X mov edx, edi
# m3 B7 d) ]9 Z& _8 @" h call m_NewStatShow_goldcoin
5 k0 K5 P$ P, [, V pop ebx k% e) Y" [9 B* ]- p
pop esi
* G! t- j; K4 {( x( ?9 j retn
5 P ~4 Q6 J7 {- [9 |* h; y }
- j2 @# S; b" m% g7 t7 D}
& l" s; j/ t1 Evoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])3 \. b. _' y* p) o: x. ^
{
; P! M- I; s3 R3 P M/ I% j! j if (*nXpos > D2Client::ptScreenSize->x / 2)
6 U9 e* R- ^; ~) {2 r, I) ? {
! t. `& O- K# Z: _ *nXpos = getXGoldCoinFixBtn();; U3 E( E! e& g' X2 [" ]# b
*nYpos = getYGoldCoinFixBtn();" v( d1 [, G& {! l% ~: `
}* G2 R4 V0 r' s. v8 q" o% |" o' U$ H
}
+ w" a% ]& @& U+ D__declspec(naked) void caller_goldcoinimg()
$ F2 n/ y1 ?, `{
e6 {7 O, m8 t& T6 C% v; G$ v __asm
! u0 ?0 u4 r% | N$ v# M9 w) [ {" g# A: R- Z. o9 [2 G' ? L
PUSHAD
! b; W- p* C$ p9 t' v1 p7 | lea eax, dword ptr ss : [esp + 0x38]
; A1 }+ M F3 Y1 C6 R) o push eax
! d& c1 q/ ]1 x% V' J9 H push dword ptr ss : [esp + 0x38]
* h; ~: k8 `; l, w; _# Z' @ push dword ptr ss : [esp + 0x38]
; O7 h i: U3 g3 i, `" ?* ? lea eax, dword ptr ss : [esp + 0x38]3 u0 K+ t( P& v) ^2 _
push eax8 j* ~8 A; ~9 }3 x
lea eax, dword ptr ss : [esp + 0x38]0 p. Q+ K, f% ~" ]; Y* h
push eax
. @5 c3 p2 j( e" _7 x2 r/ u push dword ptr ss : [esp + 0x38]6 a; \5 n Z _1 s: ~4 ~
call m_NewStatShow_goldcoinimg Q3 V( t( u5 e/ e9 Z1 ]' |9 a7 L
POPAD
' Q- w3 l+ M7 F1 ^# F1 b JMP D2Gfx::D2DrawImage
3 `. f: w0 m8 G; G) E( ^ }9 x$ P# {6 t, o: i% R
}- j+ Y u8 V) ~9 j: I9 ?; T
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标
9 s9 C5 _% U' L4 t+ x{
/ f N, g& q0 v0 ^1 {" v1 @: l3 T if (x > D2Client::ptScreenSize->x / 2)9 N6 V" Y+ E/ m4 j5 M
{. k6 `3 d0 y9 _
*y = getYGoldCoinFixBtn();
. v- Z. P! {# ^ return getXGoldCoinFixBtn() + 32;4 n* }9 E4 R" i D9 o
}
9 h7 l u. p" m return x;
- J$ t: e1 k I' `: i8 X}- m9 ~9 {$ N- x5 S4 v
__declspec(naked) void caller_goldcointext()
+ }2 ?; T1 h" K; c( j{
! ]6 l r9 w# t4 A! L: S __asm
5 B- U" Z# `, K {
- y0 L' F0 P) i$ D! n: P PUSH ECX. w+ y8 e2 ~5 a) |7 w7 @& k
PUSH EDI5 s3 x4 W! p! F- n* j& r- p9 p
PUSH ESI
; T4 ^% m: W$ c: R PUSH EAX( b0 v5 r' J2 z" }* n8 t
MOV ECX, EDX
" x2 z; c2 {/ X! s1 g LEA EDX,[ESP+0X4+0X10]
9 u; O: j5 V' A, j CALL m_NewStatShow_goldcointext
4 r' ?8 c. x' b* h MOV EDX,EAX
* v3 U5 j. l, I- `0 U+ N6 t POP EAX9 V% M& o, O, k4 \
POP ESI- k* _* S: ]/ J4 y/ a) k
POP EDI' w4 a: g; i4 x1 c4 j0 n/ E
POP ECX0 Z6 R M: [/ d6 N8 l1 y* {( A) T
jmp D2Win::D2PrintString;
% [. ]( n" x1 E& v4 J8 U A4 V } w) @+ ] Q+ ]6 D
}
8 ~- m( `* k3 W. b8 a8 R6 t8 B$ K
" `$ B- j9 y, z% K; ^) ]7 VBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)% f& {5 W. N( ~& k* M7 O0 Z
{
# h% O$ A- T. M$ q0 `) L: {! h# f DWORD mx = *D2Client::ptMouseX;
$ q" \$ Y+ E* @6 {" z' O( p DWORD my = *D2Client::ptMouseY;
3 ?5 N+ f$ s5 n" ~ Y, `- R) Y if (isOnInvCloseFixBtn(mx, my))
& Y+ Y# I6 E1 G" Y, v4 b return TRUE;
1 \! S( ~8 C1 I$ C) W return FALSE;1 ~8 B$ w0 F- @0 a8 v% O' |# K
}& k) Y* Z3 T2 S/ \4 M2 V
__declspec(naked) void caller_close()2 L. x6 J* `& { K
{- Q, u) a2 l, F3 S
__asm
! Z" W+ t4 t. b. L5 d {2 f" d a/ N$ r( K
PUSH ESI) m3 I, D# l# }" j- s+ ~
push ebx
- ?! D! Y9 ^1 k# C0 M% \- ] call m_NewStatShow_close8 u! w! W0 a5 r
pop ebx
8 Y% a" b1 c9 ]- L8 j pop esi) Z: }1 b$ H* | I
retn
8 E u) m' h0 o/ I$ I }' @0 K3 X7 g9 F- T
}0 z5 P2 _& z! L8 Q' [9 g
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
* Z$ ]5 r1 P: D: q- R( t! o& @{
. w! u" e" e! N; M *nXpos = getXInvCloseFixBtn();' I# s" Y+ ^5 `5 [" O) E& E/ d
*nYpos = getYInvCloseFixBtn();! f& v% J2 h7 \$ S- {! E; G
}
" D# {' y$ G; `__declspec(naked) void caller_closeimg(); a' M7 I+ ~. [ n) `2 c" B! u- H
{) b" K5 G- R3 y7 ^
__asm1 p8 N( I- M5 Y, b: d' W
{
" {# y6 A" v- o. I PUSHAD- c4 A* J2 a6 o; Q0 ?( _0 h( R
lea eax, dword ptr ss : [esp + 0x38]
/ @4 @) [& ? s3 ]$ _; s push eax
* x0 a& U; f8 Y) p z: S push dword ptr ss : [esp + 0x38]
5 @: _. m. c9 l) N( |9 ]" O: f push dword ptr ss : [esp + 0x38]. J7 x* j" J3 K }9 A& k6 s" W
lea eax, dword ptr ss : [esp + 0x38]' A6 L& |% T! P0 o1 q. y
push eax
+ k7 y' N# X) X lea eax, dword ptr ss : [esp + 0x38]
1 F: q- w. x4 G; M. U+ E push eax
; a* U% E* p6 d' E/ u$ w' C. P push dword ptr ss : [esp + 0x38]- U5 a# G$ ]9 ^" \# X2 z' J: c
call m_NewStatShow_closeimg1 K9 M3 R; s6 x$ x) H" q
POPAD
6 K- a, P1 P$ B1 ~ JMP D2Gfx::D2DrawImage: ~& _( i* M5 f/ R
}2 r' @6 v- D8 n" B% v
}' @; ~6 ]3 r2 _0 e; m
2 U0 N( e* U4 e+ }, @+ ^% j- ^# `4 k7 n h
|
|