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

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

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

    • Pomogitemne
      От Pomogitemne
      Здравствуйте, не нашёл подходящий раздел поэтому пишу здесь. Скачал я GTA Criminal Russia закинул туда мультиплеер добавляю свой сервер и хочу к нему подключится... Вот что пишет "ошибка в файлах и показывает этот путь  C:\user\OneDrive\Документы\GTA San Andres User Files\CR-MP 0.3.7\reports\mp.txt" удалял и переустанавливал 4 раза не помогает. Что делать?