Всем доброго дня.
Имеется проблема такая.
Необходимо кикнуть игрока, когда он еще не подключен к серверу.
OnClientConnect - не подходит, необходимо делать это в одном блоке без использования костыля.
Код данного чуда:
Код
#pragma semicolon 1
#pragma newdecls required
public Plugin myinfo =
{
name = "L4D GameMode Restrict",
author = "Vitamin",
description = "Restirct another GameModes (Co-op GameMode)",
version = "1.4",
url = "http://gmode.ru"
};
public void OnPluginStart()
{
FindConVar("mp_gamemode").AddChangeHook(ConVarHandler_ChangeGameMode);
}
public void ConVarHandler_ChangeGameMode(ConVar hConVar, const char[] szOldValue, const char[] szNewValue)
{
if (szOldValue[0] != szNewValue[0] && szNewValue[0] != 'c')
{
int iClient = MaxClients;
int iUserId = 0;
while (iClient)
{
// native GetClientuserId - необходимо, чтобы игрок был уже IsConnected !
iUserId = GetClientUserId(iClient);
if (iUserId != 0)
{
ServerCommand("kickid %i [GMODE.RU]: \"Please connect to the server from the lobby with Co-op mode\"", iUserId);
}
iClient--;
}
LogMessage("Invalid GameMode: %s", szNewValue);
hConVar.SetString("coop");
}
}