mirror of
https://github.com/Jackzmc/sourcemod-plugins.git
synced 2025-05-07 20:13:20 +00:00
Update updated part of README.md
This commit is contained in:
parent
73fa3ea30f
commit
f1ad9f3865
21 changed files with 4934 additions and 89 deletions
149
scripting/l4dunreservelobby.sp
Normal file
149
scripting/l4dunreservelobby.sp
Normal file
|
@ -0,0 +1,149 @@
|
|||
#include <sourcemod>
|
||||
#include <sdktools>
|
||||
#include <left4dhooks>
|
||||
|
||||
#define UNRESERVE_VERSION "1.1.1"
|
||||
|
||||
#define UNRESERVE_DEBUG 0
|
||||
#define UNRESERVE_DEBUG_LOG 0
|
||||
|
||||
#define L4D_MAXCLIENTS MaxClients
|
||||
#define L4D_MAXCLIENTS_PLUS1 (L4D_MAXCLIENTS + 1)
|
||||
|
||||
#define L4D_MAXHUMANS_LOBBY_VERSUS 8
|
||||
#define L4D_MAXHUMANS_LOBBY_OTHER 4
|
||||
|
||||
new Handle:cvarGameMode = INVALID_HANDLE;
|
||||
|
||||
public Plugin:myinfo =
|
||||
{
|
||||
name = "L4D1/2 Remove Lobby Reservation",
|
||||
author = "Downtown1",
|
||||
description = "Removes lobby reservation when server is full",
|
||||
version = UNRESERVE_VERSION,
|
||||
url = "http://forums.alliedmods.net/showthread.php?t=87759"
|
||||
}
|
||||
|
||||
new Handle:cvarUnreserve = INVALID_HANDLE;
|
||||
|
||||
public OnPluginStart()
|
||||
{
|
||||
LoadTranslations("common.phrases");
|
||||
|
||||
RegAdminCmd("sm_unreserve", Command_Unreserve, ADMFLAG_BAN, "sm_unreserve - manually force removes the lobby reservation");
|
||||
|
||||
cvarUnreserve = CreateConVar("l4d_unreserve_full", "1", "Automatically unreserve server after a full lobby joins", FCVAR_SPONLY|FCVAR_NOTIFY);
|
||||
CreateConVar("l4d_unreserve_version", UNRESERVE_VERSION, "Version of the Lobby Unreserve plugin.", FCVAR_SPONLY|FCVAR_NOTIFY);
|
||||
|
||||
cvarGameMode = FindConVar("mp_gamemode");
|
||||
}
|
||||
|
||||
bool:IsScavengeMode()
|
||||
{
|
||||
decl String:sGameMode[32];
|
||||
GetConVarString(cvarGameMode, sGameMode, sizeof(sGameMode));
|
||||
if (StrContains(sGameMode, "scavenge") > -1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool:IsVersusMode()
|
||||
{
|
||||
decl String:sGameMode[32];
|
||||
GetConVarString(cvarGameMode, sGameMode, sizeof(sGameMode));
|
||||
if (StrContains(sGameMode, "versus") > -1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
IsServerLobbyFull()
|
||||
{
|
||||
new humans = GetHumanCount();
|
||||
|
||||
DebugPrintToAll("IsServerLobbyFull : humans = %d", humans);
|
||||
|
||||
if(IsVersusMode() || IsScavengeMode())
|
||||
{
|
||||
return humans >= L4D_MAXHUMANS_LOBBY_VERSUS;
|
||||
}
|
||||
return humans >= L4D_MAXHUMANS_LOBBY_OTHER;
|
||||
}
|
||||
|
||||
public OnClientPutInServer(client)
|
||||
{
|
||||
DebugPrintToAll("Client put in server %N", client);
|
||||
|
||||
if(GetConVarBool(cvarUnreserve) && /*L4D_LobbyIsReserved() &&*/ IsServerLobbyFull())
|
||||
{
|
||||
//PrintToChatAll("[SM] A full lobby has connected, automatically unreserving the server.");
|
||||
L4D_LobbyUnreserve();
|
||||
}
|
||||
}
|
||||
|
||||
public Action:Command_Unreserve(client, args)
|
||||
{
|
||||
/*if(!L4D_LobbyIsReserved())
|
||||
{
|
||||
ReplyToCommand(client, "[SM] Server is already unreserved.");
|
||||
}*/
|
||||
|
||||
L4D_LobbyUnreserve();
|
||||
PrintToChatAll("[SM] Lobby reservation has been removed.");
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
|
||||
//client is in-game and not a bot
|
||||
stock bool:IsClientInGameHuman(client)
|
||||
{
|
||||
return IsClientInGame(client) && !IsFakeClient(client);
|
||||
}
|
||||
|
||||
stock GetHumanCount()
|
||||
{
|
||||
new humans = 0;
|
||||
|
||||
new i;
|
||||
for(i = 1; i < L4D_MAXCLIENTS_PLUS1; i++)
|
||||
{
|
||||
if(IsClientInGameHuman(i))
|
||||
{
|
||||
humans++
|
||||
}
|
||||
}
|
||||
|
||||
return humans;
|
||||
}
|
||||
|
||||
DebugPrintToAll(const String:format[], any:...)
|
||||
{
|
||||
#if UNRESERVE_DEBUG || UNRESERVE_DEBUG_LOG
|
||||
decl String:buffer[192];
|
||||
|
||||
VFormat(buffer, sizeof(buffer), format, 2);
|
||||
|
||||
#if UNRESERVE_DEBUG
|
||||
PrintToChatAll("[UNRESERVE] %s", buffer);
|
||||
PrintToConsole(0, "[UNRESERVE] %s", buffer);
|
||||
#endif
|
||||
|
||||
LogMessage("%s", buffer);
|
||||
#else
|
||||
//suppress "format" never used warning
|
||||
if(format[0])
|
||||
return;
|
||||
else
|
||||
return;
|
||||
#endif
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue