• Страница 1 из 1
  • 1
Форум » PAWNO » Уроки Pawno » Система автоугона от JimL.
Система автоугона от JimL.
Дмитрий Дата: Четверг, 30.08.2012, 10:51 | Сообщение # 1 | Сообщить о нерабочей теме


Аватар для Дмитрий

Здравствуйте. Выкладываю свою версию автоугона.

Описание:

- Задания на автоугон выдаются рандомно, всего 3 задания. На доставку автомобиля в гараж, Вам дается 3 минуты, если вы за это время не доставили машину в гараж, задание провалено. Деньги, за доставленные в гараж машины, так же выдаются рандомно. (От 1.000 до 2.000).
- Команды на zcmd.

Автор: JimL

Quote
Для начала, добавим в начало мода:

Code
#include <zcmd>

#define Message     SendClientMessage
#define Dialog      ShowPlayerDialog

#define COLOR_GREY      0xAFAFAFAA
#define COLOR_BLUE      0x20A9FFAA  


Quote
Теперь, ко всем new, добавим:


Code
new task[MAX_PLAYERS], taskdone[MAX_PLAYERS];
new scar[3];
new checkpoint[MAX_PLAYERS];

new autostealing;
forward autosteal();

enum
{
     task_one,
     task_two,
     task_free
}  


Quote
Далее, добавим public таймера.


Code
public autosteal()
{
     for(new i = 0; i<MAX_PLAYERS; i++)
     {
         Message(i, COLOR_BLUE, "- Время вышло. Задание провалено.");
         Message(i, COLOR_GREY, "- Вы можете взять задание заного.");
         DestroyVehicle(GetPlayerVehicleID(i));
         KillTimer(autostealing);
         return 1;
     }
     return 1;
}  


Quote
и после этого public`a добавим команды...


Code
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
     return 1;
}

CMD:gettask(playerid, params[0])
{
      if(task[playerid] == 1) return Message(playerid, COLOR_GREY, "- Вы уже брали задание. (( /ctask - Отменить задание ))");
     Dialog(playerid, 3636, DIALOG_STYLE_MSGBOX, "{FFFFFF} Задание", "{FFFFFF} Вы уверены, что хотите взять задание\n\t на автоугон?", "Да", "Нет");
     return 1;
}

CMD:ctask(playerid, params[])
{
     task[playerid] = 0;
     KillTimer(autostealing);
     Message(playerid, COLOR_BLUE, "- Вы отменили задание на автоугон.");
     DestroyVehicle(GetPlayerVehicleID(playerid));
      return 1;
}
CMD:taskdone(playerid, params[])
{
     new money = 1000 + random(900), strings[100];
     if(!IsPlayerInRangeOfPoint(playerid, 15, 2487.5396, -1463.3383, 24.0197)) return Message(playerid, COLOR_GREY, "- Вы не около гаража.");
     if(task[playerid] != 1) return Message(playerid, COLOR_GREY, "- Нет заданий.");
     task[playerid] = 0;
     KillTimer(autostealing);
     format(strings, sizeof(strings), "- Задание выполнено. Вы получили: {FFFFFF}%d долларов.", money); Message(playerid, COLOR_BLUE, strings);
     GivePlayerMoney(playerid, money);
      return 1;
}  


Quote
Теперь, ищем в моде public OnPlayerEnterCheckpoint(playerid) и в него добавляем:


Code
  switch(checkpoint[playerid])
     {
         case task_one:
         {
             Message(playerid, COLOR_BLUE, "- Садитесь в автомобиль и отгоните его в гараж.");
               Message(playerid, COLOR_BLUE, "- У Вас есть ровно 3 минуты, после чего Вас начнет искать полиция.");
             Message(playerid, COLOR_GREY, "- (( Местонахождение гаража указано красной точкой на Вашем радаре. ))");
             Message(playerid, COLOR_GREY, "- (( Чтобы сдать автомобиль, Введите /taskdone ))");
             SetPlayerCheckpoint(playerid, 2487.5396, -1463.3383, 24.0197, 3.0);
             autostealing = SetTimer("autosteal", 180000, 1);
             DisablePlayerCheckpoint(playerid);
             return 1;
         }
         case task_two:
         {
             Message(playerid, COLOR_BLUE, "- Садитесь в автомобиль и отгоните его в гараж.");
               Message(playerid, COLOR_BLUE, "- У Вас есть ровно 3 минуты, после чего Вас начнет искать полиция.");
             Message(playerid, COLOR_GREY, "- (( Местонахождение гаража указано красной точкой на Вашем радаре. ))");
             Message(playerid, COLOR_GREY, "- (( Чтобы сдать автомобиль, Введите /taskdone ))");
             SetPlayerCheckpoint(playerid, 2487.5396, -1463.3383, 24.0197, 3.0);
             autostealing = SetTimer("autosteal", 180000, 1);
             DisablePlayerCheckpoint(playerid);
             return 1;
         }
         case task_free:
         {
             Message(playerid, COLOR_BLUE, "- Садитесь в автомобиль и отгоните его в гараж.");
               Message(playerid, COLOR_BLUE, "- У Вас есть ровно 3 минуты, после чего Вас начнет искать полиция.");
             Message(playerid, COLOR_GREY, "- (( Местонахождение гаража указано красной точкой на Вашем радаре. ))");
             Message(playerid, COLOR_GREY, "- (( Чтобы сдать автомобиль, Введите /taskdone ))");
             SetPlayerCheckpoint(playerid, 2487.5396, -1463.3383, 24.0197, 3.0);
             autostealing = SetTimer("autosteal", 180000, 1);
             DisablePlayerCheckpoint(playerid);
             return 1;
         }
     }  


Quote
Ну и, добавляем в public OnPlayerDialogResponse :


Code
    case 3636:
         {
             if(response)
             {
                 new tasks = random(3);
                 switch(tasks)
                 {
                     case 0:
                     {
                     Message(playerid, COLOR_BLUE, "- Вы взяли задание на автоугон.");
                     Message(playerid, COLOR_BLUE, "- Вы должны пригнать автомобиль, марки Sultan.");
                     Message(playerid, COLOR_GREY, "(( - Точка местонахождения автомобиля отмечена на Вашей карте. ))");
                     task[playerid] = 1;
                     taskdone[playerid] = 0;
                     checkpoint[playerid] = task_one;
                     SetPlayerCheckpoint(playerid, 1704.5057, -1688.1022, 13.5469, 3.0);
                     scar[0] = AddStaticVehicle(560,1704.7582,-1685.9414,13.2524,92.3262,125,125);
                     }
                     case 1:
                     {
                     Message(playerid, COLOR_BLUE, "- Вы взяли задание на автоугон.");
                     Message(playerid, COLOR_BLUE, "- Вы должны пригнать автомобиль, марки Jester.");
                     Message(playerid, COLOR_GREY, "(( - Точка местонахождения автомобиля отмечена на Вашей карте. ))");
                     task[playerid] = 1;
                     taskdone[playerid] = 0;
                     checkpoint[playerid] = task_two;
                     SetPlayerCheckpoint(playerid, 1805.7268, -1579.6790, 13.4648, 3.0);
                     scar[1] = AddStaticVehicle(559,1807.6322,-1581.1144,13.1603,311.3715,6,6);
                     }
                     case 2:
                     {
                     Message(playerid, COLOR_BLUE, "- Вы взяли задание на автоугон.");
                     Message(playerid, COLOR_BLUE, "- Вы должны пригнать автомобиль, марки Uranus.");
                     Message(playerid, COLOR_GREY, "(( - Точка местонахождения автомобиля отмечена на Вашей карте. ))");
                     task[playerid] = 1;
                     taskdone[playerid] = 0;
                     checkpoint[playerid] = task_free;
                     SetPlayerCheckpoint(playerid, 2085.6155, -1557.6234, 13.3106, 3.0);
                     scar[1] = AddStaticVehicle(558,2087.3411,-1557.4415,12.8507,3.9689,8,8);
                     }
                 }
             }
             else { Message(playerid, COLOR_GREY, "- Вы отказались брать задание."); return 1; }
         }  


Вот и все.
Для тех, у кого не получилось вписать эту систему в мод, вот Вам FS.

Ссылка: Скачать.


From Russia With Love!
Форум » PAWNO » Уроки Pawno » Система автоугона от JimL.
  • Страница 1 из 1
  • 1
Поиск: