CreatorTimer error 100

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Здравствуйте народ, скажите sourcemod издевается?
Он выдает мне ошибку при компиляции error 100, знаю что это пропущенный аргумент, но по факту нет.
Строка 12*

Код:
public Plugin myinfo =
{
    name = "Arena Knife for awp_lego_2_arena_knife",
    author = "KiKiEEKi",
    version = "1.0"
};

#include <sdktools_functions>

public void OnMapStart()
{
    CreateTimer(1.0, Start, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}

public Action Start(Handle hTimer, Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"))
    float f_UserPos[3];
    f_UserPos[0] = GetEventFloat(event, "x");
    f_UserPos[1] = GetEventFloat(event, "y");
    f_UserPos[2] = GetEventFloat(event, "z");
    float f_Point = 300.0;
    int i_Weapon0 = GetPlayerWeaponSlot(client, 0);
    int i_Weapon1 = GetPlayerWeaponSlot(client, 1);
    char c_Buffer[64];
    GetCurrentMap(c_Buffer, 22);
    int iCount;
    int i;
    if(c_Buffer[3] == '_' && c_Buffer[9] == '2' && c_Buffer[17] == 'a')
    {
        for (i = 1; i <= MaxClients; i++) //проходим всех игроков
        {
            GetClientAbsOrigin(client, f_UserPos); //получаем позицию игрока
            if (f_UserPos[2] >= f_Point && IsClientInGame(client) && IsPlayerAlive(client))
            {
                RemovePlayerItem(client, i_Weapon0);
                RemovePlayerItem(client, i_Weapon1);
            }
        }
        ++iCount;
    }

    if(iCount == 0) //eсли нет игроков
    {
        return Plugin_Stop; //останавливаем таймер
    }

    return Plugin_Continue; //позволяем таймеру выполнятся дальше
}
 
Последнее редактирование:

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #2
error 100, знаю что это пропущенный аргумент
1614322810140.png

Ну вообще-то компилятор прямо говорит, что "прототип переданной функции не совпадает с ожидаемым".
И если посмотреть на код, можно действительно увидеть, что зачем-то в функции таймера ожидаются ещё 3 аргумента, которые SM не сможет вообще никак передать.

Прототип функции должен выглядеть как public Action Start(Handle hTimer), только в таком случае оно соберётся.
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
@xstage, Надеялся что прокатит =)

Как же мне сделать проверку каждую секунду что бы проверял выше игрок находится определенной высоты или нет?
 

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
Лмао конечно, ну и код) Проорал, ор выше крыши просто)
Строка 31-39 - твой код. Только везде client на i заменить, мде)
Сообщения автоматически склеены:

P.S. Логику надо включать, тут же всё понятно
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
Как-то так:
//#include <sdktools_entinput>    // раскомментировать, если нужно удаление оружия
#include <sdktools_functions>

public void OnMapStart()
{
    char map[24];
    GetCurrentMap(map, sizeof(map));
    if(!strcmp(map, "awp_lego_2_arena_knife"))
        CreateTimer(1.0, Timer_CheckAltitude, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}

public Action Timer_CheckAltitude(Handle timer)
{
    static float pos[3];
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && IsPlayerAlive(i))
    {
        GetClientAbsOrigin(i, pos);
        if(pos[2] < 300) continue;

        StripWeapon(i, 0);
        StripWeapon(i, 1);
    }
}

stock void StripWeapon(int client, int slot)
{
    static int wpn;
    if((wpn = GetPlayerWeaponSlot(client, slot)) == -1) return;

    RemovePlayerItem(client, wpn);
//    AcceptEntityInput(wpn, "Kill");    // раскомментировать, если нужно удаление оружия
}
 
Сверху Снизу