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

Новая динамическая система торговли


aL☢

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

З.Ы. Предметы с отрицательным кол-вом в таких сундуках ожидаемо исправно респаунятся мгновенно хехе, надо их вообще выпилить из игры, прошерстив все контейнеры (кроме растений, жил и раковин, которые Гербализмом затрагиваются, в них всё равно нет "отрицательных предметов"). Допишу мысли уже будучи на работе.

 

Не расстраивайся, я все сделаю красиво, и нигде не останется гребаных отрицательных значений.

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

  • Ответов 185
  • Создана
  • Последний ответ

Топ авторов темы

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

Скорее всего, да.

 

F нельзя изымать лвл листы из сундука и добавлять новые или те же, но заново?

Вечером проведу тест окончательный, если всё так, как у меня выходит, то можно подумать о скриптах на сундуках, добавляющих предмет заново, если это можно провернуть. А на самом деле можно и без левел-листов обойтись. Торговцев много: ну и что, что у одного выпадают только условные синие тарелки, а у другого только условные коричневые, главное, чтобы у всех торговцев с такими же сундуками не выпадали только коричневые или только синие тарелки))) А даже если и выпадут, то всё равно у всех торговцев будет обычное восстановление всех предметов (коричневые и синие тарелки ведь не только в лвл-листах есть). Просто с левел-листами было бы гораздо интереснее, конечно, но можно сделать версию сначала без скриптов на сундуках вообще, а потом уже дополнять скриптами.

 

К слову: очень уж просто сделать все контейнеры у торговцев респаунящимися не выйдет: условный сундук "chest_lalka_diamonds" может стоять как у алхимиков в магазах, так и в поместьях, сокровищницах великих домов, пещерах контрабандистов, в затопленном корабле и где только ещё не стоять. Так что всё равно придётся пробежаться по всем торговцам и делать список торговцев у которых есть этот "chest_lalka_diamonds" и запилить им отдельную версию сундука "chest_lalka_diamonds_trade" с респауном, чтобы во всех остальных местах было без респауна; и так для каждого контейнера. Или можно каждому торговцу делать именные сундуки, как Эл планирует, да.

 

 

Не расстраивайся, я все сделаю красиво, и нигде не останется гребаных отрицательных значений.

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

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

Обидно. Идея была очень многообещающая, но как всегда все не так хорошо, как хотелось бы. Крайне маловероятно, что дело в этом, но может все же:

 

Each - Containers can hold stacks of leveled item lists like e.g. 10 my_leveled_item.

  • Each = Yes indicates that the random item is calculated new for every leveled item in the stack. In our example you would get 10 different items from my_leveled_item.
  • With Each = No the random item is calculated only once. You would get 10 identical items from my_leveled_item.

 

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

 

Не факт что дело вообще в активации. Если всегда восполняются те же предметы, что и забирались, то мы не можем отличить респаун по активации от респауна по по любому другому триггеру. Полагаю, что движок не столько следит за активацией контейнеров и запоминает выпавшие в них предметы, сколько просто в некоторый момент заменяет все левельные предметы на нелевельные и раз уж у нас есть левельные кричуры, логично предположить, что замена происходит единообразно в момент захода в локацию. И это плохо. С другой стороны, что на счет именно зависимости от уровня? Если левельный кричур респаунится спустя 10 уровней игрока он что опять будет таким же, как на первом уровне? Попробуй проверить следующий вариант. Загрузи в контейнер разные предметы в зависимости от уровня игрока, таким образом, чтобы на втором уровне нельзя было получить предмет выпадающий на первом, дождись первого респауна, потом увеличь себе уровень и посмотри, что получится на следующем респауне. Это даст нам однозначный вывод.

 

Disable сундуков с помощью консоли ничего не даёт: товары по прежнему продаются торговцем. В принципе это логично: сундук же не исчезает из локации, а просто скрывается.

 

Что произойдет если перебросить сундук в другую локацию? И если потом вернуть его обратно?

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

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

 

Не пойму, ты не хочешь чтобы я это сделал?) а я это сделаю гораздо быстрее.

Изменено пользователем aL☢
Ссылка на комментарий
Поделиться на другие сайты

Не факт что дело вообще в активации. Если всегда восполняются те же предметы, что и забирались, то мы не можем отличить респаун по активации от респауна по по любому другому триггеру. Полагаю, что движок не столько следит за активацией контейнеров и запоминает выпавшие в них предметы, сколько просто в некоторый момент заменяет все левельные предметы на нелевельные и раз уж у нас есть левельные кричуры, логично предположить, что замена происходит единообразно в момент захода в локацию. И это плохо. С другой стороны, что на счет именно зависимости от уровня? Если левельный кричур респаунится спустя 10 уровней игрока он что опять будет таким же, как на первом уровне? Попробуй проверить следующий вариант. Загрузи в контейнер разные предметы в зависимости от уровня игрока, таким образом, чтобы на втором уровне нельзя было получить предмет выпадающий на первом, дождись первого респауна, потом увеличь себе уровень и посмотри, что получится на следующем респауне. Это даст нам однозначный вывод.

 

Что произойдет если перебросить сундук в другую локацию? И если потом вернуть его обратно?

Кстати да, я же тесты проворачивал будучи на первом левеле. Затестю вечером.

 

Как мне перебросить сундук в другую локацию и потом вернуть обратно? Ткните носом в скрипт, если можно.

 

А команда Resurrect на контейнеры же не работает, конечно?

Только на неписей и кричеров, но я, конечно, проверю.

 

Не пойму, ты не хочешь чтобы я это сделал?) а я это сделаю гораздо быстрее.

К осени?) Покажи хоть текущий скрипт – скинем мортуусу, слоу глянет – может его можно улучшить.

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

А команда Resurrect на контейнеры же не работает, конечно?

 

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

 

Вообще все больше и больше хочется поговорить с командой MCP. То что левельные итемы генерятся всего один раз, это явная недоработка.

 

Как мне перебросить сундук в другую локацию и потом вернуть обратно? Ткните носом в скрипт, если можно.

 

Есть несколько способов разной степени извращенности. Для начала воспользуйся нацеленным скриптом. Создаешь переменную GlobalVar = 0 и глобальный скрипт формата:

 

Begin MoveMe

 

if (GlobalVar == 2 )

PositionCell Старая Локация

Set GlobalVar to 0

StopScript MoveMe

elseif (GlobalVar == 0)

PositionCell Новая локация

Set GlobalVar to 1

endif

 

End

 

Зайдя в игру, в консоли кликаешь на сундук и прописываешь StartScript MoveMe. Когда нужно будет вернуть сундук пишешь Set GlobalVar to 2.

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

При убийстве и воскрешении ещё и все проданные ему предметы пропадают. Изменено пользователем R-Zero
Ссылка на комментарий
Поделиться на другие сайты

Вообще все больше и больше хочется поговорить с командой MCP. То что левельные итемы генерятся всего один раз, это явная недоработка.

Лучше пусть они поправят продажу торговцем игроку предметов(чтобы сначала брались из сундуков, потом из инвентаря, а потом с прилавков) и сделают нормальный респаун (чтобы отрицательные значения количества предметов работали в связке с iMonthsToRespawn, а не восстанавливались мгновенно). Тогда вообще можно будет остановиться.

По левельным предметам и переносу сундука в другую локацию скриптом – проверю.

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

А нельзя скриптом просто убирать и заново добавлять сундук? При этом же уровневые списки обновятся?
Ссылка на комментарий
Поделиться на другие сайты

А нельзя скриптом просто убирать и заново добавлять сундук? При этом же уровневые списки обновятся?

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

А нельзя скриптом просто убирать и заново добавлять сундук? При этом же уровневые списки обновятся?

Смысл тогда вообще делать респаунящиеся сундуки? Скрипты можно и к обычным прикрепить, чтобы раз в месяц содержимое обновлялось. Вся соль в респауне, который сам всё делает без скриптов. Я проверю левельные предметы, но независимо от результатов можно начать делать такие сундуки торговцам и обозвать это basic-версией: хрен с ними с не совсем правильно работающими левельными предметами, сам факт обновления товаров без мгновенного респауна и гор скриптов уже хорош. А уже скриптами можно будет допилить сделанные сундуки и решить вопрос с левел-предметами и вариативностью товаров, чтобы товары у торговцев не были строго задаными, пусть и обновляющимися раз в месяц, но и как-то менялись.

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

А нельзя скриптом просто убирать и заново добавлять сундук? При этом же уровневые списки обновятся?

Имеешь в виду SetDelete и PlaceItem? Флаги собственности собьются же.

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

R-Zero портит всю малину) Лучше бы в MCP отписал по проблемам выявленным. У меня даже аккаунта на оф.форумах нет. Изменено пользователем morrow
Ссылка на комментарий
Поделиться на другие сайты

А нельзя скриптом просто убирать и заново добавлять сундук? При этом же уровневые списки обновятся?
Смотря что понимать под "убирать". Если просто через Enable\Disable - то это не работает. Если физически удалить сундут через SetDelete и создать новый через PlaceItemCell, то, емнип, на новый создаваемый сундук нельзя будет прописать информацию о владельце.
Ссылка на комментарий
Поделиться на другие сайты

R-Zero портит всю малину) Лучше бы в MCP отписал по проблемам выявленным. У меня даже аккаунта на оф.форумах нет.

По поводу переделки iMonthsToRespawn в дни я обращался ещё в начале прошлого года, емнип. Потом Hrn-chan пропал на довольно долгое время и вот буквально вчера появился в дискорд-чатах, где его сразу же засыпали всякого рода предложениями.

 

Выдастся спокойное время - отпишу.

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

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

Попробовал сделать уровневый сундук по методу отсюда:

http://www.nexusmods.com/morrowind/mods/43245/?

 

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

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

Имеешь в виду SetDelete и PlaceItem? Флаги собственности собьются же.

Забавно, что если заменять файлы в КС при помощи Search and Replace, флаги собственности сохраняются, даже если заменять объекты разных типов. Обнаружил это когда заменял алхимическую аппаратуру на контейнеры. Но с PlaceAtMe так не работает, к сожалению.

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

Это довольно забавно, но у меня получилось сделать то, что задумано, каждый месяц лвл лист сбрасывается и выпадает новый лут из того же лвл листа, флаг собственности не сбрасывается. (Dun Dram был прав) Изменено пользователем Абдулла аль-Хазред
Ссылка на комментарий
Поделиться на другие сайты

Морт, поделись задумкой.

Да там не задумка, просто попробовал предложение Dun Dram'а, выставляем контейнеру respawn, гмст на месяц, скриптом перерождаем его resurrect, в итоге имеем новый набор из того же лвл листа на начало следующего месяца.

ЗЫ Мне не нравятся твои провокации.

Изменено пользователем Абдулла аль-Хазред
Ссылка на комментарий
Поделиться на другие сайты

Да там не задумка, просто попробовал предложение Dun Dram'а, выставляем контейнеру respawn, гмст на месяц, скриптом перерождаем его resurrect, в итоге имеем новый набор из того же лвл листа на начало следующего месяца.

ЗЫ Мне не нравятся твои провокации.

Есть ли смысл тогда вообще выставлять Respawn? Или без него resurrect не даёт полного обновления содержимого, включая лвл-листы?

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

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

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

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