|
|
转载" L6 v @# h& n% m5 E- X9 o
BY SJ4 C( n8 d8 Z5 H/ l# ?( i; u* A
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)
# R; F7 w9 X; t+ a; L, a6 O6 ^% E; h0 m* |
D2Gfx::D2DrawImage-100418 O9 j* m* H% |. r4 [" g* m
1、修复技能的背景(不需要可以不要). Q. }! s% z4 {8 S2 D' r
offset = D2Client::GetAddress(0x77AA8);
" \+ k9 J& p% t& x* cMemory::SetCursor(offset);: ^/ _: [/ ]* N7 F6 |/ o& f
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);: x4 k9 r" Z/ ~, d) w" d/ O/ f# Y7 ]
0 B5 s* X* R. O4 ~* nvoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
, @1 J7 n! { d. B{8 m1 y" e. h' E X4 g
//Init data for print image9 p9 e2 \) ?9 O0 m
sDrawImageInfo data;; o8 |' T7 W8 x8 v5 A, A0 Z
ZeroMemory(&data, sizeof(data));
Z6 h4 L; `* P( \- n8 x# |, D' {
//print background
9 a* Z+ b- Z6 V setImage(&data, spellBackgroundImages);% {9 ^5 w+ N' \( m. S8 f6 {% N
setFrame(&data, 0);( @5 J+ ]6 v7 A/ H6 s+ F
int fixx = 511;
) x- F' O$ S7 p4 b5 l( V int fixy = 9;
9 O% H+ ^% M$ ]( t( V6 s+ Q D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);! S6 ^6 }, S$ |; w! ~7 J2 w4 {+ v
setFrame(&data, 1);
$ G( F2 e1 Q, ^8 i, e D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
9 k! C; L% j" v% ~/ o setFrame(&data, 2);
% ^4 M% {9 E4 t5 ~ D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432
) k f+ h" z$ j' V# L5 g setFrame(&data, 3);* q/ Z; o! j4 G7 [. _
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
& s# Y6 \8 Y* D, g6 u}
1 t3 ?/ K/ g) n0 f! I7 k3 Y/ i__declspec(naked) void caller_SpellBackGroundFix()0 k7 Z+ b. @. w; O" u7 l5 {
{8 J& H* ]/ p1 e1 m
__asm* q, J- O. j- K n+ c1 l8 J7 J
{* N% M8 @& [1 a
PUSHAD
: L% G1 B/ h/ O" p' R' h" y5 ?: O lea eax, dword ptr ss : [esp + 0x38]0 f# [& W7 I4 Y& s+ u
push eax" U5 R! I5 O; j! o# g
push dword ptr ss : [esp + 0x38]1 i% h- f, T+ Z8 i
push dword ptr ss : [esp + 0x38]; [3 y% i) e. y/ I, {
lea eax, dword ptr ss : [esp + 0x38]9 t; G( E, l: [" f" B0 M
push eax
& @& E/ w5 q3 W3 \0 A; M8 |- q lea eax, dword ptr ss : [esp + 0x38]
; k" W2 ]( |0 `% {) m M push eax
6 k: @6 V' H6 v# i+ R push dword ptr ss : [esp + 0x38]5 O ~' v$ z) w( G0 w* x$ V1 k! j. [
call m_NewStatShow_SpellBackGroundFix
) G% M6 {/ p& D4 Y POPAD' e7 e% n8 C" e$ K2 ?# r7 D
JMP D2Gfx::D2DrawImage" r8 P* g' C- `
}
4 F/ C1 F6 a/ z1 t3 I/ G; h}
E( r; q# c2 x
: r8 n' K5 K! a3 N5 v2、我们如法炮制小站的背景4 D3 ~3 Q. n+ P" I- K
) H9 `; d6 ]7 L p, Z
offset = D2Client::GetAddress(0xAB010);
4 ^" \/ }# }7 i6 z: Y% dMemory::SetCursor(offset);4 L, M# y' Q) J* i
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);: ?5 k7 n$ m( m& v. K/ Y1 Y1 d( R
8 V7 S% i& ]6 E0 ~* Z) _. D* @
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
, F8 S$ E1 Z' S+ i! x. N{2 v K5 U9 f' b7 k5 a
//Init data for print image
0 | h+ i: O9 i6 Y* z" `5 Q sDrawImageInfo data;2 W2 V/ f9 N$ Y, S& R E
ZeroMemory(&data, sizeof(data));, L. i0 u; M1 p0 R
9 R# x" ~$ Q# {
//print background
" [+ P* O2 V$ D7 _" `+ e' \ setImage(&data, waypointBackgroundImages);+ X. A5 F2 j% N# L0 f p
setFrame(&data, 0);
( }! q x; h% L, K! k int fixx = 0;: T; A" U, i) L( V4 u
int fixy = 9;( m* n" o4 f5 b1 c5 w q& l
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);; C N$ V6 m4 c L1 i
setFrame(&data, 1);
/ g5 o, s7 a0 Q D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
4 S# N: {, C9 {. y+ m setFrame(&data, 2);
3 Z9 G3 s( z4 |: P7 g/ Z% V4 c D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4324 Y/ P( {9 X* U+ c1 \/ U
setFrame(&data, 3);; V9 Q6 ~1 \ k" B6 h% f( O( D
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
/ C3 x" I1 M M1 R- [ d) n; f9 |6 P
}
, E7 q! B4 C5 W1 l! M$ L__declspec(naked) void caller_WayPointBackGroundFix()
8 U% w3 a3 |, ~& w1 y. o; ~3 Q{
# W- M% \( N$ z __asm
* N) q7 f. ?5 H/ S {
* K2 {6 v' S7 \3 l/ s9 d/ d PUSHAD; q' `. k+ H, G
lea eax, dword ptr ss : [esp + 0x38]) o1 ^0 l2 A$ R0 a3 S8 F
push eax) h, H# p( Z- j
push dword ptr ss : [esp + 0x38]. m* e7 Q* q0 ^' J
push dword ptr ss : [esp + 0x38]
}1 T. r$ O5 h) P lea eax, dword ptr ss : [esp + 0x38]
8 x# B4 r) s5 Q. o5 R) I push eax
$ f1 l' \) ]8 P! v6 w& g lea eax, dword ptr ss : [esp + 0x38]1 H+ ? x d3 w% x0 r2 f ^
push eax5 Q' W) i* V& A3 V
push dword ptr ss : [esp + 0x38]
4 `( K. |: \) l" @7 u! U call m_NewStatShow_WayPointBackGroundFix
1 I5 o6 _ C9 Z( x7 b9 L2 B POPAD
0 Y/ P7 ]. x. {8 @ JMP D2Gfx::D2DrawImage
% U) P) W4 y" G7 P3 ~8 y) {9 v }/ w9 s2 `4 l2 R+ I+ ~7 M0 }6 {
}7 x- Z) ^/ l+ C
) @$ A( O8 L) F/ N3、以下可以搞16*16超级箱子-腾出我们需要的边缘) P) v- ?0 s0 Y% b, N- G
腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)/ X2 T# x) r. |5 J
{$ s5 o$ W0 A8 u9 r
class D2MultiRes : public Library<D2MultiRes>
8 u" R7 M6 F" h" b0 S. @. o+ W! A {
% E- n! ^/ r4 l5 J3 y9 \( Q public:
2 b$ V! ~2 O' K static void Init()7 w2 g8 ?- a, x/ p% q5 a
{
/ K9 b1 I" w1 m/ C( W! N Name = "D2MultiRes.dll";" D5 Y2 q) e* `9 {6 S3 U7 W
Offset = LoadDiabloLibrary();4 q+ ]+ J" ?0 T
}8 U. e/ a: w& j; m( _ x, N
};
; M; a; o( g! L; a D2MultiRes::Init();
+ i6 {+ s4 i. @" X( d& G D2MultiRes::HookLibrary();3 p+ ]% ~' t) Y$ E
- u. I, _$ g+ Q
* j* n V B4 z* x2 ? MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);1 u2 O' u% J. Q% U9 R* r
Memory::SetCursor(MiscFunctionsOffset);3 v# c) h L8 x f
Memory::ChangeDword(0x1b0, 0x200);
) W+ c) V2 S) t1 a( H# F, y" p/ r& T+ n0 D: B) m: Y* X/ H/ b, L. D
& g6 x3 ?8 r0 s: j6 ]; s3 k! o! W
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);8 E5 m9 N2 K! m# F% K
Memory::SetCursor(MiscFunctionsOffset);
. q! K/ O7 I( h' u/ f3 p8 }8 A; E2 u Memory::ChangeDword(0x140, 0x200);
- v V7 J6 P x1 W ?$ H R8 p: i7 h9 F1 ~; T' e3 {
% q8 P% U, ~" T2 r, C" j MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);$ f+ P, D/ F) n. ~% f [8 t
Memory::SetCursor(MiscFunctionsOffset);0 p/ F) O+ U) e. D! | A- x
Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块
' U$ w4 [& l% U4 w m( g" u" z. V' E, n7 y
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);' w' T* ]( f7 W- X; Y
Memory::SetCursor(MiscFunctionsOffset);2 d' s5 b, X- U
Memory::ChangeDword(0x200,0x299);//下边缘 299最大8 j. Q2 d- R# y( @* \
0 m- f* Z$ w9 x2 z) k
MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);
$ X& P6 V3 E( m$ a" v Memory::SetCursor(MiscFunctionsOffset);
8 f# D5 [0 |% ]# L3 s) G; G Memory::ChangeDword(-0x280, -0x400);//这个不要动3 p2 i0 z& f3 z
}
" D" L7 y9 _6 K, }& J* K
0 j6 X/ I! m2 X. n$ |$ `' f4、快完成了,是不是发现金币啥的位置不对??
! @8 b, y) E3 }# v; U+ d! ]- G T2 O6 o+ I# Q7 Y0 ]
//这里修正我们的装备栏
2 E- A0 l$ f$ j$ j4 o% c offset = D2Client::GetAddress(0x99B6C);
+ [& @2 C' w) p6 J Memory::SetCursor(offset);! {, b: ?7 `. L8 g5 A% L, P5 \. n4 P
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);9 W4 y& T% Y, m( V* R
/ q+ x) G* B: A* R offset = D2Client::GetAddress(0x99BA7);/ Y! M' k; W, U$ G: v% g
Memory::SetCursor(offset);0 @, C2 D4 }- W: q# e3 z- O( L
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);! t/ Q; K; X9 b. M5 y' i
$ \- f! @9 D, @! d* x5 [ offset = D2Client::GetAddress(0x99BE2);
p5 P( o* i) [: }* L! c) b/ N Memory::SetCursor(offset);
. f' c8 e" u4 ^4 M! c) h+ ^& b. g Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);
3 l" r/ e# E4 i% ~- c2 {) |* k- g
; D8 h# \1 u# L& v3 S6 s offset = D2Client::GetAddress(0x99C1C);
$ A& E1 ?/ m; q0 ^& `, _6 v Memory::SetCursor(offset);6 b2 K2 j1 Z# y
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);- ~: V8 ]# X' K
& `1 J7 B! q+ d# z: d //取消两个popup,偷偷懒不过分
/ g( {) I8 q2 X; N offset = D2Client::GetAddress(0x9386d);
4 _7 w2 f' d' C Memory::SetCursor(offset);
4 q; c- a- a: {! c! q5 M/ x s Memory::ChangeByte(0x8b, 0x33);
8 U% v, \$ A: ?% `- V6 e! f8 t Memory::ChangeByte(0xc8, 0xC9);
3 W6 v! J+ n0 L# | X& x# Y offset = D2Client::GetAddress(0x9390b);
6 C+ ?' Q: T0 }4 B6 `. z; \ Memory::SetCursor(offset);# a! {6 [$ m0 m
Memory::ChangeByte(0x8b, 0x33);
0 |. z- L, i% e' ]0 F# R- |. ~ Memory::ChangeByte(0xc8, 0xC9);7 i! z/ w* W3 J3 z% I* _: D$ Y' A
" `/ L5 i1 y5 X3 n0 h8 Z. D! o# ]5 o //修正提取金币
& }7 w: H) P/ \6 ?& \' Z4 M& Q offset = D2Client::GetAddress(0x8D3E5);. B1 D- T. ^* _( {" V$ P
Memory::SetCursor(offset);/ r$ {. `5 S1 b* k V' Z6 h
Memory::ChangeByte(0xA1, 0xE9);: K3 @4 ]- j* Z7 {
Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
' \, j" u2 F4 J; h7 k, n
. q4 R( W1 n) ^" S: d s offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);
t" b& \( Y; S V3 S5 U% P Memory::SetCursor(offset);6 i2 U; E% x$ G: L; j$ E. ~
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
& W& B1 u( t4 S5 T' F
7 r: T4 S! z! N. ^, a offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
$ O( w- B2 H0 N3 M2 x/ g& ~/ E. c Memory::SetCursor(offset);
3 s4 {2 M) ]1 {& j Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);
4 L$ N( m& ^% c% i1 v( v* D6 r$ C, E9 k+ O- m
//修正关闭按钮
$ R$ b% w1 Y$ Q7 v offset = D2Client::GetAddress(0x8BD90);& d* u- ]4 b/ E9 h6 [3 v' n
Memory::SetCursor(offset);
5 c; l7 f) v( J$ J# O, t8 D2 H Memory::ChangeByte(0xA1, 0xE9);: Y3 d9 U G! e& g7 M( D
Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
7 \. Q8 {' W% R. F8 c8 A- ~3 R" y2 M
offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
4 [0 p. ]$ d, E- P+ r Memory::SetCursor(offset);- x% _' f, Y J) `2 b: w
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);/ E/ ]) _* C$ ]; L2 l1 I
0 e% V7 Q4 U3 X2 S) D3 |8 e' C* a. P% ^, ]+ z' i
//以下是细节
$ U5 O" h6 K" v#define getXGoldCoinFixBtn() RX(0x2d0)
: } ]2 o! G. H& t" d' e) d#define getLGoldCoinFixBtn() 32: _: O: Z1 ]# x: P. i. K
#define getYGoldCoinFixBtn() RY(-0x59)
_5 Z$ o6 o; M, o% F$ }#define getHGoldCoinFixBtn() 32+ B9 [. g7 i* B" g
#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())9 ?8 O& D- j9 E$ }$ _( M
+ B: }/ J: A7 C% g#define getXInvCloseFixBtn() RX(0x3db)! M. k9 ^7 x/ X' ^, ]9 @
#define getLInvCloseFixBtn() 32
( \3 J; [! f0 {1 S7 a#define getYInvCloseFixBtn() RY(-0x63)5 m2 l. e2 w, V, Y1 y( H' @7 O- r
#define getHInvCloseFixBtn() 326 F Z2 d$ O5 q+ l
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
8 t& U: R. ?4 v3 z+ l/ q3 V( f% @% {7 R2 R8 J! x
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)9 J$ ~) w* ]4 z! A
{' k! x* \5 S8 c
DWORD mx = *D2Client::ptMouseX;
& U$ p! ~5 i+ h' b- p0 D4 Y& E- B DWORD my = *D2Client::ptMouseY;
; B' G* E" C) Z+ V, s if(isOnGoldCoinFixBtn(mx, my))
3 j6 t+ [0 q1 y0 L: d return TRUE;, r: O* o v! ^ G
return FALSE;
$ I& c& D i) U: u7 U}" ?: D/ |3 ]9 ?% a( b! Q! W
__declspec(naked) void caller_goldcoin()
* _( g( c( t. g0 I, H+ \{0 \; F5 t$ b5 E+ |* c) v! O
__asm
) V! K! m: c5 E( Z {
! f' l/ o1 _0 t) A3 J/ C2 ]+ ? push ebx: l, e* [; \! w/ r
mov ecx, esi
% M3 f3 z4 u; R! P4 s, U) d mov edx, edi
$ z3 Y2 f% i& d) b# | call m_NewStatShow_goldcoin9 c! S/ P# w, [& x) i8 v
pop ebx( W) O A& {9 p5 z+ P6 C/ w
pop esi G2 }6 m, \: d
retn
7 F* ^. h: B3 T6 \1 {5 `3 @ }
: g! @, J- ~* S/ E# s; {}
% d+ g0 q7 v# {* Bvoid __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])1 g D- h. H; F" y4 [+ t% k' s
{
9 G5 G, K. W4 j, e4 @* @9 I if (*nXpos > D2Client::ptScreenSize->x / 2)- S4 J9 x" t* g" ~2 ~, g5 R1 C
{. H" p6 v1 ]) T) G) ]4 A
*nXpos = getXGoldCoinFixBtn();( }0 s/ N# ~3 k2 l3 h# `; M
*nYpos = getYGoldCoinFixBtn();
7 q. e8 h/ i' G" G! s5 p }' B' K* X8 r& [1 H
}; g I: [# U. J4 ^; N
__declspec(naked) void caller_goldcoinimg()
& J, `' I* b8 _9 y" o0 @{
0 `: d* C. U2 B3 N( i: d4 ~3 V( a __asm+ }' W0 t) I7 Z
{/ \ A# Z# K( h4 J7 C3 w
PUSHAD! X# w: M/ {0 F4 d: b8 W
lea eax, dword ptr ss : [esp + 0x38]
; r8 F. s6 @$ S' {9 \% p# r+ @ push eax# D; A( R- y7 _) F
push dword ptr ss : [esp + 0x38]+ o. h" W* l2 `. j
push dword ptr ss : [esp + 0x38]% @' X2 A: z4 L! l. z% j1 o8 R
lea eax, dword ptr ss : [esp + 0x38]! \3 H5 Y0 K# s" i3 o1 |
push eax+ p. R' p# T' \" x
lea eax, dword ptr ss : [esp + 0x38]
9 V9 y$ N. m7 C( M: m push eax' y. h! a" i( k6 G
push dword ptr ss : [esp + 0x38]
$ d# z4 E7 s, O3 R" z# ` A call m_NewStatShow_goldcoinimg [8 R$ S# t/ m7 T9 s3 }$ X
POPAD- \: q5 m4 `$ M
JMP D2Gfx::D2DrawImage
& r: N2 o5 l) t. v# _ } ]1 E" Q' S/ p- C
}+ u9 N% E, U4 g- W5 l
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标" p: g! S# F9 X& y+ v4 ?! c
{
0 U3 a$ E( }0 F" S8 h0 p7 b if (x > D2Client::ptScreenSize->x / 2)3 \! m! f6 e* o2 b, ]
{/ z. O/ T" Y( t7 l# m2 ?
*y = getYGoldCoinFixBtn();$ G4 |1 ~" i9 E* I' l
return getXGoldCoinFixBtn() + 32;
" E$ h% v6 Q4 G$ M: B( z }
3 p# P" V0 ?- p, { return x;
' ~: o! |. g: u; ^" Q# r}
! |6 a. M2 n- r0 f" m; J# Q" g+ C__declspec(naked) void caller_goldcointext()5 i5 c& F' U7 J! T1 Z1 t# L K4 m
{% f* E A5 B2 Q( L2 q+ \
__asm
9 X, j# R+ Q ~ p {# M; E" z( A+ O
PUSH ECX
: h8 B# T) Q1 E3 \! C+ J PUSH EDI; a: u: \, z/ j$ U X E
PUSH ESI
6 w V, k$ \. s0 {+ { PUSH EAX; A9 t7 t' R6 Y( p. g
MOV ECX, EDX3 S+ x; v- J2 l% R9 h
LEA EDX,[ESP+0X4+0X10] w6 O& {. s& L8 r5 p
CALL m_NewStatShow_goldcointext
r" D2 P2 s2 H, h/ P, i& `4 t MOV EDX,EAX- K0 d3 n' v" Z
POP EAX
7 v, V V5 Q. l POP ESI
6 Q6 L" ~4 a5 R0 C5 L m POP EDI
" F+ u' {9 u0 m2 o5 B! s POP ECX
" i3 e7 T% [: z& M9 r, p% U0 l jmp D2Win::D2PrintString;
4 Y0 o& [* r7 _" _9 y }" x# d) `0 y- u* {# |) p
}9 R7 f M7 D' [/ ~: a# y5 ]
0 ]/ \* V$ x' H/ Z6 a7 @
BOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)! B) d- K1 L* u0 N+ u4 y
{- |! }+ H x- [* Y# k" V( B$ W
DWORD mx = *D2Client::ptMouseX;* z& _; `1 N T' W ^9 g6 u
DWORD my = *D2Client::ptMouseY;' U! ~! q; ~' A( y
if (isOnInvCloseFixBtn(mx, my))
& U; w4 r, o: u @( ~7 u/ @ return TRUE;
7 K9 f6 `. [: K5 I return FALSE;0 R5 n: g9 {6 F) C$ \; Y
}
3 ~6 k8 T; v$ m0 a& j, y7 Y0 d# y__declspec(naked) void caller_close()
8 ~: a, `* V* D% Z. U4 W{
" o f: }; m- ^( j. k! ?& n __asm: f, W3 y6 ]$ T. P' w# v
{
& p% g# @( Z5 ] PUSH ESI
+ C/ K- t0 c$ r/ \% A) o push ebx3 f/ N1 d! t; T% d8 ~$ V
call m_NewStatShow_close
) @ |! P' C; ?) F) x pop ebx
* h! y( {, c- o8 l0 I5 ?) q pop esi
8 ]0 I( a1 W1 i5 C9 e, S( K0 N retn# F' Q% L& a3 C! F, T
}% {: w+ E1 H. r
}1 j# e. T0 f+ y4 W2 x
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
2 ~" n& O; T* ~$ }{8 [4 t4 |+ v2 X6 f& K8 M* [
*nXpos = getXInvCloseFixBtn();& }: t2 L( n) h: k L
*nYpos = getYInvCloseFixBtn();
! g2 E! P7 f a+ W! p& a}
! `, T/ X/ b) ?4 j__declspec(naked) void caller_closeimg()
' y2 Z/ k" Y0 w8 a+ P% E; \5 K{- x. e& s |9 _+ E" r4 L0 ?. b
__asm
2 p7 K+ R9 ]; u {
, O$ i+ F" V/ q. F& u$ D PUSHAD% ]" `8 i: C- t& `
lea eax, dword ptr ss : [esp + 0x38]+ L1 e' n# [+ {, @8 Y) J+ V
push eax5 a8 z4 F- n& o: N
push dword ptr ss : [esp + 0x38]
5 S7 F# k: I+ c7 P push dword ptr ss : [esp + 0x38]
: r9 n) u6 M- m7 b3 n lea eax, dword ptr ss : [esp + 0x38]9 _9 H6 e0 }7 e/ J6 a0 J7 N" u
push eax4 Q, I) [, Q9 U/ H/ ^! F+ x
lea eax, dword ptr ss : [esp + 0x38]
. a# m" X/ J: |6 M! C7 E. S push eax
" g; k0 _% V% T& F3 A push dword ptr ss : [esp + 0x38]
6 C6 K1 u$ Z( f call m_NewStatShow_closeimg9 C7 ^- \0 D+ L0 o8 W8 C7 Q; E( L# H( l
POPAD
! E' y7 Q- I6 n( W* Q3 K JMP D2Gfx::D2DrawImage
0 n1 {( E2 j+ Y L6 a7 U. i# E* Q }
8 T3 \- S" g% g5 @( v1 a}
1 v3 k/ C# e, Z, j1 q1 j8 {* b9 k$ ^
' A ?" R1 D) M
|
|