1 post in this topic

Администратор запускает гонку /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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Jose
      By Jose
      Добрый день, хочу рассказать про хостинг игровых серверов https://hostfy.ru
       
      • Игровой сервер в один клик!
      • Панель управления сервером;
      • Базу данных MySQL
      • Системы управления банами: AmxBans, СS:Bans, SourceBans;
      • Системы статистики сервера: CsStats, AStats;
      • Надежную защиту от DDOS-атак;
      • Пополнение баланса без комиссии! 0%
      • CS GO
      • CS 1.6
      • CS: Source
      • CS: Source v34
      • GTA: SAMP
      • GTA: CRMP
      • GTA: RAGE MP
      • Minecraft
       
      У нас Вы можете заказать хостинг игровых серверов множества игр, по самым адекватным ценам в интернете.
       
       
       
    • Mason
      By Mason
      Всем привет задаюсь один вопросом как сделать так чтобы отображалось московское время в тексте в маппинге
      SetDynamicObjectMaterialText(mapping, 0, "%d:%d", 130, "Tahoma", 190, 0, 0xFFFFFFFFFF00FF00, 0, 1); Как сделать так чтобы в тексте было время по москве?