×
Меню
Индекс

MSFD CellUpdate

CellUpdate
 
Сломана!
В соответствии с информацией от Bethesda: Обновляет текущие позиции объектов в ячейках.
Должна вызываться при движении объекта на дальние расстояния.
Игра поддерживает перемещения объектов, основываясь на том, в какой ячейке он находится, и, если объект выходит из своей стартовой ячейки, то он не может корректно обрабатываться работающим на нем скриптом.
 
Та часть, где рассказывается о некорректной обработке объекта, верна.
Объект может исчезнуть или “перепрыгнуть” в начало, если перемещается слишком далеко от того места, где был создан.
К сожалению, все попытки использовать функцию приводят в ошибке времени выполнения: "необходимо добавить код функции для функции CellUpdate".
 
Вероятно CellUpdate должен (был) обновлять список объектов в ячейке подключая в нее "новый" и исключая оный из стартовой ячейки.
Но...
Проще говоря, беседка не утрудила себя отвязкой объектов от их исходных координат.
Т.е. дальше 4096(8192) юнитов от исходных координат, объект либо сбрасывается в исходные, либо исчезает.
Собственно (вероятно) отсюда же и ограничение на размер ячеек и чем больше ячейка (интерьер) тем выше вероятность разного рода багов.
Экстерьерные ячейки всегда 4096, да.
А также, лимит на размер объекта, не больше 4096 (но лучше не выше 2048) юнитов. Об этом в других разделах заметок, да.
Т.е. вероятно здесь проблема на очень глубоком уровне движка закопана и беседка (вероятно) не стала с ней "воевать" оставив кусок кода "как есть" (а после и сам код МВ "посеяли").
Если пинать дальше, то можно лежачему (в забвении движку) накинуть на тему, что даже существа весьма паршиво ходят между ячейками (в экстерьере).
И без PathGreed способны разве что за игроком бодро носиться, при этом, четко видно, как они нападают на "след", т.е. бегут в прямом смысле по следам игрока.
Вероятно Игрок создает некоторого рода PathGreed на который и подключаются существа.
Т.е. еще раз, проблема обновления позиций объектов лежит где-то на весьма низком уровне кода самого движка NetImmerse, либо беседка на столько "не", что... но не важно)))
И еще раз, еще раз!
Обновление ячеек, в полной мере, возможно через МВСЕ, т.е. обновить график сцены ячейки внедрив в оную "новый" объект, для МВСЕ 2.х достижимое свершение!
 
Примечание: обход этой проблемы (необходим Трибунал) в том, чтобы отключить и удалить (SetDelete) объект (для перемещающихся объектов, при перемещении в новую ячейку) и немедленном помещении новой версии (PlaceItem) в ту же позицию, используя глобальный скрипт (смотри лодочный скрипт от MadMax из плагина Fishing Academy Mod).
Это похоже на колдовство, потому что таким образом объект никогда не покидает ячейку, в которой он был создан.
 
Примечание.
МВСЕ в помощь, либо штаны-Лошадь.
Хотя здесь речь о кораблях и лодках, на которых можно плавать везде и около.
Еще был Двемерский Глайдер (из древних плагинов ака 2002-04).
 

Broken! According to Bethesda: Updates the current object's cell position. This should be called when moving objects over large distances. The game keeps tracks of objects based on what cell they are in, and if an object moves a cell over from its starting position, it may not get processed correctly when running its script.
The part about not processing correctly is certainly right. Objects can disappear or "warp" if moved too far from the place they were created in. Unfortunately my attempts to use this function always resulted in a runtime error: "need to add function code for function CellUpdate".
 
Note: a way around this problem (requires Tribunal) is to disable and delete (SetDelete) the object on a regular basis (for ridable objects upon entering a new cell) and immediately placing a new version (PlaceItem) at the very same position using a global script (seen in MadMax boat script from the Fishing Academy Mod). See the Tips and Tricks section for an in-depth explanation by MadMax himself. This works like a charm, because this way the object never really leaves the cell it was created in.