39 Commits

Author SHA1 Message Date
Hash Borgir
c0f1e91e4a latest 2024-05-27 09:17:54 -06:00
Hash Borgir
cce65db976 item pick up not working 2024-05-19 16:59:20 -06:00
Hash Borgir
b4b85425aa close panel button fixed 2024-05-19 06:08:50 -06:00
Hash Borgir
6cc15930ca close window working, but closing stats too 2024-05-19 06:00:42 -06:00
Hash Borgir
106bef4f85 Extractor Panel Close button not working. 2024-05-18 10:32:15 -06:00
Hash Borgir
4d21c90f5a Latest fixes 2024-05-10 00:19:14 -06:00
Hash Borgir
058db50095 Added 250ms delay to sendPacketAndUpdateProperty 2024-05-09 09:13:42 -06:00
Hash Borgir
43defeb6d8 page 99 problem fixed, need to clean code 2024-05-08 18:55:59 -06:00
Hash Borgir
dc76f5627b r01 not extracting. 2024-05-08 17:56:23 -06:00
Hash Borgir
d75e045bc7 custom panel stat display 2024-05-07 17:44:20 -06:00
Hash Borgir
e431b3f7d4 extract item stat fix 2024-05-07 13:58:58 -06:00
Hash Borgir
551f3e44f2 HP/Mana storage working 2024-05-07 08:31:54 -06:00
Hash Borgir
41a4c4d181 Code optimization, reduce repetitive code. 2024-05-07 05:31:18 -06:00
Hash Borgir
9719a540df Clean up 2024-05-06 23:45:45 -06:00
Hash Borgir
408aee62c1 Rejuv potiuons added to extractor 2024-05-06 23:00:55 -06:00
Hash Borgir
a61dce8f03 Extractor GUI done. Working... 2024-05-06 19:50:37 -06:00
Hash Borgir
5f220fa23e Working 2024-05-06 03:01:27 -06:00
Hash Borgir
4e02101d5d broken 2024-05-06 00:57:34 -06:00
Hash Borgir
ee810d5f38 Before gem implementation 2024-05-05 23:27:15 -06:00
Hash Borgir
343fa4253b Rune functions done. 2024-05-05 21:34:17 -06:00
Hash Borgir
331d1d75fe Extraction working 2024-05-05 20:39:25 -06:00
Hash Borgir
95f7d9bed3 Bag crashes upon hover. Need to debug. 2024-05-05 18:08:33 -06:00
Hash Borgir
3a7be104d9 Latest stable. 2024-05-05 10:41:26 -06:00
Hash Borgir
6141cc0a7b added transmorify wrapper 2024-05-04 12:06:59 -06:00
Hash Borgir
9e57031fdd cleanup 2024-05-04 12:05:34 -06:00
Hash Borgir
69965f77d1 Cleanup and fix itemtypes checks 2024-05-04 02:10:56 -06:00
Hash Borgir
aec114d05c Refactor/cleanup, had too many if conditions 2024-05-04 01:57:45 -06:00
Hash Borgir
06c28f4d56 Everything ini configurable 2024-05-03 07:34:36 -06:00
Hash Borgir
7fd617abd7 Stats display refactor using ini file done. 2024-05-02 21:43:43 -06:00
Hash Borgir
f8349e6ba1 close remtoe stash works 2024-05-01 13:42:06 -06:00
Hash Borgir
d33c619372 Cube opening works 2024-04-30 23:24:36 -06:00
Hash Borgir
56a49ff1e0 added more item types and codes to right click to send to cube 2024-04-29 12:23:23 -06:00
Hash Borgir
4d8fe9b2e2 Seems to be working 2024-04-29 04:58:24 -06:00
Hash Borgir
8f5c45d1c5 Gems not going back to inv, runes do. May need to revert 2024-04-29 04:53:56 -06:00
Hash Borgir
b5587695e8 Right click moving gems to cube and back is working. 2024-04-29 04:16:36 -06:00
Hash Borgir
27d93fa91e Latest 2024-04-29 02:48:40 -06:00
Hash Borgir
78fcd692b2 saving added gems to .boh file working 2024-04-28 14:15:06 -06:00
Hash Borgir
87d4758efc key local var? 2024-04-28 12:16:04 -06:00
Hash Borgir
74f1d9de01 Working on right click gem extraction 2024-04-28 12:09:32 -06:00
186 changed files with 7287 additions and 2321 deletions

2
ClassDiagram.cd Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram />

BIN
D2tweaks.aps Normal file

Binary file not shown.

View File

@@ -47,12 +47,12 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>true</LinkIncremental>
<OutDir>..\..\Diablo II\MODS\ironman-dev</OutDir>
<OutDir>..\..\Diablo II\MODS\ironman-dev\</OutDir>
<IntDir>$(SolutionDir)Build\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<OutDir>..\..\Diablo II\MODS\ironman-dev</OutDir>
<OutDir>..\..\Diablo II\MODS\ironman-dev\</OutDir>
<IntDir>$(SolutionDir)Build\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -180,6 +180,7 @@
<ClCompile Include="vendor\minhook\src\trampoline.c" />
</ItemGroup>
<ItemGroup>
<None Include="ClassDiagram.cd" />
<None Include="vendor\minhook\dll_resources\MinHook.def" />
</ItemGroup>
<ItemGroup>
@@ -279,6 +280,7 @@
<ClInclude Include="include\diablo2\utils\screen.h" />
<ClInclude Include="include\fw\pool.h" />
<ClInclude Include="include\fw\singleton.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="vendor\D2Template\D2Template.h" />
<ClInclude Include="vendor\D2Template\D2TemplateConstants.h" />
<ClInclude Include="vendor\D2Template\D2TemplateDataTables.h" />

View File

@@ -0,0 +1,77 @@
d:\vscode\d2tweaks-rnd2k\build\debug\src\common\asm_code.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\common\hooking.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\d2win.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\d2gfx.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\d2client.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\d2common.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\d2lang.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\d2game.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\d2net.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\ui\controls\checkbox.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\ui\controls\image.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\ui\controls\label.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\ui\controls\button.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\loot_filter\loot_filter.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\loot_filter\loot_filter_settings_toggle_menu.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\loot_filter\loot_filter_settings_menu.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\common\string_utils.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\common\config.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\common\ini.obj
d:\vscode\d2tweaks-rnd2k\build\debug\vc143.pdb
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\client_module.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\small_patches\small_patches.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\common\common.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\common\asset_manager.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\server_module.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\server.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\ui\controls\group.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\ui\menu.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\ui\ui_manager.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\d2launch.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\fog.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\storm.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\d2cmp.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\utils\mpq_ifstream.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\diablo2\utils\screen.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\main.obj
d:\vscode\d2tweaks-rnd2k\build\debug\vendor\d2template\d2template.obj
d:\vscode\d2tweaks-rnd2k\build\debug\vendor\dllnotify\dllnotify.obj
d:\vscode\d2tweaks-rnd2k\build\debug\vendor\minhook\src\buffer.obj
d:\vscode\d2tweaks-rnd2k\build\debug\vendor\minhook\src\hook.obj
d:\vscode\d2tweaks-rnd2k\build\debug\vendor\minhook\src\trampoline.obj
d:\vscode\d2tweaks-rnd2k\build\debug\vendor\minhook\src\hde\hde32.obj
d:\vscode\d2tweaks-rnd2k\build\debug\vendor\minhook\src\hde\hde64.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\client.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\autosort\autosort_client.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\auto_gold_pickup\auto_gold_pickup_client.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\auto_item_pickup\auto_item_pickup_client.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\damage_display\damage_display_client.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\item_drop_message\item_drop_message_client.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\item_move\item_move_client.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\loot_filter\loot_filter_settings.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\test\test.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\trader_update\trader_update_client.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\client\modules\transmute\transmute_client.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\autosort\autosort_server.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\auto_gold_pickup\auto_gold_pickup_server.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\auto_item_pickup\auto_item_pickup_server.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\damage_display\damage_display_server.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\identify_on_pickup\identify_on_pickup_server.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\item_drop_message\item_drop_message_server.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\item_move\item_move_server.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\test\test.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\trader_update\trader_update_server.obj
d:\vscode\d2tweaks-rnd2k\build\debug\src\d2tweaks\server\modules\transmute\transmute_server.obj
d:\diablo ii\mods\ironman-dev\d2tweaks.dll
d:\diablo ii\mods\ironman-dev\d2tweaks.pdb
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.ilk
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.pdb
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.vcxproj.filelistabsolute.txt
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.tlog\cl.command.1.tlog
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.tlog\cl.items.tlog
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.tlog\cl.read.1.tlog
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.tlog\cl.write.1.tlog
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.tlog\link.command.1.tlog
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.tlog\link.read.1.tlog
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.tlog\link.secondary.1.tlog
d:\vscode\d2tweaks-rnd2k\build\debug\d2tweaks.tlog\link.write.1.tlog

Binary file not shown.

Binary file not shown.

View File

@@ -1,3 +1,4 @@
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(517,5): warning MSB8004: Output Directory does not end with a trailing slash. This build instance will add the slash as it is required to allow proper evaluation of the Output Directory.
ui_manager.cpp
 autosort_client.cpp
D:\VSCode\d2tweaks-rnd2k\src\d2tweaks\client\modules\autosort\autosort_client.cpp(197,15): warning C4018: '<': signed/unsigned mismatch
D:\VSCode\d2tweaks-rnd2k\src\d2tweaks\client\modules\autosort\autosort_client.cpp(197,66): warning C4018: '<=': signed/unsigned mismatch
D2tweaks.vcxproj -> D:\Diablo II\MODS\ironman-dev\D2tweaks.dll

Binary file not shown.

View File

@@ -1,2 +1 @@
D:\VSCode\D2tweaks_src_17.04.2024\Build\Debug\D2tweaks.dll
D:\VSCode\d2tweaks-rnd2k\Build\Debug\D2tweaks.dll

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,8 @@
{
"folders": [
{
"path": "."
}
],
"settings": {}
}

View File

@@ -4,7 +4,7 @@
// "CIni" is a simple API wrap class used for ini file access.
// The purpose of this class is to make ini file access more
// convenient than direct API calls.
//
//
// This file is distributed "as is" and without any expressed or implied
// warranties. The author holds no responsibilities for any possible damages
// or loss of data that are caused by use of this file. The user must assume
@@ -42,7 +42,7 @@
// If MFC is linked, we will use CStringArray for great convenience
#ifdef __AFXWIN_H__
#include <afxtempl.h>
#include <afxtempl.h>
#endif
// Number bases
@@ -59,11 +59,11 @@
// string, the 2nd parameter is a 32-bit user defined data, this parameter can
// be NULL. The parsing will terminate if this function returns zero. To use
// the callback, function pointer needs to be passed to "CIni::ParseDNTString".
typedef BOOL (CALLBACK *SUBSTRPROC)(LPCTSTR, LPVOID);
typedef BOOL(CALLBACK* SUBSTRPROC)(LPCTSTR, LPVOID);
class CIni
{
public:
public:
//-----------------------------------------------------------
// Constructors & Destructor
@@ -80,10 +80,10 @@ public:
#ifdef __AFXWIN_H__
CString GetPathName() const;
#endif
//------------------------------------------------------------
// String Access
//------------------------------------------------------------
//------------------------------------------------------------
DWORD GetString(LPCTSTR lpSection, LPCTSTR lpKey, LPTSTR lpBuffer, DWORD dwBufSize, LPCTSTR lpDefault = NULL) const;
#ifdef __AFXWIN_H__
CString GetString(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpDefault = NULL) const;
@@ -93,32 +93,32 @@ public:
// Read a string from the ini file, append it with another string then write it
// back to the ini file.
BOOL AppendString(LPCTSTR Section, LPCTSTR lpKey, LPCTSTR lpString) const;
//------------------------------------------------------------
// Ini File String Array Access
//------------------------------------------------------------
//------------------------------------------------------------
// Parse the string retrieved from the ini file and split it into a set of sub strings.
DWORD GetArray(LPCTSTR lpSection, LPCTSTR lpKey, LPTSTR lpBuffer, DWORD dwBufSize, LPCTSTR lpDelimiter = NULL, BOOL bTrimString = TRUE) const;
#ifdef __AFXWIN_H__
void GetArray(LPCTSTR lpSection, LPCTSTR lpKey, CStringArray* pArray, LPCTSTR lpDelimiter = NULL, BOOL bTrimString = TRUE) const;
BOOL WriteArray(LPCTSTR lpSection, LPCTSTR lpKey, const CStringArray* pArray, int nWriteCount = -1, LPCTSTR lpDelimiter = NULL) const;
#endif
#endif
//------------------------------------------------------------
// Primitive Data Type Access
//------------------------------------------------------------
int GetInt(LPCTSTR lpSection, LPCTSTR lpKey, int nDefault, int nBase = BASE_DECIMAL) const;
BOOL WriteInt(LPCTSTR lpSection, LPCTSTR lpKey, int nValue, int nBase = BASE_DECIMAL) const;
BOOL IncreaseInt(LPCTSTR lpSection, LPCTSTR lpKey, int nIncrease = 1, int nBase = BASE_DECIMAL) const;
UINT GetUInt(LPCTSTR lpSection, LPCTSTR lpKey, UINT nDefault, int nBase = BASE_DECIMAL) const;
BOOL WriteUInt(LPCTSTR lpSection, LPCTSTR lpKey, UINT nValue, int nBase = BASE_DECIMAL) const;
BOOL IncreaseUInt(LPCTSTR lpSection, LPCTSTR lpKey, UINT nIncrease = 1, int nBase = BASE_DECIMAL) const;
BOOL GetBool(LPCTSTR lpSection, LPCTSTR lpKey, BOOL bDefault) const;
BOOL WriteBool(LPCTSTR lpSection, LPCTSTR lpKey, BOOL bValue) const;
BOOL InvertBool(LPCTSTR lpSection, LPCTSTR lpKey) const;
double GetDouble(LPCTSTR lpSection, LPCTSTR lpKey, double fDefault) const;
BOOL WriteDouble(LPCTSTR lpSection, LPCTSTR lpKey, double fValue, int nPrecision = -1) const;
BOOL IncreaseDouble(LPCTSTR lpSection, LPCTSTR lpKey, double fIncrease, int nPrecision = -1) const;
@@ -131,14 +131,14 @@ public:
//------------------------------------------------------------
POINT GetPoint(LPCTSTR lpSection, LPCTSTR lpKey, POINT ptDefault) const;
BOOL WritePoint(LPCTSTR lpSection, LPCTSTR lpKey, POINT pt) const;
RECT GetRect(LPCTSTR lpSection, LPCTSTR lpKey, RECT rcDefault) const;
BOOL WriteRect(LPCTSTR lpSection, LPCTSTR lpKey, RECT rc) const;
DWORD GetDataBlock(LPCTSTR lpSection, LPCTSTR lpKey, LPVOID lpBuffer, DWORD dwBufSize, DWORD dwOffset = 0) const;
BOOL WriteDataBlock(LPCTSTR lpSection, LPCTSTR lpKey, LPCVOID lpData, DWORD dwDataSize) const;
BOOL AppendDataBlock(LPCTSTR lpSection, LPCTSTR lpKey, LPCVOID lpData, DWORD dwDataSize) const;
//------------------------------------------------------------
// Section Operations
//------------------------------------------------------------
@@ -150,17 +150,17 @@ public:
BOOL CopySection(LPCTSTR lpSrcSection, LPCTSTR lpDestSection, BOOL bFailIfExist) const;
BOOL MoveSection(LPCTSTR lpSrcSection, LPCTSTR lpDestSection, BOOL bFailIfExist = TRUE) const;
BOOL DeleteSection(LPCTSTR lpSection) const;
//------------------------------------------------------------
// Key Operations
//------------------------------------------------------------
BOOL IsKeyExist(LPCTSTR lpSection, LPCTSTR lpKey) const;
BOOL IsKeyExist(LPCTSTR lpSection, LPCTSTR lpKey) const;
DWORD GetKeyLines(LPCTSTR lpSection, LPTSTR lpBuffer, DWORD dwBufSize) const;
#ifdef __AFXWIN_H__
void GetKeyLines(LPCTSTR lpSection, CStringArray* pArray) const;
#endif
DWORD GetKeyNames(LPCTSTR lpSection, LPTSTR lpBuffer, DWORD dwBufSize) const;
#ifdef __AFXWIN_H__
#ifdef __AFXWIN_H__
void GetKeyNames(LPCTSTR lpSection, CStringArray* pArray) const;
#endif
BOOL CopyKey(LPCTSTR lpSrcSection, LPCTSTR lpSrcKey, LPCTSTR lpDestSection, LPCTSTR lpDestKey, BOOL bFailIfExist) const;
@@ -176,8 +176,8 @@ public:
// Check for Whether a String Representing TRUE or FALSE
//------------------------------------------------------------
static BOOL StringToBool(LPCTSTR lpString, BOOL bDefault = FALSE);
protected:
protected:
//------------------------------------------------------------
// Helper Functions
@@ -191,7 +191,7 @@ protected:
static void __IntToString(int nNumber, LPTSTR lpBuffer, int nBase);
static void __UIntToString(UINT nNumber, LPTSTR lpBuffer, int nBase);
static BOOL CALLBACK __SubStrCompare(LPCTSTR lpString1, LPVOID lpParam);
static BOOL CALLBACK __KeyPairProc(LPCTSTR lpString, LPVOID lpParam);
static BOOL CALLBACK __KeyPairProc(LPCTSTR lpString, LPVOID lpParam);
#ifdef __AFXWIN_H__
static BOOL CALLBACK __SubStrAdd(LPCTSTR lpString, LPVOID lpParam);
#endif

View File

@@ -9,7 +9,7 @@ class config : public singleton<config> {
bool m_unlock_fps;
bool m_prevent_minimize;
uint32_t m_gold_pickup_range;
public:
explicit config(token);
};

View File

@@ -62,7 +62,7 @@ namespace hooking {
template<size_t TOrdinal, typename TOrig>
mh_status_t hook(void* base, void* detour, TOrig** original) {
auto fn = GetProcAddress(reinterpret_cast<HMODULE>(base),
reinterpret_cast<LPCSTR>(TOrdinal));
reinterpret_cast<LPCSTR>(TOrdinal));
return hook(fn, detour, original);
}

View File

@@ -45,7 +45,7 @@ namespace details {
TRet operator()(Args... args) {
if (!m_function_ptr) {
m_function_ptr = reinterpret_cast<decltype(m_function_ptr)>(GetProcAddress(reinterpret_cast<HMODULE>(m_base),
reinterpret_cast<LPCSTR>(m_ordinal)));
reinterpret_cast<LPCSTR>(m_ordinal)));
}
return reinterpret_cast<TRet(__cdecl*)(Args...)>(m_function_ptr)(args...);
@@ -67,7 +67,7 @@ namespace details {
TRet operator()(Args... args) {
if (!m_function_ptr) {
m_function_ptr = reinterpret_cast<decltype(m_function_ptr)>(GetProcAddress(reinterpret_cast<HMODULE>(m_base),
reinterpret_cast<LPCSTR>(m_ordinal)));
reinterpret_cast<LPCSTR>(m_ordinal)));
}
return reinterpret_cast<TRet(__stdcall*)(Args...)>(m_function_ptr)(args...);
@@ -89,7 +89,7 @@ namespace details {
TRet operator()(Args... args) {
if (!m_function_ptr) {
m_function_ptr = reinterpret_cast<decltype(m_function_ptr)>(GetProcAddress(reinterpret_cast<HMODULE>(m_base),
reinterpret_cast<LPCSTR>(m_ordinal)));
reinterpret_cast<LPCSTR>(m_ordinal)));
}
return reinterpret_cast<TRet(__fastcall*)(Args...)>(m_function_ptr)(args...);

View File

@@ -13,20 +13,17 @@
struct StatEntry {
std::wstring stat_display_string;
diablo2::ui_color_t colorStat, colorStatValue;
int x1, y1, x2, y2, is_item_stat, item_type_id, stat = 0; // x1,y1 stat_display_string | x2,y2 statValue
int x1, y1, x2, y2, is_item_stat, item_type_id, stat, op, param = 0; // x1,y1 stat_display_string | x2,y2 statValue
};
extern std::vector<StatEntry> globalStatsVector; // Declaration of the global variable
extern diablo2::structures::gfxdata g_gfxdata; // global gfxdata
extern int randStat;
extern int randStatRangeLow;
extern int randStatRangeHigh;
extern int randStatBool;
extern bool m_stats_enabled;
extern bool m_help_enabled;
extern bool m_cube_enabled;
extern bool m_stash_enabled;
namespace diablo2 {
namespace structures {

View File

@@ -15,16 +15,118 @@ namespace d2_tweaks {
bool show_runes;
bool show_gems;
bool m_show_r01;
bool m_show_r02;
bool m_show_r03;
bool m_show_r04;
bool m_show_r05;
bool m_show_r06;
bool m_show_r07;
bool m_show_r08;
bool m_show_r09;
bool m_show_r10;
bool m_show_r11;
bool m_show_r12;
bool m_show_r13;
bool m_show_r14;
bool m_show_r15;
bool m_show_r16;
bool m_show_r17;
bool m_show_r18;
bool m_show_r19;
bool m_show_r20;
bool m_show_r21;
bool m_show_r22;
bool m_show_r23;
bool m_show_r24;
bool m_show_r25;
bool m_show_r26;
bool m_show_r27;
bool m_show_r28;
bool m_show_r29;
bool m_show_r30;
bool m_show_r31;
bool m_show_r32;
bool m_show_r33;
bool m_show_amethyst;
bool m_show_diamond;
bool m_show_emerald;
bool m_show_ruby;
bool m_show_sapphire;
bool m_show_skull;
bool m_show_topaz;
bool m_show_chipped;
bool m_show_flawed;
bool m_show_normal;
bool m_show_flawless;
bool m_show_perfect;
bool m_show_rough;
bool m_show_faded;
bool m_show_blemished;
bool m_show_cleaned;
bool m_show_triangle;
bool m_show_trangle_cut;
bool m_show_square;
bool m_show_square_cut;
bool m_show_regular;
bool m_show_regular_cut;
bool m_show_star;
bool m_show_star_cut;
bool m_show_imperial;
bool m_show_imperial_cut;
bool m_show_royal;
bool m_show_royal_cut;
bool m_show_spectacular;
bool m_show_legendary;
bool m_show_legendary_cut;
bool m_show_flourite;
bool m_show_jade;
bool m_show_argonite;
bool m_show_azurite;
bool m_show_sulpher;
bool m_show_quartz;
bool m_show_tiger_eye;
bool m_show_rejuv_potion;
bool m_show_full_rejuv_potion;
bool m_show_hp1;
bool m_show_hp2;
bool m_show_hp3;
bool m_show_hp4;
bool m_show_hp5;
bool m_show_mp1;
bool m_show_mp2;
bool m_show_mp3;
bool m_show_mp4;
bool m_show_mp5;
bool m_show_frp;
bool m_show_mrp;
bool m_show_prp;
bool m_show_crp;
bool m_show_lrp;
bool m_show_vps;
bool m_show_yps;
bool m_show_wms;
bool m_show_close;
bool quality_settings[static_cast<size_t>(diablo2::structures::item_quality_t::ITEM_QUALITY_COUNT)];
char reserved[1004];
char reserved[888];
static loot_filter_settings& get();
static void save(const char* name);
static void load(const char* name);
static void remove(const char* name);
private:
loot_filter_settings() : size(sizeof(loot_filter_settings)),
alt_only(false), show_gold(true), show_runes(true), show_gems(true), reserved{}

View File

@@ -4,6 +4,9 @@
#include <d2tweaks/ui/menu.h>
#include <chrono> // Add this line
#include <diablo2/d2common.h>
namespace diablo2 {
namespace structures {
struct unit;
@@ -26,6 +29,108 @@ namespace d2_tweaks {
ui::controls::checkbox* m_show_runes;
ui::controls::checkbox* m_show_gems;
ui::controls::checkbox* m_show_ruby;
ui::controls::checkbox* m_show_sapphire;
ui::controls::checkbox* m_show_emerald;
ui::controls::checkbox* m_show_diamond;
ui::controls::checkbox* m_show_topaz;
ui::controls::checkbox* m_show_amethyst;
ui::controls::checkbox* m_show_skull;
ui::controls::checkbox* m_show_r01;
ui::controls::checkbox* m_show_r02;
ui::controls::checkbox* m_show_r03;
ui::controls::checkbox* m_show_r04;
ui::controls::checkbox* m_show_r05;
ui::controls::checkbox* m_show_r06;
ui::controls::checkbox* m_show_r07;
ui::controls::checkbox* m_show_r08;
ui::controls::checkbox* m_show_r09;
ui::controls::checkbox* m_show_r10;
ui::controls::checkbox* m_show_r11;
ui::controls::checkbox* m_show_r12;
ui::controls::checkbox* m_show_r13;
ui::controls::checkbox* m_show_r14;
ui::controls::checkbox* m_show_r15;
ui::controls::checkbox* m_show_r16;
ui::controls::checkbox* m_show_r17;
ui::controls::checkbox* m_show_r18;
ui::controls::checkbox* m_show_r19;
ui::controls::checkbox* m_show_r20;
ui::controls::checkbox* m_show_r21;
ui::controls::checkbox* m_show_r22;
ui::controls::checkbox* m_show_r23;
ui::controls::checkbox* m_show_r24;
ui::controls::checkbox* m_show_r25;
ui::controls::checkbox* m_show_r26;
ui::controls::checkbox* m_show_r27;
ui::controls::checkbox* m_show_r28;
ui::controls::checkbox* m_show_r29;
ui::controls::checkbox* m_show_r30;
ui::controls::checkbox* m_show_r31;
ui::controls::checkbox* m_show_r32;
ui::controls::checkbox* m_show_r33;
ui::controls::checkbox* m_show_chipped;
ui::controls::checkbox* m_show_flawed;
ui::controls::checkbox* m_show_normal;
ui::controls::checkbox* m_show_flawless;
ui::controls::checkbox* m_show_perfect;
ui::controls::checkbox* m_show_flourite;
ui::controls::checkbox* m_show_jade;
ui::controls::checkbox* m_show_argonite;
ui::controls::checkbox* m_show_azurite;
ui::controls::checkbox* m_show_sulpher;
ui::controls::checkbox* m_show_quartz;
ui::controls::checkbox* m_show_tiger_eye;
ui::controls::checkbox* m_show_rough;
ui::controls::checkbox* m_show_faded;
ui::controls::checkbox* m_show_blemished;
ui::controls::checkbox* m_show_cleaned;
ui::controls::checkbox* m_show_triangle;
ui::controls::checkbox* m_show_trangle_cut;
ui::controls::checkbox* m_show_square;
ui::controls::checkbox* m_show_square_cut;
ui::controls::checkbox* m_show_regular;
ui::controls::checkbox* m_show_regular_cut;
ui::controls::checkbox* m_show_star;
ui::controls::checkbox* m_show_star_cut;
ui::controls::checkbox* m_show_imperial;
ui::controls::checkbox* m_show_imperial_cut;
ui::controls::checkbox* m_show_royal;
ui::controls::checkbox* m_show_royal_cut;
ui::controls::checkbox* m_show_spectacular;
ui::controls::checkbox* m_show_legendary;
ui::controls::checkbox* m_show_legendary_cut;
ui::controls::checkbox* m_show_rejuv_potion;
ui::controls::checkbox* m_show_full_rejuv_potion;
ui::controls::checkbox* m_show_hp1;
ui::controls::checkbox* m_show_hp2;
ui::controls::checkbox* m_show_hp3;
ui::controls::checkbox* m_show_hp4;
ui::controls::checkbox* m_show_hp5;
ui::controls::checkbox* m_show_mp1;
ui::controls::checkbox* m_show_mp2;
ui::controls::checkbox* m_show_mp3;
ui::controls::checkbox* m_show_mp4;
ui::controls::checkbox* m_show_mp5;
ui::controls::checkbox* m_show_frp;
ui::controls::checkbox* m_show_mrp;
ui::controls::checkbox* m_show_prp;
ui::controls::checkbox* m_show_crp;
ui::controls::checkbox* m_show_lrp;
ui::controls::checkbox* m_show_vps;
ui::controls::checkbox* m_show_yps;
ui::controls::checkbox* m_show_wms;
ui::controls::checkbox* m_close;
void(__fastcall* m_draw_dropped_items_names_original)(void*, void*);
void(__fastcall* m_handle_dropped_items_original)(void*, void*);
public:
@@ -34,11 +139,118 @@ namespace d2_tweaks {
void reload_settings();
void draw() override;
private:
std::string m_selected_gem;
std::chrono::steady_clock::time_point m_last_packet_sent;
void gem_checkbox_clicked(const std::string& gem);
void stone_checkbox_clicked(const std::string& gem);
void register_misc_checkboxes();
void register_quality_checkboxes();
void update_alt_only(bool value);
void extract_item(bool value, int prop, uint32_t val, uint32_t rune, diablo2::unit_stats_t stat);
void extract_r01(bool value);
void extract_r02(bool value);
void extract_r03(bool value);
void extract_r04(bool value);
void extract_r05(bool value);
void extract_r06(bool value);
void extract_r07(bool value);
void extract_r08(bool value);
void extract_r09(bool value);
void extract_r10(bool value);
void extract_r11(bool value);
void extract_r12(bool value);
void extract_r13(bool value);
void extract_r14(bool value);
void extract_r15(bool value);
void extract_r16(bool value);
void extract_r17(bool value);
void extract_r18(bool value);
void extract_r19(bool value);
void extract_r20(bool value);
void extract_r21(bool value);
void extract_r22(bool value);
void extract_r23(bool value);
void extract_r24(bool value);
void extract_r25(bool value);
void extract_r26(bool value);
void extract_r27(bool value);
void extract_r28(bool value);
void extract_r29(bool value);
void extract_r30(bool value);
void extract_r31(bool value);
void extract_r32(bool value);
void extract_r33(bool value);
void extract_chipped(bool value);
void extract_flawed(bool value);
void extract_normal(bool value);
void extract_flawless(bool value);
void extract_perfect(bool value);
void extract_rough(bool value);
void extract_faded(bool value);
void extract_blemished(bool value);
void extract_cleaned(bool value);
void extract_triangle(bool value);
void extract_trangle_cut(bool value);
void extract_square(bool value);
void extract_square_cut(bool value);
void extract_regular(bool value);
void extract_regular_cut(bool value);
void extract_star(bool value);
void extract_star_cut(bool value);
void extract_imperial(bool value);
void extract_imperial_cut(bool value);
void extract_royal(bool value);
void extract_royal_cut(bool value);
void extract_spectacular(bool value);
void extract_legendary(bool value);
void extract_legendary_cut(bool value);
void extract_rejuv_potion(bool value);
void extract_full_rejuv_potion(bool value);
void extract_hp1(bool value);
void extract_hp2(bool value);
void extract_hp3(bool value);
void extract_hp4(bool value);
void extract_hp5(bool value);
void extract_mp1(bool value);
void extract_mp2(bool value);
void extract_mp3(bool value);
void extract_mp4(bool value);
void extract_mp5(bool value);
void extract_frp(bool value);
void extract_mrp(bool value);
void extract_prp(bool value);
void extract_crp(bool value);
void extract_lrp(bool value);
void extract_vps(bool value);
void extract_yps(bool value);
void extract_wms(bool value);
void close_window(bool value);
//void extract_flourite(bool value);
//void extract_jade(bool value);
//void extract_argonite(bool value);
//void extract_azurite(bool value);
//void extract_sulpher(bool value);
//void extract_quartz(bool value);
//void extract_tiger_eye(bool value);
void update_show_gold(bool value);
void update_show_runes(bool value);
void update_show_gems(bool value);
@@ -61,7 +273,6 @@ namespace d2_tweaks {
//handle hovering over item and actual click
static void __fastcall handle_dropped_items(diablo2::structures::unit* unit, void* edx);
};
}
}
}

View File

@@ -17,14 +17,34 @@ namespace d2_tweaks {
class loot_filter_settings_toggle_menu final : public ui::menu, singleton<loot_filter_settings_toggle_menu> {
ui::controls::button* m_toggle_filter_settings_btn;
ui::controls::button* m_btn_toggle_stats;
menu* m_filter_settings_menu;
bool m_show;
ui::controls::button* m_btn_toggle_help;
ui::controls::button* m_btn_toggle_cube;
ui::controls::button* m_btn_toggle_stash;
ui::controls::button* m_btn_toggle_bag;
public:
menu* m_filter_settings_menu;
menu* m_menu;
bool m_show;
bool m_show_bag;
explicit loot_filter_settings_toggle_menu(token);
void toggle_show() {
m_show = !m_show;
set_enabled(m_show);
set_visible(m_show);
}
void toggle_filter_settings_click();
void toggle_stats_settings_click();
void toggle_help_click();
void toggle_cube_click();
void toggle_stash_click();
void toggle_bag_click();
void draw() override;
bool key_event(uint32_t key, bool up) override;

View File

@@ -201,6 +201,7 @@ namespace d2_tweaks {
MESSAGE_TYPE_ITEM_DROPPED_INFO,
MESSAGE_TYPE_TRANSMUTE,
MESSAGE_TYPE_TRADER_UPDATE,
MESSAGE_TYPE_INTERACT = 1,
MESSAGE_TYPE_COUNT
};
@@ -235,11 +236,19 @@ namespace d2_tweaks {
struct item_move_cs : packet_header {
uint32_t item_guid;
const char* item_code;
uint8_t target_page;
uint32_t bag_guid = 0;
bool updateBag;
bool removeFromBag;
bool summon;
int prop;
int val;
int tmog;
int x;
int y;
bool extract;
uint32_t iCode;
item_move_cs() : item_guid(0), target_page(0) {
message_type = MESSAGE_TYPE_ITEM_MOVE;
@@ -270,7 +279,6 @@ namespace d2_tweaks {
}
};
struct inventory_sort_sc : packet_header {
uint8_t page;
uint8_t tx;
@@ -296,11 +304,19 @@ namespace d2_tweaks {
damage_type_t damage_type;
uint32_t damage;
uint32_t currentHp; // New field for current hit points
uint32_t maxHp; // New field for maximum hit points
damage_info_sc() : unit_type(0), guid(0), damage_type(DAMAGE_TYPE_UNKNOWN), damage(0), currentHp(0), maxHp(0) {
// You can add these details to the packet if needed
// packet.isChampion = isChampion;
// packet.isUnique = isUnique;
// packet.isSuperUnique = isSuperUnique
bool isChampion;
bool isUnique;
bool isSuperUnique;
damage_info_sc() : unit_type(0), guid(0), damage_type(DAMAGE_TYPE_UNKNOWN), damage(0), currentHp(0), maxHp(0), isChampion(0), isUnique(0), isSuperUnique(0) {
message_type = MESSAGE_TYPE_DAMAGE_INFO;
}
};
@@ -396,7 +412,7 @@ namespace d2_tweaks {
message_type = MESSAGE_TYPE_TRADER_UPDATE;
}
};
#pragma pack(pop)
}
}

View File

@@ -24,11 +24,11 @@ namespace d2_tweaks {
void init() override;
bool handle_packet(diablo2::structures::game* game, diablo2::structures::unit* player,
common::packet_header* packet) override;
common::packet_header* packet) override;
private:
bool sort(diablo2::structures::game* game, diablo2::structures::unit* player, uint8_t page);
bool find_free_space(diablo2::structures::inventory* inv,
diablo2::structures::unit* item, int32_t inventoryIndex, char page, uint32_t& x, uint32_t& y, bool isCharmZone);
diablo2::structures::unit* item, int32_t inventoryIndex, char page, uint32_t& x, uint32_t& y, bool isCharmZone);
};
}
}

View File

@@ -24,7 +24,7 @@ namespace d2_tweaks {
void init() override;
bool handle_packet(diablo2::structures::game* game, diablo2::structures::unit* player,
common::packet_header* packet) override;
common::packet_header* packet) override;
void tick(diablo2::structures::game* game, diablo2::structures::unit* unit) override;
};
}

View File

@@ -24,10 +24,10 @@ namespace d2_tweaks {
void init() override;
bool handle_packet(diablo2::structures::game* game, diablo2::structures::unit* player,
common::packet_header* packet) override;
common::packet_header* packet) override;
private:
bool find_free_space(diablo2::structures::inventory* inv,
diablo2::structures::unit* item, int32_t inventoryIndex, char page, uint32_t& x, uint32_t& y);
diablo2::structures::unit* item, int32_t inventoryIndex, char page, uint32_t& x, uint32_t& y);
};
}
}

View File

@@ -22,10 +22,10 @@ namespace d2_tweaks {
void tick(diablo2::structures::game* game, diablo2::structures::unit* unit) override;
bool handle_packet(diablo2::structures::game* game, diablo2::structures::unit* player, common::packet_header* packet) override;
//private:
// bool find_free_space(diablo2::structures::inventory* inv, diablo2::structures::unit* item, int32_t inventoryIndex, char page, uint32_t& x, uint32_t& y);
// bool send_to_cube(diablo2::structures::game* game, diablo2::structures::unit* player, diablo2::structures::unit* item);
// bool move_item_to(diablo2::structures::game* game, diablo2::structures::unit* player, common::packet_header* packet);
//private:
// bool find_free_space(diablo2::structures::inventory* inv, diablo2::structures::unit* item, int32_t inventoryIndex, char page, uint32_t& x, uint32_t& y);
// bool send_to_cube(diablo2::structures::game* game, diablo2::structures::unit* player, diablo2::structures::unit* item);
// bool move_item_to(diablo2::structures::game* game, diablo2::structures::unit* player, common::packet_header* packet);
};
}
}

View File

@@ -47,7 +47,7 @@ namespace d2_tweaks {
diablo2::structures::unit* get_server_unit(diablo2::structures::game* game, uint32_t guid, diablo2::structures::unit_type_t type);
void iterate_server_units(diablo2::structures::game* game, diablo2::structures::unit_type_t type,
const std::function<bool(diablo2::structures::unit*)>& cb);
const std::function<bool(diablo2::structures::unit*)>& cb);
private:
static int32_t __fastcall net_tick(diablo2::structures::game* game, diablo2::structures::unit* unit, int32_t a3, int32_t a4);
};

View File

@@ -40,7 +40,7 @@ namespace d2_tweaks {
std::vector<respos> m_respos;
public:
button(menu* menu, const rect& rect, const std::function<void()>& onClick,
common::asset* image, int32_t frameDown, int32_t frameUp, int32_t clickSound = -1);
common::asset* image, int32_t frameDown, int32_t frameUp, int32_t clickSound = -1);
explicit button(menu* menu, const pugi::xml_node& node);
virtual ~button();

View File

@@ -35,7 +35,7 @@ namespace d2_tweaks {
std::function<void(bool)> m_on_click;
public:
explicit checkbox(menu* menu, const std::wstring& text, const rect& rect, const std::function<void()>& onClick,
common::asset* image, int32_t frameChecked, int32_t frameUnchecked, int32_t clickSound = -1);
common::asset* image, int32_t frameChecked, int32_t frameUnchecked, int32_t clickSound = -1);
explicit checkbox(menu* menu, const pugi::xml_node& node);
void set_x(int32_t value) override;

View File

@@ -112,6 +112,8 @@ namespace d2_tweaks {
virtual void left_mouse(int32_t offsetX, int32_t offsetY, bool up, bool& block) = 0;
virtual void right_mouse(int32_t offsetX, int32_t offsetY, bool up, bool& block) = 0;
virtual void middle_mouse(int32_t offsetX, int32_t offsetY, bool up, bool& block) {}
virtual void mouse_wheel(int32_t offsetX, int32_t offsetY, bool up, bool& block) {}
virtual void key_event(int32_t offsetX, int32_t offsetY, uint32_t key, bool up, bool& block) = 0;
};

View File

@@ -9,7 +9,6 @@
namespace d2_tweaks {
namespace ui {
namespace controls {
class label : public control {
std::wstring m_text;
bool m_text_owned;
@@ -19,8 +18,8 @@ namespace d2_tweaks {
std::vector<respos> m_respos;
public:
explicit label(menu* menu, const std::wstring& text, int32_t x = 0, int32_t y = 0,
diablo2::ui_color_t color = diablo2::UI_COLOR_WHITE,
diablo2::ui_font_t font = diablo2::UI_FONT_16);
diablo2::ui_color_t color = diablo2::UI_COLOR_WHITE,
diablo2::ui_font_t font = diablo2::UI_FONT_16);
explicit label(menu* menu, const pugi::xml_node& node);
void set_text(const std::wstring& text) {
@@ -31,7 +30,6 @@ namespace d2_tweaks {
return m_text;
}
diablo2::ui_color_t get_color() const {
return m_color;
}

View File

@@ -81,6 +81,8 @@ namespace d2_tweaks {
virtual bool left_mouse(bool up);
virtual bool right_mouse(bool up);
virtual bool middle_mouse(bool up);
virtual bool mouse_wheel(bool up);
virtual bool key_event(uint32_t key, bool up);
};

View File

@@ -32,6 +32,8 @@ namespace d2_tweaks {
bool process_left_mouse(bool up);
bool process_right_mouse(bool up);
bool process_middle_mouse(bool up);
bool process_mouse_wheel(bool up);
bool process_key_event(uint32_t key, bool up);
};

View File

@@ -53,13 +53,12 @@ namespace diablo2 {
static int32_t get_view_offset_x();
static int32_t get_view_offset_y();
static uint32_t get_mouse_x();
static uint32_t get_mouse_y();
static bool get_ui_window_state(ui_window_t window);
static void* get_buysellbtn();
static void play_sound(uint32_t soundId, structures::unit* u, uint32_t ticks, BOOL prePick, uint32_t cache);
static structures::unit* get_unit_by_guid(int32_t type, int32_t guid);
@@ -68,14 +67,14 @@ namespace diablo2 {
static void print_chat(wchar_t* string, uint32_t color);
static bool cache_gfx_data(structures::gfxdata* gfxData,
structures::unit* unit,
structures::cellfile* cellfFile,
int32_t direction,
int32_t frame,
int32_t* outIndex,
int8_t flags,
int32_t colorTint);
structures::unit* unit,
structures::cellfile* cellfFile,
int32_t direction,
int32_t frame,
int32_t* outIndex,
int8_t flags,
int32_t colorTint);
static structures::cellfile* load_gfx_resource(char* path);
static int32_t unload_gfx_resource(structures::cellfile* handle);
static int32_t send_to_server_7(BYTE type, DWORD num, DWORD unk1, DWORD unk2);
@@ -86,5 +85,9 @@ namespace diablo2 {
static bool is_gamble_open();
static uint8_t current_interact_menu();
static void resync_vendor_inventory(structures::unit* ptNPC);
static int32_t send_to_server_9(BYTE type, DWORD num, DWORD unk1);
static void set_ui_toggle(int nToggle, int nUIState, BOOL bToggle);
};
}

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More