Перейти к содержанию

Покупка мебели в дом - как реализовать?


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

Всем доброе утро! Такой вопрос. Кто в курсе - прошу напишите ответ. Есть плагин для Morrowind (дом). Я хочу его переделать. Моя цель - убрать всю мебель и объекты в редакторе и создать квест на покупку дома и покупку соответственно интерьера (наглядный пример - Дом теплых ветров в Вайтране - Skyrim). Кто-то предпринимал подобное? Поделитесь советами. Возможно ли сделать ЭТО на движке Морровинда.
Ссылка на комментарий
Поделиться на другие сайты

Всем доброе утро! Такой вопрос. Кто в курсе - прошу напишите ответ. Есть плагин для Morrowind (дом). Я хочу его переделать. Моя цель - убрать всю мебель и объекты в редакторе и создать квест на покупку дома и покупку соответственно интерьера (наглядный пример - Дом теплых ветров в Вайтране - Skyrim). Кто-то предпринимал подобное? Поделитесь советами. Возможно ли сделать ЭТО на движке Морровинда.

Да, возможно. Для этого необходимо

1) Создать уникальные элементы мебели (активаторы), повесить на них скрипты, чтобы они изначально не отображались, а появлялись при определенном условии

2) Прописать диалоги с продавцом мебели, назанчив в качестве результата диалога изменение условия, заставляющего мебель появиться, при это необходимо установить проверку на наличие необходимой суммы денег у игрока

 

Иначе:

"Купить мебель в столову" -> "Это обойдется тебе 1000 золотых" -> "Купить" "Отказаться"

При выборе "Купить" делается проверка на наличие 1000 золотых в инвентаре игрока,

если денег достаточно "Сделака совершена" -> -1000 золотых у игрока и появляются элементы мебели в столовой

Если денег недостаточно "У тебя недостаточно средств" -> ничего не происходит

 

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

Ссылка на комментарий
Поделиться на другие сайты

А для чего создавать активаторы? Мебель к примеру находится в статиках. Припоминается система со справкой об освобождении. С диалогами ситуация более менее ясна. Мебель в доме есть, вопрос в том как ее подогнать под плагин.

Я представляю так:

начало скрипта

если (условие = 1), то

установить "имя ид" напозицию "х y z" в ячейку "название комнаты"

конец условия

конец скрипта

 

пишу не на языке программирования, а набросок. Возможно сам скрипт будет более многослойным. Главное разобраться с одним предметом, а там по анологии добавить другие. Кто может дать пример скрипта? Хотя бы его пример его структуры

Ссылка на комментарий
Поделиться на другие сайты

Вообще задача довольно сложная
Не сказал бы, что сложная. Скорее, требующая времени и аккуратности. С учётом того, что спрашивающий - новичок, времени потребуется много, ибо сначала нужно вдумчиво покурить мануалы.

 

Кто-то предпринимал подобное?
Посмотреть домики на буржуйских сайтах. Там такое не раз проделывали. Заодно можно настрелять готовых скриптов.
Ссылка на комментарий
Поделиться на другие сайты

А для чего создавать активаторы?

Скрипты можно повесить только на активатор, на статик нельзя.

начало скрипта

если (условие = 1), то

установить "имя ид" напозицию "х y z" в ячейку "название комнаты"

конец условия

конец скрипта

Проще так:

Begin Stulya
if ([переменная]=1)
enable
else
disable
endif
end

Этот скрипт повесить на все, напрмер, стулья. [переменная] - какая-нибудь глобальная переменная, которая после покупки стульев через диалог устанавливается в 1.

Есть еще один очень простой способ - тупо уберите всю мебель из дома через КС, а потом поставьте ее прямо в игре с помощью этого плагина.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо всем за ответы. Я поразмыслил, и пришел к выводу, что идею можно реализовать гораздо проще. Можно скопировать ячейку и удалить с нее всю мебель, а потом сделать, чтобы при определенных событиях ячейка менялась на ту, где есть мебель (при покупке). Подскажите где можно в редакторе найти походий скрипт.
Ссылка на комментарий
Поделиться на другие сайты

Подскажите где можно в редакторе найти походий скрипт.
Дом Бладскала\Дом Ригмора из Бладмуна.

 

У этого решения, однако, есть недостаток, так как вещи, оставленные в необмелированной ячейке, пропадут.

Ссылка на комментарий
Поделиться на другие сайты

То что вещи пропадут - факт. Я это не учел. Можно разве что сундук перед домом поставить, для временного хранения вещей. А после окончания - disable id. Возможно ли создать в одной ячейке сундук, чтобы потом при смене ячейки вещи в нем переходили в другую. То есть контейнер остается в 2-х ячейках и сохраняет информацию о том, что внутри и переносит ее. Технически это возможно?
Ссылка на комментарий
Поделиться на другие сайты

Возможно ли создать в одной ячейке сундук, чтобы потом при смене ячейки вещи в нем переходили в другую. То есть контейнер остается в 2-х ячейках и сохраняет информацию о том, что внутри и переносит ее. Технически это возможно?
Возможно, только немного не так - в второй ячейке ставится сундук, но на нем запускается скрипт, активирующий сундук из первой ячейки. Если не ошибаюсь, в MSFD был пример такого скрипта.
Ссылка на комментарий
Поделиться на другие сайты

Спасибо за помощь. Разбираюсь. Интересует вот что. У нас к примеру 3 комнаты в одной ячейке: коридор, спальня и библиотека. Мы в диалоге выбираем какую комнату хотим обставить. Соответственно:

диалог 1 - комната 1 (коридор) - журнальная запись - 10

диалог 2 - комната 2 (спальня) - журнальная запись - 20

диалог 3 - комната 3 (библиотека) - журнальная запись - 30.

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

Получается надо создать несколько ячеек?

1 коридор

2 спальня

3 библиотека

4 коридор и спальня

5 коридор и библиотека

6 спальня и библиотека

6 ячеек, соответственно 6 дверей.

То есть мы купили коридор - дверь от ячейки 1. Купили спальню - ячейка 4 (так как коридор есть). Значит журнальная запись при покупке спальни должна учесть запись о коридоре? То есть

 

Begin MyHouseScript

 

if ( GetDisabled == 0 )

if ( GetJournalIndex MyHouse <10 )

Disable

myhouse_door->Enable

endif

elseif ( GetDisabled == 1 )

if ( GetJournalIndex MyHouse == 10 )

Enable

myhouse_door->Disable

endif

elseif ( GetDisabled == 0)

if ( GetJournalIndex MyHouse == 10 )

endif

 

 

End MyHouseScript

Ссылка на комментарий
Поделиться на другие сайты

Какой-то бредовый способ, честно говоря. И скрипт неправильный. Можно попробовать сделать несколько журнальных записей для каждой комнаты, и с помощью SetJournalIndex добавлять запись (так запись не будет в журнале писаться). Изменено пользователем Sie
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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