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
|
|
| |