The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
Я прекрасно понимаю, что часто названия плагинов можно очень просто забыть. Однако это становится причиной постоянного создания тем рода "помогите найти плагин X".

Так вот, чтобы содержать форум в порядке и чистоте, поступим следующим образом:
  1. В дальнейшем создаваемые темы с "помогите найти плагин" будут удаляться, а авторам — выдаваться предупреждения
  2. Если Вы захотите найти плагин, то сначала воспользуйтесь поиском

Если всё же не удалось найти плагин, заполните следующую форму и ответьте в этой теме:

  • Функции плагина
  • Мод/Игра, которая использует этот плагин

Прежде чем отвечать в теме, воспользуйтесь поиском гугла, который почти всегда находит нужное.

Старые темы будут перемещены в корзину.
 
Последнее редактирование модератором:

dimonz222

Участник
Сообщения
6
Реакции
0
Существует ли плагин, позволяющий запрещать заходить за ботов в CSGO?
Имеется ввиду заход за бота через "E" после смерти.
А то у меня на сервере хардкорные боты, и хочется, чтобы они сами тащили. А не сливались из-за игроков зашедших за них.
 

noBap

Участник
Сообщения
395
Реакции
169
@e333, можно так сделать:
PHP:
#pragma semicolon 1
#pragma newdecls required

bool bLate, bVarOff[MAXPLAYERS+1];
Handle hTimer[MAXPLAYERS+1];

public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
{
    bLate = late;
    return APLRes_Success;
}

public void OnPluginStart()
{
    if(bLate)
    {
        for(int i = 1; i <= MaxClients; i++)
        {
            if(IsClientAuthorized(i)) OnClientPostAdminCheck(i);
        }
        bLate = false;
    }
}

public void OnClientPostAdminCheck(int client)
{
    if(!IsFakeClient(client)) hTimer[client] = CreateTimer(20.0, Timer_Check, GetClientSerial(client), TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}

public void OnClientDisconnect(int client)
{
    KillTimer(hTimer[client]);
}

public Action Timer_Check(Handle timer, any serial)
{
    static int client;
    if(!(0 < (client = GetClientFromSerial(serial) <= MaxClients))) return Plugin_Stop;
    CheckVarValue(client);

    return Plugin_Continue;
}

void CheckVarValue(int client)
{
    if (0 < client <= MaxClients)
    {
        QueryClientConVar(client, "cl_allowdownload", CheckVar);
        if(bVarOff[client]) PrintToChat(client, "Please change value of the variable 'cl_allowdownload' to '0'");
    }
}

public void CheckVar(QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvarName, const char[] cvarValue)
{
    if(result != ConVarQuery_Okay) bVarOff[client] = true;
    else bVarOff[client] = (StringToInt(cvarValue) == 1);
}
будет каждые 20 секунд проверять значение этого квара

А можно сделать что бы выводило сообщение в чат и по центру экрана? Меня интересует команда cl_disablehtmlmotd.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
noBap, нужно только чуть поправить вот так:
PHP:
void CheckVarValue(int client)
{
    if (0 < client <= MaxClients)
    {
        QueryClientConVar(client, "cl_allowdownload", CheckVar);
        if(bVarOff[client])
        {
            PrintToChat(client, "Please change value of the variable 'cl_allowdownload' to '0'");
            PrintCenterText(client, "Please change value of the variable 'cl_allowdownload' to '0'");
        }
    }
}
 

noBap

Участник
Сообщения
395
Реакции
169
Флуд/Оффтоп
noBap, нужно только чуть поправить вот так:
PHP:
void CheckVarValue(int client)
{
    if (0 < client <= MaxClients)
    {
        QueryClientConVar(client, "cl_allowdownload", CheckVar);
        if(bVarOff[client])
        {
            PrintToChat(client, "Please change value of the variable 'cl_allowdownload' to '0'");
            PrintCenterText(client, "Please change value of the variable 'cl_allowdownload' to '0'");
        }
    }
}
C-подобный:
[SM] Exception reported: Invalid timer handle 0 (error 4)
L 08/15/2017 - 01:39:25: [SM] Blaming: disablehtmlmotd.smx
L 08/15/2017 - 01:39:25: [SM] Call stack trace:
L 08/15/2017 - 01:39:25: [SM]   [0] KillTimer
L 08/15/2017 - 01:39:25: [SM]   [1] Line 32,  disablehtmlmotd.sp::OnClientDisconnect

вот такую ошибку выдает

вот 32 строк
C-подобный:
public void OnClientDisconnect(int client)
{
    KillTimer(hTimer[client]);
}

Надеюсь я правильно все сделал:
Оффтоп
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
значит там нужно проверку сделать будет
 

Rostu

Добрая душа
Сообщения
986
Реакции
622
@noBap, Из урока РЭко
PHP:
        if(g_hTimer[i])    // Проверяем что таймер активен
        {
            KillTimer(g_hTimer[i]);    // Уничтожаем таймер
            g_hTimer[i] = null;        // Обнуляем значения дескриптора
        }
 

noBap

Участник
Сообщения
395
Реакции
169
@noBap, Из урока РЭко
PHP:
        if(g_hTimer[i])    // Проверяем что таймер активен
        {
            KillTimer(g_hTimer[i]);    // Уничтожаем таймер
            g_hTimer[i] = null;        // Обнуляем значения дескриптора
        }
Вот что у меня получилось:
PHP:
#pragma semicolon 1
#pragma newdecls required

bool bLate, bVarOff[MAXPLAYERS+1];
Handle hTimer[MAXPLAYERS+1];

public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
{
    bLate = late;
    return APLRes_Success;
}

public void OnPluginStart()
{
    if(bLate)
    {
        for(int i = 1; i <= MaxClients; i++)
        {
            if(IsClientAuthorized(i)) OnClientPostAdminCheck(i);
        }
        bLate = false;
    }
}

public void OnClientPostAdminCheck(int client)
{
    if(!IsFakeClient(client)) hTimer[client] = CreateTimer(20.0, Timer_Check, GetClientSerial(client), TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}

public void OnClientDisconnect(int client)
{
if(hTimer[client])
        {
            KillTimer(hTimer[client]);
            (hTimer[client]) = null;
        }
}

public Action Timer_Check(Handle timer, any serial)
{
    static int client;
    if(!(0 < (client = GetClientFromSerial(serial) <= MaxClients))) return Plugin_Stop;
    CheckVarValue(client);

    return Plugin_Continue;
}

void CheckVarValue(int client)
{
    if (0 < client <= MaxClients)
    {
        QueryClientConVar(client, "cl_disablehtmlmotd", CheckVar);
        if(bVarOff[client])
        {
            PrintToChat(client, "Напишите в консоле 'cl_disablehtmlmotd '0'");
            PrintCenterText(client, "Напишите в консоле 'cl_disablehtmlmotd '0'");
        }
    }
}

public void CheckVar(QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvarName, const char[] cvarValue)
{
    if(result != ConVarQuery_Okay) bVarOff[client] = true;
    else bVarOff[client] = (StringToInt(cvarValue) == 1);
}

Ерроров нет но сообщение не появляется.
 

noBap

Участник
Сообщения
395
Реакции
169
а значение переменной cl_disablehtmlmotd у тебя какое?

Прошу прощения я слепой. Вот такая ошибка в логах:
C-подобный:
Call stack trace:
L 08/15/2017 - 17:37:38: [SM]   [0] QueryClientConVar
L 08/15/2017 - 17:37:38: [SM]   [1] Line 52, disablehtmlmotd.sp::CheckVarValue
L 08/15/2017 - 17:37:38: [SM]   [2] Line 43, disablehtmlmotd.sp::Timer_Check
 
Последнее редактирование:
A

...aDDidas...

Есть ли плагин на css v34 sm 1.4.2, который будет проверять через каждые n секунд на переменную (cl_cmdrate) и в случае неправильного значения кикать?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@noBap, ты слишком много обрезал в начале лога
 

noBap

Участник
Сообщения
395
Реакции
169
@noBap, ты слишком много обрезал в начале лога
C-подобный:
L 08/15/2017 - 14:08:56: [SM] Blaming: disablehtmlmotd.smx
L 08/15/2017 - 14:08:56: [SM] Call stack trace:
L 08/15/2017 - 14:08:56: [SM]   [0] QueryClientConVar
L 08/15/2017 - 14:08:56: [SM]   [1] Line 52, 
disablehtmlmotd.sp::CheckVarValue
L 08/15/2017 - 14:08:56: [SM]   [2] Line 43, 
disablehtmlmotd.sp::Timer_Check
L 08/15/2017 - 14:08:57: [SM] Exception reported: Client 1 is not connected
 
Последнее редактирование:

over_trax

Участник
Сообщения
1,451
Реакции
488
[csgo] ищу плагин, который бы переводит игрока за терористов как только тот зашел на сервер
 
Сверху Снизу