Перейти к содержанию
Авторизация  
Devin Coleman

Урок №23 – Создание обьектов Ingame Object Editor

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

Devin Coleman

В этом уроке я научу вас создавать простые двери, открываемые по команде. Таким же

образом вы сможете потом ставить ворота и шлагбаумы. И начну я с фильтр скрипта 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 и выглядеть они будут следующим

образом (чтобы не запутаться, после координат написано имя

объекта, имеющего эти координаты, его мы не трогаем):

1500,371.234283,166.662429,1007.383850,0.000000,0.000000,0.000000,1
Итак, мы записали координаты в безопасное место. А теперь

повернем дверь в положение открыто. Чтобы повернуть дверь, мы все

также используем команду /o_mode, только теперь вместо m_xy

пишем r_z. И поворачиваем дверь в такое положение:

Теперь снова записываем те же координаты двери в положении

закрыто. В координатах ничего не изменилось, кроме предпоследней

цифры.

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 цифры это

координаты вращения объекта, последняя цифра это видимость объекта.

1500,371.234283,166.662429,1007.383850,0.000000,0.000000,93.000000,1
Итак, приступим к написанию команды. Сначала в начале скрипта мы объявляем

глобальную переменную, например door. Затем внутри автовызываемой функции OnGameModeInit

– мы присваиваем этой переменной, созданный объект.

cpd = CreateObject(1500,371.234283,166.662429,1007.383850,0.000000,0.000000,0.000000,300.0);
Видимость мы ставим 300.0, иначе вы будете видеть дверь, только подойдя к ней вплотную.

Затем пишем две команды, одну для открытия двери, другую для закрытия:

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,

передвигает он объекты плавно. На его основе делают выдвижные двери.

Так вот, давайте сделаем раздвижные двери. Естественно нашу дверь нужно подвинуть

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

стены. Т.е мы заново получаем координаты открытой и закрытой двери. И теперь мы из

полученных координат берем координаты положения, а не координаты вращения.

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;
}
Вот в принципе и все.

 

Автор Cloud

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

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

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

×

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

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