2
0
mirror of https://github.com/rehlds/rehlds.git synced 2024-12-28 15:45:46 +03:00

ReHLDS API: Extending api

This commit is contained in:
s1lent 2019-08-11 03:01:01 +07:00
parent 9f7be106ed
commit 084bd023d2
No known key found for this signature in database
GPG Key ID: 0FE401DC73916B5C
9 changed files with 53 additions and 8 deletions

View File

@ -1,3 +1,3 @@
majorVersion=3 majorVersion=3
minorVersion=6 minorVersion=7
maintenanceVersion=0 maintenanceVersion=0

View File

@ -608,7 +608,8 @@ void SV_CheckCmdTimes(void);
void SV_CheckForRcon(void); void SV_CheckForRcon(void);
qboolean SV_IsSimulating(void); qboolean SV_IsSimulating(void);
void SV_CheckMapDifferences(void); void SV_CheckMapDifferences(void);
void SV_Frame(void); void SV_Frame();
void SV_Frame_Internal();
void SV_Drop_f(void); void SV_Drop_f(void);
void SV_RegisterDelta(char *name, char *loadfile); void SV_RegisterDelta(char *name, char *loadfile);
void SV_InitDeltas(void); void SV_InitDeltas(void);

View File

@ -6447,7 +6447,7 @@ USERID_t *SV_StringToUserID(const char *str)
return &id; return &id;
} }
void SV_SerializeSteamid(USERID_t* id, USERID_t* serialized) void EXT_FUNC SV_SerializeSteamid(USERID_t* id, USERID_t* serialized)
{ {
*serialized = *id; *serialized = *id;
} }
@ -7680,7 +7680,12 @@ void SV_CheckMapDifferences(void)
} }
} }
void SV_Frame(void) void SV_Frame()
{
g_RehldsHookchains.m_SV_Frame.callChain(SV_Frame_Internal);
}
void EXT_FUNC SV_Frame_Internal()
{ {
if (!g_psv.active) if (!g_psv.active)
return; return;

View File

@ -37,7 +37,7 @@
#include "pr_dlls.h" #include "pr_dlls.h"
#define REHLDS_API_VERSION_MAJOR 3 #define REHLDS_API_VERSION_MAJOR 3
#define REHLDS_API_VERSION_MINOR 6 #define REHLDS_API_VERSION_MINOR 7
//Steam_NotifyClientConnect hook //Steam_NotifyClientConnect hook
typedef IHookChain<qboolean, IGameClient*, const void*, unsigned int> IRehldsHook_Steam_NotifyClientConnect; typedef IHookChain<qboolean, IGameClient*, const void*, unsigned int> IRehldsHook_Steam_NotifyClientConnect;
@ -199,6 +199,10 @@ typedef IHookChainRegistry<edict_t *, const char *> IRehldsHookRegistry_CreateFa
typedef IHookChain<bool, netadr_t &, const uint8_t *, int> IRehldsHook_SV_CheckConnectionLessRateLimits; typedef IHookChain<bool, netadr_t &, const uint8_t *, int> IRehldsHook_SV_CheckConnectionLessRateLimits;
typedef IHookChainRegistry<bool, netadr_t &, const uint8_t *, int> IRehldsHookRegistry_SV_CheckConnectionLessRateLimits; typedef IHookChainRegistry<bool, netadr_t &, const uint8_t *, int> IRehldsHookRegistry_SV_CheckConnectionLessRateLimits;
//SV_Frame hook
typedef IVoidHookChain<> IRehldsHook_SV_Frame;
typedef IVoidHookChainRegistry<> IRehldsHookRegistry_SV_Frame;
class IRehldsHookchains { class IRehldsHookchains {
public: public:
virtual ~IRehldsHookchains() { } virtual ~IRehldsHookchains() { }
@ -243,6 +247,7 @@ public:
virtual IRehldsHookRegistry_SV_EmitSound2* SV_EmitSound2() = 0; virtual IRehldsHookRegistry_SV_EmitSound2* SV_EmitSound2() = 0;
virtual IRehldsHookRegistry_CreateFakeClient* CreateFakeClient() = 0; virtual IRehldsHookRegistry_CreateFakeClient* CreateFakeClient() = 0;
virtual IRehldsHookRegistry_SV_CheckConnectionLessRateLimits* SV_CheckConnectionLessRateLimits() = 0; virtual IRehldsHookRegistry_SV_CheckConnectionLessRateLimits* SV_CheckConnectionLessRateLimits() = 0;
virtual IRehldsHookRegistry_SV_Frame* SV_Frame() = 0;
}; };
struct RehldsFuncs_t { struct RehldsFuncs_t {
@ -350,6 +355,9 @@ struct RehldsFuncs_t {
void(*SZ_Write)(sizebuf_t *buf, const void *data, int length); void(*SZ_Write)(sizebuf_t *buf, const void *data, int length);
void(*SZ_Print)(sizebuf_t *buf, const char *data); void(*SZ_Print)(sizebuf_t *buf, const char *data);
void(*SZ_Clear)(sizebuf_t *buf); void(*SZ_Clear)(sizebuf_t *buf);
void(*MSG_BeginReading)();
double(*GetHostFrameTime)();
struct cmd_function_s *(*GetFirstCmdFunctionHandle)();
}; };
class IRehldsApi { class IRehldsApi {

View File

@ -130,4 +130,5 @@ public:
virtual void SetName(const char* name) = 0; virtual void SetName(const char* name) = 0;
virtual class ISteamGameServer *GetSteamGameServer() = 0; virtual class ISteamGameServer *GetSteamGameServer() = 0;
virtual struct netadr_s *GetNetFrom() = 0; virtual struct netadr_s *GetNetFrom() = 0;
virtual double GetOldTime() = 0;
}; };

View File

@ -56,7 +56,7 @@ int* EXT_FUNC GetAllowCheats_api() {
} }
bool EXT_FUNC GSBSecure_api() { bool EXT_FUNC GSBSecure_api() {
return Steam_GSBSecure() != 0; return Steam_GSBSecure() != FALSE;
} }
int EXT_FUNC GetBuildNumber_api() { int EXT_FUNC GetBuildNumber_api() {
@ -67,6 +67,14 @@ double EXT_FUNC GetRealTime_api() {
return realtime; return realtime;
} }
double EXT_FUNC GetHostFrameTime_api() {
return host_frametime;
}
cmd_function_t* EXT_FUNC GetFirstCmdFunctionHandle_api() {
return Cmd_GetFirstCmd();
}
int* EXT_FUNC GetMsgBadRead_api() { int* EXT_FUNC GetMsgBadRead_api() {
return &msg_badread; return &msg_badread;
} }
@ -312,6 +320,10 @@ void EXT_FUNC SZ_Clear_api(sizebuf_t *buf) {
SZ_Clear(buf); SZ_Clear(buf);
} }
void EXT_FUNC MSG_BeginReading_api() {
MSG_BeginReading();
}
cvar_t* EXT_FUNC GetCvarVars_api() { cvar_t* EXT_FUNC GetCvarVars_api() {
return cvar_vars; return cvar_vars;
} }
@ -545,6 +557,9 @@ RehldsFuncs_t g_RehldsApiFuncs =
&SZ_Write_api, &SZ_Write_api,
&SZ_Print_api, &SZ_Print_api,
&SZ_Clear_api, &SZ_Clear_api,
&MSG_BeginReading_api,
&GetHostFrameTime_api,
&GetFirstCmdFunctionHandle_api
}; };
bool EXT_FUNC SV_EmitSound2_internal(edict_t *entity, IGameClient *pReceiver, int channel, const char *sample, float volume, float attenuation, int flags, int pitch, int emitFlags, const float *pOrigin) bool EXT_FUNC SV_EmitSound2_internal(edict_t *entity, IGameClient *pReceiver, int channel, const char *sample, float volume, float attenuation, int flags, int pitch, int emitFlags, const float *pOrigin)
@ -808,6 +823,10 @@ IRehldsHookRegistry_SV_CheckConnectionLessRateLimits* CRehldsHookchains::SV_Chec
return &m_SV_CheckConnectionLessRateLimits; return &m_SV_CheckConnectionLessRateLimits;
} }
IRehldsHookRegistry_SV_Frame* CRehldsHookchains::SV_Frame() {
return &m_SV_Frame;
}
int EXT_FUNC CRehldsApi::GetMajorVersion() int EXT_FUNC CRehldsApi::GetMajorVersion()
{ {
return REHLDS_API_VERSION_MAJOR; return REHLDS_API_VERSION_MAJOR;

View File

@ -194,6 +194,10 @@ typedef IHookChainRegistryImpl<edict_t *, const char *> CRehldsHookRegistry_Crea
typedef IHookChainImpl<bool, netadr_t &, const uint8_t *, int> CRehldsHook_SV_CheckConnectionLessRateLimits; typedef IHookChainImpl<bool, netadr_t &, const uint8_t *, int> CRehldsHook_SV_CheckConnectionLessRateLimits;
typedef IHookChainRegistryImpl<bool, netadr_t &, const uint8_t *, int> CRehldsHookRegistry_SV_CheckConnectionLessRateLimits; typedef IHookChainRegistryImpl<bool, netadr_t &, const uint8_t *, int> CRehldsHookRegistry_SV_CheckConnectionLessRateLimits;
//SV_Frame hook
typedef IVoidHookChainImpl<> CRehldsHook_SV_Frame;
typedef IVoidHookChainRegistryImpl<> CRehldsHookRegistry_SV_Frame;
class CRehldsHookchains : public IRehldsHookchains { class CRehldsHookchains : public IRehldsHookchains {
public: public:
CRehldsHookRegistry_Steam_NotifyClientConnect m_Steam_NotifyClientConnect; CRehldsHookRegistry_Steam_NotifyClientConnect m_Steam_NotifyClientConnect;
@ -236,6 +240,7 @@ public:
CRehldsHookRegistry_SV_EmitSound2 m_SV_EmitSound2; CRehldsHookRegistry_SV_EmitSound2 m_SV_EmitSound2;
CRehldsHookRegistry_CreateFakeClient m_CreateFakeClient; CRehldsHookRegistry_CreateFakeClient m_CreateFakeClient;
CRehldsHookRegistry_SV_CheckConnectionLessRateLimits m_SV_CheckConnectionLessRateLimits; CRehldsHookRegistry_SV_CheckConnectionLessRateLimits m_SV_CheckConnectionLessRateLimits;
CRehldsHookRegistry_SV_Frame m_SV_Frame;
public: public:
EXT_FUNC virtual IRehldsHookRegistry_Steam_NotifyClientConnect* Steam_NotifyClientConnect(); EXT_FUNC virtual IRehldsHookRegistry_Steam_NotifyClientConnect* Steam_NotifyClientConnect();
@ -278,6 +283,7 @@ public:
EXT_FUNC virtual IRehldsHookRegistry_SV_EmitSound2* SV_EmitSound2(); EXT_FUNC virtual IRehldsHookRegistry_SV_EmitSound2* SV_EmitSound2();
EXT_FUNC virtual IRehldsHookRegistry_CreateFakeClient* CreateFakeClient(); EXT_FUNC virtual IRehldsHookRegistry_CreateFakeClient* CreateFakeClient();
EXT_FUNC virtual IRehldsHookRegistry_SV_CheckConnectionLessRateLimits* SV_CheckConnectionLessRateLimits(); EXT_FUNC virtual IRehldsHookRegistry_SV_CheckConnectionLessRateLimits* SV_CheckConnectionLessRateLimits();
EXT_FUNC virtual IRehldsHookRegistry_SV_Frame* SV_Frame();
}; };
extern CRehldsHookchains g_RehldsHookchains; extern CRehldsHookchains g_RehldsHookchains;

View File

@ -248,6 +248,10 @@ double EXT_FUNC CRehldsServerData::GetTime() {
return g_psv.time; return g_psv.time;
} }
double EXT_FUNC CRehldsServerData::GetOldTime() {
return g_psv.oldtime;
}
void EXT_FUNC CRehldsServerData::SetResourcesNum(int num) { void EXT_FUNC CRehldsServerData::SetResourcesNum(int num) {
g_psv.num_resources = num; g_psv.num_resources = num;
} }
@ -260,7 +264,7 @@ struct resource_s *EXT_FUNC CRehldsServerData::GetResource(int index) {
#endif // REHLDS_FIXES #endif // REHLDS_FIXES
} }
void Rehlds_Interfaces_FreeClients() void Rehlds_Interfaces_FreeClients()
{ {
if (g_GameClients == NULL) if (g_GameClients == NULL)
return; return;
@ -274,7 +278,7 @@ void Rehlds_Interfaces_FreeClients()
g_GameClients = NULL; g_GameClients = NULL;
} }
void Rehlds_Interfaces_InitClients() void Rehlds_Interfaces_InitClients()
{ {
Rehlds_Interfaces_FreeClients(); Rehlds_Interfaces_FreeClients();

View File

@ -145,6 +145,7 @@ public:
virtual void SetName(const char* name); virtual void SetName(const char* name);
virtual ISteamGameServer *GetSteamGameServer(); virtual ISteamGameServer *GetSteamGameServer();
virtual netadr_t *GetNetFrom(); virtual netadr_t *GetNetFrom();
virtual double GetOldTime();
}; };
extern CGameClient** g_GameClients; extern CGameClient** g_GameClients;