|
|
转载
4 T" N1 u5 } o2 n& BBY SJ9 z* k9 w) {; c2 x
首先你要会搞D2MuitlRes113C.dll与D2MultiResExt.dll(后者我是跟狂三要的)/ k& C# n5 ?) Z; F1 H- i% G! ]+ Y
6 a# Y& W- r3 p# V& \5 m& WD2Gfx::D2DrawImage-10041
! ~* a+ N3 I7 t' e5 @. U, { ~: p* z1、修复技能的背景(不需要可以不要)3 s* E* E5 h4 K* G
offset = D2Client::GetAddress(0x77AA8);
7 X8 O! M* d" d, G0 k6 RMemory::SetCursor(offset);# f3 r" t; N: _5 {8 G4 y
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_SpellBackGroundFix);
# L% o( t, e( G* B2 `( T" ^5 d
_9 D0 n! {& x- b/ G/ E6 Q* avoid __stdcall m_NewStatShow_SpellBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256])
5 I+ B: u2 Y/ N. _% p% O{7 G% T2 S `, `5 v3 Q$ r I, V
//Init data for print image
/ W0 y" d" o+ L sDrawImageInfo data;* Z4 R# m' h- _1 X
ZeroMemory(&data, sizeof(data));+ B3 [. X" N- n, X
( {; x: P4 l4 P; c& l+ P3 d //print background$ N5 z- t( S t+ q& v* X5 g
setImage(&data, spellBackgroundImages);( a8 b7 Q: e) W( _" X
setFrame(&data, 0);+ X$ B- W4 C# T# V
int fixx = 511;
# H) ^ _& ~. h. {' L int fixy = 9;9 L# I& l u" {
D2Gfx::D2DrawImage(&data, RX(0+ fixx), RY(256 + fixy), -1, 5, 0);- ^0 E2 |" @1 n' b* K
setFrame(&data, 1);( `9 Q, _4 L, c! _- S0 ~
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//256
: U- b: F6 z1 H1 { setFrame(&data, 2);
! q5 K8 Q4 s4 W8 R; r4 W D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//432, O6 \9 @- P4 t. [( D8 b
setFrame(&data, 3);5 a# q$ h$ H: `7 f
D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
5 H: P& w( v: Z7 e" e2 o}3 ~5 [. ?! K O( {( h
__declspec(naked) void caller_SpellBackGroundFix()- l. i7 D# e" e" w7 x% a1 ~# u
{( z* S6 q1 B1 X! d' m
__asm3 @: K; v3 z/ |; V$ Y) h, w
{' s: d8 [- a0 j7 w4 X
PUSHAD" a w1 q* h: V5 S
lea eax, dword ptr ss : [esp + 0x38]( r( P) s2 I; D8 H
push eax* r# J9 _. i- T! B( ` g/ w8 R
push dword ptr ss : [esp + 0x38]
! i" M2 O& p" ]* E push dword ptr ss : [esp + 0x38]) L- }& `& c' o, L3 b' l. l @
lea eax, dword ptr ss : [esp + 0x38]
4 D) r! ?- P" i+ Q* K% E+ y ] push eax
8 x. V- _5 \# o7 O/ A: Z lea eax, dword ptr ss : [esp + 0x38]
. n8 A8 H u' k$ k! L. S( ~) n push eax, `6 o7 u* R3 B0 k7 P
push dword ptr ss : [esp + 0x38]8 b6 H. j7 i/ [
call m_NewStatShow_SpellBackGroundFix
' g" G+ R: j, n% D. T$ w POPAD7 u0 D. }! j B6 U" ]7 g
JMP D2Gfx::D2DrawImage9 y6 u& ~5 d, f8 F. B; D
}6 L" q& {8 k, J1 T# y
}
" w$ j1 {: l+ ~/ j; X$ [
9 D- V" Y! ~' u3 c2、我们如法炮制小站的背景% O/ m( l& }- t" _: @ ~
+ d0 R2 T" Q- d; Uoffset = D2Client::GetAddress(0xAB010);( y5 Y0 ~' z. F' x8 X; H9 \
Memory::SetCursor(offset);' ]3 w+ j1 Z& D( |; m' P
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_WayPointBackGroundFix);7 U8 C% c: X& j: N( _2 P0 k; O
" \4 o" L; K% H! r3 D
void __stdcall m_NewStatShow_WayPointBackGroundFix(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]); I) H, e0 E) x' P0 w \: O4 C7 _! \
{
- ~+ ?. J' Q. F7 J2 L- u8 } //Init data for print image& o2 P0 |, {9 T* g. g- \. S
sDrawImageInfo data;- d" U) b" B$ V; R0 `) N
ZeroMemory(&data, sizeof(data));) t# R3 ~2 H! i D% ]0 ~
8 A/ G; Q5 Q; } s6 ?% u
//print background
8 C9 A! u2 Y6 I0 Y setImage(&data, waypointBackgroundImages);0 _2 Y/ {) P) Y! e- e# W7 p
setFrame(&data, 0);, O7 {/ Z$ D* a( o" V+ |3 a- _( t
int fixx = 0;! Q) L4 I5 P' Z# Z1 \8 z8 e5 d# }
int fixy = 9;
" b1 I5 O6 M3 s4 K- a5 m3 C D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(256 + fixy), -1, 5, 0);
- y3 N9 [2 t) y2 s setFrame(&data, 1);
* Y! X G/ G1 k) u% E& X) u$ | D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(256 + fixy), -1, 5, 0);//2560 D3 b+ \- _0 v9 g1 `( q
setFrame(&data, 2);# h9 S3 L3 [3 m
D2Gfx::D2DrawImage(&data, RX(0 + fixx), RY(0 + fixy), -1, 5, 0);//4321 ~, y6 B) }8 q& {8 z2 j4 o3 V
setFrame(&data, 3);
1 B! ~% V/ {7 W- z% B D2Gfx::D2DrawImage(&data, RX(256 + fixx), RY(0 + fixy), -1, 5, 0);
* m0 n$ x/ o; A6 W+ H! C
, {4 F- L# E; b% }}
7 G' i; V4 F$ x7 m__declspec(naked) void caller_WayPointBackGroundFix()
* y$ Z% r/ x C4 C$ e j{
$ X% t0 n9 e3 D! O3 _ __asm, |$ w3 M( P& l; | a; p
{
4 O0 U V1 ^( d: o PUSHAD: k: l- b0 W0 V# D% n
lea eax, dword ptr ss : [esp + 0x38]
3 i$ O: p+ `4 [1 e, E+ K push eax& K& F4 ^& a' m ~+ V$ R& U
push dword ptr ss : [esp + 0x38]
) v% `( L: g! e: ? R4 V push dword ptr ss : [esp + 0x38]
1 }9 \& q! c- \9 X' V( o lea eax, dword ptr ss : [esp + 0x38]) R) f9 `- s$ a, z$ s8 x
push eax
9 `& k- k4 y" O3 r+ Y0 M lea eax, dword ptr ss : [esp + 0x38]
; Z; m; e; m; F/ k6 O push eax# r/ l) X8 ]' o) M( u% {
push dword ptr ss : [esp + 0x38]
& @ x9 j, e P3 {) @8 M2 c- Y/ i call m_NewStatShow_WayPointBackGroundFix+ ?- A* z' o3 Y
POPAD2 R% J1 b2 }* {( ~7 S; ^& w, J
JMP D2Gfx::D2DrawImage
5 u4 Q0 X2 ^3 Q; d8 \" s }
6 U* q7 k1 m2 E! i9 ^}( C) c7 h" L; t( y* P
: s" }# f, a- N: f
3、以下可以搞16*16超级箱子-腾出我们需要的边缘
! Y/ H! t1 k5 ^9 l/ R9 ~5 k腾出我们需要的边缘(事实上可能会出现一些黑边,但是我没有修复)
4 p" ^& n. r- ]6 r+ F {" N; c) P; W- m; {' j
class D2MultiRes : public Library<D2MultiRes>
# V) t' I/ }6 z+ ?; n6 t {! `) w/ l9 a; E
public:
- [6 x+ e' R$ f/ o- c static void Init()
! R Z- x5 I, d, R: w. d+ Z2 n {
; d: w) I. K( R d Name = "D2MultiRes.dll";
1 v7 H. i! y. u; l Offset = LoadDiabloLibrary();2 [0 i/ w1 r& C
}5 n2 X/ G( | F5 ?& T3 z* N: J
};5 C3 H- G" x* I' a
D2MultiRes::Init();
( y; Y( c, N4 C+ R% ]; v5 g D2MultiRes::HookLibrary();
" i+ M+ e6 G/ Z( p# o- Z9 k' o9 T2 r9 K; ^6 Z
7 Z* _0 [! O: q# b$ r: S- Q MiscFunctionsOffset = D2MultiRes::GetAddress(0x2468);6 N4 q. T) q) l/ k! `7 E' M5 q. @
Memory::SetCursor(MiscFunctionsOffset);' ~# t) `, S w3 e& E
Memory::ChangeDword(0x1b0, 0x200);- s8 M/ I3 W1 s& k
4 n+ ?/ p9 S- r5 \
* S$ Q' n% Q2 f) \9 t% ?+ X. d
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b0a);
) d/ E2 c, C# u+ x Memory::SetCursor(MiscFunctionsOffset);
9 t: u7 X$ E5 g" a" Q. h4 u* R Memory::ChangeDword(0x140, 0x200);
0 K6 s1 ?! O$ c, K4 V
' k% M& a8 U" Y I' e9 o4 J6 n# t, _4 B9 z
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2b10);
: X1 ] x# v2 Z Memory::SetCursor(MiscFunctionsOffset);
; S- C5 n7 v1 y! n" Z Memory::ChangeDword(-0x234, -0x299);//280-295 290是上面多一块 310是下面多一块( ~2 u0 [$ S$ S3 ]9 O$ I- g
* \! k+ D4 f/ t3 i' m! k
MiscFunctionsOffset = D2MultiRes::GetAddress(0x2bfe);
+ n, w# W4 ]1 p2 |5 J& m( v Memory::SetCursor(MiscFunctionsOffset);1 U1 t ?1 q; N
Memory::ChangeDword(0x200,0x299);//下边缘 299最大9 b# k; E1 i Y
5 l# a9 m2 {9 c1 c/ h7 V MiscFunctionsOffset = D2MultiRes::GetAddress(0x3301);9 b9 D/ H1 W' M+ @ J( A0 R- E5 l, c
Memory::SetCursor(MiscFunctionsOffset);# }% s+ g7 C5 H9 O7 }
Memory::ChangeDword(-0x280, -0x400);//这个不要动
/ W/ [, A' N2 v }6 k! B9 k: S3 `2 U1 x. [
4 Q3 w9 j8 f" ^9 P. `: E4、快完成了,是不是发现金币啥的位置不对??. Y! E! C9 j% g2 Z
2 i( `& U* Z/ Z, m) ~+ a
//这里修正我们的装备栏1 n& B! ~* ]* L8 [
offset = D2Client::GetAddress(0x99B6C);$ ^& J& E8 X$ x ~) ^
Memory::SetCursor(offset);
6 R, x& J& x; r1 z Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);9 |% l: Z% J- V; o2 l% x! ^" H# k
" L' F& V7 I/ j: I
offset = D2Client::GetAddress(0x99BA7);5 X4 @. f* K8 {
Memory::SetCursor(offset);
( O* k5 y% R6 E2 y1 J Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);9 _1 T, O/ v/ ^; r1 x! ~
+ h6 `* n+ s: s- Y/ L* J" R offset = D2Client::GetAddress(0x99BE2);, L7 P: y. n- z+ v
Memory::SetCursor(offset);
9 V D4 R; |2 k8 X+ u$ H% J Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);+ C1 h) l1 J: j! x+ m( u# y; |
. R& E4 m+ n2 s i4 i offset = D2Client::GetAddress(0x99C1C);
( G1 F7 L. d' x5 y3 p4 U Memory::SetCursor(offset);0 U3 l+ ?1 G' |
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_Char6Fix);" ?$ e4 D" O; a& ?0 t
( c$ |5 |3 C( Z7 w |! i) R //取消两个popup,偷偷懒不过分
' Y/ x* A& }$ Z2 A offset = D2Client::GetAddress(0x9386d);! L: u1 @! r$ W/ w
Memory::SetCursor(offset);
6 k; X" J& |+ d) ?3 a* l% f Memory::ChangeByte(0x8b, 0x33);
# @1 d8 L" V& T9 ^* D Memory::ChangeByte(0xc8, 0xC9);2 J' }1 s. O7 _. I# g" c* \% P9 T+ w$ |/ i
offset = D2Client::GetAddress(0x9390b);5 \2 S- L: c% f- a+ k3 t
Memory::SetCursor(offset);
/ X# N- O. a* ^, U Memory::ChangeByte(0x8b, 0x33);0 f( g( X$ o+ M( U
Memory::ChangeByte(0xc8, 0xC9);5 B8 x; @1 V; u1 U
$ O# B8 i9 n4 p3 c+ X //修正提取金币
5 L5 A8 j0 r9 S; n. d3 U offset = D2Client::GetAddress(0x8D3E5);) m; i# j5 m, d4 z
Memory::SetCursor(offset);
8 q2 r' ?" C% Z( a' Z/ o* ~# k! G# f/ O Memory::ChangeByte(0xA1, 0xE9);
8 i; m U& R; N0 k5 z3 n Memory::ChangeCallA((DWORD)D2Client::ptNegWindowStartY, (DWORD)caller_goldcoin);
; T& s" x) O% Y- C) |6 \) Y9 [: N! J) W1 L& f% ~
offset = D2Client::GetAddress(0x6FB3D2E0-0x6FAB0000);0 [' c! M, d1 L" L
Memory::SetCursor(offset);6 o* W" ^) v; h/ I0 @" u
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_goldcoinimg);
E1 i( ]4 ^6 @% \) v
/ t9 p/ E* j/ _! r offset = D2Client::GetAddress(0x6FB3D267 - 0x6FAB0000);
7 Z4 O f! X n5 B/ o& p1 Q Memory::SetCursor(offset);
o1 ?* n3 v9 J1 t Memory::ChangeCallB((DWORD)D2Win::D2PrintString, (DWORD)caller_goldcointext);3 s$ w% D! q$ R7 ]! n
/ x0 ]' p" x& X //修正关闭按钮: m: }" t* f& R2 u5 b P
offset = D2Client::GetAddress(0x8BD90);
: E6 ?- `9 N6 K# a3 u/ H Memory::SetCursor(offset);
7 p1 t& ~: b8 X. N; a# N; X Memory::ChangeByte(0xA1, 0xE9);
4 Q6 h' a4 D+ O4 W: [ Memory::ChangeCallA((DWORD)D2Client::ptScreenSize, (DWORD)caller_close);
6 `- Z6 p# m, p1 A2 k! K) T
+ \ y* v/ B1 H) q' I/ z+ p offset = D2Client::GetAddress(0x6FB4A721 - 0x6FAB0000);
4 K: T/ n q) B6 I( M$ R1 _' I) A Memory::SetCursor(offset);. s, P) e n6 J H* v
Memory::ChangeCallB((DWORD)D2Gfx::D2DrawImage, (DWORD)caller_closeimg);
# a5 k: X6 h9 T- z) `
6 j T5 o' @, k" ?4 |5 u6 v- C+ m/ `& |% N7 y f9 B; ]5 `. {
//以下是细节
5 A z+ q1 b: V#define getXGoldCoinFixBtn() RX(0x2d0)" Q. Y0 u: O' e( F3 N( [- E) W0 L- {5 V
#define getLGoldCoinFixBtn() 32
6 S! J- m' A. C0 W5 \4 ^$ M4 C#define getYGoldCoinFixBtn() RY(-0x59)' E3 b2 O/ }" t5 S+ d6 y' N
#define getHGoldCoinFixBtn() 32
9 N) T. H: w _6 E0 R#define isOnGoldCoinFixBtn(x,y) isOnRect(x, y, getXGoldCoinFixBtn(), getYGoldCoinFixBtn(), getLGoldCoinFixBtn(), getHGoldCoinFixBtn())
' y+ {: t- H* E" x8 N' h- ~0 _0 W
#define getXInvCloseFixBtn() RX(0x3db); w7 Q# [, k- M( j: t: G" ^
#define getLInvCloseFixBtn() 321 a1 p$ ^/ W# q: X" h
#define getYInvCloseFixBtn() RY(-0x63)
' I$ k) A- @+ N5 q& B2 J#define getHInvCloseFixBtn() 32) M2 x. X$ Q" ], r9 x: y6 z& h. Z2 V5 I
#define isOnInvCloseFixBtn(x,y) isOnRect(x, y, getXInvCloseFixBtn(), getYInvCloseFixBtn(), getLInvCloseFixBtn(), getHInvCloseFixBtn())
7 [: f, u0 v8 n5 A& e" k( f% S: H8 B$ v3 A% w: r1 L$ P
BOOL __fastcall m_NewStatShow_goldcoin(DWORD x,DWORD y)
' h( }% L; j4 ^( q' W9 N6 g! v{( R7 t: A5 d' \6 O6 l1 i5 z# d
DWORD mx = *D2Client::ptMouseX;
6 ?0 K2 l7 O) l1 c7 D3 u; h DWORD my = *D2Client::ptMouseY;
: [) s7 C9 j/ C( N, z- B/ P; _3 o if(isOnGoldCoinFixBtn(mx, my))( U! W9 W1 i8 A" G4 J
return TRUE;7 X3 H/ g$ a9 I2 k. ~. [
return FALSE; x) D* `& _2 T" l
}+ ~0 L3 j7 ?1 e6 C( H4 @/ y
__declspec(naked) void caller_goldcoin()
d$ }4 y6 k) H- ~{+ \0 l& E. y O! f( [, j' e
__asm; s) J& M7 V: Q
{
/ \: B6 s1 g" D& g5 M push ebx6 G( V" r' |* V3 S! @( ~
mov ecx, esi! t M+ I, R& i* D5 _
mov edx, edi
( D ?$ B# o' I- x* b" } call m_NewStatShow_goldcoin9 D8 l& {" i0 _) B; a
pop ebx
# i& \) B9 T% n: }. p# U pop esi* d3 i q/ q8 G" {0 s/ n8 {
retn
# A1 B" F W+ |( I: }! ~ }! H. b) k- E" k- D5 V0 }
}: n- m7 E6 n7 @/ f7 q, Z( m
void __stdcall m_NewStatShow_goldcoinimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]): k7 [, a. ?* r( [" U( v
{# _' g2 W, `" E$ A7 t2 H
if (*nXpos > D2Client::ptScreenSize->x / 2)! A5 B( V+ ?. n" j8 E& v
{
: `0 |2 A$ ~+ `# f5 D r/ W0 B9 U *nXpos = getXGoldCoinFixBtn();
/ R- W2 j. c1 J* C0 D0 C *nYpos = getYGoldCoinFixBtn();
+ W+ V4 l! }' D. n1 p+ ]$ c& a: t! Y7 Q }
( j( k# ^! A! u! s: |# F: W i}
# L' \2 z( }6 {1 G' ]& |__declspec(naked) void caller_goldcoinimg()
: w, M1 j; a, C( Q$ N{
3 q( A9 U' s/ x/ k8 }0 a, W __asm+ h9 v3 `9 F) |8 Y2 o6 T
{
! T. I% C$ } a' o PUSHAD. d$ O6 c: G6 c
lea eax, dword ptr ss : [esp + 0x38]. e* I6 D1 M7 w& V$ y
push eax
2 g \$ |0 H$ a# R0 x push dword ptr ss : [esp + 0x38]/ r5 l1 c; m* R& N( y/ u: h
push dword ptr ss : [esp + 0x38]
1 o( H' ]! M- M h3 w lea eax, dword ptr ss : [esp + 0x38]
: u$ L0 @# n, M, l' G8 s push eax
% \9 i4 C8 H0 l# m* L6 N' C lea eax, dword ptr ss : [esp + 0x38]; V; L* ?7 }1 e$ |
push eax
3 M9 h. F3 s* f8 U3 G$ R push dword ptr ss : [esp + 0x38]
. F6 ~) e" F4 N% | call m_NewStatShow_goldcoinimg T# O, w/ r- u2 J
POPAD
6 I5 |& b8 C: N JMP D2Gfx::D2DrawImage& ?" T/ h! v3 ]0 b0 n: P+ @) D1 E
}- ^ C, @4 c! i* M( i) C
}) z3 a1 L% V- ^# \7 F& S
DWORD __fastcall m_NewStatShow_goldcointext(DWORD x,DWORD* y)//返回x坐标6 l! r) r1 s) ?- @4 W) d$ b
{
, C1 D3 ^1 Z( \- f/ \% J0 m. E if (x > D2Client::ptScreenSize->x / 2)
3 F; D; x, V: p- l {
$ i# g* K4 x: ^9 b" ?& G/ `* n *y = getYGoldCoinFixBtn();; Q: Z6 b' r" h$ O& \) z7 D4 @
return getXGoldCoinFixBtn() + 32;
8 ~& A' B' ]0 f( w( d3 n5 N/ x) _$ _- n3 M }/ i2 g, C+ N& m8 z0 Z
return x;
. V# H9 v+ F ]9 g& F3 h! X}
3 g* [) E9 H" q/ [) a/ s__declspec(naked) void caller_goldcointext()
- H+ A) q& u8 v, y{
) S% C8 H1 [4 c" k; E9 P: E __asm) ]# v9 a, ~3 O- y, a- _: j
{
& _# Q) [# M/ ]& |$ b2 z PUSH ECX* z: e6 X; ^$ h6 Q5 \! A; r
PUSH EDI+ c3 J6 ?/ b1 i( V$ n
PUSH ESI
7 H' L d0 [8 v' m$ I PUSH EAX9 }5 A# d' W, f0 P
MOV ECX, EDX9 u1 z5 e' }2 ~
LEA EDX,[ESP+0X4+0X10]4 a% ?. N2 a0 a' L* Y- d
CALL m_NewStatShow_goldcointext+ O+ ^* j5 I8 B" J, _: N0 A7 C
MOV EDX,EAX
7 U. ~7 ^5 k- }) z7 e2 ]4 Z) B POP EAX
) q1 w* u0 o! K( N N: i POP ESI
0 N" o" L8 c; l POP EDI
7 Y s6 k$ e0 G& a( W, j% ` POP ECX
9 C: Y9 \, I. K. {: G2 O% [0 d3 h jmp D2Win::D2PrintString;; y# A6 a5 F! N# {- \3 E1 [, T
}/ t1 A0 |9 d5 n1 A$ _& \
}; f" s; E! E' u2 |9 V
5 z# n& |: y( d% nBOOL __fastcall m_NewStatShow_close(DWORD x, DWORD y)
7 f+ k ~% B0 b, \7 O1 O! I7 ]8 X{& } c- y( G% U: U
DWORD mx = *D2Client::ptMouseX;
9 B H( F/ L0 O/ d7 w DWORD my = *D2Client::ptMouseY;" c) d r$ w# M5 n) n
if (isOnInvCloseFixBtn(mx, my))
6 e3 I7 N- ^+ _2 i5 A8 \ return TRUE;/ N& b7 U' Z9 M" Y3 ]; O+ h Q
return FALSE;
4 t# V* h8 p3 o$ X2 a! e}
* U* B8 I7 e8 n5 j6 t) H- a__declspec(naked) void caller_close()
& R, o; F3 L4 c{
1 B& s1 M# Q. F8 J __asm
: Q" g6 y* P5 u V {
1 `, X/ [ f* g) V% H0 K PUSH ESI7 k7 v/ `6 c { k, A$ d
push ebx
& \1 [1 l' B1 b3 E- F# ~- m call m_NewStatShow_close
! h G2 z0 l' q pop ebx a, U' A+ I+ q
pop esi3 B# M; O. U& l c0 I8 N
retn! H( D. u2 \2 T! G- @$ v/ Q: n( {
}
z: B2 |# n0 h- L}6 m( _ L# U: G$ c! Q# j' n
void __stdcall m_NewStatShow_closeimg(sDrawImageInfo* pData, DWORD* nXpos, DWORD* nYpos, DWORD nGamma, DWORD nDrawType, BYTE pPalette[256][256]), y/ j. F. y; B( a1 V; F M; F
{
' w4 k5 E; D( V y4 g *nXpos = getXInvCloseFixBtn();
* p: ~% \& t. w/ _7 z0 G) C; X *nYpos = getYInvCloseFixBtn();, \; x5 r% D3 j
}' r! o8 ]3 x: _1 m8 y+ D' j
__declspec(naked) void caller_closeimg()
$ k- {& Q8 {5 {/ t) q{' {! {* l, D6 w. s, W# u2 v! V
__asm8 N I0 O# E$ ]4 K' \
{
* R6 z' G' v5 M PUSHAD( }2 c6 e' s( J
lea eax, dword ptr ss : [esp + 0x38]
" X! [& O* g+ P2 z, [; a push eax
; O% a. e4 ?6 U* j3 G. M' P push dword ptr ss : [esp + 0x38]
7 D$ q4 g7 ~. e$ f9 a H, Z0 Y push dword ptr ss : [esp + 0x38]& J% B+ J1 g/ u1 ]
lea eax, dword ptr ss : [esp + 0x38]' H. p' \6 w2 E! m& p
push eax
) }- F$ G" k' Z lea eax, dword ptr ss : [esp + 0x38], d" T0 s% d" L
push eax; i T2 X L) Z. Q
push dword ptr ss : [esp + 0x38]6 N3 I \% _, L5 w+ i/ j
call m_NewStatShow_closeimg: L3 f8 {: c5 a: ^- e
POPAD a* A' g# H( p6 S
JMP D2Gfx::D2DrawImage
5 p6 \9 W0 G+ t1 H, ~* j- M }) \0 a B' l8 K& j: z$ G7 M% W
}) I; y( ?2 B$ V8 |
$ D# G0 B) h, e% |; d9 b5 D+ t
/ ~3 u- A u9 l5 [/ a) \ |
|