Перейти к содержанию
Авторизация  
PROMO_4ka!™

Открытие ворот на кнопку

Рекомендуемые сообщения

PROMO_4ka!™

Всем привет. Выкладываю урок по созданию ворот, которые будут открываться по кнопке. Для этого используется функция CreateObject

Я для примера возьму ворота в Доках: 

CreateObject(969, 2720.3772,-2409.7523,12.6,0, 0.0000, 90);//Закрытые ворота 
CreateObject(969, 2720.3772,-2508.3069,12.6,0, 0.0000, 90);//Открытые ворота

После этого вам нужно создать переменную., которая будет хранить в себе порядковый ID ворот.

Ко всем new

new gate1;

Теперь создадим объект ворот на сервере 
В public OnGameModeInit засуньте строчку с функцией CreateObject

gate1 = CreateObject(ид_объекта, x,y,z, поворот_x, поворот_y, поворот_z);// Укажите ваши данные о ЗАКРЫТЫХ воротаx

Для простого примера я создам ворота в доках (координаты открытых и закрытых ворот смотрите выше) 

public OnGameModeInit() 
{ 
      gate1 = CreateObject(969, 2720.3772,-2409.7523,12.6,0, 0.0000, 90);//Если у вас есть этот public то просто вставте эту строчку с созданием объекта 
      return 1; 
}

Ворота созданы, но теперь их надо заставить двигаться 
в public OnPlayerCommandText 

if(!strcmp(cmdtext, "/opengate", true)) 
{ 
if(IsPlayerInRangeOfPoint(playerid, 10, 2720.3772,-2409.7523,12.6))// Укажите координаты закрытых ворот, 10 - это радиус, где будет действовать открытие ворот 
{ 
MoveDynamicObject(gate1,2720.3772, -2401.2523, 12.6, 2.0);//Двигаем ворота на позицию открытых ворот 
SetTimer("CloseGate1", 7000, false);//Создадим таймер что ворота закрылись автоматически 
} 
}

Теперь создадим public чтоб ворота закрылись самостоятельно 
Ко всем foward

forward CloseGate1();

В конец мода

public CloseGate1() 
{ 
MoveDynamicObject(gate1, 2720.3772,-2409.7523,12.6, 2.0);//Двигаем ворота на позицию закрытых ворот 
return 1; 
}

Ворота созданы и вы теперь можете их открыть командой /opengate 

Теперь делаем открытие ворот кнопкой.

 

В public OnPlayerKeyStateChange 

if(newkeys & KEY_WALK) // На кнопку АЛЬТ (alt) 
{ 
if(IsPlayerInRangeOfPoint(playerid, 10, 2720.3772,-2409.7523,12.6))// Укажите координаты закрытых ворот, 10 - это радиус, где будет действовать открытие ворот 
{ 
MoveDynamicObject(gate1,2720.3772, -2401.2523, 12.6, 2.0);//Двигаем ворота на позицию открытых ворот 
SetTimer("CloseGate1", 7000, false);//Создадим таймер что ворота закрылись автоматически 
} 
}

На этом урок окончен. Всем спасибо за внимание!

Помогал мне (автор): valuch

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Komaroff 71

Молодец, а то надоели вопросы по этой теме =)

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SHOROOP

Где алгоритм действий? Зачем лишний балласт в виде команды и прямого вызова OnPlayerCommandText? Нет, в "Готовые решения".

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.