diff options
Diffstat (limited to 'NorthstarDLL/hoststate.cpp')
-rw-r--r-- | NorthstarDLL/hoststate.cpp | 204 |
1 files changed, 102 insertions, 102 deletions
diff --git a/NorthstarDLL/hoststate.cpp b/NorthstarDLL/hoststate.cpp index 9e217a25..287b4625 100644 --- a/NorthstarDLL/hoststate.cpp +++ b/NorthstarDLL/hoststate.cpp @@ -1,102 +1,102 @@ -#include "pch.h"
-#include "hoststate.h"
-#include "masterserver.h"
-#include "serverauthentication.h"
-#include "serverpresence.h"
-#include "playlist.h"
-#include "tier0.h"
-#include "r2engine.h"
-
-AUTOHOOK_INIT()
-
-using namespace R2;
-
-// use the R2 namespace for game funcs
-namespace R2
-{
- CHostState* g_pHostState;
-} // namespace R2
-
-ConVar* Cvar_hostport;
-
-void ServerStartingOrChangingMap()
-{
- // net_data_block_enabled is required for sp, force it if we're on an sp map
- // sucks for security but just how it be
- if (!strncmp(g_pHostState->m_levelName, "sp_", 3))
- g_pCVar->FindVar("net_data_block_enabled")->SetValue(true);
-}
-
-AUTOHOOK(CHostState__State_NewGame, engine.dll + 0x16E7D0,
-void,, (CHostState* self))
-{
- spdlog::info("HostState: NewGame");
-
- Cbuf_AddText(Cbuf_GetCurrentPlayer(), "exec autoexec_ns_server", cmd_source_t::kCommandSrcCode);
- Cbuf_Execute();
-
- // need to do this to ensure we don't go to private match
- if (g_pServerAuthentication->m_bNeedLocalAuthForNewgame)
- SetCurrentPlaylist("tdm");
-
- ServerStartingOrChangingMap();
-
- double dStartTime = Tier0::Plat_FloatTime();
- CHostState__State_NewGame(self);
- spdlog::info("loading took {}s", Tier0::Plat_FloatTime() - dStartTime);
-
- // setup server presence
- g_pServerPresence->CreatePresence();
- g_pServerPresence->SetMap(g_pHostState->m_levelName);
- g_pServerPresence->SetPlaylist(GetCurrentPlaylistName());
- g_pServerPresence->SetPort(Cvar_hostport->GetInt());
-
- g_pServerAuthentication->StartPlayerAuthServer();
- g_pServerAuthentication->m_bNeedLocalAuthForNewgame = false;
-}
-
-AUTOHOOK(CHostState__State_ChangeLevelMP, engine.dll + 0x16E520,
-void,, (CHostState* self))
-{
- spdlog::info("HostState: ChangeLevelMP");
-
- ServerStartingOrChangingMap();
-
- double dStartTime = Tier0::Plat_FloatTime();
- CHostState__State_ChangeLevelMP(self);
- spdlog::info("loading took {}s", Tier0::Plat_FloatTime() - dStartTime);
-
- g_pServerPresence->SetMap(g_pHostState->m_levelName);
-}
-
-AUTOHOOK(CHostState__State_GameShutdown, engine.dll + 0x16E520,
-void,, (CHostState* self))
-{
- spdlog::info("HostState: GameShutdown");
-
- g_pServerPresence->DestroyPresence();
- g_pServerAuthentication->StopPlayerAuthServer();
-
- CHostState__State_GameShutdown(self);
-}
-
-AUTOHOOK(CHostState__FrameUpdate, engine.dll + 0x16DB00,
-void, __fastcall, (CHostState* self, double flCurrentTime, float flFrameTime))
-{
- CHostState__FrameUpdate(self, flCurrentTime, flFrameTime);
-
- if (*R2::g_pServerState == R2::server_state_t::ss_active)
- {
- // update server presence
- g_pServerPresence->RunFrame(flCurrentTime);
- }
-
-}
-
-ON_DLL_LOAD_RELIESON("engine.dll", HostState, ConVar, (CModule module))
-{
- AUTOHOOK_DISPATCH()
-
- g_pHostState = module.Offset(0x7CF180).As<CHostState*>();
- Cvar_hostport = module.Offset(0x13FA6070).As<ConVar*>();
-}
\ No newline at end of file +#include "pch.h" +#include "hoststate.h" +#include "masterserver.h" +#include "serverauthentication.h" +#include "serverpresence.h" +#include "playlist.h" +#include "tier0.h" +#include "r2engine.h" + +AUTOHOOK_INIT() + +using namespace R2; + +// use the R2 namespace for game funcs +namespace R2 +{ + CHostState* g_pHostState; +} // namespace R2 + +ConVar* Cvar_hostport; + +void ServerStartingOrChangingMap() +{ + // net_data_block_enabled is required for sp, force it if we're on an sp map + // sucks for security but just how it be + if (!strncmp(g_pHostState->m_levelName, "sp_", 3)) + g_pCVar->FindVar("net_data_block_enabled")->SetValue(true); +} + +AUTOHOOK(CHostState__State_NewGame, engine.dll + 0x16E7D0, +void,, (CHostState* self)) +{ + spdlog::info("HostState: NewGame"); + + Cbuf_AddText(Cbuf_GetCurrentPlayer(), "exec autoexec_ns_server", cmd_source_t::kCommandSrcCode); + Cbuf_Execute(); + + // need to do this to ensure we don't go to private match + if (g_pServerAuthentication->m_bNeedLocalAuthForNewgame) + SetCurrentPlaylist("tdm"); + + ServerStartingOrChangingMap(); + + double dStartTime = Tier0::Plat_FloatTime(); + CHostState__State_NewGame(self); + spdlog::info("loading took {}s", Tier0::Plat_FloatTime() - dStartTime); + + // setup server presence + g_pServerPresence->CreatePresence(); + g_pServerPresence->SetMap(g_pHostState->m_levelName, true); + g_pServerPresence->SetPlaylist(GetCurrentPlaylistName()); + g_pServerPresence->SetPort(Cvar_hostport->GetInt()); + + g_pServerAuthentication->StartPlayerAuthServer(); + g_pServerAuthentication->m_bNeedLocalAuthForNewgame = false; +} + +AUTOHOOK(CHostState__State_ChangeLevelMP, engine.dll + 0x16E520, +void,, (CHostState* self)) +{ + spdlog::info("HostState: ChangeLevelMP"); + + ServerStartingOrChangingMap(); + + double dStartTime = Tier0::Plat_FloatTime(); + CHostState__State_ChangeLevelMP(self); + spdlog::info("loading took {}s", Tier0::Plat_FloatTime() - dStartTime); + + g_pServerPresence->SetMap(g_pHostState->m_levelName); +} + +AUTOHOOK(CHostState__State_GameShutdown, engine.dll + 0x16E520, +void,, (CHostState* self)) +{ + spdlog::info("HostState: GameShutdown"); + + g_pServerPresence->DestroyPresence(); + g_pServerAuthentication->StopPlayerAuthServer(); + + CHostState__State_GameShutdown(self); +} + +AUTOHOOK(CHostState__FrameUpdate, engine.dll + 0x16DB00, +void, __fastcall, (CHostState* self, double flCurrentTime, float flFrameTime)) +{ + CHostState__FrameUpdate(self, flCurrentTime, flFrameTime); + + if (*R2::g_pServerState == R2::server_state_t::ss_active) + { + // update server presence + g_pServerPresence->RunFrame(flCurrentTime); + } + +} + +ON_DLL_LOAD_RELIESON("engine.dll", HostState, ConVar, (CModule module)) +{ + AUTOHOOK_DISPATCH() + + g_pHostState = module.Offset(0x7CF180).As<CHostState*>(); + Cvar_hostport = module.Offset(0x13FA6070).As<ConVar*>(); +} |