Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Создание открывающихся дверей/шлагбаумов/Заборов

Статус
В этой теме нельзя размещать новые ответы.

Fox_Man

Новичок
Вот решил добавить урок может кому поможет.

Я научу вас создавать простые двери, открываемые по команде. Таким же
образом вы сможете потом ставить ворота и шлагбаумы. И начну я с фильтр скрипта Ingame Object
Editor. (данный скрипт прилагается к учебнику). Почему именно он, когда предлагают много раз MTA
Map Editor. Во-первых, это как один из простых способов расставить небольшое количество объектов,
если ставить много объектов, на это уйдет больше времени, чем в MTA Map Editor. Во-вторых, это
тоже было бы полезно знать. В-третьих, не нужно конвертировать код из map в pwn, все объекты
будут в вашем моде вместе с этим фильтр скриптом. Доступ к его опциям имеет только RCON
администратор, поэтому вам необходимо будет войти на сервер как RCON администратор.
Начнем с создания двери. Войдите на сервер как RCON администратор. Итак, вот место куда
мы, например, хотим поставить дверь.
Мы можем поставить деревянную дверь с ID = 1491, это дверь, которая
открывается, когда ее толкаешь, но нам нет смысла сейчас ее ставить,
потому что мы делаем закрытую дверь, которую нужно будет открыть по
команде. Поставим дверь, например с ID = 1500. Итак, в чате пишем
следующую команду /oadd 1500 door. Команда /oadd – добавляет новый
объект, через пробел пишется ID объекта и далее имя объекта, любое.
Итак, мы создали нашу дверь, но она оказалась в воздухе. Давайте ее
опустим. Пишем следующую команду в чат: /omode m_z – эта команда
позволит двигать дверь в двух направлениях (вверх или вниз). Дальше
садимся на кнопку C и камера переключается на сам объект. Стрелками
двигаем дверь вниз к полу. Итак, мы опустили дверь, мы можем снова
нажать С, и встать в удобное вам место для обзора объекта и снова
сесть. Дальше нам нужно повернуть дверь левее.
Пишем туже команду, но уже не m_z а m_xy.
Это команда позволит двигать объект во все четыре стороны (вперед,
назад, влево и вправо). Таким образом, двигаем дверь в дверной проем.
Нам нужно записать куда-нибудь координаты этой двери в положении
закрыто. Координаты этой двери находится в
scriptfiles/oed/BREAD_OED.txt и выглядеть они будут следующим
образом (чтобы не запутаться, после координат написано имя объекта,
имеющего эти координаты, его мы не трогаем, но при вставке в скрипт
имя необходимо удалить вместе с лишней запятой):
HTML:
1500,371.234283,166.662429,1007.383850,0.000000,0.000000,0.000000,1
Итак, мы записали координаты в безопасное место. А теперь
повернем дверь в положение открыто. Чтобы повернуть дверь, мы все
также используем команду /o_mode, только теперь вместо m_xy пишем
r_z. И поворачиваем дверь в такое положение:
Теперь снова записываем те же координаты двери в положении
закрыто. В координатах ничего не изменилось, кроме предпоследней
цифры.
HTML:
1500,371.234283,166.662429,1007.383850,0.000000,0.000000,93.000000,1
/o_mode r_z – позволяет нам вращать объект таким образом, чтобы дверь открывалась и
закрывалась. Есть также r_xy – с помощью, которой уже вращаем дверь в другом направлении.
Запомните m_z и m_xy – это перемещение по осям: z и xy, а r_z и r_xy – это вращение по тем же
осям.
Итак, мы получили координаты закрытой и открытой двери. Теперь мы можем удалить этот
объект, т.к. у нас есть его координаты. Удаляем его командой /odel [имя объекта] в данном случае
имя объекта – door, значит, пишем /odel door. Удаляем мы его для того, чтобы у нас не получилось 2
копии двери, т.к. одну дверь мы вставим в мод.
Прежде чем приступить к делу объясню ниже приведенные цифры. Первая цифра означает ID
модели, следующие 3 цифры это координаты положения объекта, далее идут 3 цифры это координаты
вращения объекта, последняя цифра это видимость объекта.
HTML:
1500,371.234283,166.662429,1007.383850,0.000000,0.000000,93.000000,1
Итак, приступим к написанию команды. Сначала в начале скрипта мы объявляем глобальную
переменную, например door. Затем внутри автовызываемой функции OnGameModeInit – мы
присваиваем этой переменной, созданный объект.
HTML:
cpd = CreateObject(1500,371.234283,166.662429,1007.383850,0.000000,0.000000,0.000000,300.0);
Видимость мы ставим 300.0, иначе вы будете видеть дверь, только подойдя к ней вплотную.
Затем пишем две команды, одну для открытия двери, другую для закрытия:
HTML:
if(strcmp("/open", cmdtext, true, 10) == 0)
{
SetObjectRot(cpd,0.000000,0.000000,93.000000);
return 1;
}
if(strcmp("/close", cmdtext, true, 10) == 0)
{
SetObjectRot(cpd,0.000000,0.000000,0.000000);
return 1;
}
В функции мы указывает координаты вращения, т.к. мы будем вращать объект.
Недостаток этого скрипта только в том, что дверь открывается мгновенно. Все из-за того, что в
функции SetObjectRot которая, устанавливает координаты вращения объекта, нет последнего
аргумента speed, который есть в функции MoveObject.
MoveObject – передвигает объекты в указанное место и так как у него есть аргумент speed,
передвигает он объекты плавно. На его основе делают выдвижные двери.
Так вот, давайте сделаем раздвижные двери. Естественно нашу дверь нужно подвинуть
немного вперед в дверной проем, чтобы, когда дверь открывалась, ручки двери не торчали из стены.
Т.е мы заново получаем координаты открытой и закрытой двери. И теперь мы из полученных
координат берем координаты положения, а не координаты вращения.
HTML:
if(strcmp("/open", cmdtext, true, 10) == 0)
{
MoveObject (cpd,372.531341,166.374206,1007.370971,2.0);
return 1;
}
if(strcmp("/close", cmdtext, true, 10) == 0)
{
MoveObject(cpd,371.238067,166.374206,1007.370971,2.0);
return 1;
}
В этом уроке добавляется дверь в мэрии, которая ведет на 2 этаж ( если кому нужен скрин пишите добавлю )

Кому помог ставьте +
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу