Fix dedicated server heartbeats
This commit is contained in:
parent
3ec1361ed9
commit
cf61232020
@ -1,4 +1,5 @@
|
|||||||
#include <std_include.hpp>
|
#include <std_include.hpp>
|
||||||
|
#include "dedicated.hpp"
|
||||||
#include "loader/component_loader.hpp"
|
#include "loader/component_loader.hpp"
|
||||||
|
|
||||||
#include "game/game.hpp"
|
#include "game/game.hpp"
|
||||||
@ -13,20 +14,26 @@ namespace dedicated
|
|||||||
{
|
{
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
void sv_con_tell_f_stub(game::client_s* cl_0, game::svscmd_type type, [[maybe_unused]] const char* fmt, [[maybe_unused]] int c, char* text)
|
void sv_con_tell_f_stub(game::client_s* cl_0, game::svscmd_type type, [[maybe_unused]] const char* fmt,
|
||||||
|
[[maybe_unused]] int c, char* text)
|
||||||
{
|
{
|
||||||
game::SV_SendServerCommand(cl_0, type, "%c \"GAME_SERVER\x15: %s\"", 79, text);
|
game::SV_SendServerCommand(cl_0, type, "%c \"GAME_SERVER\x15: %s\"", 79, text);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void send_heartbeat()
|
void send_heartbeat()
|
||||||
{
|
{
|
||||||
|
if (!game::is_server())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
game::netadr_t target{};
|
game::netadr_t target{};
|
||||||
if (server_list::get_master_server(target))
|
if (server_list::get_master_server(target))
|
||||||
{
|
{
|
||||||
network::send(target, "heartbeat", "T7");
|
network::send(target, "heartbeat", "T7");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
struct component final : server_component
|
struct component final : server_component
|
||||||
{
|
{
|
||||||
@ -39,7 +46,6 @@ namespace dedicated
|
|||||||
// Fix tell command for IW4M
|
// Fix tell command for IW4M
|
||||||
utils::hook::call(0x14052A8CF_g, sv_con_tell_f_stub);
|
utils::hook::call(0x14052A8CF_g, sv_con_tell_f_stub);
|
||||||
|
|
||||||
scheduler::once(send_heartbeat, scheduler::pipeline::server);
|
|
||||||
scheduler::loop(send_heartbeat, scheduler::pipeline::server, 10min);
|
scheduler::loop(send_heartbeat, scheduler::pipeline::server, 10min);
|
||||||
command::add("heartbeat", send_heartbeat);
|
command::add("heartbeat", send_heartbeat);
|
||||||
}
|
}
|
||||||
|
6
src/client/component/dedicated.hpp
Normal file
6
src/client/component/dedicated.hpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace dedicated
|
||||||
|
{
|
||||||
|
void send_heartbeat();
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
#include <std_include.hpp>
|
#include <std_include.hpp>
|
||||||
#include "../steam.hpp"
|
#include "../steam.hpp"
|
||||||
|
#include "../../component/dedicated.hpp"
|
||||||
|
|
||||||
namespace steam
|
namespace steam
|
||||||
{
|
{
|
||||||
@ -182,6 +183,7 @@ namespace steam
|
|||||||
|
|
||||||
void game_server::EnableHeartbeats(bool bActive)
|
void game_server::EnableHeartbeats(bool bActive)
|
||||||
{
|
{
|
||||||
|
dedicated::send_heartbeat();
|
||||||
}
|
}
|
||||||
|
|
||||||
void game_server::SetHeartbeatInterval(int iHeartbeatInterval)
|
void game_server::SetHeartbeatInterval(int iHeartbeatInterval)
|
||||||
|
Loading…
Reference in New Issue
Block a user