|
转载6 o+ }6 {+ Z' x! V7 A
. S+ j! q% F0 @2 y! @& T/ i( i/ U( j. W
- ////////////////////////////////////////////////////////////////////////////////////////////////& x+ s' |+ F( [! z% t! o
- // D2Client Functions //函数表4 P1 Z. h) O; k3 r% m* @6 T& O
- ////////////////////////////////////////////////////////////////////////////////////////////////
; I5 o% m2 L' ]0 b: ?7 F6 R4 o) d - 7 c$ Y/ j* X& ^/ ~. d8 X4 I
- FUNCPTR(D2CLIENT, GetQuestInfo, void*, __stdcall, (void), 0x45A00)//1 m/ ^6 t; u! _; v$ ~, M
- FUNCPTR(D2CLIENT, SubmitItem, void, __fastcall, (DWORD dwItemId), 0x45FB0)/// H( h! _! p9 F2 i, [
- FUNCPTR(D2CLIENT, Transmute, void, __fastcall, (void), 0x8CB90)//- V; o+ }# L; f" R" v i
- FUNCPTR(D2CLIENT, FindClientSideUnit, UnitAny*, __fastcall, (DWORD dwId, DWORD dwType), 0xA5B20)//
/ U9 D1 |, x% ^3 |2 Q - FUNCPTR(D2CLIENT, FindServerSideUnit, UnitAny*, __fastcall, (DWORD dwId, DWORD dwType), 0xA5B40)//$ s/ V- D/ j% R+ G1 ^. P% n5 M
- FUNCPTR(D2CLIENT, GetCurrentInteractingNPC, UnitAny*, __fastcall, (void), 0x46150)//
v6 T) o: |$ L4 Y, l - FUNCPTR(D2CLIENT, GetSelectedUnit, UnitAny *, __stdcall, (void), 0x51A80)//
9 r* M7 M R1 q8 P' @ - FUNCPTR(D2CLIENT, GetCursorItem, UnitAny*, __fastcall, (void), 0x16020)//, q8 y5 e0 C; M( v! l1 a
- FUNCPTR(D2CLIENT, GetMercUnit, UnitAny*, __fastcall, (void), 0x97CD0)//
K- r. n9 {9 k( {* W - FUNCPTR(D2CLIENT, SetSelectedUnit_I, void, __fastcall, (UnitAny *pUnit), 0x51860)//
3 i" P$ x8 \* ?7 `+ v - FUNCPTR(D2CLIENT, GetItemName, BOOL, __stdcall, (UnitAny* pItem, wchar_t* wBuffer, DWORD dwSize), 0x914F0)//
" ]5 M( N9 D4 t6 Q - FUNCPTR(D2CLIENT, LoadItemDesc, BOOL, __stdcall, (UnitAny* pItem, int type), 0x93450)//0 s3 y# D( \. ^ m2 Q
- FUNCPTR(D2CLIENT, GetMonsterOwner, DWORD, __fastcall, (DWORD nMonsterId), 0x216A0)//" i5 j) R0 h# }- [
- FUNCPTR(D2CLIENT, GetUnitHPPercent, DWORD, __fastcall, (DWORD dwUnitId), 0x21580)//5 H( L& z6 E5 B: c3 [/ b% q1 G# p
- FUNCPTR(D2CLIENT, InitInventory, void, __fastcall, (void), 0x908C0)//8 m8 o/ a% v8 y3 n, K6 k
- FUNCPTR(D2CLIENT, SetUIVar, DWORD, __fastcall, (DWORD varno, DWORD howset, DWORD unknown1), 0xC2790)//, f; z0 I) d1 a9 N/ d
- FUNCPTR(D2CLIENT, GetUnitX, int, __fastcall, (UnitAny* pUnit), 0x1630)//
/ O$ j' w5 V9 F: x9 @ - FUNCPTR(D2CLIENT, GetUnitY, int, __fastcall, (UnitAny* pUnit), 0x1660)//. ~& k& `( R& M0 m4 T
- FUNCPTR(D2CLIENT, ShopAction, void, __fastcall, (UnitAny* pItem, UnitAny* pNpc, UnitAny* pNpc2, DWORD dwSell, DWORD dwItemCost, DWORD dwMODe, DWORD _2, DWORD _3), 0x47D60)//
8 E. e, a0 l% B/ `& n% m2 P - FUNCPTR(D2CLIENT, CloseNPCInteract, void, __fastcall, (void), 0x492F0)//& `, X9 q& p7 l% `
- FUNCPTR(D2CLIENT, CloseInteract, void, __fastcall, (void), 0x43870)//
! R& H, h! }6 k Z3 ]* d - FUNCPTR(D2CLIENT, GetAutomapSize, DWORD, __stdcall, (void), 0x5F080)//- }( z: N" F" v2 h
- FUNCPTR(D2CLIENT, NewAutomapCell, AutomapCell *, __fastcall, (void), 0x5F6B0)//$ d& }$ ?9 q8 Y1 y0 P' D$ G& l
- FUNCPTR(D2CLIENT, AddAutomapCell, void, __fastcall, (AutomapCell *aCell, AutomapCell **node), 0x61320)//0 b- l) d% t |$ m2 w- u) h
- FUNCPTR(D2CLIENT, RevealAutomapRoom, void, __stdcall, (DRLGRoom *pRoom, DWORD dwClipFlag, AutomapLayer *aLayer), 0x62580)//
. ^ @+ q' e3 ?$ u7 g - FUNCPTR(D2CLIENT, InitAutomapLayer_I, AutomapLayer*, __fastcall, (DWORD nLayerNo), 0x62710)//
! H; {( Y/ P! I" A. a4 ~# |# s - FUNCPTR(D2CLIENT, ClickMap, void, __stdcall, (DWORD MouseFlag, DWORD x, DWORD y, DWORD Type), 0x1BF20)//
4 }! q u- f8 f% g: M! `. H( r5 M - FUNCPTR(D2CLIENT, LeftClickItem, void, __stdcall, (UnitAny* pPlayer, Inventory* pInventory, int x, int y, DWORD dwClickType, InventoryLayout* pLayout, DWORD Location), 0x96AA0)//
5 P& N. L& p) J c7 b - FUNCPTR(D2CLIENT, GetMouseXOffset, DWORD, __fastcall, (void), 0x3F6C0)//
( l$ O: u2 N& f - FUNCPTR(D2CLIENT, GetMouseYOffset, DWORD, __fastcall, (void), 0x3F6D0)//
' K/ c3 z5 a p: R - FUNCPTR(D2CLIENT, PrintPartyString, void, __stdcall, (wchar_t *wMessage, int nColor), 0x7D610)//
6 S* ^6 a# l) _' v1 E& E - FUNCPTR(D2CLIENT, PrintGameString, void, __stdcall, (wchar_t *wMessage, int nColor), 0x7D850)//0 {$ I" [7 W6 Q7 q+ L
- FUNCPTR(D2CLIENT, LeaveParty, void, __fastcall, (void), 0x9E5D0)//
2 t& A6 h8 I7 m4 ~6 J+ a - FUNCPTR(D2CLIENT, AcceptTrade, void, __fastcall, (void), 0x59600)//
. Y4 p' L; J* B- G; U% _ - FUNCPTR(D2CLIENT, CancelTrade, void, __fastcall, (void), 0x595C0)//
+ s/ i3 f5 r8 L y9 K6 M, \ - FUNCPTR(D2CLIENT, TradeOK, void, __stdcall, (void), 0x59980)//
* h: P v9 s! _) l1 ] - FUNCPTR(D2CLIENT, GetDifficulty, BYTE, __stdcall, (void), 0x58DA0)//
. G6 q7 W9 |" R' I/ y, A: B4 H' B - FUNCPTR(D2CLIENT, ExitGame, void, __fastcall, (void), 0x42850)//( w6 O9 q9 I1 `: |7 v
- FUNCPTR(D2CLIENT, GetUiVar_I, DWORD, __fastcall, (DWORD dwVarNo), 0xBE400)//$ L7 H: h/ W" K; q3 M+ s
- FUNCPTR(D2CLIENT, DrawRectFrame, void, __fastcall, (DWORD Rect), 0xBE4C0)//
) a$ U- a Z6 J( W7 W$ G - FUNCPTR(D2CLIENT, PerformGoldDialogAction, void, __fastcall, (void), 0xBFDF0)//
* j( L4 y4 g1 ]! C - FUNCPTR(D2CLIENT, GetPlayerUnit, UnitAny*, __stdcall, (void), 0xA4D60)// R& A& {6 U6 M! N4 Z! Y2 W
- FUNCPTR(D2CLIENT, GetLevelName_I, wchar_t*, __fastcall, (DWORD levelId), 0xBE240)//& A8 z4 V4 K# r: k) j* p
- FUNCPTR(D2CLIENT, ClearScreen, void, __fastcall, (void), 0x48350)//
5 K& l; K8 n; D+ u; Q% |, P2 ` - FUNCPTR(D2CLIENT, CloseNPCTalk, DWORD, __stdcall, (void* unk), 0x7ED30)//! \. S8 [5 t, i3 u( {5 L0 w) n; s
- FUNCPTR(D2CLIENT, ClickOnStashButton, void, __fastcall, (DWORD x, DWORD y), 0x8CD00);/// I& P* q$ h: {: J
- FUNCPTR(D2CLIENT, GetUnit, void*, __fastcall, (DWORD dwId, DWORD dwType), 0x78D30);
6 h$ a I- y8 e' W* f1 h) f @ - ' o) C: v" F' {% x: |
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// C' `* N0 E- |; U2 q- Y( V
- // D2Client Globals //数据段内容在游戏内易查找,本人无1.13D版本,故以下数据段内容未查找,需要者自行查找+ s6 T7 ^8 l) H2 q& x
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2 M, w8 L" |( G7 k- u, L( Q9 q0 P: _# k% { - : F ]& ]1 F; ~! E
- VARPTR(D2CLIENT, ScreenSizeX, DWORD, 0xDBC48)//$ x0 q9 _; t. |1 G; w6 v, d* j+ B# {- X
- VARPTR(D2CLIENT, ScreenSizeY, DWORD, 0xDBC4C)//
+ W4 d7 I+ z- Z& D: s- G: ^1 s - VARPTR(D2CLIENT, CursorHoverX, DWORD, 0xE0EB8)//
+ ~7 K- D! E! f) u - VARPTR(D2CLIENT, CursorHoverY, DWORD, 0xE0EBC)//
6 `% V, J- T6 d& J! _7 X. h - //VARPTR(D2CLIENT, MouseX, DWORD, 0x11C950)//未找到: I+ R8 p. Q& ~
- //VARPTR(D2CLIENT, MouseY, DWORD, 0x11C94C)//未找到
$ q S2 R1 _$ z% h - //VARPTR(D2CLIENT, MouseOffsetY, int, 0x106840)//未找到+ l! c& c* V0 `% J) p* h( j
- //VARPTR(D2CLIENT, MouseOffsetX, int, 0x106844)//未找到
8 H/ J$ g9 D. G3 ?' i4 d - //VARPTR(D2CLIENT, AutomapOn, DWORD, 0x11C8B8)//未找到
2 ~0 E( Y7 m6 V T" d - //VARPTR(D2CLIENT, AutomapMode, int, 0xF34F8)//未找到
' \) x+ X5 t R - //VARPTR(D2CLIENT, Offset, POINT, 0x11CF5C)//未找到: M2 k6 R4 Y* r9 @4 G8 X
- //VARPTR(D2CLIENT, AutomapLayer, AutomapLayer*, 0x11CF28)//未找到
, F+ c& `+ n, ~1 p9 r) q9 } - //VARPTR(D2CLIENT, MercStrIndex, WORD, 0xF02D8)//未找到
3 k+ m p/ I' X& d - //VARPTR(D2CLIENT, MercReviveCost, DWORD, 0x11CEE8)//未找到
9 N1 ?6 M* P6 N, L, P7 H' C - //VARPTR(D2CLIENT, ServerSideUnitHashTables, UnitHashTable, 0x1047B8)//未找到1 [- |5 e) g2 l9 ?
- //VARPTR(D2CLIENT, ClientSideUnitHashTables, UnitHashTable, 0x103BB8)//未找到: {( s/ f, M$ a0 P+ ^2 x8 Y
- //VARPTR(D2CLIENT, ViewportY, int, 0x106840)//未找到) Y* A; X% r# }; s Q
- //VARPTR(D2CLIENT, ViewportX, int, 0x106844)//未找到5 ], A- p5 Z0 }+ O' |: w
- //VARPTR(D2CLIENT, GoldDialogAction, DWORD, 0x11C86C)//未找到/ I/ L/ l6 [! i/ c3 y
- //VARPTR(D2CLIENT, GoldDialogAmount, DWORD, 0x11D568)//未找到
3 j6 V' Y/ q3 C# f% y# A - //VARPTR(D2CLIENT, NPCMenu, NPCMenu*, 0xF1A90)//未找到6 _' ]) {! M' w
- //VARPTR(D2CLIENT, NPCMenuAmount, DWORD, 0xF21E0)//未找到% W: g0 m# K# S0 y- J: l
- //VARPTR(D2CLIENT, TradeLayout, InventoryLayout*, 0x101598)//未找到7 _6 H; J+ t5 k% }! G
- //VARPTR(D2CLIENT, StashLayout, InventoryLayout*, 0x1015E0)//未找到4 H) ?: t2 B$ Q$ ^" h, i4 g" U
- //VARPTR(D2CLIENT, StoreLayout, InventoryLayout*, 0x1016C0)//未找到
% U; d! p0 h5 `' `2 P) w - //VARPTR(D2CLIENT, CubeLayout, InventoryLayout*, 0x1016D8)//未找到- R# |! B$ w* C& Q
- //VARPTR(D2CLIENT, InventoryLayout, InventoryLayout*, 0x1016F0)//未找到
6 e& K: Z }5 X7 O# q - //VARPTR(D2CLIENT, MercLayout, InventoryLayout*, 0x11CC84)//未找到7 A0 Q6 ^0 p+ h# {$ C( X
- //VARPTR(D2CLIENT, RegularCursorType, DWORD, 0x11C98C)//未找到
$ D( h8 @5 K' W9 \ - //VARPTR(D2CLIENT, ShopCursorType, DWORD, 0x11CB24)//未找到% l% A+ _4 Y* K; A
- //VARPTR(D2CLIENT, Ping, DWORD, 0x108764)//未找到
7 ^6 h/ N0 G0 K$ i5 N. `1 L6 N - //VARPTR(D2CLIENT, FPS, DWORD, 0x11CE10)//未找到
7 Y3 Z. j6 E% `/ ?6 q - //VARPTR(D2CLIENT, Skip, DWORD, 0x108770)//未找到 M$ V7 g" [: O$ J& J4 |
- //VARPTR(D2CLIENT, Divisor, int, 0xF34F8)//未找到
$ N0 j9 }6 s. M- F - //VARPTR(D2CLIENT, OverheadTrigger, DWORD, 0x101ABE)//未找到
! B' h8 f( n `0 O6 }& b - //VARPTR(D2CLIENT, RecentInteractId, DWORD, 0x101895)//未找到4 l' _, u+ u' D
- //VARPTR(D2CLIENT, ItemPriceList, DWORD, 0x1018B3)//未找到, ~, J3 z4 k3 ?; M& o) ~* n8 d* W
- //VARPTR(D2CLIENT, TransactionDialog, void*, 0x1018D3)//未找到
- P% S! f" s7 F, E8 ], V - //VARPTR(D2CLIENT, TransactionDialogs, DWORD, 0x11D58C)//未找到) Y6 E2 `5 Z9 D* E2 x$ S& a2 e, j
- //VARPTR(D2CLIENT, TransactionDialogs_2, DWORD, 0x11D588)//未找到
9 V7 [4 f9 z! O' V3 `: D# ] - //VARPTR(D2CLIENT, pTransactionDialogsInfo, TransactionDialogsInfo_t*, 0x11D584)//未找到. S* f }2 N$ O F
- VARPTR(D2CLIENT, GameInfo, Game*, 0x11B980)// 6FB1FCE0 mov eax,dword ptr ds:[0x6FBCB980], a/ F4 @, a; f4 v X8 Q0 a
- //VARPTR(D2CLIENT, WaypointTable, DWORD, 0x1088FD)//未找到
! ]3 [/ O5 t. |. D9 y - VARPTR(D2CLIENT, PlayerUnit, UnitAny*, 0x11BBFC)// 6FAF4B5E mov ebp,dword ptr ds:[0x6FBCBBFC]
9 l# I: V0 C( {( q. U% F3 X7 F7 w) ?* s - //VARPTR(D2CLIENT, SelectedInvItem, UnitAny*, 0x11CB28)//未找到+ D C. b6 Y. ~( l
- //VARPTR(D2CLIENT, PlayerUnitList, RosterUnit*, 0x11CB04)//未找到% n0 r" L/ k' K" S* N' [! d4 Q
- //VARPTR(D2CLIENT, bWeapSwitch, DWORD, 0x11CB84)//未找到& b* V3 R& E( E6 r( w# m/ c
- //VARPTR(D2CLIENT, bTradeAccepted, DWORD, 0x11CD54)//未找到* G' E4 x! m6 J. A z" G
- //VARPTR(D2CLIENT, bTradeBlock, DWORD, 0x11CD64)//未找到
. I+ a: P$ t0 `% s/ p - //VARPTR(D2CLIENT, RecentTradeId, DWORD, 0x11D5AC)//未找到
5 I. J) H2 N2 D/ o: J - //VARPTR(D2CLIENT, ExpCharFlag, DWORD, 0x1087B4)//未找到7 O9 D3 e/ I1 O+ ^
- //VARPTR(D2CLIENT, MapId, DWORD, 0x11D204)//未找到0 x4 g9 H2 K4 K3 b" X
- //VARPTR(D2CLIENT, AlwaysRun, DWORD, 0x11D234)//未找到
8 {9 u) B4 G2 h9 e! k/ R, n% p: e - //VARPTR(D2CLIENT, NoPickUp, DWORD, 0x11D574)//未找到; D3 z+ Q+ E$ P* A/ [
- //VARPTR(D2CLIENT, ChatMsg, wchar_t*, 0x11D650)//未找到
3 B B8 D7 @ x) V6 O- N* ~$ Q- f - //VARPTR(D2CLIENT, OrificeId, DWORD, 0x11C9B8)//未找到8 p( r; D: j5 }, i
- //VARPTR(D2CLIENT, CursorItemMode, DWORD, 0x11C9B0)//未找到3 L6 M3 `. Y7 D+ P& F, p) l
- //VARPTR(D2CLIENT, pUnitTable, POINT, 0x1047B8)//未找到' r* i5 x+ X+ J6 k y- X4 {
- //VARPTR(D2CLIENT, pDescFuncTable, void*, 0x2DAD4)//未找到
复制代码 % f8 n, ~, X6 j
7 e0 @; b- v& Z6 `. X4 Y% S: s! {
|
|