Четверг, 16.05.2024, 14:57
Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 1
  • 1
Форум серии игр Grand Theft Auto » Помощь в моддинге » Помощь в PAWN » Простой плавный шлагбаум [all] (....)
Простой плавный шлагбаум [all]
MaLoI
Дата: Понедельник, 03.02.2014, 20:21 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 18
Статус: offline
Вступление: Нередко встречал в модах/уроках, что скриптеры делают плавный шлагбаум через изменение rot координаты (отвечающей за вращение объекта) в таймере каждые 25 милисекунд. Зачем столько нагромождений, если есть более простой вариант, который я и хочу показать.
1. Что потребуется? Собственно, сам мод, а также streamer от Incognito и командный процессор zcmd (или DC_CMD). [Если вы не установили streamer и командный процессор, то советую в кратчайшие сроки к ним перейти. Найти, где скачать файлы плагинов и уроки по их установке, можно на просторах pawno-info.]
2. Создаём глобальную переменную (то бишь в начале мода), к которой мы будем привязывать объект:
PHP код:
new barrier;
3. В public OnGameModeInit() присваиваем глобальной переменной barrier сам объект:
PHP код:
barrier = CreateDynamicObject(968,71.4580002,-1537.5789795,4.8140001,0.0000000,270.0000000,85.2500000);
4. Теперь в переменной barrier лежит объект. Задействуем его командой, которую создаём в конце мода:
PHP код:
CMD:openbarrier(playerid)
{
if(IsPlayerInRangeOfPoint(playerid, 7.0, 71.5471, -1541.0261, 5.1354))
{
MoveDynamicObject(barrier, 71.4580002,-1537.4789795,4.7140001,0.12,0.0000000,0.0000000,85.2500000);
SetTimer("CloseBarrier", 7000, 0);
}
return true;
}
Разбираем написанное:
if(IsPlayerInRangeOfPoint(playerid, 7.0, 71.5471, -1541.0261, 5.1354)) - если игрок у шлагбаума
MoveDynamicObject(barrier, 71.4580002,-1537.4789795,4.7140001,0.12,0.0000000,0.0000000,85 .2500000); - то поднимаем шлагбаум
barrier - наш объект, созданный в пункте 3.
71.4580002,-1537.4789795,4.7140001 - координаты перемещения.
Если присмотреться, то у меня эти координаты немного отличаются от тех, которые в пункте 3. Я -1537.5789795 изменил на -1537.4789795 (5 на 4), а 4.8140001 на 4.7140001 (8 на 7). При использовании команды эти изменения будут не заметны, а без этих изменений объект будет пониматься мгновенно, то есть не плавно.
0.12 - это скорость поднятия.
0.0000000,0.0000000,85.2500000 - координаты вращения.
За поднятие шлагбаума отвечает Y координата (270.0000000 в первоначальном создании объекта). Чтобы поднять шлагбаум, в MoveDynamicObject я 270.0000000 заменил на 0.0000000.
SetTimer("CloseBarrier", 7000, 0); - и запускаем таймер, который через 7 секунд (7000 в коде) запустит public CloseBarrier() ("CloseBarrier" в коде), и таймер этот не повторяющийся (0 в коде).
5. Теперь создадим тот самый public CloseBarrier(), который закроет шлагбаум.
PHP код:
forward CloseBarrier();
public CloseBarrier()
{
MoveDynamicObject(barrier, 71.4580002,-1537.5789795,4.8140001,0.12,0.0000000,270.0000000,85.2500000);
return false;
}
Здесь мы уже вставили первоначальные координаты объекта (из пункта 3), только добавили между ними 0.12 - скорость, с которой шлагбаум будет опускаться.

Вот и всё. Пользуйтесь на здоровье.


(с) MaLoI
 
Форум серии игр Grand Theft Auto » Помощь в моддинге » Помощь в PAWN » Простой плавный шлагбаум [all] (....)
  • Страница 1 из 1
  • 1
Поиск:

Рейтинг@Mail.ru