В теме 1 сообщение

Администратор запускает гонку /startrace и через 2 минуты начинается гонка. В конце гонки пишет, кто каким пришел. Игрок пришедший первым - получает 30.000р, второй - 20.000р, третий - 10.000р. Сумму можете изменить в дефайнах. Если вы хотите выдавать приз за места, то в #define PRIZE значение поставьте на 1, если нет оставьте по умолчанию (0). Также, администратор может в любой момент остановить гонку - /stoprace

Ко всем #define / в начало мода:

#define RolikiMesto_1   30000
#define RolikiMesto_2   20000
#define RolikiMesto_3   10000 
#define PRIZE 0

Ко всем new (можно после #define):

new RolikiPos = 0;
new RolikiGonkaIdet = 0;
new RolikCheckpoint[MAX_PLAYERS];
new TimeBeforeRolikStart = -1;
new Float:GonkaNaRolikax[10][3] = {
{1707.0135,-760.7014,52.4240},
{1698.2628,-486.6554,50.5412},
{1499.1722,-424.8036,34.0544},
{1273.3207,-605.4467,101.9943},
{929.7842,-674.3187,118.4844},
{1037.2098,-782.0674,104.0520},
{1370.2609,-934.4410,34.1875},
{1343.0232,-1143.7323,23.6696},
{798.5080,-1149.0479,23.9775},
{664.5610,-1313.6588,13.4609}};

В OnPlayerConnect:

RolikCheckpoint[playerid] = -1;

В OnPlayerCommandText:
 

if(!strcmp(cmd, "/startrace", true))
{
    if(PlayerInfo[playerid][pAdmin] <= 6) return 1;
    RolikiPos = 1;
    RolikiGonkaIdet = 1;
    for(new id = 0; id < MAX_PLAYERS; id ++)
    {
        SetPlayerCheckpoint(id,GonkaNaRolikax[0][0],GonkaNaRolikax[0][1],GonkaNaRolikax[0][2],3);
        RolikCheckpoint[id] = 0;
    }
    SendClientMessageToAll(COLOR_WHITE,"Администратор начинает гонку на роликах!");
    return 1;
}
if(!strcmp(cmd, "/stoprace", true))
{
    if(PlayerInfo[playerid][pAdmin] <= 6) return 1;
    RolikiPos = 0;
    RolikiGonkaIdet = 0;
    for(new id = 0; id < MAX_PLAYERS; id ++)
    {
        if(RolikCheckpoint[id] != -1)
        {
            RolikCheckpoint[id] = -1;
            DisablePlayerCheckpoint(id);
        }
    }
    SendClientMessageToAll(COLOR_WHITE,"Администратор заканчивает гонку на роликах!");
    return 1;
}

В OnPlayerEnterCheckpoint:

if(RolikCheckpoint[playerid] != -1)
{
    if(GetPlayerSkin(playerid) != 92 && GetPlayerSkin(playerid) != 99) return SendClientMessage(playerid,COLOR_GREY,"На тебе нет роликов!");
    else if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_GREY,"Жульничать нехорошо! Вылазь из транспортного средства!");
    else if(RolikiGonkaIdet == 0)
    {
        RolikCheckpoint[playerid] = -1;
        DisablePlayerCheckpoint(playerid);
    }
    else if(RolikCheckpoint[playerid] < 9 && TimeBeforeRolikStart < 1)
    {
        if(RolikCheckpoint[playerid] == 0 && TimeBeforeRolikStart == -1)
        {
            SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 2 минуты");
            TimeBeforeRolikStart = 120;
            return 1;
        }
        RolikCheckpoint[playerid] ++;
        SetPlayerCheckpoint(playerid,GonkaNaRolikax[RolikCheckpoint[playerid]][0],GonkaNaRolikax[RolikCheckpoint[playerid]][1],GonkaNaRolikax[RolikCheckpoint[playerid]][2],3);
    }
    else if(RolikCheckpoint[playerid] == 9)
    {
        #if PRIZE == 1
        if(RolikiPos == 1) GivePlayerMoney(playerid,RolikiMesto_1);
        else if(RolikiPos == 2) GivePlayerMoney(playerid,RolikiMesto_2);
        else if(RolikiPos == 3) GivePlayerMoney(playerid,RolikiMesto_3);
        #else
        SendClientMessage(playerid, -1, "Выдача денег отключена в настройках!");
        #endif
        DisablePlayerCheckpoint(playerid);
        format(string,sizeof(string),"%s пришел %d в гонке на роликах",name,RolikiPos);
        SendClientMessageToAll(COLOR_YELLOW,string);
        RolikiPos ++;
        RolikCheckpoint[playerid] = -1;
    }
} 

В секундный таймер:

if(TimeBeforeRolikStart > 0)
{
    TimeBeforeRolikStart --;
    switch(TimeBeforeRolikStart)
    {
        case 110: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 1:50");
        case 100: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 1:40");
        case 90: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 1:30");
        case 80: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 1:20");
        case 70: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 1:10");
        case 60: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 1:00");
        case 50: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 0:50");
        case 40: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 0:40");
        case 30: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 0:30");
        case 20: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 0:20");
        case 10: SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах начнется через 0:10");
        case 0:
        {
            TimeBeforeRolikStart = -1;
            SendClientMessageToAll(COLOR_WHITE,"Гонка на роликах началась!");
            for(new i = 0; i < MAX_PLAYERS; i++)
            {
                if(RolikCheckpoint[i] != -1)
                {
                    if(IsPlayerInRangeOfPoint(i,8.0,GonkaNaRolikax[0][0],GonkaNaRolikax[0][1],GonkaNaRolikax[0][2]))
                    {
                        SetPlayerCheckpoint(i,GonkaNaRolikax[1][0],GonkaNaRolikax[1][1],GonkaNaRolikax[1][2],3);
                        RolikCheckpoint[i] = 1;
                    }
                    else
                    {
                        RolikCheckpoint[i] = -1;
                        DisablePlayerCheckpoint(i);
                    }
                }
            }
        }
    }
}

Автор: неизвестен.

Усовершенствовал: @vlad и Roman.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Sten Developer
      От Sten Developer
      Объясню всю ситуацию, пишу систему смерти игрока но она не работает. Решил по приколу написать туда обычный вывод текста SCM(playerid, COLOR_RED, "Вы умерли");
      Но однако после смерти текст не выводиться. Не работает абсолютно все. Кто знает как решить эту проблему?