В теме 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 пользователей онлайн

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

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

    • ВасилийСталин
      От ВасилийСталин
      50% СКИДКА РОВНО 3 ДНЯ, ДО: 25.09.2025. 12:00 ПО МСК
       
       
      Здравствуйте уважаемые форумчане!
      Выкладываю на продажу мод написанный с нуля Fox rp. Мод имеет много красивого 3д маппинга, систем по типу квестов, динамического текста над актерами во время общения с ними, система загрязнения транспорта (имеется маппинг автомойки) мод подходит под основу и нуждается в доработках.
      В комплекте с модом вы получаете:
      1. Игровую сборку в которую входит:
      1.1. AVF плагин
      1.2. Приватные модели авто и скинов
      1.3. Под все транспортные средства были реалистично изменены настройки скорости и физика авто
      1.4. Изменены звуки
      !!! Чтобы скачать сборку нужно открыть txt файл в папке с модом там будет ссылка на сборку
      2. Игровой мод:
      2.1. Мод
      2.2. cef. Уже подключен на веб хостинг при необходимости можно заменить
      Мод будет дорабатываться и опубликовываться на этом форуме, ценник будет выше но если купите мод то доплачивать не придется, сможете сразу скачать новую версию.
       
      Связь: vk.com/nastelectric
       
    • ВасилийСталин
      От ВасилийСталин


      Скачать файл Fox rp | Уникальный мод с 0 под открытие | СКИДКА 50%
      50% СКИДКА РОВНО 3 ДНЯ, ДО: 25.09.2025. 12:00 ПО МСК
       
       
      Здравствуйте уважаемые форумчане!
      Выкладываю на продажу мод написанный с нуля Fox rp. Мод имеет много красивого 3д маппинга, систем по типу квестов, динамического текста над актерами во время общения с ними, система загрязнения транспорта (имеется маппинг автомойки) мод подходит под основу и нуждается в доработках.
      В комплекте с модом вы получаете:
      1. Игровую сборку в которую входит:
      1.1. AVF плагин
      1.2. Приватные модели авто и скинов
      1.3. Под все транспортные средства были реалистично изменены настройки скорости и физика авто
      1.4. Изменены звуки
      !!! Чтобы скачать сборку нужно открыть txt файл в папке с модом там будет ссылка на сборку
      2. Игровой мод:
      2.1. Мод
      2.2. cef. Уже подключен на веб хостинг при необходимости можно заменить
      Мод будет дорабатываться и опубликовываться на этом форуме, ценник будет выше но если купите мод то доплачивать не придется, сможете сразу скачать новую версию.
       
      Связь: vk.com/nastelectric
       
      Добавил ВасилийСталин Добавлено 14.08.2025 Категория Моды Автор Abeme  
    • Senwik
      От Senwik
      Всем здравствуйте, я тут решил сделать свой крмп сервер, и у меня возник вопрос, где можно достать кэш для лаунчера и сервера, как настроить лаунчер, чтоб кэш скачивался в нужное место и игра могла нормально работать. 
      P.S. Если подскажете, где можно прочитать по данной теме, то будет вообще класс, всем бобра