Написание плагинов

Palonez

бб братки
Сообщения
3,035
Реакции
1,839
Исправил, ошибка обновилась на:
5/03/2023 - 13:26:01: [SM] Exception reported: Invalid timer handle 966066f (error 3)
L 05/03/2023 - 13:26:01: [SM] Blaming: Shop_Random_Number_1_1.smx
L 05/03/2023 - 13:26:01: [SM] Call stack trace:
L 05/03/2023 - 13:26:01: [SM] [0] KillTimer
L 05/03/2023 - 13:26:01: [SM] [1] Line 138, D:\Desktop\��� ����������\1.11 scripting\Shop_Random_Number_1_1.sp::KillTimerEx
L 05/03/2023 - 13:26:01: [SM] [2] Line 219, D:\Desktop\��� ����������\1.11 scripting\Shop_Random_Number_1_1.sp::Say
Код:
Action KillTimerEx(Handle hTimer)
{
    if(hTimer != INVALID_HANDLE)
    {
        KillTimer(hTimer);
        hTimer = INVALID_HANDLE;
    }
}

public void OnConfigsExecuted()
{
    CreateTimer(g_Cvar_fInterval, Timer_Task, _, TIMER_FLAG_NO_MAPCHANGE);
}

public Action Timer_Task(Handle hTimer)
{
    BuildPath(Path_SM, LogPath, sizeof(LogPath), "logs/SHOP_Number_Random.log");

    int k = 0;
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && GetClientTeam(i) > 1) k++;

    if (k >= g_Cvar_iNumberPlayer)
    {
        g_iRandom = GetRandomInt(g_Cvar_iNumbersMin, g_Cvar_iNumbersMax);
        CPrintToChatAll("%t {red}Я загадал число от {green}%d {red}до {green}%d{red}, отгадай его и получи {green}%d кредитов", "Tag", g_Cvar_iNumbersMin, g_Cvar_iNumbersMax, g_Cvar_iCredits);

        KillTimerEx(g_hAnswerWaitTimer);
        g_hAnswerWaitTimer = CreateTimer(g_Cvar_fAnswerTime, Timer_Answer);
        g_iPosition = 0;
    }

    for(int i = 1; i <= MaxClients; ++i)
    {
        iLimitCount[i] = g_Cvar_iCountLimit;
    }

    CreateTimer(g_Cvar_fInterval, Timer_Task, _, TIMER_FLAG_NO_MAPCHANGE);
    return Plugin_Stop;
}

public Action Timer_Answer(Handle hTimer)
{
    CPrintToChatAll("%t Ожидание ответа окончено", "Tag");
    g_hAnswerWaitTimer = INVALID_HANDLE;

    return Plugin_Stop;
}

public Action Say(int iClient, const char[] command, int iArgs)
{
    if(g_hAnswerWaitTimer != INVALID_HANDLE && iClient && iClient <= MaxClients)
    {
        char text[16], yourtext[16];
        GetCmdArg(1, text, sizeof(text));
  
        FormatEx(yourtext, sizeof(yourtext), "%d", g_iRandom);
 
        if(IsCharNumeric(text[0]) || text[0] == '-')
        {
            if(StrEqual(text, yourtext, true) && iLimitCount[iClient] > 0)
            {
                ++g_iPosition;
                Shop_GiveClientCredits(iClient, g_Cvar_iCredits);
                CPrintToChatAll("%t {green}%N {red} угадал число и получил {green}%d{red} кредитов{default}!", "Tag", iClient, g_Cvar_iCredits);
          
                if(g_iPosition >= g_Cvar_iNumberPrizes)
                {
                    KillTimerEx(g_hAnswerWaitTimer);
                }
            }

            else
            {
                if(iLimitCount[iClient] > 0)
                {
                    --iLimitCount[iClient];
                    CPrintToChat(iClient, "%t {red}К сожалению это неправильный ответ{default}!", "Tag");

                    if (iLimitCount[iClient] < g_Cvar_iCountLimit)
                    {
                        CPrintToChat(iClient, "%t {red}У тебя осталось попыток: {green}%d{default}", "Tag", iLimitCount[iClient]);
                    }
                    else
                    {
                        CPrintToChat(iClient, "%t {red}У тебя осталось попыток: {green}%d{default}", "Tag", iLimitCount[iClient]-1);
                    }
                    if (iLimitCount[iClient] == 0)
                    {
                        CPrintToChat(iClient, "%t {red}Попытки закончились{default} ({green}лимит: {red}%d попытки{default})", "Tag", g_Cvar_iCountLimit);
                    }
                }
            }
        }
    }
 
    return Plugin_Continue;
}
Строки с ошибкой выделил
C-подобный:
if(hTimer != INVALID_HANDLE)
{
    KillTimer(hTimer);
    hTimer = INVALID_HANDLE;
}
------->
C-подобный:
if(hTimer != null)
{
    delete hTimer;
    hTimer = null;
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
Нужно нарисовать 2D квадрат на полу, куда смотрит курсор игрока (это центр квадрата).
Ну и потом по запросу определять что игрок находится в нём или нет.
Сохранить позицию (при этом рисуется квадрат видимый скольким людям?), а потом по команде определять находится ли внутри него кто-то?
 

7pElllHuK

Участник
Сообщения
1,654
Реакции
639
C-подобный:
if(hTimer != INVALID_HANDLE)
{
    KillTimer(hTimer);
    hTimer = INVALID_HANDLE;
}
------->
C-подобный:
if(hTimer != null)
{
    delete hTimer;
    hTimer = null;
}
Все-таки ошибка осталась
L 05/03/2023 - 17:55:19: [SM] Exception reported: Handle 9f406a2 is invalid (error 3)
L 05/03/2023 - 17:55:19: [SM] Blaming: Shop_Random_Number_1_1.smx
L 05/03/2023 - 17:55:19: [SM] Call stack trace:
L 05/03/2023 - 17:55:19: [SM] [0] CloseHandle
L 05/03/2023 - 17:55:19: [SM] [1] Line 127, D:\Desktop\Для компиляции\1.11 scripting\Shop_Random_Number_1_1.sp::KillTimerEx
L 05/03/2023 - 17:55:19: [SM] [2] Line 196, D:\Desktop\Для компиляции\1.11 scripting\Shop_Random_Number_1_1.sp::Say
Код:
Action KillTimerEx(Handle hTimer)
{
    if(hTimer != null)
    {
        delete hTimer;
        hTimer = null;
    }
}

public void OnConfigsExecuted()
{
    CreateTimer(g_Cvar_fInterval, Timer_Task, _, TIMER_FLAG_NO_MAPCHANGE);
}

public Action Timer_Task(Handle hTimer)
{
    BuildPath(Path_SM, LogPath, sizeof(LogPath), "logs/SHOP_Number_Random.log");

    int k = 0;
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && GetClientTeam(i) > 1) k++;

    if (k >= g_Cvar_iNumberPlayer)
    {
        g_iRandom = GetRandomInt(g_Cvar_iNumbersMin, g_Cvar_iNumbersMax);
        CPrintToChatAll("%t {red}Я загадал число от {green}%d {red}до {green}%d{red}, отгадай его и получи {green}%d кредитов", "Tag", g_Cvar_iNumbersMin, g_Cvar_iNumbersMax, g_Cvar_iCredits);

        KillTimerEx(g_hAnswerWaitTimer);
        g_hAnswerWaitTimer = CreateTimer(g_Cvar_fAnswerTime, Timer_Answer);
        g_iPosition = 0;
    }

    for(int i = 1; i <= MaxClients; ++i)
    {
        iLimitCount[i] = g_Cvar_iCountLimit;
    }

    CreateTimer(g_Cvar_fInterval, Timer_Task, _, TIMER_FLAG_NO_MAPCHANGE);
    return Plugin_Stop;
}

public Action Timer_Answer(Handle hTimer)
{
    CPrintToChatAll("%t Ожидание ответа окончено", "Tag");
    g_hAnswerWaitTimer = INVALID_HANDLE;

    return Plugin_Stop;
}


public Action Say(int iClient, const char[] command, int iArgs)
{
    if(g_hAnswerWaitTimer != INVALID_HANDLE && iClient && iClient <= MaxClients)
    {
        char text[16], yourtext[16];
        GetCmdArg(1, text, sizeof(text));
        
        FormatEx(yourtext, sizeof(yourtext), "%d", g_iRandom);
    
        if(IsCharNumeric(text[0]) || text[0] == '-')
        {
            if(StrEqual(text, yourtext, true) && iLimitCount[iClient] > 0)
            {
                ++g_iPosition;
                Shop_GiveClientCredits(iClient, g_Cvar_iCredits);
                CPrintToChatAll("%t {green}%N {red} угадал число и получил {green}%d{red} кредитов{default}!", "Tag", iClient, g_Cvar_iCredits);
                
                if(g_iPosition >= g_Cvar_iNumberPrizes)
                {
                    KillTimerEx(g_hAnswerWaitTimer);
                }
            }

            else
            {
                if(iLimitCount[iClient] > 1)
                {
                    --iLimitCount[iClient];
                    CPrintToChat(iClient, "%t {red}К сожалению это неправильный ответ{default}!", "Tag");

                    if (iLimitCount[iClient] < g_Cvar_iCountLimit)
                    {
                        CPrintToChat(iClient, "%t {red}У тебя осталось попыток: {green}%d{default}", "Tag", iLimitCount[iClient]);
                    }
                    
                    else
                    {
                        CPrintToChat(iClient, "%t {red}У тебя осталось попыток: {green}%d{default}", "Tag", iLimitCount[iClient]-1);
                    }
                }
                
                if (iLimitCount[iClient] == 0)
                {
                    --iLimitCount[iClient];
                    CPrintToChat(iClient, "%t {red}К сожалению это неправильный ответ{default}!", "Tag");
                    CPrintToChat(iClient, "%t {red}Попытки закончились{default} ({green}лимит: {red}%d попытки{default})", "Tag", g_Cvar_iCountLimit);
                }
            }
        }
    }
    
    return Plugin_Continue;
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@7pElllHuK, попробуй так:
C-подобный:
public void OnConfigsExecuted()
{
    CreateTimer(g_Cvar_fInterval, Timer_Task, _, TIMER_FLAG_NO_MAPCHANGE);
}

void KillTimerEx(Handle hTimer)
{
    if(hTimer)
    {
        CloseHandle(hTimer);
        hTimer = null;
    }
}

public Action Timer_Task(Handle hTimer)
{
    if(!LogPath[0]) BuildPath(Path_SM, LogPath, sizeof(LogPath), "logs/SHOP_Number_Random.log");

    int k = 0;
    for(int i = 1; i <= MaxClients; i++)
        if(IsClientInGame(i) && GetClientTeam(i) > 1 && ++k >= g_Cvar_iNumberPlayer)
            break;

    if (k >= g_Cvar_iNumberPlayer)
    {
        g_iRandom = GetRandomInt(g_Cvar_iNumbersMin, g_Cvar_iNumbersMax);
        CPrintToChatAll("%t {red}Я загадал число от {green}%d {red}до {green}%d{red}, отгадай его и получи {green}%d кредитов", "Tag", g_Cvar_iNumbersMin, g_Cvar_iNumbersMax, g_Cvar_iCredits);

        if(g_hAnswerWaitTimer) CloseHandle(g_hAnswerWaitTimer);
        g_hAnswerWaitTimer = CreateTimer(g_Cvar_fAnswerTime, Timer_Answer);

        g_iPosition = 0;
        if(g_Cvar_Logs == 1) LogToFileEx(LogPath, "Создано число: %d", g_iRandom);
    }

    for(int i = 1; i <= MaxClients; ++i) iLimitCount[i] = g_Cvar_iCountLimit;

    CreateTimer(g_Cvar_fInterval, Timer_Task, _, TIMER_FLAG_NO_MAPCHANGE);
    return Plugin_Stop;
}

public Action Timer_Answer(Handle hTimer)
{
    g_hAnswerWaitTimer = null;

    CPrintToChatAll("%t", "Tag", "Waiting for a response is over");
    if(g_Cvar_Logs == 1) LogToFileEx(LogPath, "Ожидание ответа окончено");

    return Plugin_Stop;
}

public Action Say(int iClient, const char[] command, int iArgs)
{
    if(g_hAnswerWaitTimer && iClient && iClient <= MaxClients)
    {
        char text[16], yourtext[16];
        GetCmdArg(1, text, sizeof(text));

        if((IsCharNumeric(text[0]) || text[0] == '-') && iLimitCount[iClient] > 0)
        {
            FormatEx(yourtext, sizeof(yourtext), "%d", g_iRandom);
            if(!strcmp(text, yourtext, true))
            {
                g_iPosition++;
                Shop_GiveClientCredits(iClient, g_Cvar_iCredits);
                CPrintToChatAll("%t {green}%N {red} угадал число и получил {green}%d{red} кредитов{default}!", "Tag", iClient, g_Cvar_iCredits);

                if(g_iPosition >= g_Cvar_iNumberPrizes) KillTimerEx(g_hAnswerWaitTimer);
            }
            else
            {
                iLimitCount[iClient]--;
                CPrintToChat(iClient, "%t {red}К сожалению это неправильный ответ{default}!", "Tag");

                if(iLimitCount[iClient] < g_Cvar_iCountLimit)
                {
                    CPrintToChat(iClient, "%t {red}У тебя осталось попыток: {green}%d{default}", "Tag", iLimitCount[iClient]);
                }
                else
                {
                    CPrintToChat(iClient, "%t {red}У тебя осталось попыток: {green}%d{default}", "Tag", iLimitCount[iClient]-1);
                }

                if(!iLimitCount[iClient])
                {
                    CPrintToChat(iClient, "%t {red}Попытки закончились{default} ({green}лимит: {red}%d попытки{default})", "Tag", g_Cvar_iCountLimit);
                }
            }
        }
    }

    return Plugin_Continue;
}
Сообщения автоматически склеены:

Exception reported: Translation string formatted incorrectly - missing at least 3 parameters (arg 4)
у тебя м/б просто кривой файл перевода
 

7pElllHuK

Участник
Сообщения
1,654
Реакции
639
@7pElllHuK, попробуй так:
C-подобный:
public void OnConfigsExecuted()
{
    CreateTimer(g_Cvar_fInterval, Timer_Task, _, TIMER_FLAG_NO_MAPCHANGE);
}

void KillTimerEx(Handle hTimer)
{
    if(hTimer)
    {
        CloseHandle(hTimer);
        hTimer = null;
    }
}

public Action Timer_Task(Handle hTimer)
{
    if(!LogPath[0]) BuildPath(Path_SM, LogPath, sizeof(LogPath), "logs/SHOP_Number_Random.log");

    int k = 0;
    for(int i = 1; i <= MaxClients; i++)
        if(IsClientInGame(i) && GetClientTeam(i) > 1 && ++k >= g_Cvar_iNumberPlayer)
            break;

    if (k >= g_Cvar_iNumberPlayer)
    {
        g_iRandom = GetRandomInt(g_Cvar_iNumbersMin, g_Cvar_iNumbersMax);
        CPrintToChatAll("%t {red}Я загадал число от {green}%d {red}до {green}%d{red}, отгадай его и получи {green}%d кредитов", "Tag", g_Cvar_iNumbersMin, g_Cvar_iNumbersMax, g_Cvar_iCredits);

        if(g_hAnswerWaitTimer) CloseHandle(g_hAnswerWaitTimer);
        g_hAnswerWaitTimer = CreateTimer(g_Cvar_fAnswerTime, Timer_Answer);

        g_iPosition = 0;
        if(g_Cvar_Logs == 1) LogToFileEx(LogPath, "Создано число: %d", g_iRandom);
    }

    for(int i = 1; i <= MaxClients; ++i) iLimitCount[i] = g_Cvar_iCountLimit;

    CreateTimer(g_Cvar_fInterval, Timer_Task, _, TIMER_FLAG_NO_MAPCHANGE);
    return Plugin_Stop;
}

public Action Timer_Answer(Handle hTimer)
{
    g_hAnswerWaitTimer = null;

    CPrintToChatAll("%t", "Tag", "Waiting for a response is over");
    if(g_Cvar_Logs == 1) LogToFileEx(LogPath, "Ожидание ответа окончено");

    return Plugin_Stop;
}

public Action Say(int iClient, const char[] command, int iArgs)
{
    if(g_hAnswerWaitTimer && iClient && iClient <= MaxClients)
    {
        char text[16], yourtext[16];
        GetCmdArg(1, text, sizeof(text));

        if((IsCharNumeric(text[0]) || text[0] == '-') && iLimitCount[iClient] > 0)
        {
            FormatEx(yourtext, sizeof(yourtext), "%d", g_iRandom);
            if(!strcmp(text, yourtext, true))
            {
                g_iPosition++;
                Shop_GiveClientCredits(iClient, g_Cvar_iCredits);
                CPrintToChatAll("%t {green}%N {red} угадал число и получил {green}%d{red} кредитов{default}!", "Tag", iClient, g_Cvar_iCredits);

                if(g_iPosition >= g_Cvar_iNumberPrizes) KillTimerEx(g_hAnswerWaitTimer);
            }
            else
            {
                iLimitCount[iClient]--;
                CPrintToChat(iClient, "%t {red}К сожалению это неправильный ответ{default}!", "Tag");

                if(iLimitCount[iClient] < g_Cvar_iCountLimit)
                {
                    CPrintToChat(iClient, "%t {red}У тебя осталось попыток: {green}%d{default}", "Tag", iLimitCount[iClient]);
                }
                else
                {
                    CPrintToChat(iClient, "%t {red}У тебя осталось попыток: {green}%d{default}", "Tag", iLimitCount[iClient]-1);
                }

                if(!iLimitCount[iClient])
                {
                    CPrintToChat(iClient, "%t {red}Попытки закончились{default} ({green}лимит: {red}%d попытки{default})", "Tag", g_Cvar_iCountLimit);
                }
            }
        }
    }

    return Plugin_Continue;
}
Сообщения автоматически склеены:


у тебя м/б просто кривой файл перевода
Не помогло,
L 05/03/2023 - 18:23:17: [SM] Exception reported: Handle 92706a2 is invalid (error 1)
L 05/03/2023 - 18:23:17: [SM] Blaming: Shop_Random_Number_1_1.smx
L 05/03/2023 - 18:23:17: [SM] Call stack trace:
L 05/03/2023 - 18:23:17: [SM] [0] CloseHandle
L 05/03/2023 - 18:23:17: [SM] [1] Line 132, D:\Desktop\��� ����������\1.11 scripting\Shop_Random_Number_1_1.sp::KillTimerEx
L 05/03/2023 - 18:23:17: [SM] [2] Line 188, D:\Desktop\��� ����������\1.11 scripting\Shop_Random_Number_1_1.sp::Say
Строки с ошибкой те же что и были
Сообщения автоматически склеены:

у тебя м/б просто кривой файл перевода
Это уже исправил
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@7pElllHuK, дай весь код плагина или ссыль на сообщение с исходником.

@Mr_panica, вот этот код будет рисовать квадрат в горизонтальной плоскости вокруг точки куда смотрит игрок (чужие квадраты игрок видеть не будет):
 

Вложения

  • beam_square.sp
    2 КБ · Просмотры: 29

7pElllHuK

Участник
Сообщения
1,654
Реакции
639

Вложения

  • Shop_Random_Number_1_1.sp
    7.3 КБ · Просмотры: 16

Mr_panica

XenForo one 💖
Сообщения
1,007
Реакции
509
@Mr_panica, вот этот код будет рисовать квадрат в горизонтальной плоскости вокруг точки куда смотрит игрок (чужие квадраты игрок видеть не будет):

Премного благодарен, чуть позже проверю у себя.
 

DarkerZ

Участник
Сообщения
466
Реакции
214
попробуй
C-подобный:
KillTimerEx(g_hAnswerWaitTimer);
->
C-подобный:
delete g_hAnswerWaitTimer;
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@Mr_panica, плагин по команде админа sm_set_point создаёт квадрат в точке куда он смотрит (если квадрат уже существует, то имеющийся перемещается).
В конце раунда квадрат убирается (если это не нужно, то можно просто убрать код отвечающий за отлов события round_end).
Одновременно может существовать только один квадрат (админы могут мешать друг-другу).

Командой sm_check_point производится проверка находится ли в квадрате кто-то. Если кто-то там есть, то об этом выводится сообщение в чат.
Если до вызова этой команды квадрат не был создан, то в чат админу выводится предупреждение об этом.

Размер стороны квадрата задаётся в строке 10, цвет границ - на строке 11.
 

Вложения

  • sm_square.sp
    3.2 КБ · Просмотры: 25

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254

Вложения

  • Shop_Random_Number 1.1_fix.sp
    6.7 КБ · Просмотры: 20

Mr_panica

XenForo one 💖
Сообщения
1,007
Реакции
509
@Mr_panica, плагин по команде админа sm_set_point создаёт квадрат в точке куда он смотрит (если квадрат уже существует, то имеющийся перемещается).
В конце раунда квадрат убирается (если это не нужно, то можно просто убрать код отвечающий за отлов события round_end).
Одновременно может существовать только один квадрат (админы могут мешать друг-другу).

Командой sm_check_point производится проверка находится ли в квадрате кто-то. Если кто-то там есть, то об этом выводится сообщение в чат.
Если до вызова этой команды квадрат не был создан, то в чат админу выводится предупреждение об этом.

Размер стороны квадрата задаётся в строке 10, цвет границ - на строке 11.
Хмм, не работает, если сделать небольшой дебаг в функции ShowSquare(), то выводит что все четыре точки имеют одну координату (не нулевую)
1683132277128.png


C-подобный:
void ShowSquare()
{
    SendBeam(fCorners[0], fCorners[1]);
    SendBeam(fCorners[1], fCorners[2]);
    SendBeam(fCorners[2], fCorners[3]);
    SendBeam(fCorners[3], fCorners[0]);

    PrintToChatAll("%f %f %f %f", fCorners[0],fCorners[1],fCorners[2],fCorners[3]);
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@Mr_panica, попробуй в строке 70 убрать знак -: чтобы получилось min[0] = min[1] = fOffset;
C-подобный:
public Action Cmd_Set(int client, int args)
{
    if(client)
    {
        float pos[3], vec[3];
        GetClientEyePosition(client, pos);
        GetClientEyeAngles(client, vec);

        Handle trace = TR_TraceRayFilterEx(pos, vec, MASK_SHOT, RayType_Infinite, FilterPlayer);
        if(TR_DidHit(trace))
        {
            TR_GetEndPosition(pos, trace);

            vec[0] = vec[1] = fOffset, vec[2] = 0.0;
            SubtractVectors(pos, vec, fCorners[0]);
            AddVectors(pos, vec, fCorners[2]);

            fCorners[1] = fCorners[0];
            fCorners[1][0] = fCorners[2][0];

            fCorners[3] = fCorners[0];
            fCorners[3][1] = fCorners[2][1];

            bSaved = true;
            ShowSquare();
            CreateTimer(1.0, Timer_Square);
        }

        CloseHandle(trace);
    }

    return Plugin_Handled;
}
 

7pElllHuK

Участник
Сообщения
1,654
Реакции
639
Ошибок нет, работает правильно, но не выводит почему-то текст о том что ожидание ответов окончено
Блок что не работает:
public Action Timer_Answer(Handle timer)
{
    g_hAnswerWaitTimer = null;

    CPrintToChatAll("%t Ожидание ответов окончено", "Tag");

    return Plugin_Stop;
}
 

Mr_panica

XenForo one 💖
Сообщения
1,007
Реакции
509
@Mr_panica, попробуй в строке 70 убрать знак -: чтобы получилось min[0] = min[1] = fOffset;
Да, всё отлично сработало, функция проверки игроков в квадрате тоже.
Правда, я так понял, что нет ограничений по высоте при проверке, но вроде не страшно.

1683133767294.png
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@7pElllHuK, значения кваров shop_number_interval и shop_number_answer_time какие хоть у тебя в cfg/sourcemod/shop/Shop_Number_Random.cfg?
Сообщения автоматически склеены:

нет ограничений по высоте при проверке
Так и есть.
Можно задать и ограничения по высоте, если сильно нужно.
 

7pElllHuK

Участник
Сообщения
1,654
Реакции
639
@7pElllHuK, значения кваров shop_number_interval и shop_number_answer_time какие хоть у тебя в cfg/sourcemod/shop/Shop_Number_Random.cfg?
shop_number_interval "30.0"
shop_number_answer_time "30.0"
Уже проверял на этих настройках, все выводилось. С начала писало о том что время вышло, следом генерировало новое число
Сообщения автоматически склеены:

Поменял время и все заработало как надо, спасибо большое. Отдельная благодарность за сокращение кода
 
Последнее редактирование:
Сверху Снизу