суббота, 30 марта 2013 г.

Как создать свой интерьер?

Привет всем! Меня часто спрашивали "а как я создаю свои интерьеры?". Мне надоело отвечать каждому индивидуально, поэтому я создал этот урок.
Прежде чем начинать урок, я объясню как устроены все интерьеры в игре.
Интерьер представляет из себя помещение, в котором нет ни входа, ни выхода. Да, именно. Те входы, которые мы можем наблюдать, создаются отдельно от интерьеров, но об этом чуть позже. Пока вам нужно знать только то, что в интерьере двери должны быть плотно закрыты.
У многих  возникнет вопрос. "А почему все интерьеры без входа и выхода?". Дело в том, что все интерьеры висят  в воздухе, в особом мире, в который без скриптов попасть нельзя. Он прозрачный, и там нет гравитации.

Сегодня я научу вас делать свои интерьеры. Для работы нам потребуются:
1. Программа MED v0.32
2. Sanny Builder 3
3. Прямые руки или  молот для их выпрямления.

1. Открываем программу MED. Слева видим разные вкладки. В каждой такой вкладке хранится информация о карте. Нам нужно открыть любую вкладку с названием int. Я открою вкладку int_veg.IPI
Ставим напротив вкладки галочку и нажимаем render.


Как мы видим у нас появились много разных интерьеров. Теперь нам нужно найти основу для интерьера.
Я нашел нужный мне интерьер.



Теперь нужно его скопировать. Для этого кликаем мышкой по полу интерьера.

Но выделилась только основа интерьера. Если вам нужно выделить весь интерьер вместе с мебелью, удерживаем левый Shift и кликаем мышкой по всему что находится в интерьере.

Вот что у нас получилось. Теперь нажимаем правой кнопкой мыши и выбираем функцию "Copy".
Теперь нажимаем paste, но у нас выскакивает ошибка.



Это нормально. Что бы избавиться от этой ошибки заходим в раздел IPI
Затем ищем во вкладках ту вкладку, которая у нас открыта, нажимаем на нее, и в списке чуть ниже выбираем совершенно любой объект. Кликаем по нему два раза. Теперь ошибка больше не выскочит.


Теперь снова вставляем наш интерьер, и воля, он успешно появился!


Теперь нужно подредактировать его. Вы можете добавить туда новые объекты. Для этого жмем правой кнопкой мыши и нажимаем "new".


Не забудьте исключить все выходы из здания, так как здание висит в воздухе, и игрок просто провалится в никуда.
Теперь надо сделать наш интерьер твердым. В данный момент он прозрачный и игрок будет проваливаться сквозь пол.
Что бы коллизия была нормальная выделяем наш интерьер двумя щелчками мыши. Видим слева вот такую фигню:



Вместо нуля поставьте любую цифру и нажмите OK. Тоже самое сделайте и со всеми объектами которые находятся в интерьере.
Но к сожалению MED не сохраняет такие изменения. Поэтому установим на карту любой объект. Для этого нажимаем правой кнопкой мыши  выбираем "NEW". Там выбираем любой объект и ставим его куда-нибудь. А потом удаляем его и нажимаем file/save Install.

Отлично! Наш интерьер готов, но чего-то не хватает. Правильно! Не хватает входа и выхода.
Открываем программу Sanny Builder 3. И пишем вот такой скрипт
{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP 

:NONAME_2
0A40: 1@ = create_entrance_marker_at координаты маркера color 14 
wait 0 
if 
0102:   actor $PLAYER_ACTOR in_sphere проверка, стоит ли актер у маркера radius 1.5 1.5 10.0 sphere 0 stopped_on_foot 
else_jump @NONAME_2 
select_interior (номер интерьера) 
0860: link_actor $PLAYER_ACTOR to_interior (номер интерьера)
Actor.PutAt($PLAYER_ACTOR, координаты интерьера)
fade 1 13 
wait 2000 
jump @NONAME_2 
Поясняю:
В координатах маркера вы должны поставить координаты, где будет располагаться маркер для входа. Для этого встаем на нужное место, сворачиваем игру и вставляем координаты(вставить/координаты игрока)
В строчке  0102:   actor $PLAYER_ACTOR in_sphere проверка, стоит ли актер у маркера radius 1.5 1.5 10.0 sphere 0 stopped_on_foot  ставим те же координаты, что и координаты маркера.
Теперь снова открываем MED, ищем наш интерьер и устанавливаем в то место, где должен появится игрок любой объект. Слева будут даны координаты этого объекта. Копируем их, и вставляем в поле "координаты интерьера в строчке Actor.PutAt($PLAYER_ACTOR, координаты интерьера).
И теперь самое главное. В поле номер интерьера мы должны указать ту цифру, которую мы указывали когда придавали интерьеру твердость. Помните, что номер интерьера должен совпадать с номером интерьера других объектов.
Теперь нажимаем запуск/комплировать, и приступаем к созданию выхода.
{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP 

:NONAME_2
0A40: 1@ = create_entrance_marker_at координаты маркера color 14 
wait 0 
if 
0102:   actor $PLAYER_ACTOR in_sphere проверка, стоит ли актер у маркера radius 1.5 1.5 10.0 sphere 0 stopped_on_foot 
else_jump @NONAME_2 
select_interior 0
0860: link_actor $PLAYER_ACTOR to_interior 0
Actor.PutAt($PLAYER_ACTOR, координаты появления на улице)
fade 1 13 
wait 2000 
jump @NONAME_2 
Теперь надо будет узнать координаты маркера уже в самом помещении. Для этого находим где у вас выход, устанавливаем в то место любой объект и копируем координаты. Дальше то же самое, только в строчке  Actor.PutAt($PLAYER_ACTOR, координаты появления на улице) нужно будет указать другие координаты.
И самое главное. Во втором скрипте не изменяйте номер интерьера! 0 - обычный мир. Если поставить любое другое число, Сиджей вместо того что бы оказаться на улице, будет лететь в огромном бесконечном пространстве.
Сохраняем второй скрипт(запуск/комплировать).
Теперь заходим в игру и видим, что наш интерьер готов!
 Если есть вопросы, можете обращаться или сюда, или сюда.
Спасибо за просмотр!


3 коммент.:

Николай Варламов комментирует...

Великолепно!

Unknown комментирует...

:)

Анонимный комментирует...

Служба Le_Meridian Funding превысила их требования, чтобы помочь мне с моим кредитом, который я использовал, чтобы расширить свой аптечный бизнес. Они были дружелюбны, профессиональны и абсолютно самоотверженны. Я рекомендую всем, кто ищет кредит, связаться с нами. Email..lfdsloans@lemeridianfds.com Или lfdsloans@outlook.com.WhatsApp ... + 19893943740.

Отправить комментарий