Гость stibs

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

В теме 2 сообщения

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

Ко всем переменным (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

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


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

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

 

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


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

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

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

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

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


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

Войти

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


Войти

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

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