From 1ffc5ba3f16e9cff1c96e765769f3705f8d58729 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Fri, 3 Dec 2021 19:57:58 +0000 Subject: [PATCH] better structs --- src/component/cheats.cpp | 7 ++ src/component/network.cpp | 2 +- src/game/structs.hpp | 239 +++++++++++++++++++++++++++++++++++--- src/game/symbols.hpp | 4 + 4 files changed, 233 insertions(+), 19 deletions(-) diff --git a/src/component/cheats.cpp b/src/component/cheats.cpp index 605d006..237093f 100644 --- a/src/component/cheats.cpp +++ b/src/component/cheats.cpp @@ -2,8 +2,10 @@ #include #include +#include #include "key_catcher.hpp" +#include "command.hpp" namespace cheats { @@ -84,6 +86,11 @@ namespace cheats { game::Dvar_SetBool(cl_EnableCheats, false); }); + + key_catcher::on_key_press("Y", [](const game::LocalClientNum_t&) + { + command::execute(utils::string::va("cmd mr %i 2 allies", *game::serverId), true); + }); } }; } diff --git a/src/component/network.cpp b/src/component/network.cpp index f74fc1f..afa4230 100644 --- a/src/component/network.cpp +++ b/src/component/network.cpp @@ -29,7 +29,7 @@ namespace network } const auto offset = cmd_string.size() + 5; - const std::string_view data(message->data + offset, message->cursize - offset); + const std::string_view data(reinterpret_cast(message->data) + offset, message->cursize - offset); handler->second(*address, data); return true; diff --git a/src/game/structs.hpp b/src/game/structs.hpp index cf6cc0c..9b80551 100644 --- a/src/game/structs.hpp +++ b/src/game/structs.hpp @@ -1,5 +1,8 @@ #pragma once +#pragma warning(push) +#pragma warning(disable: 4324) + namespace game { typedef float vec_t; @@ -28,26 +31,153 @@ namespace game typedef enum { - ERR_FATAL = 0x0, - ERR_DROP = 0x1, - ERR_SERVERDISCONNECT = 0x2, - ERR_DISCONNECT = 0x3, - ERR_SCRIPT = 0x4, - ERR_SCRIPT_DROP = 0x5, - ERR_LOCALIZATION = 0x6, - ERR_MAPLOADERRORSUMMARY = 0x7 - } errorParm_t; + K_NONE = 0x0, + K_FIRSTGAMEPADBUTTON_RANGE_1 = 0x1, // First Gamepad 1 + K_BUTTON_A = 0x1, + K_BUTTON_B = 0x2, + K_BUTTON_X = 0x3, + K_BUTTON_Y = 0x4, + K_BUTTON_LSHLDR = 0x5, + K_BUTTON_RSHLDR = 0x6, + K_LASTGAMEPADBUTTON_RANGE_1 = 0x6, // Last Gamepad 1 + K_TAB = 0x9, + K_ENTER = 0xD, + K_FIRSTGAMEPADBUTTON_RANGE_2 = 0xE, // First Gamepad 2 + K_BUTTON_START = 0xE, + K_BUTTON_BACK = 0xF, + K_BUTTON_LSTICK = 0x10, + K_BUTTON_RSTICK = 0x11, + K_BUTTON_LTRIG = 0x12, + K_BUTTON_RTRIG = 0x13, + K_FIRSTDPAD = 0x14, // First Dpad + K_DPAD_UP = 0x14, + K_DPAD_DOWN = 0x15, + K_DPAD_LEFT = 0x16, + K_DPAD_RIGHT = 0x17, + K_LASTDPAD = 0x17, // Last Dpad + K_DPAD_LEFTRIGHT = 0x18, + K_DPAD_UPDOWN = 0x19, + K_LASTGAMEPADBUTTON_RANGE_2 = 0x19, // Last Gamepad 2 + K_ESCAPE = 0x1B, + K_FIRSTGAMEPADBUTTON_RANGE_3 = 0x1C, // First Gamepad 3 + K_FIRSTAPAD = 0x1C, // First APad + K_APAD_UP = 0x1C, + K_APAD_DOWN = 0x1D, + K_APAD_LEFT = 0x1E, + K_APAD_RIGHT = 0x1F, + K_LASTAPAD = 0x1F, // Last APad + K_LASTGAMEPADBUTTON_RANGE_3 = 0x1F, // Last Gamepad 3 + K_SPACE = 0x20, + K_BACKSPACE = 0x7F, + K_ASCII_FIRST = 0x80, + K_ASCII_181 = 0x80, + K_ASCII_191 = 0x81, + K_ASCII_223 = 0x82, + K_ASCII_224 = 0x83, + K_ASCII_225 = 0x84, + K_ASCII_228 = 0x85, + K_ASCII_229 = 0x86, + K_ASCII_230 = 0x87, + K_ASCII_231 = 0x88, + K_ASCII_232 = 0x89, + K_ASCII_233 = 0x8A, + K_ASCII_236 = 0x8B, + K_ASCII_241 = 0x8C, + K_ASCII_242 = 0x8D, + K_ASCII_243 = 0x8E, + K_ASCII_246 = 0x8F, + K_ASCII_248 = 0x90, + K_ASCII_249 = 0x91, + K_ASCII_250 = 0x92, + K_ASCII_252 = 0x93, + K_END_ASCII_CHARS = 0x94, + K_COMMAND = 0x96, + K_CAPSLOCK = 0x97, + K_POWER = 0x98, + K_PAUSE = 0x99, + K_UPARROW = 0x9A, + K_DOWNARROW = 0x9B, + K_LEFTARROW = 0x9C, + K_RIGHTARROW = 0x9D, + K_ALT = 0x9E, + K_CTRL = 0x9F, + K_SHIFT = 0xA0, + K_INS = 0xA1, + K_DEL = 0xA2, + K_PGDN = 0xA3, + K_PGUP = 0xA4, + K_HOME = 0xA5, + K_END = 0xA6, + K_F1 = 0xA7, + K_F2 = 0xA8, + K_F3 = 0xA9, + K_F4 = 0xAA, + K_F5 = 0xAB, + K_F6 = 0xAC, + K_F7 = 0xAD, + K_F8 = 0xAE, + K_F9 = 0xAF, + K_F10 = 0xB0, + K_F11 = 0xB1, + K_F12 = 0xB2, + K_F13 = 0xB3, + K_F14 = 0xB4, + K_F15 = 0xB5, + K_KP_HOME = 0xB6, + K_KP_UPARROW = 0xB7, + K_KP_PGUP = 0xB8, + K_KP_LEFTARROW = 0xB9, + K_KP_5 = 0xBA, + K_KP_RIGHTARROW = 0xBB, + K_KP_END = 0xBC, + K_KP_DOWNARROW = 0xBD, + K_KP_PGDN = 0xBE, + K_KP_ENTER = 0xBF, + K_KP_INS = 0xC0, + K_KP_DEL = 0xC1, + K_KP_SLASH = 0xC2, + K_KP_MINUS = 0xC3, + K_KP_PLUS = 0xC4, + K_KP_NUMLOCK = 0xC5, + K_KP_STAR = 0xC6, + K_KP_EQUALS = 0xC7, + K_MOUSE1 = 0xC8, + K_MOUSE2 = 0xC9, + K_MOUSE3 = 0xCA, + K_MOUSE4 = 0xCB, + K_MOUSE5 = 0xCC, + K_MWHEELDOWN = 0xCD, + K_MWHEELUP = 0xCE, + K_AUX1 = 0xCF, + K_AUX2 = 0xD0, + K_AUX3 = 0xD1, + K_AUX4 = 0xD2, + K_AUX5 = 0xD3, + K_AUX6 = 0xD4, + K_AUX7 = 0xD5, + K_AUX8 = 0xD6, + K_AUX9 = 0xD7, + K_AUX10 = 0xD8, + K_AUX11 = 0xD9, + K_AUX12 = 0xDA, + K_AUX13 = 0xDB, + K_AUX14 = 0xDC, + K_AUX15 = 0xDD, + K_AUX16 = 0xDE, + K_LAST_KEY = 0xDF + } keyNum_t; - enum class LocalClientNum_t + struct kbutton_t { - LOCAL_CLIENT_0 = 0, - LOCAL_CLIENT_1 = 1, - LOCAL_CLIENT_2 = 2, - LOCAL_CLIENT_3 = 3, - LOCAL_CLIENT_LAST = 3, - LOCAL_CLIENT_COUNT = 4 + int down[2]; + unsigned int downtime; + unsigned int msec; + bool active; + bool wasPressed; }; + static_assert(sizeof(kbutton_t) == 20); + typedef enum { NS_CLIENT1 = 0, @@ -81,12 +211,79 @@ namespace game static_assert(sizeof(netadr_s) == 24); + typedef enum + { + BD_ECC_KEY_UNINITIALIZED = 0x0, + BD_ECC_KEY_INITIALIZED = 0x1 + } bdECCKeyStatus; + + typedef enum + { + BD_DTLS_INIT = 0x1, + BD_DTLS_INIT_ACK = 0x2, + BD_DTLS_COOKIE_ECHO = 0x3, + BD_DTLS_COOKIE_ACK = 0x4, + BD_DTLS_ERROR = 0x5, + BD_DTLS_DATA = 0x6 + } bdDTLSPacketTypes; + + typedef enum + { + BD_DTLS_CLOSED = 0x0, + BD_DTLS_COOKIE_WAIT = 0x1, + BD_DTLS_COOKIE_ECHOED = 0x2, + BD_DTLS_ESTABLISHED = 0x3 + } bdDTLSStatus; + + typedef enum + { + BD_DTLS_ERROR_BAD_SECID = 0x0, + BD_DTLS_INVALID_STATE = 0x1 + } bdDTLSErrorType; + + typedef enum + { + BD_NAT_OPEN = 0x1, + BD_NAT_MODERATE = 0x2, + BD_NAT_STRICT = 0x3 + } bdNATType; + + typedef enum + { + BD_SOCKET_IDLE = 0x0, + BD_SOCKET_PENDING = 0x1, + BD_SOCKET_CONNECTED = 0x2, + BD_SOCKET_LOST = 0x3 + } bdDTLSAssociationStatus; + + typedef enum + { + ERR_FATAL = 0x0, + ERR_DROP = 0x1, + ERR_SERVERDISCONNECT = 0x2, + ERR_DISCONNECT = 0x3, + ERR_SCRIPT = 0x4, + ERR_SCRIPT_DROP = 0x5, + ERR_LOCALIZATION = 0x6, + ERR_MAPLOADERRORSUMMARY = 0x7 + } errorParm_t; + + enum class LocalClientNum_t + { + LOCAL_CLIENT_0 = 0, + LOCAL_CLIENT_1 = 1, + LOCAL_CLIENT_2 = 2, + LOCAL_CLIENT_3 = 3, + LOCAL_CLIENT_LAST = 3, + LOCAL_CLIENT_COUNT = 4 + }; + struct msg_t { int overflowed; int readOnly; - char* data; - char* splitData; + unsigned char* data; + unsigned char* splitData; int maxsize; int cursize; int splitSize; @@ -852,4 +1049,10 @@ namespace game int statPacketSendTime[10]; // From here it might be wrong int currentGamestatePacket; }; + + struct clientStatic_t + { + }; } + +#pragma warning(pop) diff --git a/src/game/symbols.hpp b/src/game/symbols.hpp index 9b73f74..acb290f 100644 --- a/src/game/symbols.hpp +++ b/src/game/symbols.hpp @@ -5,6 +5,7 @@ namespace game { // Functions + WEAK symbol Sys_ShowConsole{0x515CD0}; WEAK symbol Com_Error{0x4A6660}; WEAK symbol ConcatArgs{0x539060}; WEAK symbol Cbuf_AddText{0x4C1030}; @@ -53,4 +54,7 @@ namespace game WEAK symbol cmd_args{0x1C96850}; WEAK symbol playerKeys{0xB3A38C}; WEAK symbol localClientConnection{0xB3D360}; + WEAK symbol g_wv_hWnd{0x5A86AF0}; + WEAK symbol s_wcd_hWnd{0x5A86330}; + WEAK symbol serverId{0x0FF5058}; }