• Страница 1 из 1
  • 1
Создание автоматических ворот
[S]ilverbac[k]Дата: Четверг, 10.07.2014, 23:24 | Сообщение # 1
.::Offline::.
Пахан
Сообщений: 723
[ 86 ]
Награды: 17

Статус отсутствует
Наверное, все в одиночной игре бывали возле аэропорта(в любом городе) и пытались пробраться на территорию посадочной полосы чтобы украсть самолет.
Но вас всегда останавливали ворота, о да, те самые ворота, которые не открывались из-за отсутствии у вас лицензии пилота. В этом уроке я покажу вам, как сделать нечто подобное.

Для примера будут использоваться эти ворота



Для начала удалим стандартные ворота функцией RemoveBuildingForPlayer и создадим переменную, которая будет содержать обе части ворот.

В OnPlayerConnect

Код

RemoveBuildingForPlayer(playerid, 985, 2497.4063, 2777.0703, 11.5313, 0.25);//1-я часть ворот
RemoveBuildingForPlayer(playerid, 986, 2497.4063, 2769.1094, 11.5313, 0.25);//2-я часть ворот


Ко всем new

Код

new gate[2];


Теперь создаем два объекта на месте этих ворот и прописываем их в OnGameModeInit

Код

gate[0] = CreateObject(985, 2497.4063, 2777.0703, 11.5313, 0.0000000, 0.0000000, 90.0000000); //object(gate_closel)
gate[1] = CreateObject(986, 2497.4063, 2769.1094, 11.5313, 0.0000000, 0.0000000, 90.0000000); //object(gate_closer)


Теперь нужно узнать координаты, куда будут двигаться ворота(при открытии). Для этого нужно создать по одной копии каждого объекта в стороне от них.
Из созданных объектов нужно сохранить только координаты X,Y,Z.

Далее нам нужно сделать проверку на приближение игрока к воротам. Для этого воспользуемся public OnPlayerUpdate и функцией IsPlayerInRangeOfPoint.

Код

public OnPlayerUpdate(playerid)
{
if(IsPlayerInRangeOfPoint(playerid, 10.0, 2496.6779785156, 2773.1818847656, 10.822999954224))//проверка на приближение к точке
    {
    ...
    }
return 1;
}


10.0 - радиус, при пребывании в котором ворота будут открыты

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

Ко всем new

Код

new gatetime;


В OnPlayerUpdate вместо "..."

Код

gatetimer = SetTimer("GateClose",5000,false);//объявляем таймер
MoveObject(gate[0], 2497.4108887, 2784.8049316, 11.5299997, 5.0);//движение 1-й части ворот
MoveObject(gate[1], 2497.3769531, 2761.0859375, 11.5200005, 5.0);//движение 2-й части ворот


5000 - время, через которое ворота закроются(в миллисекундах)
false- повторение таймера(true или false)

После всех public нам нужно создать сам таймер, в котором ворота будут закрываться назад

Код
forward GateClose();
public GateClose()
{
    MoveObject(gate[0], 2497.4063, 2777.0703, 11.5313, 5.0);//двигаем 1-ю часть ворот назад
    MoveObject(gate[1], 2497.4063, 2769.1094, 11.5313, 5.0);//двигаем 2-ю часть ворот назад
    KillTimer(gatetimer);//убиваем таймер
    return 1;
}


Теперь при приближении к воротам они будут открываться и закрываться через 5 секунд.
 
ZioHikДата: Пятница, 11.07.2014, 02:11 | Сообщение # 2
.::Offline::.
http://u.to/N46EAw
Сообщений: 831
[ 82 ]
Награды: 29

Статус отсутствует
А случайно эти ворота не нужно сначала удалить в редакторе?
 
[S]ilverbac[k]Дата: Пятница, 11.07.2014, 14:42 | Сообщение # 3
.::Offline::.
Пахан
Сообщений: 723
[ 86 ]
Награды: 17

Статус отсутствует
Да, совсем забыл.


[FS]Neon[APP]FCP[APP]Vehicle Tuning Generator ||||| 20% -- Работа приостановленаОбложка:
 
Kapany3-941Дата: Вторник, 06.01.2015, 14:44 | Сообщение # 4
.::Offline::.
Новичок
Сообщений: 2
[ 0 ]
Награды: 0

Статус отсутствует
if(IsPlayerInRangeOfPoint(playerid, 10.0, 2496.6779785156, 2773.1818847656, 10.822999954224))//проверка на приближение к точке

а как эти координаты узнать?
 
[S]ilverbac[k]Дата: Вторник, 06.01.2015, 16:33 | Сообщение # 5
.::Offline::.
Пахан
Сообщений: 723
[ 86 ]
Награды: 17

Статус отсутствует
Когда ты поставил объект ворот, подойди как можно ближе к воротам и к той точке, при приближении к которой ворота должны открываться, и введи команду /save.


[FS]Neon[APP]FCP[APP]Vehicle Tuning Generator ||||| 20% -- Работа приостановленаОбложка:
 
  • Страница 1 из 1
  • 1
Поиск:


Copyright www.SAMP-TEAM.com (c) 2009-2024
Правила использования материалов сайта

При копировании материалов из нашего сайта
ссылка на www.SAMP-TEAM.com обязательна!
Нарушители правил будут строго наказаны!

Хостинг от uCoz   
Для корректного просмотра мы рекомендуем Вам использовать браузер Google Chrome.
Яндекс.Метрика
Яндекс.Метрика