Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Создание ворот/дверей и т.п. | + открытие их на любую кнопку | Подробно

Статус
В этой теме нельзя размещать новые ответы.

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);
Отсюда: 19870 - ID объекта.
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
Теперь смело закрываем MAP Constructor, и переходим в pawno.
Итак. Сперва создаём переменную куда мы сохраним 'номер' объекта.
PHP:
 new gate;
Название переменной 'gate' меняем на своё. 'new' не трогаем и конечно не забываем ';'.
И создаём:
PHP:
forward gateclose();
Для
PHP:
public gateclose()
в котором мы закроем ворота.

Теперь ищем:
public OnGameModeInit
и добавляем туда:
PHP:
 gate = CreateObject(19870, 1587.68164, -1637.91089, 14.28296,   0.00000, 0.00000, 0.00000);
Не забывает если gate меняли меняем и тут. CreateObject(...); берём с MAP Constructor'a.

Далее создадим команду для открытия ворот:
В 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 [Я]
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу