mirror of
https://gitlab.com/hashborgir/d2tweaks-rnd2k.git
synced 2025-10-13 16:34:22 -05:00
Stats display refactor using ini file done.
This commit is contained in:
@@ -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
|
||||
|
@@ -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);
|
||||
};
|
@@ -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);
|
||||
}
|
||||
|
@@ -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...);
|
||||
|
@@ -13,25 +13,16 @@
|
||||
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 {
|
||||
|
@@ -24,7 +24,7 @@ namespace d2_tweaks {
|
||||
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{}
|
||||
|
@@ -61,7 +61,6 @@ namespace d2_tweaks {
|
||||
//handle hovering over item and actual click
|
||||
static void __fastcall handle_dropped_items(diablo2::structures::unit* unit, void* edx);
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@ namespace d2_tweaks {
|
||||
ui::controls::button* m_btn_toggle_help;
|
||||
ui::controls::button* m_btn_toggle_cube;
|
||||
ui::controls::button* m_btn_toggle_stash;
|
||||
|
||||
menu* m_filter_settings_menu;
|
||||
bool m_show;
|
||||
public:
|
||||
|
@@ -226,7 +226,6 @@ namespace d2_tweaks {
|
||||
packet_header() : d2_packet_type(0xBB), message_type(0) {}
|
||||
};
|
||||
|
||||
|
||||
struct d2_entity_action_cs : packet_header {
|
||||
uint32_t action;
|
||||
uint32_t entity_id;
|
||||
@@ -274,7 +273,6 @@ namespace d2_tweaks {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
struct inventory_sort_sc : packet_header {
|
||||
uint8_t page;
|
||||
uint8_t tx;
|
||||
@@ -300,7 +298,6 @@ 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
|
||||
|
||||
@@ -400,7 +397,7 @@ namespace d2_tweaks {
|
||||
message_type = MESSAGE_TYPE_TRADER_UPDATE;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#pragma pack(pop)
|
||||
}
|
||||
}
|
@@ -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);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
};
|
||||
}
|
||||
|
@@ -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);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
};
|
||||
|
@@ -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();
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -115,7 +115,6 @@ namespace d2_tweaks {
|
||||
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;
|
||||
};
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -35,7 +35,6 @@ namespace d2_tweaks {
|
||||
bool process_middle_mouse(bool up);
|
||||
bool process_mouse_wheel(bool up);
|
||||
|
||||
|
||||
bool process_key_event(uint32_t key, bool up);
|
||||
};
|
||||
}
|
||||
|
@@ -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);
|
||||
@@ -90,6 +89,5 @@ namespace diablo2 {
|
||||
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
@@ -43,10 +43,9 @@ namespace diablo2 {
|
||||
static bool __fastcall pickup_item(structures::game* game, structures::unit* player, uint32_t guid, uint32_t* ptrItemCarried);
|
||||
static structures::unit* get_unit_owner(structures::game* game, structures::unit* unit);
|
||||
static void* iterate_unit_pets(structures::game* game, structures::unit* unit,
|
||||
const std::function<void(structures::game*, structures::unit*, structures::unit*)>& cb);
|
||||
const std::function<void(structures::game*, structures::unit*, structures::unit*)>& cb);
|
||||
|
||||
static void update_inventory_items(structures::game* game, structures::unit* player);
|
||||
static uint32_t __fastcall diablo2::d2_game::transmogrify(diablo2::structures::game* game, diablo2::structures::unit* player);
|
||||
|
||||
};
|
||||
}
|
||||
|
@@ -18,6 +18,5 @@ namespace diablo2 {
|
||||
static int32_t get_resolution_mode();
|
||||
static void draw_image(structures::gfxdata* data, uint32_t x, uint32_t y, int32_t gamma, int32_t drawType, void* palette);
|
||||
static void draw_filled_rect(int left, int top, int right, int bottom, DWORD color, int transTbl);
|
||||
|
||||
};
|
||||
}
|
@@ -26,7 +26,7 @@ namespace diablo2 {
|
||||
uint32_t dwCostAdd; //0x80
|
||||
uint16_t wDropSound; //0x84
|
||||
uint16_t wUseSound; //0x86
|
||||
uint32_t dwDropSfxFrame; //0x88
|
||||
uint32_t dwDropSfxFrame; //0x88
|
||||
uint32_t dwProp1; //0x8C
|
||||
uint32_t dwPar1; //0x90
|
||||
uint32_t dwMin1; //0x94
|
||||
|
@@ -106,7 +106,7 @@ namespace diablo2 {
|
||||
uint32_t* pHirelings; //+000001A0 055D8CD8 hirelings.txt (limit = 256)
|
||||
int nHirelings; //+000001A4 00000078 # of hirelings records
|
||||
int pMercFirst[256]; //+000001A8 00000000 array of 256 integers (namefirst column from hirelings.txt)
|
||||
int pMercLast[256]; //+000005A8 0000000C array of 256 integers (namelast column from hirelings.txt)
|
||||
int pMercLast[256]; //+000005A8 0000000C array of 256 integers (namelast column from hirelings.txt)
|
||||
void* pNPCs; //+000009A8 05724F74 npcs.txt
|
||||
int nNPCs; //+000009AC 00000011 # of npcs records
|
||||
void* pColours; //+000009B0 01417568 colors.txt
|
||||
|
@@ -69,9 +69,9 @@ namespace diablo2 {
|
||||
ITEMFLAG_FROMPLAYER = 0x01000000,
|
||||
ITEMFLAG_RUNEuint16_t = 0x04000000
|
||||
*/
|
||||
uint32_t guid1; //+1C Global Unique ID 1
|
||||
uint32_t guid2; //+20 Global Unique ID 2
|
||||
uint32_t guid3; //+24 Global Unique ID 3
|
||||
uint32_t guid1; //+1C Global Unique ID 1
|
||||
uint32_t guid2; //+20 Global Unique ID 2
|
||||
uint32_t guid3; //+24 Global Unique ID 3
|
||||
uint32_t unique_id; //+28
|
||||
uint8_t ilvl; //+2C
|
||||
uint8_t uk1[0x03]; //+2D
|
||||
@@ -108,7 +108,7 @@ namespace diablo2 {
|
||||
uint8_t item_data3; //+47 //D2Common10854 D2Common10853
|
||||
uint8_t p_ear_level; //+48
|
||||
uint8_t var_gfx; //+49
|
||||
char i_name[0x12]; //+4A //inscribed/ear get_name
|
||||
char i_name[0x12]; //+4A //inscribed/ear get_name
|
||||
inventory* inventory; //+5C
|
||||
unit* pt_prev_item; //+60
|
||||
unit* pt_next_item; //+64
|
||||
|
@@ -5,7 +5,7 @@
|
||||
namespace diablo2 {
|
||||
namespace structures {
|
||||
struct game;
|
||||
|
||||
|
||||
struct net_client {
|
||||
uint32_t client_id; //+00
|
||||
uint8_t uk1[0x06]; //+04
|
||||
|
@@ -4,52 +4,52 @@
|
||||
|
||||
namespace diablo2 {
|
||||
namespace structures {
|
||||
struct inventory;
|
||||
struct inventory;
|
||||
|
||||
struct npc_gamble //sizeof 0xC
|
||||
{
|
||||
inventory* pInventory; //+00
|
||||
uint32_t dwGUID; //+04 npc_gamble* pNext; //+08
|
||||
};
|
||||
struct npc_gamble //sizeof 0xC
|
||||
{
|
||||
inventory* pInventory; //+00
|
||||
uint32_t dwGUID; //+04 npc_gamble* pNext; //+08
|
||||
};
|
||||
|
||||
struct npc_record //sizeof 0x44
|
||||
{
|
||||
int nNPC; //+00
|
||||
inventory* pInventory; //+04
|
||||
npc_gamble* pGamble; //+08
|
||||
bool bGambleInit; //+0C
|
||||
uint32_t* pMercData; //+10 //D2MercDataStrc*
|
||||
uint32_t* pEvent; //+14 //D2NPCEventStrc*
|
||||
uint32_t* pVendorChain; //+18 //D2VendorChainStrc*
|
||||
bool bTrading; //+1C
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
union
|
||||
{
|
||||
bool bFlags[8]; //+20
|
||||
struct
|
||||
{
|
||||
bool bVendorInit; //+20
|
||||
bool bHireInit; //+21
|
||||
uint8_t nAct; //+22
|
||||
bool bTrader; //+23
|
||||
bool bLevelRefresh; //+24
|
||||
bool bInited; //+25
|
||||
bool bForceVendor; //+26
|
||||
bool bRefreshInventory; //+27
|
||||
};
|
||||
};
|
||||
struct npc_record //sizeof 0x44
|
||||
{
|
||||
int nNPC; //+00
|
||||
inventory* pInventory; //+04
|
||||
npc_gamble* pGamble; //+08
|
||||
bool bGambleInit; //+0C
|
||||
uint32_t* pMercData; //+10 //D2MercDataStrc*
|
||||
uint32_t* pEvent; //+14 //D2NPCEventStrc*
|
||||
uint32_t* pVendorChain; //+18 //D2VendorChainStrc*
|
||||
bool bTrading; //+1C
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
union
|
||||
{
|
||||
bool bFlags[8]; //+20
|
||||
struct
|
||||
{
|
||||
bool bVendorInit; //+20
|
||||
bool bHireInit; //+21
|
||||
uint8_t nAct; //+22
|
||||
bool bTrader; //+23
|
||||
bool bLevelRefresh; //+24
|
||||
bool bInited; //+25
|
||||
bool bForceVendor; //+26
|
||||
bool bRefreshInventory; //+27
|
||||
};
|
||||
};
|
||||
|
||||
uint32_t dwTicks; //+28
|
||||
uint32_t pProxy[4]; //+2C //D2UnitProxyStrc
|
||||
uint32_t dwUnk; //+3C
|
||||
uint32_t dwNPCGUID; //+40
|
||||
};
|
||||
uint32_t dwTicks; //+28
|
||||
uint32_t pProxy[4]; //+2C //D2UnitProxyStrc
|
||||
uint32_t dwUnk; //+3C
|
||||
uint32_t dwNPCGUID; //+40
|
||||
};
|
||||
|
||||
uint32_t pTrade; //+20 //D2NPCTradeStrc
|
||||
};
|
||||
};
|
||||
}
|
||||
uint32_t pTrade; //+20 //D2NPCTradeStrc
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
@@ -5,20 +5,20 @@
|
||||
namespace diablo2 {
|
||||
namespace structures {
|
||||
struct net_client;
|
||||
|
||||
|
||||
struct player_data {
|
||||
char name[0x10]; //+00 Player Name
|
||||
void* pt_quest[3]; //+10 Quest Pointers for each difficulty
|
||||
char name[0x10]; //+00 Player Name
|
||||
void* pt_quest[3]; //+10 Quest Pointers for each difficulty
|
||||
uint8_t uk1[0x18]; //+1C //before : 0x14
|
||||
void* pt_arena_unit; //+34 ptArena for the Unit
|
||||
void* pt_arena_unit; //+34 ptArena for the Unit
|
||||
uint8_t uk2[0x4]; //+38 //before : 0x7
|
||||
uint16_t mp_source_portal_unique_id; //+3C Source Portal Unique_ID
|
||||
uint16_t mp_source_portal_unique_id; //+3C Source Portal Unique_ID
|
||||
uint8_t uk3[0x2]; //+3E
|
||||
uint16_t mp_dest_portal_unique_id; //+40 Destination Portal Unique_ID
|
||||
uint8_t uk4[0x06]; //+42
|
||||
uint8_t pt_object_un_id; //+48 Object UniqueID for TownPortals
|
||||
uint8_t uk5[0x53]; //+49
|
||||
net_client* net_client; //+9C ptClient
|
||||
uint16_t mp_dest_portal_unique_id; //+40 Destination Portal Unique_ID
|
||||
uint8_t uk4[0x06]; //+42
|
||||
uint8_t pt_object_un_id; //+48 Object UniqueID for TownPortals
|
||||
uint8_t uk5[0x53]; //+49
|
||||
net_client* net_client; //+9C ptClient
|
||||
};
|
||||
}
|
||||
}
|
@@ -5,7 +5,7 @@
|
||||
namespace diablo2 {
|
||||
namespace structures {
|
||||
struct unit;
|
||||
|
||||
|
||||
struct room//size=0x80
|
||||
{
|
||||
//ptRoom +48 0 = spawn new units (monster, objects e.tc), 1 = don't spawn any new units
|
||||
|
@@ -22,8 +22,6 @@ namespace diablo2 {
|
||||
struct statslistex;
|
||||
struct quest_record;
|
||||
struct npc_record;
|
||||
|
||||
|
||||
|
||||
enum class unit_type_t : int32_t {
|
||||
UNIT_TYPE_PLAYER = 0,
|
||||
@@ -76,8 +74,6 @@ namespace diablo2 {
|
||||
ITEMFLAG_ITEM = 0x08000000
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct unit {
|
||||
unit_type_t type;
|
||||
|
||||
|
@@ -15,7 +15,7 @@ namespace diablo2 {
|
||||
public:
|
||||
explicit mpq_streambuf(const std::string& path);
|
||||
~mpq_streambuf();
|
||||
|
||||
|
||||
protected:
|
||||
int_type underflow() override;
|
||||
};
|
||||
@@ -23,8 +23,6 @@ namespace diablo2 {
|
||||
mpq_streambuf m_streambuf;
|
||||
public:
|
||||
explicit mpq_ifstream(const std::string& path);
|
||||
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user