Точно также, как проверить, стоит закачка всех файлов на клиенте игрока или нет.Есть ли возможность обнаружить, какая переменная команды стоит на клиенте?
Буду считать это "Да"...Точно также, как проверить, стоит закачка всех файлов на клиенте игрока или нет.
Спасибо! А можешь доработать плагин? Хочется не кика, а персонального уведомления для игрока в чат...Вот тема. Там и код на пробу и ниже ссылки на готовые примеры.
а сюдаQueryClientConVar(client, "cl_disablehtmlmotd", ConVarQueryFinished:ClientConVar1, client);
Так?if (cvarValueNew != 0)
//UP#include <sourcemod>
public OnClientAuthorized(client, const String:auth[])
{
QueryClientConVar(client, "cl_allowdownload", ConVarQueryFinished:ClientConVar1, client);
}
public ClientConVar1(QueryCookie:cookie, client, ConVarQueryResult:result, const String:cvarName1[], const String:cvarValue1[])
{
if ( !IsClientConnected(client) )
return true;
new cvarValueNew = StringToInt(cvarValue1);
if (cvarValueNew != 1)
{
KickClient(client, "Пропиши в консоль: cl_allowdownload 1");
}
return true;
}
Почти идеально, но есть баг. Поменяв переменную - сообщение не исчезает пока не перезайдешь на сервер.Не знаю, верно - не верно. ОффтопСпать пора, а не скриптить.
Я путаю с переменной закачки. Там это только плюс.есть баг. Поменяв переменную - сообщение не исчезает пока не перезайдешь на сервер
#define TIME_MESSAGE 60.0 //Время повтора проверки переменной клиента и выдачи сообщения (секунд).
new Handle:hTimerMessage[MAXPLAYERS+1];
public OnClientPostAdminCheck(client) hTimerMessage[client] = CreateTimer(TIME_MESSAGE, RepeatMessage, client, TIMER_REPEAT);
public OnClientDisconnect(client) if (hTimerMessage[client])
{
KillTimer(hTimerMessage[client]);
hTimerMessage[client] = INVALID_HANDLE;
}
public ClientConVar1(QueryCookie:cookie, client, ConVarQueryResult:result, const String:cvarName1[], const String:cvarValue1[])
{
if (cvarValue1[0] == '1') PrintHintText(client, "Пропиши в консоль: cl_disablehtmlmotd 0");
}
public Action:RepeatMessage(Handle:timer, any:client)
{
QueryClientConVar(client, "cl_disablehtmlmotd", ConVarQueryFinished:ClientConVar1, client);
return Plugin_Continue;
}
Благодарю!Плагин постоянно проверяет переменную игрока с заданным интервалом.
Конечно будет. До лагов от такого мелкого кода, конечно, далеко.создавать нагрузку
Да. Кстати, надо было общий таймер сделать, раз уж наклон плагина изменился (чтобы не меняли переменные, находясь уже на сервере).у каждого это время свое и таймер ведет отсчет от времени захода игрока на сервер?
#define TIME_MESSAGE 60.0 //Время повтора проверки переменной клиентов и выдачи сообщения (секунд).
new bool:bNoActive = true;
public OnClientPostAdminCheck(client) if (bNoActive)
{
CreateTimer(TIME_MESSAGE, RepeatMessage, _, TIMER_REPEAT);
bNoActive = false;
}
public ClientConVar1(QueryCookie:cookie, client, ConVarQueryResult:result, const String:cvarName1[], const String:cvarValue1[])
{
if (cvarValue1[0] == '1') PrintHintText(client, "Пропиши в консоль: cl_disablehtmlmotd 0");
}
public Action:RepeatMessage(Handle:timer)
{
for (new i = bNoActive = true; i <= MaxClients; ++i) if (IsClientInGame(i))
{
QueryClientConVar(i, "cl_disablehtmlmotd", ConVarQueryFinished:ClientConVar1, i);
bNoActive = false;
}
return bNoActive ? Plugin_Stop:Plugin_Continue;
}
Вопрос. Разве не будет лучше, чтобы таймер был у всех разным? Ведь нагрузка будет создаваться меньше, когда не всем разом будет исполняться проверка.Конечно будет.
Это в какой версии плагина? В последней? И что произойдет, если долго никого не будет? При возвращении игроков - плагин не будет работать до перезапуска сервера?Таймер отключится, если на сервере долго (TIME_MESSAGE) никого нет.
Ты это уже поборол в предыдущей версии. Проверил.(чтобы не меняли переменные, находясь уже на сервере).
В плане сообщений лучше - у каждого оно через свой промежуток времени с самого начала (но нам это не требуется, такая точность, поэтому опускаем).Разве не будет лучше, чтобы таймер был у всех разным?
Только в этот момент, зато всё остальное время будет тикать аж до 64 таймеров вместо 1-го.не всем разом будет исполняться проверка
Да. Плагин "отключится". Как только игрок зайдёт - активируется заново.В последней? И что произойдет, если долго никого не будет? При возвращении игроков - плагин не будет работать до перезапуска сервера?