mirror of
https://github.com/diamante0018/MW3ServerFreezer.git
synced 2025-04-19 11:42:53 +00:00
360 lines
7.0 KiB
C++
360 lines
7.0 KiB
C++
#pragma once
|
|
|
|
#pragma warning(push)
|
|
#pragma warning(disable : 4324)
|
|
|
|
namespace game {
|
|
typedef float vec_t;
|
|
typedef vec_t vec2_t[2];
|
|
typedef vec_t vec3_t[3];
|
|
typedef vec_t vec4_t[4];
|
|
|
|
struct cmd_function_t {
|
|
cmd_function_t* next;
|
|
const char* name;
|
|
const char* autoCompleteDir;
|
|
const char* autoCompleteExt;
|
|
void(__cdecl* function)();
|
|
int flags;
|
|
};
|
|
|
|
struct CmdArgs {
|
|
int nesting;
|
|
int localClientNum[8];
|
|
int controllerIndex[8];
|
|
int argc[8];
|
|
const char** argv[8];
|
|
};
|
|
|
|
struct kbutton_t {
|
|
int down[2];
|
|
unsigned int downtime;
|
|
unsigned int msec;
|
|
bool active;
|
|
bool wasPressed;
|
|
};
|
|
|
|
static_assert(sizeof(kbutton_t) == 20);
|
|
|
|
typedef enum {
|
|
NS_CLIENT1 = 0,
|
|
NS_CLIENT2 = 1,
|
|
NS_CLIENT3 = 2,
|
|
NS_CLIENT4 = 3,
|
|
NS_MAXCLIENTS = 4,
|
|
NS_SERVER = 4,
|
|
NS_PACKET = 5,
|
|
NS_INVALID_NETSRC = 6
|
|
} netsrc_t;
|
|
|
|
enum netadrtype_t {
|
|
NA_BOT = 0x0,
|
|
NA_BAD = 0x1,
|
|
NA_LOOPBACK = 0x2,
|
|
NA_BROADCAST = 0x3,
|
|
NA_IP = 0x4
|
|
};
|
|
|
|
struct netadr_s {
|
|
netadrtype_t type;
|
|
unsigned char ip[4];
|
|
unsigned __int16 port;
|
|
unsigned char ipx[10];
|
|
unsigned int addrHandleIndex;
|
|
};
|
|
|
|
static_assert(sizeof(netadr_s) == 24);
|
|
|
|
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
|
|
};
|
|
|
|
typedef enum {
|
|
CA_DISCONNECTED = 0,
|
|
CA_CINEMATIC = 1,
|
|
CA_LOGO = 2,
|
|
CA_CONNECTING = 3,
|
|
CA_CHALLENGING = 4,
|
|
CA_CONNECTED = 5,
|
|
CA_SENDINGSTATS = 6,
|
|
CA_REQUESTING_MATCH_RULES = 7,
|
|
CA_LOADING = 8,
|
|
CA_PRIMED = 9,
|
|
CA_ACTIVE = 10
|
|
} connstate_t;
|
|
|
|
struct msg_t {
|
|
int overflowed;
|
|
int readOnly;
|
|
unsigned char* data;
|
|
unsigned char* splitData;
|
|
int maxsize;
|
|
int cursize;
|
|
int splitSize;
|
|
int readcount;
|
|
int bit;
|
|
int lastEntityRef;
|
|
};
|
|
|
|
struct netProfilePacket_t {
|
|
int iTime;
|
|
int iSize;
|
|
int bFragment;
|
|
};
|
|
|
|
struct netProfileStream_t {
|
|
netProfilePacket_t packets[60];
|
|
int iCurrPacket;
|
|
int iBytesPerSeconds;
|
|
int iLastBPSCalcTime;
|
|
int iCountedPackets;
|
|
int iCountedFragments;
|
|
int iFragmentPercentage;
|
|
int iLargestPacket;
|
|
int iSmallestPacket;
|
|
};
|
|
|
|
struct netProfileInfo_t {
|
|
netProfileStream_t send;
|
|
netProfileStream_t recieve;
|
|
};
|
|
|
|
static_assert(sizeof(netProfileInfo_t) == 0x5E0);
|
|
|
|
struct netchan_t {
|
|
int outgoingSequence;
|
|
netsrc_t sock;
|
|
int dropped;
|
|
int incomingSequence;
|
|
netadr_s remoteAddress;
|
|
int qport;
|
|
int fragmentSequence;
|
|
int fragmentLength;
|
|
unsigned char* fragmentBuffer;
|
|
int fragmentBufferSize;
|
|
int unsentFragments;
|
|
int unsentFragmentStart;
|
|
int unsentLength;
|
|
unsigned char* unsentBuffer;
|
|
int unsentBufferSize;
|
|
netProfileInfo_t prof;
|
|
};
|
|
|
|
static_assert(sizeof(netchan_t) == 0x630);
|
|
|
|
enum dvar_flags : std::uint16_t {
|
|
DVAR_NONE = 0,
|
|
DVAR_ARCHIVE = 1 << 0,
|
|
DVAR_LATCH = 1 << 1,
|
|
DVAR_CHEAT = 1 << 2,
|
|
DVAR_CODINFO = 1 << 3,
|
|
DVAR_SCRIPTINFO = 1 << 4,
|
|
DVAR_SERVERINFO = 1 << 10,
|
|
DVAR_WRITEPROTECTED = 1 << 11,
|
|
DVAR_READONLY = 1 << 13,
|
|
DVAR_AUTOEXEC = 1 << 15,
|
|
};
|
|
|
|
enum dvar_type : std::int8_t {
|
|
DVAR_TYPE_BOOL = 0x0,
|
|
DVAR_TYPE_FLOAT = 0x1,
|
|
DVAR_TYPE_FLOAT_2 = 0x2,
|
|
DVAR_TYPE_FLOAT_3 = 0x3,
|
|
DVAR_TYPE_FLOAT_4 = 0x4,
|
|
DVAR_TYPE_INT = 0x5,
|
|
DVAR_TYPE_ENUM = 0x6,
|
|
DVAR_TYPE_STRING = 0x7,
|
|
DVAR_TYPE_COLOR = 0x8,
|
|
DVAR_TYPE_FLOAT_3_COLOR = 0x9,
|
|
};
|
|
|
|
union DvarValue {
|
|
bool enabled;
|
|
int integer;
|
|
unsigned int unsignedInt;
|
|
float value;
|
|
float vector[4];
|
|
const char* string;
|
|
char color[4];
|
|
};
|
|
|
|
struct enum_limit {
|
|
int stringCount;
|
|
const char** strings;
|
|
};
|
|
|
|
struct int_limit {
|
|
int min;
|
|
int max;
|
|
};
|
|
|
|
struct float_limit {
|
|
float min;
|
|
float max;
|
|
};
|
|
|
|
union DvarLimits {
|
|
enum_limit enumeration;
|
|
int_limit integer;
|
|
float_limit value;
|
|
float_limit vector;
|
|
};
|
|
|
|
struct dvar_t {
|
|
const char* name;
|
|
unsigned int flags;
|
|
char type;
|
|
bool modified;
|
|
DvarValue current;
|
|
DvarValue latched;
|
|
DvarValue reset;
|
|
DvarLimits domain;
|
|
bool(__cdecl* domainFunc)(dvar_t*, DvarValue);
|
|
dvar_t* hashNext;
|
|
};
|
|
|
|
struct usercmd_s {
|
|
int serverTime;
|
|
int buttons;
|
|
int angles[3];
|
|
unsigned int weapon;
|
|
unsigned int offHand;
|
|
char forwardmove;
|
|
char rightmove;
|
|
unsigned __int16 airburstMarkDistance;
|
|
unsigned __int16 meleeChargeEnt;
|
|
unsigned char meleeChargeDist;
|
|
char selectedLoc[2];
|
|
char selectedLocAngle;
|
|
char remoteControlAngles[2];
|
|
int remoteControlMove;
|
|
};
|
|
|
|
enum LocSelInputState {
|
|
LOC_SEL_INPUT_NONE = 0,
|
|
LOC_SEL_INPUT_CONFIRM = 1,
|
|
LOC_SEL_INPUT_CANCEL = 2
|
|
};
|
|
|
|
struct field_t {
|
|
int cursor;
|
|
int scroll;
|
|
int drawWidth;
|
|
int widthInPixels;
|
|
float charHeight;
|
|
int fixedSize;
|
|
char buffer[256];
|
|
};
|
|
|
|
struct KeyState {
|
|
int down;
|
|
int repeats;
|
|
int binding;
|
|
const char* bindingCheat;
|
|
};
|
|
|
|
static_assert(sizeof(field_t) == 280);
|
|
|
|
struct PlayerKeyState {
|
|
field_t chatField;
|
|
int chat_team;
|
|
int overstrikeMode;
|
|
int anyKeyDown;
|
|
KeyState keys[256];
|
|
LocSelInputState locSelInputState;
|
|
};
|
|
|
|
static_assert(sizeof(PlayerKeyState) == 4392);
|
|
|
|
enum clientState_t {
|
|
CS_FREE = 0,
|
|
CS_ZOMBIE = 1,
|
|
CS_RECONNECTING = 2,
|
|
CS_CONNECTED = 3,
|
|
CS_PRIMED = 4,
|
|
CS_ACTIVE = 5
|
|
};
|
|
|
|
struct clientConnection_t {
|
|
int qport; // 0
|
|
int clientNum; // 4
|
|
int lastPacketSentTime; // 8
|
|
int lastPacketTime; // 12
|
|
netadr_s serverAddress; // 16
|
|
int connectTime; // 40
|
|
int connectPacketCount; // 44
|
|
char serverMessage[256]; // 48
|
|
int challenge; // 304
|
|
int checksumFeed; // 308
|
|
int reliableSequence; // 312
|
|
int reliableAcknowledge; // 316
|
|
char reliableCommands[128][1024]; // 320
|
|
int serverMessageSequence; // 131392
|
|
int serverCommandSequence; // 131396
|
|
int lastExecutedServerCommand; // 131400
|
|
char serverCommands[128][1024]; // 131404
|
|
bool isServerRestarting; // 262476
|
|
char clientDemo[16592]; // 262480
|
|
netchan_t netchan; // 279072
|
|
char netchanOutgoingBuffer[2048]; // 280656
|
|
char netchanIncomingBuffer[65536]; // 282704
|
|
netProfileInfo_t OOBProf; // 348240
|
|
short statPacketsToSend; // 349744
|
|
int statPacketSendTime[10]; // From here it might be wrong
|
|
int currentGamestatePacket;
|
|
};
|
|
|
|
struct clientStatic_t {};
|
|
|
|
struct ScreenPlacement {
|
|
float scaleVirtualToReal[2];
|
|
float scaleVirtualToFull[2];
|
|
float scaleRealToVirtual[2];
|
|
float realViewportPosition[2];
|
|
float realViewportSize[2];
|
|
float virtualViewableMin[2];
|
|
float virtualViewableMax[2];
|
|
float realViewableMin[2];
|
|
float realViewableMax[2];
|
|
float virtualAdjustableMin[2];
|
|
float virtualAdjustableMax[2];
|
|
float realAdjustableMin[2];
|
|
float realAdjustableMax[2];
|
|
float subScreenLeft;
|
|
};
|
|
|
|
static_assert(sizeof(ScreenPlacement) == 0x6C);
|
|
|
|
struct Font_s {
|
|
const char* fontName;
|
|
int pixelHeight;
|
|
int glyphCount;
|
|
void* material;
|
|
void* glowMaterial;
|
|
void* glyphs;
|
|
};
|
|
|
|
union XAssetHeader {
|
|
Font_s* font;
|
|
};
|
|
|
|
} // namespace game
|
|
|
|
#pragma warning(pop)
|