From 91a64e69947e84ab3879de9d66a8f98111b69f6f Mon Sep 17 00:00:00 2001 From: Jackz Date: Mon, 3 May 2021 09:55:29 -0500 Subject: [PATCH] Add l4d2_autorestart --- plugins/l4d2_autorestart.smx | Bin 0 -> 3232 bytes scripting/l4d2_autorestart.sp | 61 ++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 plugins/l4d2_autorestart.smx create mode 100644 scripting/l4d2_autorestart.sp diff --git a/plugins/l4d2_autorestart.smx b/plugins/l4d2_autorestart.smx new file mode 100644 index 0000000000000000000000000000000000000000..a945e1756f8bce22a2dc746cb5ff8dd52de96f6f GIT binary patch literal 3232 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 +#include +//#include + +public Plugin myinfo = +{ + name = "L4D2 Autorestart", + author = "jackzmc", + description = "", + version = PLUGIN_VERSION, + url = "" +}; + +public void OnPluginStart() +{ + EngineVersion g_Game = GetEngineVersion(); + if(g_Game != Engine_Left4Dead && g_Game != Engine_Left4Dead2) + { + SetFailState("This plugin is for L4D/L4D2 only."); + } + + CreateTimer(60.0, Timer_Check, _, TIMER_REPEAT); +} + +public Action Timer_Check(Handle h) { + // char time[8]; + // FormatTime(strtime, sizeof(strtime), "%H%M"); + // int time = StringToInt(time); + // if(0400 <= time && time <= 0401) { + // //If around 4 AM + // ServerCommand("quit"); + // return Plugin_Stop; + // }else + if(IsServerEmptyAndNonHibernating()) { + //Server is stuck in non-hibernation with only bots, quit + LogAction(0, -1, "Detected server in hibernation with no players, restarting..."); + ServerCommand("quit"); + } +} + +//Returns true if there is a bot connected and there is no real players +bool IsServerEmptyAndNonHibernating() { + bool hasClient; + for(int i = 1; i < MaxClients; i++) { + if(IsClientConnected(i) && IsClientInGame(i)) { + if(IsFakeClient(i)) + hasClient = true; + else + return false; + + } + } + return hasClient; +}