MrJunior
Компетентный
Я решил сделать данный урок когда рылся в теме " [Важно] Какие уроки вы хотели бы видеть у нас на форуме (архив)".
Я опишу всё очень подробно, что-бы новичкам было проще.Нам понадобится:
1. Прямые руки.
2. Map constructor/Map editor/ MTA Map editor.
3. Терпение.
Итак сейчас мы запустим одну с программ которые у нас в втором пункте.
У меня это 'Map constructor'.
Итак сперва нужно создать сами ворота. Ищем по гуглу( если кину ссылку на сайт забанят за рекламу :bw: ) ИДы объектов в самп. Я использую объект 19870. И поставлю его к примеру к LSPD:
Не заняло всё, но да ладно это просто пример.
Мы берем координаты в "Show code". Ну в МТА по другому. Там нужно сохранять и смотреть код в Документах MTA, потом его ещё конвертировать...
У меня вышло:
PHP:
CreateObject(19870, 1587.68164, -1637.91089, 14.28296, 0.00000, 0.00000, 0.00000);
1587.68164, -1637.91089, 14.28296 - координаты x, y, z.
0.00000, 0.00000, 0.00000 - поворот x, y, z.
Берем только координаты:
PHP:
1587.68164, -1637.91089, 14.28296.
Итак теперь нам нужны координаты закрытых ворот:
Как видно я двинул их в стену ну можно куда вам охота))
Берём координаты закрытых ворот:
PHP:
1592.30505, -1638.12512, 14.28296
Итак. Сперва создаём переменную куда мы сохраним 'номер' объекта.
PHP:
new gate;
И создаём:
PHP:
forward gateclose();
PHP:
public gateclose()
Теперь ищем:
public OnGameModeInit
и добавляем туда:
PHP:
gate = CreateObject(19870, 1587.68164, -1637.91089, 14.28296, 0.00000, 0.00000, 0.00000);
Далее создадим команду для открытия ворот:
В public OnPlayerCommandText:
PHP:
else if(strcmp(cmdtext, "/gateopen", true) == 0) // команда
{
if(PlayerInfo[playerid][pMember] != 1) return SendClientMessage(playerid, -1, "Вы не сотрудник LSPD!"); // проверка на то состоит игрок ли в фракции номер 1( в половине модом это ЛСПД
MoveObject(gate,1592.30505, -1638.12512, 14.28296, 2.2); // gate - переменная | 1592.30505, -1638.12512, 14.28296 - коорды закрытых ворот | 2.2 - скорость открытия ворот
SendClientMessage(playerid, -1, "Ворота закроются через 10 секунд!"); // сообщение игроку
SetTimer("gateclose", 10000, 0); // "gateclose" - наш forward в "" | 10000 - 10 секунд(время через которое запустим паблик с закрытием ворот) | 0 - будет и таймер повторятся(1 - да но не советую)
return 1;
}
Так как мы запустили паблик 'gateclose':
PHP:
SetTimer("gateclose", 10000, 0);
PHP:
public gateclose()
{
MoveObject(gate, 1587.68164, -1637.91089, 14.28296, 2.2); // gate - переменная | 1587.68164, -1637.91089, 14.28296 - коорды открытых ворот | 2.2 - скорость.
return 1;
}
В public OnPlayerKeyStateChange:
PHP:
if(newkey == KEY_CROUCH) OnPlayerCommandText(playerid, "/gateopen"); // newkey == KEY_CROUCH - если кнопка *сесть* (в машине - сигнал). | OnPlayerCommandText(..) - вызов команды от имени игрока
Автор: MrJunior [Я]
Последнее редактирование:
