mirror of
https://github.com/s1lentq/ReGameDLL_CS.git
synced 2024-12-28 07:35:40 +03:00
1273 lines
40 KiB
C++
1273 lines
40 KiB
C++
#pragma once
|
|
#ifdef _WIN32
|
|
|
|
#include "osconfig.h"
|
|
|
|
#include "steam/steam_api.h"
|
|
#include "steam/steam_gameserver.h"
|
|
|
|
#include <string>
|
|
#include <iostream>
|
|
#include <fstream>
|
|
|
|
#define HOSTENT_DATA_MAX_ALIASES 10
|
|
#define HOSTENT_DATA_MAX_ADDRS 32
|
|
|
|
struct hostent_data_t {
|
|
char hostName[256];
|
|
int hostNameLen;
|
|
|
|
int numAliases;
|
|
char aliases[HOSTENT_DATA_MAX_ALIASES][256];
|
|
int aliasesLengths[HOSTENT_DATA_MAX_ALIASES];
|
|
|
|
short addrtype;
|
|
short addrLen;
|
|
int numAddrs;
|
|
char addrs[HOSTENT_DATA_MAX_ADDRS][32];
|
|
|
|
//Used by reader only
|
|
char* preparedAddrs[HOSTENT_DATA_MAX_ADDRS + 1];
|
|
char* preparedAliases[HOSTENT_DATA_MAX_ALIASES + 1];
|
|
|
|
|
|
void clear() {
|
|
hostName[0] = 0;
|
|
hostNameLen = 0;
|
|
|
|
numAliases = 0;
|
|
for (int i = 0; i < HOSTENT_DATA_MAX_ALIASES; i++) {
|
|
aliasesLengths[i] = 0;
|
|
aliases[i][0] = 0;
|
|
}
|
|
|
|
addrtype = 0;
|
|
addrLen = 0;
|
|
numAddrs = 0;
|
|
}
|
|
};
|
|
|
|
enum ExtCallFuncs {
|
|
ECF_NONE = 0,
|
|
ECF_SLEEP = 1,
|
|
ECF_QUERY_PERF_FREQ = 2,
|
|
ECF_QUERY_PERF_COUNTER = 3,
|
|
ECF_GET_TICK_COUNT = 4,
|
|
ECF_GET_LOCAL_TIME = 5,
|
|
ECF_GET_SYSTEM_TIME = 6,
|
|
ECF_GET_TIMEZONE_INFO = 7,
|
|
|
|
ECF_SOCKET = 8,
|
|
ECF_IOCTL_SOCKET = 9,
|
|
ECF_SET_SOCK_OPT = 10,
|
|
ECF_CLOSE_SOCKET = 11,
|
|
ECF_RECVFROM = 12,
|
|
ECF_SENDTO = 13,
|
|
ECF_BIND = 14,
|
|
ECF_GET_SOCK_NAME = 15,
|
|
ECF_WSA_GET_LAST_ERROR = 16,
|
|
|
|
ECF_STEAM_CALLBACK_CALL_1 = 17,
|
|
ECF_STEAM_CALLBACK_CALL_2 = 18,
|
|
|
|
ECF_STEAM_API_REGISTER_CALLBACK = 19,
|
|
ECF_STEAM_API_INIT = 20,
|
|
ECF_STEAM_API_UNREGISTER_CALL_RESULT = 21,
|
|
ECF_STEAMAPPS = 22,
|
|
ECF_STEAMAPPS_GET_CURRENT_GAME_LANGUAGE = 23,
|
|
|
|
ECF_STEAMGAMESERVER_INIT = 24,
|
|
ECF_STEAMGAMESERVER = 25,
|
|
ECF_GS_SET_PRODUCT = 26,
|
|
ECF_GS_SET_GAME_DIR = 27,
|
|
ECF_GS_SET_DEDICATED_SERVER = 28,
|
|
ECF_GS_SET_GAME_DESC = 29,
|
|
ECF_GS_LOG_ON_ANONYMOUS = 30,
|
|
ECF_GS_ENABLE_HEARTBEATS = 31,
|
|
ECF_GS_SET_HEARTBEATS_INTERVAL = 32,
|
|
ECF_GS_SET_MAX_PLAYERS_COUNT = 33,
|
|
ECF_GS_SET_BOT_PLAYERS_COUNT = 34,
|
|
ECF_GS_SET_SERVER_NAME = 35,
|
|
ECF_GS_SET_MAP_NAME = 36,
|
|
ECF_GS_SET_PASSWORD_PROTECTED = 37,
|
|
ECF_GS_CLEAR_ALL_KEY_VALUES = 38,
|
|
ECF_GS_SET_KEY_VALUE = 39,
|
|
ECF_STEAM_API_SET_BREAKPAD_APP_ID = 40,
|
|
ECF_GS_WAS_RESTART_REQUESTED = 41,
|
|
ECF_STEAMGAMESERVER_RUN_CALLBACKS = 42,
|
|
ECF_GS_GET_NEXT_OUTGOING_PACKET = 43,
|
|
ECF_STEAM_API_RUN_CALLBACKS = 44,
|
|
ECF_GS_GET_STEAM_ID = 45,
|
|
ECF_GS_BSECURE = 46,
|
|
ECF_GS_HANDLE_INCOMING_PACKET = 47,
|
|
ECF_GS_SEND_USER_CONNECT_AND_AUTHENTICATE = 48,
|
|
ECF_GS_SEND_USER_DISCONNECT = 49,
|
|
ECF_GS_BUPDATE_USER_DATA = 50,
|
|
ECF_GS_CREATE_UNAUTH_USER_CONNECTION = 51,
|
|
|
|
ECF_GET_HOST_NAME = 52,
|
|
ECF_GET_HOST_BY_NAME = 53,
|
|
ECF_GET_PROCESS_TIMES = 54,
|
|
ECF_GET_SYSTEM_TIME_AS_FILE_TIME = 55,
|
|
|
|
ECF_CSTD_TIME = 56,
|
|
ECF_CSTD_LOCALTIME = 57,
|
|
ECF_CSTD_SRAND_CALL = 58,
|
|
ECF_CSTD_RAND_CALL = 59,
|
|
|
|
ECF_GS_LOGOFF = 60,
|
|
|
|
ECF_STEAMGAMESERVER_SHUTDOWN = 61,
|
|
ECF_STEAM_API_UNREGISTER_CALLBACK = 62,
|
|
|
|
ECF_GS_BLOGGEDON = 63,
|
|
};
|
|
|
|
struct CSteamCallbackState_t {
|
|
uint8 m_nCallbackFlags;
|
|
int m_iCallback;
|
|
|
|
void clear() {
|
|
m_nCallbackFlags = 0;
|
|
m_iCallback = 0;
|
|
}
|
|
};
|
|
|
|
class IEngExtCall {
|
|
public:
|
|
bool m_Start;
|
|
bool m_End;
|
|
|
|
public:
|
|
IEngExtCall() { m_Start = m_End = false; }
|
|
virtual ~IEngExtCall() { }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict) = 0;
|
|
virtual std::string toString() = 0;
|
|
virtual ExtCallFuncs getOpcode() = 0;
|
|
virtual void writePrologue(std::ostream &stream) { }
|
|
virtual void writeEpilogue(std::ostream &stream) { }
|
|
virtual void readPrologue(std::istream &stream) { }
|
|
virtual void readEpilogue(std::istream &stream) { }
|
|
void ensureArgsAreEqual(IEngExtCall* other, bool strict, const char* callSource);
|
|
};
|
|
|
|
class IEngCallbackCall : public IEngExtCall {
|
|
public:
|
|
virtual void someFuncInVTable() { }
|
|
};
|
|
|
|
class IEngExtCallFactory {
|
|
public:
|
|
static IEngExtCall* createByOpcode(ExtCallFuncs opc, void* ptr, int ptrSize);
|
|
};
|
|
|
|
//fake call; eof marker
|
|
class CEndRecordCall : public IEngExtCall {
|
|
public:
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict) { return false; }
|
|
virtual std::string toString() { return std::string("EOF"); }
|
|
virtual ExtCallFuncs getOpcode() { return ECF_NONE; }
|
|
};
|
|
|
|
class CSleepExtCall : public IEngExtCall {
|
|
public:
|
|
DWORD m_Time;
|
|
|
|
public:
|
|
CSleepExtCall() { m_Time = 0; }
|
|
CSleepExtCall(DWORD time);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_SLEEP; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CQueryPerfFreqCall : public IEngExtCall {
|
|
public:
|
|
int64 m_Freq;
|
|
BOOL m_Res;
|
|
|
|
public:
|
|
CQueryPerfFreqCall() { m_Freq = 0; m_Res = false; }
|
|
|
|
void SetResult(LARGE_INTEGER freq, BOOL res) { m_Freq = freq.QuadPart; m_Res = res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_QUERY_PERF_FREQ; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CQueryPerfCounterCall : public IEngExtCall {
|
|
public:
|
|
int64 m_Counter;
|
|
BOOL m_Res;
|
|
|
|
public:
|
|
CQueryPerfCounterCall() { m_Counter = 0; m_Res = 0; }
|
|
|
|
void SetResult(LARGE_INTEGER counter, BOOL res) { m_Counter = counter.QuadPart; m_Res = res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_QUERY_PERF_COUNTER; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
|
|
class CGetTickCountCall : public IEngExtCall {
|
|
public:
|
|
DWORD m_Res;
|
|
|
|
public:
|
|
CGetTickCountCall() { m_Res = 0; }
|
|
|
|
void SetResult(DWORD res) { m_Res = res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GET_TICK_COUNT; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGetLocalTimeCall : public IEngExtCall {
|
|
public:
|
|
SYSTEMTIME m_Res;
|
|
|
|
public:
|
|
CGetLocalTimeCall() { memset(&m_Res, 0, sizeof(m_Res)); }
|
|
|
|
void SetResult(LPSYSTEMTIME res) { m_Res = *res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GET_LOCAL_TIME; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGetSystemTimeCall : public IEngExtCall {
|
|
public:
|
|
SYSTEMTIME m_Res;
|
|
|
|
public:
|
|
CGetSystemTimeCall() { memset(&m_Res, 0, sizeof(m_Res)); }
|
|
|
|
void SetResult(LPSYSTEMTIME res) { m_Res = *res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GET_SYSTEM_TIME; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGetTimeZoneInfoCall : public IEngExtCall {
|
|
public:
|
|
TIME_ZONE_INFORMATION m_Res;
|
|
|
|
public:
|
|
CGetTimeZoneInfoCall() { memset(&m_Res, 0, sizeof(m_Res)); }
|
|
|
|
void SetResult(LPTIME_ZONE_INFORMATION res) { m_Res = *res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GET_TIMEZONE_INFO; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSocketCall : public IEngExtCall {
|
|
public:
|
|
int m_Af;
|
|
int m_Type;
|
|
int m_Protocol;
|
|
SOCKET m_Res;
|
|
|
|
public:
|
|
CSocketCall() { m_Af = m_Type = m_Protocol = 0; m_Res = INVALID_SOCKET; }
|
|
CSocketCall(int af, int type, int protocol);
|
|
void setResult(SOCKET s) { m_Res = s; }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_SOCKET; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CIoCtlSocketCall : public IEngExtCall {
|
|
public:
|
|
SOCKET m_Socket;
|
|
long m_Cmd;
|
|
u_long m_InValue;
|
|
|
|
u_long m_OutValue;
|
|
int m_Res;
|
|
|
|
public:
|
|
CIoCtlSocketCall() { m_Socket = INVALID_SOCKET; m_Cmd = 0; m_InValue = 0; m_OutValue = 0; m_Res = 0; }
|
|
CIoCtlSocketCall(SOCKET s, long cmd, u_long inValue);
|
|
void setResult(u_long outValue, int res) { m_Res = res; m_OutValue = outValue; }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_IOCTL_SOCKET; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSetSockOptCall : public IEngExtCall {
|
|
public:
|
|
SOCKET m_Socket;
|
|
int m_Level;
|
|
int m_OptName;
|
|
char m_OptVal[32];
|
|
int m_OptValLen;
|
|
|
|
int m_Res;
|
|
|
|
public:
|
|
CSetSockOptCall() { m_Socket = INVALID_SOCKET; m_Level = m_OptName = m_OptValLen = 0; m_Res = 0; }
|
|
CSetSockOptCall(SOCKET s, int level, int optname, const char* optval, int optlen);
|
|
void setResult(int res) { m_Res = res; }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_SET_SOCK_OPT; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CCloseSocketCall : public IEngExtCall {
|
|
public:
|
|
SOCKET m_Socket;
|
|
int m_Res;
|
|
|
|
public:
|
|
CCloseSocketCall() { m_Socket = INVALID_SOCKET; m_Res = 0; }
|
|
CCloseSocketCall(SOCKET s);
|
|
void setResult(int res) { m_Res = res; }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_CLOSE_SOCKET; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CRecvFromCall : public IEngExtCall {
|
|
public:
|
|
SOCKET m_Socket;
|
|
int m_Len;
|
|
int m_Flags;
|
|
int m_FromLenIn;
|
|
|
|
char m_Data[8192];
|
|
int m_FromLenOut;
|
|
char m_From[32];
|
|
int m_Res;
|
|
|
|
public:
|
|
CRecvFromCall() { m_Socket = INVALID_SOCKET; m_Len = m_Flags = m_FromLenIn = 0; m_FromLenOut = 0; m_Res = -1; }
|
|
CRecvFromCall(SOCKET s, int len, int flags, int fromlen);
|
|
void setResult(const void* data, const void* from, int fromLen, int res);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_RECVFROM; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSendToCall : public IEngExtCall {
|
|
public:
|
|
SOCKET m_Socket;
|
|
char m_Data[8192];
|
|
int m_Len;
|
|
int m_Flags;
|
|
char m_To[32];
|
|
int m_ToLen;
|
|
|
|
int m_Res;
|
|
|
|
public:
|
|
CSendToCall() { m_Socket = INVALID_SOCKET, m_Len = m_Flags = m_ToLen = 0; m_Res = -1; }
|
|
CSendToCall(SOCKET s, const void* buf, int len, int flags, const void* to, int tolen);
|
|
void setResult(int res) { m_Res = res; }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_SENDTO; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CBindCall : public IEngExtCall {
|
|
public:
|
|
SOCKET m_Socket;
|
|
char m_Addr[32];
|
|
int m_AddrLen;
|
|
|
|
int m_Res;
|
|
|
|
public:
|
|
CBindCall() { m_Socket = INVALID_SOCKET; m_AddrLen = 0; m_Res = 0; }
|
|
CBindCall(SOCKET s, const void* addr, int addrlen);
|
|
void setResult(int res) { m_Res = res; }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_BIND; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGetSockNameCall : public IEngExtCall {
|
|
public:
|
|
SOCKET m_Socket;
|
|
int m_AddrLenIn;
|
|
|
|
char m_Addr[32];
|
|
int m_AddrLenOut;
|
|
int m_Res;
|
|
|
|
public:
|
|
CGetSockNameCall() { m_Socket = INVALID_SOCKET; m_AddrLenIn = 0; m_AddrLenOut = m_Res = 0; }
|
|
CGetSockNameCall(SOCKET s, int addrlen);
|
|
void setResult(const void* addr, int addrlen, int res);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GET_SOCK_NAME; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CWSAGetLastErrorCall : public IEngExtCall {
|
|
public:
|
|
int m_Res;
|
|
|
|
public:
|
|
CWSAGetLastErrorCall() { m_Res = 0; }
|
|
void setResult(int res) { m_Res = res; }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_WSA_GET_LAST_ERROR; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamCallbackCall1 : public IEngCallbackCall {
|
|
public:
|
|
int m_CallbackId;
|
|
char m_Data[1024];
|
|
int m_DataSize;
|
|
CSteamCallbackState_t m_InState;
|
|
CSteamCallbackState_t m_OutState;
|
|
|
|
public:
|
|
CSteamCallbackCall1() { m_CallbackId = 0; m_DataSize = 0; m_InState.clear(), m_OutState.clear(); }
|
|
CSteamCallbackCall1(int cbId, void* data, int dataSize, CCallbackBase* cb);
|
|
|
|
void setResult(CCallbackBase* cb) { m_OutState.m_iCallback = cb->GetICallback(); m_OutState.m_nCallbackFlags = cb->GetFlags(); }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAM_CALLBACK_CALL_1; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamCallbackCall2 : public IEngCallbackCall {
|
|
public:
|
|
int m_CallbackId;
|
|
char m_Data[1024];
|
|
int m_DataSize;
|
|
bool m_bIOFailure;
|
|
SteamAPICall_t m_SteamAPICall;
|
|
CSteamCallbackState_t m_InState;
|
|
CSteamCallbackState_t m_OutState;
|
|
|
|
public:
|
|
CSteamCallbackCall2() { m_CallbackId = m_DataSize = 0; m_bIOFailure = false; m_SteamAPICall = k_uAPICallInvalid; m_InState.clear(), m_OutState.clear(); }
|
|
CSteamCallbackCall2(int cbId, void* data, int dataSize, bool ioFailure, SteamAPICall_t apiCall, CCallbackBase* cb);
|
|
|
|
void setResult(CCallbackBase* cb) { m_OutState.m_iCallback = cb->GetICallback(); m_OutState.m_nCallbackFlags = cb->GetFlags(); }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAM_CALLBACK_CALL_2; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamApiRegisterCallbackCall : public IEngExtCall {
|
|
public:
|
|
int m_ReGameDLLCallbackId;
|
|
int m_iSteamCallbackId;
|
|
CSteamCallbackState_t m_InState;
|
|
CSteamCallbackState_t m_OutState;
|
|
|
|
public:
|
|
CSteamApiRegisterCallbackCall() { m_ReGameDLLCallbackId = 0; m_iSteamCallbackId = 0; m_InState.clear(), m_OutState.clear(); }
|
|
CSteamApiRegisterCallbackCall(int regamedllCallbackId, int steamCallbackId, CCallbackBase* cb);
|
|
|
|
void setResult(CCallbackBase* cb) { m_OutState.m_iCallback = cb->GetICallback(); m_OutState.m_nCallbackFlags = cb->GetFlags(); }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAM_API_REGISTER_CALLBACK; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamApiInitCall : public IEngExtCall {
|
|
public:
|
|
bool m_Res;
|
|
|
|
public:
|
|
CSteamApiInitCall() { m_Res = false; }
|
|
void setResult(bool res) { m_Res = res; }
|
|
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAM_API_INIT; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamApiUnrigestierCallResultCall : public IEngExtCall {
|
|
public:
|
|
int m_ReGameDLLCallbackId;
|
|
SteamAPICall_t m_SteamApiCall;
|
|
CSteamCallbackState_t m_InState;
|
|
CSteamCallbackState_t m_OutState;
|
|
|
|
public:
|
|
CSteamApiUnrigestierCallResultCall() { m_ReGameDLLCallbackId = 0; m_SteamApiCall = k_uAPICallInvalid; m_InState.clear(), m_OutState.clear(); }
|
|
CSteamApiUnrigestierCallResultCall(int regamedllCallbackId, SteamAPICall_t steamApiCall, CCallbackBase* cb);
|
|
|
|
void setResult(CCallbackBase* cb) { m_OutState.m_iCallback = cb->GetICallback(); m_OutState.m_nCallbackFlags = cb->GetFlags(); }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAM_API_UNREGISTER_CALL_RESULT; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamAppsCall : public IEngExtCall {
|
|
public:
|
|
bool m_ReturnNull;
|
|
|
|
public:
|
|
CSteamAppsCall() { m_ReturnNull = false; }
|
|
|
|
void setReturnNull(bool retNull) { m_ReturnNull = retNull; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAMAPPS; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamAppGetCurrentGameLanguageCall : public IEngExtCall {
|
|
public:
|
|
int m_ResLen;
|
|
char m_Res[256];
|
|
|
|
public:
|
|
CSteamAppGetCurrentGameLanguageCall() { m_ResLen = 0; }
|
|
|
|
void setResult(const char* res);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAMAPPS_GET_CURRENT_GAME_LANGUAGE; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamGameServerInitCall : public IEngExtCall {
|
|
public:
|
|
uint32 m_IP;
|
|
uint16 m_SteamPort;
|
|
uint16 m_GamePort;
|
|
uint16 m_QueryPort;
|
|
EServerMode m_ServerMode;
|
|
char m_Version[256];
|
|
int m_VersionLen;
|
|
|
|
bool m_Res;
|
|
|
|
public:
|
|
CSteamGameServerInitCall() { m_IP = 0; m_SteamPort = m_GamePort = m_QueryPort = 0; m_ServerMode = eServerModeInvalid; m_VersionLen = 0; m_Res = false; }
|
|
CSteamGameServerInitCall(uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString);
|
|
|
|
void setResult(bool res) { m_Res = res; }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAMGAMESERVER_INIT; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamGameServerCall : public IEngExtCall {
|
|
public:
|
|
bool m_ReturnNull;
|
|
|
|
public:
|
|
CSteamGameServerCall() { m_ReturnNull = false; }
|
|
|
|
void setReturnNull(bool retNull) { m_ReturnNull = retNull; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAMGAMESERVER; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSetProductCall : public IEngExtCall {
|
|
public:
|
|
char m_Product[32];
|
|
int m_ProductLen;
|
|
|
|
public:
|
|
CGameServerSetProductCall() { m_ProductLen = 0; }
|
|
CGameServerSetProductCall(const char* product);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_PRODUCT; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSetModDirCall : public IEngExtCall {
|
|
public:
|
|
char m_Dir[32];
|
|
int m_DirLen;
|
|
|
|
public:
|
|
CGameServerSetModDirCall() { m_DirLen = 0; }
|
|
CGameServerSetModDirCall(const char* dir);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_GAME_DIR; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSetDedicatedServerCall : public IEngExtCall {
|
|
public:
|
|
bool m_Dedicated;
|
|
|
|
public:
|
|
CGameServerSetDedicatedServerCall() { m_Dedicated = false; }
|
|
CGameServerSetDedicatedServerCall(bool dedicated);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_DEDICATED_SERVER; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSetGameDescCall : public IEngExtCall {
|
|
public:
|
|
char m_Desc[128];
|
|
int m_DescLen;
|
|
|
|
public:
|
|
CGameServerSetGameDescCall() { m_DescLen = 0; }
|
|
CGameServerSetGameDescCall(const char* desc);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_GAME_DESC; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerLogOnAnonymousCall : public IEngExtCall {
|
|
public:
|
|
CGameServerLogOnAnonymousCall() { }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_LOG_ON_ANONYMOUS; }
|
|
};
|
|
|
|
class CGameServerEnableHeartbeatsCall : public IEngExtCall {
|
|
public:
|
|
bool m_Heartbeats;
|
|
|
|
public:
|
|
CGameServerEnableHeartbeatsCall() { m_Heartbeats = false; }
|
|
CGameServerEnableHeartbeatsCall(bool hearbeats);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_ENABLE_HEARTBEATS; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSetHeartbeatIntervalCall : public IEngExtCall {
|
|
public:
|
|
int m_Interval;
|
|
|
|
public:
|
|
CGameServerSetHeartbeatIntervalCall() { m_Interval = 0; }
|
|
CGameServerSetHeartbeatIntervalCall(int interval);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_HEARTBEATS_INTERVAL; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSetMaxPlayersCall : public IEngExtCall {
|
|
public:
|
|
int m_MaxPlayers;
|
|
|
|
public:
|
|
CGameServerSetMaxPlayersCall() { m_MaxPlayers = 0; }
|
|
CGameServerSetMaxPlayersCall(int maxPlayers);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_MAX_PLAYERS_COUNT; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSetBotCountCall : public IEngExtCall {
|
|
public:
|
|
int m_NumBots;
|
|
|
|
public:
|
|
CGameServerSetBotCountCall() { m_NumBots = 0; }
|
|
CGameServerSetBotCountCall(int numBots);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_BOT_PLAYERS_COUNT; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSetServerNameCall : public IEngExtCall {
|
|
public:
|
|
char m_ServerName[128];
|
|
int m_ServerNameLen;
|
|
|
|
public:
|
|
CGameServerSetServerNameCall() { m_ServerNameLen = 0; }
|
|
CGameServerSetServerNameCall(const char* serverName);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_SERVER_NAME; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSetMapNameCall : public IEngExtCall {
|
|
public:
|
|
char m_MapName[128];
|
|
int m_MapNameLen;
|
|
|
|
public:
|
|
CGameServerSetMapNameCall() { m_MapNameLen = 0; }
|
|
CGameServerSetMapNameCall(const char* mapName);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_MAP_NAME; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSetPasswordProtectedCall : public IEngExtCall {
|
|
public:
|
|
bool m_PasswordProtected;
|
|
|
|
public:
|
|
CGameServerSetPasswordProtectedCall() { m_PasswordProtected = false; }
|
|
CGameServerSetPasswordProtectedCall(bool passwordProtected);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_PASSWORD_PROTECTED; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerClearAllKVsCall : public IEngExtCall {
|
|
public:
|
|
CGameServerClearAllKVsCall() { }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_CLEAR_ALL_KEY_VALUES; }
|
|
};
|
|
|
|
class CGameServerSetKeyValueCall : public IEngExtCall {
|
|
public:
|
|
char m_Key[128];
|
|
int m_KeyLen;
|
|
char m_Value[128];
|
|
int m_ValueLen;
|
|
public:
|
|
CGameServerSetKeyValueCall() { m_KeyLen = m_ValueLen = 0; }
|
|
CGameServerSetKeyValueCall(const char* key, const char* value);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SET_KEY_VALUE; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamApiSetBreakpadAppIdCall : public IEngExtCall {
|
|
public:
|
|
uint32 m_AppId;
|
|
|
|
public:
|
|
CSteamApiSetBreakpadAppIdCall() { m_AppId = 0; }
|
|
CSteamApiSetBreakpadAppIdCall(uint32 appId);
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAM_API_SET_BREAKPAD_APP_ID; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
|
|
class CGameServerWasRestartRequestedCall : public IEngExtCall {
|
|
public:
|
|
bool m_Result;
|
|
|
|
public:
|
|
CGameServerWasRestartRequestedCall() { m_Result = false; }
|
|
|
|
void setResult(bool res) { m_Result = res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_WAS_RESTART_REQUESTED; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamGameServerRunCallbacksCall : public IEngExtCall {
|
|
public:
|
|
CSteamGameServerRunCallbacksCall() { }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAMGAMESERVER_RUN_CALLBACKS; }
|
|
};
|
|
|
|
class CGameServerGetNextOutgoingPacketCall : public IEngExtCall {
|
|
public:
|
|
int m_MaxOut;
|
|
|
|
char m_Buf[8192];
|
|
int m_BufLen;
|
|
int m_Result;
|
|
uint32 m_Addr;
|
|
uint16 m_Port;
|
|
|
|
public:
|
|
CGameServerGetNextOutgoingPacketCall() { m_MaxOut = 0; m_BufLen = m_Result = 0; m_Addr = 0; m_Port = 0; }
|
|
CGameServerGetNextOutgoingPacketCall(int maxOut);
|
|
|
|
void setResult(void* buf, int res, uint32* pAddr, uint16* pPort);
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_GET_NEXT_OUTGOING_PACKET; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CSteamApiRunCallbacksCall : public IEngExtCall {
|
|
public:
|
|
CSteamApiRunCallbacksCall() { }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAM_API_RUN_CALLBACKS; }
|
|
};
|
|
|
|
class CGameServerGetSteamIdCall : public IEngExtCall {
|
|
public:
|
|
uint64 m_SteamId;
|
|
|
|
public:
|
|
CGameServerGetSteamIdCall() { m_SteamId = 0; }
|
|
|
|
void setResult(CSteamID &res) { m_SteamId = res.ConvertToUint64(); }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_GET_STEAM_ID; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerBSecureCall : public IEngExtCall {
|
|
public:
|
|
bool m_Res;
|
|
|
|
public:
|
|
CGameServerBSecureCall() { m_Res = false; }
|
|
|
|
void setResult(bool res) { m_Res = res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_BSECURE; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerHandleIncomingPacketCall : public IEngExtCall {
|
|
public:
|
|
char m_Data[8192];
|
|
int m_Len;
|
|
uint32 m_Ip;
|
|
uint16 m_Port;
|
|
bool m_Res;
|
|
|
|
public:
|
|
CGameServerHandleIncomingPacketCall() { m_Len = 0; m_Ip = 0; m_Port = 0; m_Res = false; }
|
|
CGameServerHandleIncomingPacketCall(const void *pData, int cbData, uint32 srcIP, uint16 srcPort);
|
|
|
|
void setResult(bool res) { m_Res = res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_HANDLE_INCOMING_PACKET; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSendUserConnectAndAuthenticateCall : public IEngExtCall {
|
|
public:
|
|
char m_AuthBlob[4096];
|
|
int m_AuthBlobLen;
|
|
uint32 m_IP;
|
|
|
|
uint64 m_OutSteamId;
|
|
bool m_Res;
|
|
|
|
public:
|
|
CGameServerSendUserConnectAndAuthenticateCall() { m_IP = 0; m_AuthBlobLen = 0; m_OutSteamId = 0; m_Res = false; }
|
|
CGameServerSendUserConnectAndAuthenticateCall(uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize);
|
|
|
|
void setResult(CSteamID& steamId, bool res) { m_OutSteamId = steamId.ConvertToUint64(); m_Res = res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SEND_USER_CONNECT_AND_AUTHENTICATE; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerSendUserDisconnectCall : public IEngExtCall {
|
|
public:
|
|
uint64 m_SteamId;
|
|
|
|
public:
|
|
CGameServerSendUserDisconnectCall() { m_SteamId = 0; }
|
|
CGameServerSendUserDisconnectCall(CSteamID& steamId) { m_SteamId = steamId.ConvertToUint64(); }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_SEND_USER_DISCONNECT; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerBUpdateUserDataCall : public IEngExtCall {
|
|
public:
|
|
uint64 m_SteamId;
|
|
char m_PlayerName[64];
|
|
int m_PlayerNameLen;
|
|
uint32 m_Score;
|
|
|
|
bool m_Res;
|
|
|
|
public:
|
|
CGameServerBUpdateUserDataCall() { m_SteamId = 0; m_Score = 0; m_PlayerNameLen = 0; m_Res = false; }
|
|
CGameServerBUpdateUserDataCall(CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore);
|
|
|
|
void setResult(bool res) { m_Res = res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_BUPDATE_USER_DATA; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerCreateUnauthUserConnectionCall : public IEngExtCall {
|
|
public:
|
|
uint64 m_SteamId;
|
|
|
|
public:
|
|
CGameServerCreateUnauthUserConnectionCall() { m_SteamId = 0; }
|
|
|
|
void setResult(CSteamID &steamId) { m_SteamId = steamId.ConvertToUint64(); }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_CREATE_UNAUTH_USER_CONNECTION; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGetHostNameCall : public IEngExtCall {
|
|
public:
|
|
int m_NameLenIn;
|
|
|
|
int m_NameLenOut;
|
|
char m_Name[2048];
|
|
int m_Res;
|
|
|
|
public:
|
|
CGetHostNameCall() { m_NameLenIn = 0; m_NameLenOut = 0; m_Res = 0; m_Name[0] = 0; }
|
|
CGetHostNameCall(int namelen) { m_NameLenIn = namelen; m_NameLenOut = 0; m_Res = 0; m_Name[0] = 0; }
|
|
|
|
void setResult(char* hostName, int res);
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GET_HOST_NAME; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGetHostByNameCall : public IEngExtCall {
|
|
public:
|
|
char m_Name[256];
|
|
int m_NameLen;
|
|
|
|
hostent_data_t m_HostentData;
|
|
|
|
public:
|
|
CGetHostByNameCall() { m_Name[0] = 0; m_NameLen = 0; m_HostentData.clear(); }
|
|
CGetHostByNameCall(const char* name);
|
|
|
|
void setResult(const hostent* hostEnt);
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GET_HOST_BY_NAME; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGetProcessTimesCall : public IEngExtCall {
|
|
public:
|
|
BOOL m_Res;
|
|
FILETIME m_CreationTime;
|
|
FILETIME m_ExitTime;
|
|
FILETIME m_KernelTime;
|
|
FILETIME m_UserTime;
|
|
|
|
public:
|
|
CGetProcessTimesCall() {
|
|
m_Res = FALSE;
|
|
memset(&m_CreationTime, 0, sizeof(m_CreationTime));
|
|
memset(&m_ExitTime, 0, sizeof(m_ExitTime));
|
|
memset(&m_KernelTime, 0, sizeof(m_KernelTime));
|
|
memset(&m_UserTime, 0, sizeof(m_UserTime));
|
|
}
|
|
|
|
void setResult(BOOL res, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime);
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GET_PROCESS_TIMES; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGetSystemTimeAsFileTimeCall : public IEngExtCall {
|
|
public:
|
|
FILETIME m_SystemTime;
|
|
|
|
public:
|
|
CGetSystemTimeAsFileTimeCall() { memset(&m_SystemTime, 0, sizeof(m_SystemTime)); }
|
|
|
|
void setResult(LPFILETIME systemTime);
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GET_SYSTEM_TIME_AS_FILE_TIME; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CStdTimeCall : public IEngExtCall {
|
|
public:
|
|
bool m_InTimeNull;
|
|
|
|
uint32 m_Res;
|
|
|
|
public:
|
|
CStdTimeCall(uint32* inTime);
|
|
CStdTimeCall() { m_InTimeNull = false; m_Res = 0; }
|
|
|
|
void setResult(uint32 res);
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_CSTD_TIME; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CStdLocalTimeCall : public IEngExtCall {
|
|
public:
|
|
uint32 m_Time;
|
|
|
|
struct tm m_Res;
|
|
|
|
public:
|
|
CStdLocalTimeCall(uint32 inTime);
|
|
CStdLocalTimeCall() { m_Time = 0; memset(&m_Res, 0, sizeof(m_Res)); }
|
|
|
|
void setResult(struct tm *res);
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_CSTD_LOCALTIME; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CStdSrandCall : public IEngExtCall {
|
|
public:
|
|
uint32 m_Seed;
|
|
|
|
public:
|
|
CStdSrandCall() { m_Seed = 0; }
|
|
CStdSrandCall(uint32 seed) { m_Seed = seed; }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_CSTD_SRAND_CALL; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
};
|
|
|
|
class CStdRandCall : public IEngExtCall {
|
|
public:
|
|
int m_Res;
|
|
|
|
public:
|
|
CStdRandCall() { m_Res = 0; }
|
|
|
|
void setResult(int res) { m_Res = res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_CSTD_RAND_CALL; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerLogOffCall : public IEngExtCall {
|
|
|
|
public:
|
|
CGameServerLogOffCall() { }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_LOGOFF; }
|
|
|
|
};
|
|
|
|
class CSteamGameServerShutdownCall : public IEngExtCall {
|
|
|
|
public:
|
|
CSteamGameServerShutdownCall() { }
|
|
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAMGAMESERVER_SHUTDOWN; }
|
|
|
|
};
|
|
|
|
class CSteamApiUnregisterCallbackCall : public IEngExtCall {
|
|
public:
|
|
int m_ReGameDLLCallbackId;
|
|
CSteamCallbackState_t m_InState;
|
|
CSteamCallbackState_t m_OutState;
|
|
|
|
public:
|
|
CSteamApiUnregisterCallbackCall() { m_ReGameDLLCallbackId = 0; m_InState.clear(), m_OutState.clear(); }
|
|
CSteamApiUnregisterCallbackCall(int regamedllCallbackId, CCallbackBase* cb);
|
|
|
|
void setResult(CCallbackBase* cb) { m_OutState.m_iCallback = cb->GetICallback(); m_OutState.m_nCallbackFlags = cb->GetFlags(); }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_STEAM_API_UNREGISTER_CALLBACK; }
|
|
virtual void writePrologue(std::ostream &stream);
|
|
virtual void readPrologue(std::istream &stream);
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
class CGameServerBLoggedOnCall : public IEngExtCall {
|
|
public:
|
|
bool m_Res;
|
|
|
|
public:
|
|
CGameServerBLoggedOnCall() { m_Res = false; }
|
|
|
|
void setResult(bool res) { m_Res = res; }
|
|
virtual bool compareInputArgs(IEngExtCall* other, bool strict);
|
|
virtual std::string toString();
|
|
virtual ExtCallFuncs getOpcode() { return ECF_GS_BLOGGEDON; }
|
|
virtual void writeEpilogue(std::ostream &stream);
|
|
virtual void readEpilogue(std::istream &stream);
|
|
};
|
|
|
|
#endif
|