Создание открывающихся ворот и дверей на кнопку

Описание: Уроки по скриптингу
Модератор: SJplayer

LILU M
Автор темы, Подполковник
Подполковник
Аватара
LILU M
Автор темы, Подполковник
Подполковник
Сообщения: 468
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 LILU » 11 марта 2016, 23:40

Итак сперва нужно создать сами ворота (в Map constructor объект 19870).

Изображение

и берем координаты в "Show code".

Код: Выделить всё

CreateObject(198701587.68164, -1637.9108914.28296,   0.000000.000000.00000); 


Где:
19870 - ID объекта.
1587.68164, -1637.91089, 14.28296 - координаты x, y, z. (открытых ворот)
0.00000, 0.00000, 0.00000 - поворот x, y, z.

Теперь делаем координаты закрытых ворот:

Изображение

Код: Выделить всё

CreateObject(198701592.30505, -1638.1251214.28296,   0.000000.000000.00000); 


Далее переходим в pawno.

Создаём переменную куда мы сохраним 'номер' объекта.

Код: Выделить всё

new number


Создаём forward

Код: Выделить всё

forward numberclose(); 


Для public

Код: Выделить всё

public numberclose() 


в котором мы закроем ворота.

Теперь ищем public OnGameModeInit и добавляем туда:

Код: Выделить всё

number CreateObject(198701587.68164, -1637.9108914.28296,   0.000000.000000.00000);   


Далее создадим команду для открытия ворот. В public OnPlayerCommandText:

Код: Выделить всё

    else if(strcmp(cmdtext"/numberopen"true) == 0// команда
    
{
        if(
PlayerInfo[playerid][pMember] != 1) return SendClientMessage(playerid, -1"Вы не сотрудник LSPD!"); // проверка на то состоит игрок ли в фракции номер 1( в половине модом это ЛСПД
        
MoveObject(gate,1592.30505, -1638.1251214.282962.2); // gate - переменная | 1592.30505, -1638.12512, 14.28296 - коорды закрытых ворот | 2.2 - скорость открытия ворот
        
SendClientMessage(playerid, -1"Ворота закроются через 10 секунд!"); // сообщение игроку
        
SetTimer("numberclose"100000); // "numberclose" - наш forward в "" | 10000 - 10 секунд(время через которое запустим паблик с закрытием ворот) | 0 - будет и таймер повторятся(1 - да но не советую)
        
return 1;
    }   


В конец мода добавим паблик 'numberclose':

Код: Выделить всё

public gateclose()
{
MoveObject(gate1587.68164, -1637.9108914.282962.2); // gate - переменная | 1587.68164, -1637.91089, 14.28296 - коорды открытых ворот | 2.2 - скорость.
return 1;


А теперь мы сделаем данную команду на кнопку. В public OnPlayerKeyStateChange:

Код: Выделить всё

if(newkey == KEY_CROUCHOnPlayerCommandText(playerid"/numberopen"); // newkey == KEY_CROUCH  -  если кнопка *сесть* (в машине - сигнал). | OnPlayerCommandText(..) - вызов команды от имени игрока  


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 7 гостей