Sign in to follow this  
Followers 0

Система автошколы (с Astera RP - вырезка)

2 posts in this topic

Guest stibs
Новичок

Внимание! Система писалась для конкретного мода и может не подойти именно на ваш! Подгоняйте переменные и все остальное под себя. Если совсем все туго, создавайте тему с просьбой о помощи в специальном разделе.

Ко всем переменным (new):

new Practice[MAX_PLAYERS];
new PracticeCheckPoint[MAX_PLAYERS];
new DrivingTest[MAX_PLAYERS];
new Vopros1[MAX_PLAYERS];
new Vopros2[MAX_PLAYERS];
new Vopros3[MAX_PLAYERS];
new Vopros4[MAX_PLAYERS];
new Vopros5[MAX_PLAYERS];
new Owibka[MAX_PLAYERS];
new Scul[2];

В OnPlayerConnect:
 

Owibka[playerid] = 0;
Practice[playerid] = 0;
DrivingTest[playerid] = 0;
PracticeCheckPoint[playerid] = 0;

Добавляем машины автошколы в OnGameModeInit:

Scul[0] = AddStaticVehicleEx(516,1919.9209,2222.1807,15.5879,0.0995,3,3,180);
AddStaticVehicleEx(516,1916.3838,2222.4321,15.5890,359.1009,3,3,180);
AddStaticVehicleEx(516,1912.5819,2222.6504,15.5919,359.6546,3,3,180);
AddStaticVehicleEx(516,1909.1499,2222.9431,15.5876,359.1221,3,3,180);
AddStaticVehicleEx(516,1905.5819,2223.1887,15.5888,359.9140,3,3,180);
Scul[1] = AddStaticVehicleEx(516,1901.7316,2223.3223,15.5898,0.3173,3,3,180);

В паблик OnPlayerStateChange:
 

if(newstate == PLAYER_STATE_DRIVER)
{
    if(newcar >= Scul[0] && newcar <= Scul[1])
    {
        if(Practice[playerid] == 1)
        {
            SCM(playerid, COLOR_YELLOW, "_____________________ Практика _____________________");
            SCM(playerid, COLOR_WHITE, "Следуйте по красным маркерам на радаре чтобы сдать практику.");
            SCM(playerid, COLOR_WHITE, "Не забудьте пристегнуть ремень безопасности /sb.");
            SCM(playerid, COLOR_WHITE, "Не выходите из машины иначе практика будет провалено.");
            SCM(playerid, COLOR_WHITE, "Езжайте осторожно, если вы поцарапаете машину вы провалите экзамен.");
            SCM(playerid, COLOR_YELLOW, "____________________________________________________");
            SetPlayerCheckpoint(playerid,1889.2778,2234.1060,16.0040, 5.0);
            PracticeCheckPoint[playerid] = 1;
        }
        else
        {
            SCM(playerid,COLOR_GREY,"У вас нет ключей от этого транспорта");
            TogglePlayerControllable(playerid,1);
            RemovePlayerFromVehicle(playerid);
        }
    }
}

В public OnPlayerCommandText:
 

if(strcmp(cmd, "/test", true) == 0)
{
    if(!PlayerToPoint(1.5, playerid, -2037.0017,-105.1214,1034.3906)) return 1;
    if(Account[playerid][pCarLic] == 1) return SCM(playerid, COLOR_WHITE, "У Вас уже есть права категории 'B'");
    if(DrivingTest[playerid] == 1) return SCM(playerid, COLOR_WHITE, "Вы уже сдаёте на права категории 'B'");
    if(GPVI(playerid,"nesdal") == 1)
    {
        SCM(playerid, COLOR_RED, "Вы провалили экзамен.");
        SCM(playerid, COLOR_RED, "(( Приходите после зарплаты ))");
            return 1;
    }
    DrivingTest[playerid] = 1;
    SCM(playerid, COLOR_GREEN, "_____________Теория_____________");
    SCM(playerid, COLOR_GREY, "Вам будет задано несколько вопросов.");
    SCM(playerid, COLOR_GREY, "У вас есть право на 1 ошибку.");
    SPD(playerid,927,DIALOG_STYLE_LIST,"Вопрос: Максимальная скорость в городе?","1) Безопасная,чтобы справлялся с управлением\
    \n2) Жать на газ пока поршня не вылетят\n3) Такая что б полиция не догнала","Ок","Отмена");
    Vopros1[playerid] = 1;
    return 1;
}

В public OnPlayerEnterCheckpoint:
 

Спойлер

if(PracticeCheckPoint[playerid] > 0)
{
    if(PracticeCheckPoint[playerid] == 1)
    {
        if(GPVI(playerid, "SB") == 1)
        {
            SetPlayerCheckpoint(playerid, 1797.8270,2247.0034,16.9920, 3.0);//2
            PracticeCheckPoint[playerid] = 2;
            return 1;
        }
        else
        {
            SCM(playerid, COLOR_RED, "Вы не пристегнули ремень безопасности и провалили практику.");
            SCM(playerid, COLOR_RED, "Попробуйте снова сдать теорию в автошколе.");
            Practice[playerid] = 0;
            PracticeCheckPoint[playerid] = 0;
            DrivingTest[playerid] = 0;
            DisablePlayerCheckpoint(playerid);
            SetVehicleToRespawn(GetPlayerVehicleID(playerid));
        }
    }
    if(PracticeCheckPoint[playerid] == 2)
    {
        SetPlayerCheckpoint(playerid, 1908.1039,2052.9314,15.9263, 3.0);
        PracticeCheckPoint[playerid] = 3;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 3)
    {
        SetPlayerCheckpoint(playerid, 1848.2344,1498.4281,12.6391, 3.0);
        PracticeCheckPoint[playerid] = 4;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 4)
    {
        SetPlayerCheckpoint(playerid, 1041.5515,1473.5098,15.0932, 3.0);
        PracticeCheckPoint[playerid] = 5;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 5)
    {
        SetPlayerCheckpoint(playerid, 656.1765,636.5925,12.0506, 3.0);
        PracticeCheckPoint[playerid] = 6;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 6)
    {
        SetPlayerCheckpoint(playerid, -372.1881,1003.1800,12.0517, 3.0);
        PracticeCheckPoint[playerid] = 7;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 7)
    {
        SetPlayerCheckpoint(playerid, -438.6775,1237.0791,17.7356, 3.0);
        PracticeCheckPoint[playerid] = 8;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 8)
    {
        SetPlayerCheckpoint(playerid, -203.6522,1308.8531,12.7704, 3.0);
        PracticeCheckPoint[playerid] = 9;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 9)
    {
        SetPlayerCheckpoint(playerid, -442.8351,1237.6234,17.7328, 3.0);
        PracticeCheckPoint[playerid] = 10;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 10)
    {
        SetPlayerCheckpoint(playerid, -282.6900,592.6821,12.0468, 3.0);
        PracticeCheckPoint[playerid] = 11;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 11)
    {
        SetPlayerCheckpoint(playerid, 260.4853,776.8288,12.0520, 3.0);
        PracticeCheckPoint[playerid] = 12;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 12)
    {
        SetPlayerCheckpoint(playerid, 766.1874,770.4833,12.1086, 3.0);
        PracticeCheckPoint[playerid] = 13;
        return 1;
    }
    if(PracticeCheckPoint[playerid] == 13)
    {
        new Float:health;
        GetVehicleHealth(GetPlayerVehicleID(playerid), health);
        if(health > 950)
        {
            SCM(playerid, COLOR_WHITE, "[Инструктор]: Вы успешно сдали практику.");
            SCM(playerid, COLOR_WHITE, "[Инструктор]: Вот Ваши права категории 'А,В,С,D,E'");
            SCM(playerid, COLOR_WHITE, "[Инструктор]: Выходите из машины, досвидания.");
            Account[playerid][pMotoLic] = 1;
            Account[playerid][pCarLic] = 1;
            Account[playerid][pTruckLic] = 1;
            Account[playerid][pBusLic] = 1;
            SavePlayer(playerid);
            SetVehicleToRespawn(GetPlayerVehicleID(playerid));
            Practice[playerid] = 0;
            PracticeCheckPoint[playerid] = 0;
            DisablePlayerCheckpoint(playerid);
            return 1;
        }
        else
        {
            SCM(playerid, COLOR_WHITE, "[Инструктор]: Вы разбили машину и не сдали практику.");
            SCM(playerid, COLOR_WHITE, "[Инструктор]: Также Вы должны заплатить 200р за починку авто.");
            SCM(playerid, COLOR_WHITE, "[Инструктор]: Потренируйтесь ещё и приходите позже (после зарплаты)");
            eGivePlayerMoney(playerid,-200);
            Practice[playerid] = 0;
            PracticeCheckPoint[playerid] = 0;
            DrivingTest[playerid] = 0;
            SavePlayer(playerid);
            SPVI(playerid,"nesdal",1);
            DisablePlayerCheckpoint(playerid);
        }
    }
}

 

В паблик OnDialogResponse:

Спойлер

if(dialogid == 927)//Вопросы пдд
{
    if(!response) return 1;
    if(DrivingTest[playerid] > 0)
    {
        if(Vopros1[playerid] == 1)
             {
                  if(listitem == 0)
                  {
                EmptyMessages(playerid, 5);
                      SCM(playerid, COLOR_GREEN,"Верно. Следующий вопрос");
                      ShowPlayerDialog(playerid,927,DIALOG_STYLE_LIST,"Вопрос: Максимальная скорость на автомагистрелях?","1) Гнать, гнать и гнать\
                \n2) Безопасная, чтобы справлялся с управлением\n3) Чтобы радар не успел засеч","Ок","Отмена");
                      Vopros1[playerid] = 0;
                      Vopros2[playerid] = 1;
                      return 0;
                  }
                  else
                  {
                  if(Owibka[playerid] == 1)
                  {
                    SCM(playerid, COLOR_RED,"Вы провалили экзамен. (( Приходите после зарплаты ))");
                        DrivingTest[playerid] = 0;
                        Vopros1[playerid] = 0;
                         Vopros2[playerid] = 0;
                    Vopros3[playerid] = 0;
                    Vopros4[playerid] = 0;
                    Vopros5[playerid] = 0;
                        Owibka[playerid] = 0;
                        TogglePlayerControllable(playerid, 1);
                        return 0;
                  }
                  else
                  {
                    Owibka[playerid] = 1;
                    SCM(playerid, COLOR_RED,"Не Верно.");
                    SCM(playerid, COLOR_RED,"Ещё 1 одна ошибка и Вы провалите тест");
                    ShowPlayerDialog(playerid,927,DIALOG_STYLE_LIST,"Вопрос: Максимальная скорость на автомагистрелях?","1) Гнать, гнать и гнать\
                    \n2) Безопасная, чтобы справлялся с управлением\n3) Чтобы радар не успел засеч","Ок","Отмена");
                    return 0;
                  }
                  }
             }
        if(Vopros2[playerid] == 1)
        {
            if(listitem == 1)
            {
                EmptyMessages(playerid, 5);
                      SCM(playerid, COLOR_GREEN,"Верно. Следующий вопрос");
                      ShowPlayerDialog(playerid,927,DIALOG_STYLE_LIST,"Вопрос: На какой свет светофора можно ехать?","1) Чёрный\n2) Красный\n3) Зелёный","Ок","Отмена");
                      Vopros2[playerid] = 0;
                      Vopros3[playerid] = 1;
                      return 0;
            }
            else
            {
                if(Owibka[playerid] == 1)
                      {
                    SCM(playerid, COLOR_RED,"Вы провалили экзамен. (( Приходите после зарплаты ))");
                        DrivingTest[playerid] = 0;
                        Vopros1[playerid] = 0;
                         Vopros2[playerid] = 0;
                    Vopros3[playerid] = 0;
                    Vopros4[playerid] = 0;
                    Vopros5[playerid] = 0;
                        Owibka[playerid] = 0;
                        TogglePlayerControllable(playerid, 1);
                        return 0;
                      }
                      else
                      {
                    Owibka[playerid] = 1;
                    SCM(playerid, COLOR_RED,"Не Верно.");
                    SCM(playerid, COLOR_RED,"Ещё 1 одна ошибка и Вы провалите тест");
                    ShowPlayerDialog(playerid,927,DIALOG_STYLE_LIST,"Вопрос: На какой свет светофора можно ехать?","1) Чёрный\n2) Красный\n3) Зелёный","Ок","Отмена");
                    return 0;
                      }
            }
        }
        if(Vopros3[playerid] == 1)
        {
            if(listitem == 2)
            {
                EmptyMessages(playerid, 5);
                      SCM(playerid, COLOR_GREEN,"Верно. Следующий вопрос");
                      ShowPlayerDialog(playerid,927,DIALOG_STYLE_LIST,"Что вы сделаете если увидите взади машину со спец.маячками/сиренами.","1) Остановлюсь и растреляю их\n2) Прижмусь в крайний ряд и поеду прямо сбросив скорость\n3) Дам газу чтобы не мешали мне","Ок","Отмена");
                      Vopros3[playerid] = 0;
                      Vopros4[playerid] = 1;
                      return 0;
            }
            else
            {
                if(Owibka[playerid] == 1)
                      {
                    SCM(playerid, COLOR_RED,"Вы провалили экзамен. (( Приходите после зарплаты ))");
                        DrivingTest[playerid] = 0;
                        Vopros1[playerid] = 0;
                         Vopros2[playerid] = 0;
                    Vopros3[playerid] = 0;
                    Vopros4[playerid] = 0;
                    Vopros5[playerid] = 0;
                        Owibka[playerid] = 0;
                        TogglePlayerControllable(playerid, 1);
                        return 0;
                      }
                      else
                      {
                    Owibka[playerid] = 1;
                    SCM(playerid, COLOR_RED,"Не Верно.");
                    SCM(playerid, COLOR_RED,"Ещё 1 одна ошибка и Вы провалите тест");
                    ShowPlayerDialog(playerid,927,DIALOG_STYLE_LIST,"Вопрос: Что вы сделаете если увидите взади машину со спец.маячками/сиренами.","1) Остановлюсь и растреляю их\n2) Прижмусь в крайний ряд и поеду прямо сбросив скорость\n3) Дам газу чтобы не мешали мне","Ок","Отмена");
                    return 0;
                      }
            }
        }
        if(Vopros4[playerid] == 1)
        {
            if(listitem == 1)
            {
                EmptyMessages(playerid, 5);
                      SCM(playerid, COLOR_GREEN,"Верно. Следующий вопрос");
                      ShowPlayerDialog(playerid,927,DIALOG_STYLE_LIST,"Вопрос: Водитель обгоняемого автомобиля обязан","1) Забить стрелку лехачу\
                \n2) Не дать себя обогнать уроду\n3) Двигаться с прежней или меньшей скоростью","Ок","Отмена");
                      Vopros4[playerid] = 0;
                      Vopros5[playerid] = 1;
                      return 0;
            }
            else
               {
                if(Owibka[playerid] == 1)
                      {
                    SCM(playerid, COLOR_RED,"Вы провалили экзамен. (( Приходите после зарплаты ))");
                        DrivingTest[playerid] = 0;
                        Vopros1[playerid] = 0;
                         Vopros2[playerid] = 0;
                    Vopros3[playerid] = 0;
                    Vopros4[playerid] = 0;
                    Vopros5[playerid] = 0;
                        Owibka[playerid] = 0;
                        TogglePlayerControllable(playerid, 1);
                        return 0;
                      }
                      else
                      {
                    Owibka[playerid] = 1;
                    SCM(playerid, COLOR_RED,"Не Верно.");
                    SCM(playerid, COLOR_RED,"Ещё 1 одна ошибка и Вы провалите тест");
                    ShowPlayerDialog(playerid,927,DIALOG_STYLE_LIST,"Вопрос: Водитель обгоняемого автомобиля обязан","1) Забить стрелку лехачу\
                    \n2) Не дать себя обогнать уроду\n3) Двигаться с прежней или меньшей скоростью","Ок","Отмена");
                    return 0;
                      }
            }
        }
        if(Vopros5[playerid] == 1)
        {
            if(listitem == 2)
            {
                EmptyMessages(playerid, 5);
                      SCM(playerid, COLOR_GREEN,     "_____________Теория_____________");
                    SCM(playerid, COLOR_LIGHTGREEN, "Верно. Теперь небольшая практика");
                      SCM(playerid, COLOR_LIGHTGREEN, "Выйдите на улицу и сядьте в красную машину.");
                       SCM(playerid, COLOR_LIGHTGREEN, "Там Вы получите дальнейшую инструкцию");
                       SCM(playerid, COLOR_LIGHTBLUE, "При сдачи практики не забудьте пристегнуть ремень безопасности {FF0000}/sb");
                       Practice[playerid] = 1;
                        Vopros5[playerid] = 0;
                TogglePlayerControllable(playerid, 1);
                return 0;
            }
            else
            {
                if(Owibka[playerid] == 1)
                   {
                    SCM(playerid, COLOR_RED,"Вы провалили экзамен. (( Приходите после зарплаты ))");
                        DrivingTest[playerid] = 0;
                        Vopros1[playerid] = 0;
                        Vopros2[playerid] = 0;
                    Vopros3[playerid] = 0;
                    Vopros4[playerid] = 0;
                    Vopros5[playerid] = 0;
                        Owibka[playerid] = 0;
                        TogglePlayerControllable(playerid, 1);
                        return 0;
                   }
            }
        }
    }
    return 1;
}

 

Автор: Roman

Share this post


Link to post
Share on other sites
keks1984
Новичок

Гость stibs, нужен скриптер для исправление багов

 

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.