mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
add global text chat
use sv_forceChatToTeamOnly 0 to enable global chat
This commit is contained in:
parent
6f7e275b9a
commit
7d8d515190
@ -191,6 +191,7 @@ void Systems_Init()
|
|||||||
#ifndef CLIENT_DLL
|
#ifndef CLIENT_DLL
|
||||||
Persistence_Attach();
|
Persistence_Attach();
|
||||||
IVEngineServer_Attach();
|
IVEngineServer_Attach();
|
||||||
|
CServerGameDLL_Attach();
|
||||||
#endif // !CLIENT_DLL
|
#endif // !CLIENT_DLL
|
||||||
|
|
||||||
SQAPI_Attach();
|
SQAPI_Attach();
|
||||||
@ -317,6 +318,7 @@ void Systems_Shutdown()
|
|||||||
#ifndef CLIENT_DLL
|
#ifndef CLIENT_DLL
|
||||||
Persistence_Detach();
|
Persistence_Detach();
|
||||||
IVEngineServer_Detach();
|
IVEngineServer_Detach();
|
||||||
|
CServerGameDLL_Detach();
|
||||||
#endif // !CLIENT_DLL
|
#endif // !CLIENT_DLL
|
||||||
SQAPI_Detach();
|
SQAPI_Detach();
|
||||||
SQVM_Detach();
|
SQVM_Detach();
|
||||||
|
@ -56,6 +56,29 @@ float CServerGameDLL::GetTickInterval(void)
|
|||||||
return CallVFunc<float>(index, this);
|
return CallVFunc<float>(index, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void __fastcall CServerGameDLL::OnReceivedSayTextMessage(void* thisptr, int senderId, const char* text, bool isTeamChat)
|
||||||
|
{
|
||||||
|
#if defined(GAMEDLL_S3)
|
||||||
|
// set isTeamChat to false so that we can let the convar sv_forceChatToTeamOnly decide whether team chat should be enforced
|
||||||
|
// this isn't a great way of doing it but it works so meh
|
||||||
|
CServerGameDLL__OnReceivedSayTextMessage(thisptr, senderId, text, false);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void CServerGameDLL_Attach()
|
||||||
|
{
|
||||||
|
#if defined(GAMEDLL_S3)
|
||||||
|
DetourAttach((LPVOID*)&CServerGameDLL__OnReceivedSayTextMessage, &CServerGameDLL::OnReceivedSayTextMessage);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void CServerGameDLL_Detach()
|
||||||
|
{
|
||||||
|
#if defined(GAMEDLL_S3)
|
||||||
|
DetourDetach((LPVOID*)&CServerGameDLL__OnReceivedSayTextMessage, &CServerGameDLL::OnReceivedSayTextMessage);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// Pointer to CServerGameDLL virtual function table.
|
// Pointer to CServerGameDLL virtual function table.
|
||||||
CServerGameDLL* g_pServerGameDLL = nullptr;
|
CServerGameDLL* g_pServerGameDLL = nullptr;
|
||||||
CServerGameClients* g_pServerGameClients = nullptr;
|
CServerGameClients* g_pServerGameClients = nullptr;
|
||||||
|
@ -13,14 +13,22 @@ public:
|
|||||||
void LevelShutdown(void);
|
void LevelShutdown(void);
|
||||||
void GameShutdown(void);
|
void GameShutdown(void);
|
||||||
float GetTickInterval(void);
|
float GetTickInterval(void);
|
||||||
|
|
||||||
|
static void __fastcall OnReceivedSayTextMessage(void* thisptr, int senderId, const char* text, bool isTeamChat);
|
||||||
};
|
};
|
||||||
class CServerGameClients
|
class CServerGameClients
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline CMemory p_CServerGameDLL__OnReceivedSayTextMessage;
|
||||||
|
inline auto CServerGameDLL__OnReceivedSayTextMessage = p_CServerGameDLL__OnReceivedSayTextMessage.RCast<void(__fastcall*)(void* thisptr, int senderId, const char* text, bool isTeamChat)>();
|
||||||
|
|
||||||
extern CServerGameDLL* g_pServerGameDLL;
|
extern CServerGameDLL* g_pServerGameDLL;
|
||||||
extern CServerGameClients* g_pServerGameClients;
|
extern CServerGameClients* g_pServerGameClients;
|
||||||
|
|
||||||
|
void CServerGameDLL_Attach();
|
||||||
|
void CServerGameDLL_Detach();
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class VServerGameDLL : public IDetour
|
class VServerGameDLL : public IDetour
|
||||||
{
|
{
|
||||||
@ -30,7 +38,14 @@ class VServerGameDLL : public IDetour
|
|||||||
spdlog::debug("| VAR: g_pServerGameClients : {:#18x} |\n", reinterpret_cast<uintptr_t>(g_pServerGameClients));
|
spdlog::debug("| VAR: g_pServerGameClients : {:#18x} |\n", reinterpret_cast<uintptr_t>(g_pServerGameClients));
|
||||||
spdlog::debug("+----------------------------------------------------------------+\n");
|
spdlog::debug("+----------------------------------------------------------------+\n");
|
||||||
}
|
}
|
||||||
virtual void GetFun(void) const { }
|
virtual void GetFun(void) const
|
||||||
|
{
|
||||||
|
#if defined(GAMEDLL_S3)
|
||||||
|
p_CServerGameDLL__OnReceivedSayTextMessage = g_GameDll.FindPatternSIMD(reinterpret_cast<rsig_t>("\x85\xD2\x0F\x8E\x00\x00\x00\x00\x4C\x8B\xDC"), "xxxx????xxx");
|
||||||
|
|
||||||
|
CServerGameDLL__OnReceivedSayTextMessage = p_CServerGameDLL__OnReceivedSayTextMessage.RCast<void(__fastcall*)(void* thisptr, int senderId, const char* text, bool isTeamChat)>();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
virtual void GetVar(void) const
|
virtual void GetVar(void) const
|
||||||
{
|
{
|
||||||
g_pServerGameDLL = p_SV_CreateBaseline.Offset(0x0).FindPatternSelf("48 8B", CMemory::Direction::DOWN).ResolveRelativeAddressSelf(0x3, 0x7).Deref().RCast<CServerGameDLL*>();
|
g_pServerGameDLL = p_SV_CreateBaseline.Offset(0x0).FindPatternSelf("48 8B", CMemory::Direction::DOWN).ResolveRelativeAddressSelf(0x3, 0x7).Deref().RCast<CServerGameDLL*>();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user