Дмитрий |
Дата: Четверг, 30.08.2012, 10:51 | Сообщение # 1 | Сообщить о нерабочей теме
|
Регистрация: | 03.12.2011
|
Страна: | Российская Федерация |
Репутация: |
14
|
Сообщений: | 1421 |
Награды: |
4
+
|
Статус: |
|
| Здравствуйте. Выкладываю свою версию автоугона.
Описание:
- Задания на автоугон выдаются рандомно, всего 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!
|
|
|
|