Перейти к контенту

Zones Editor


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

Zones Editor

 

ссылка

 

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

 

Особая благодарность amik-у за неоценимую помощь с партиклами!

 

Версия игры ТЧ 1.0006

Для работы нужна последняя версия xrGame.dll из проекта X-Ray extensions. Пропатченного файла в проекте нет и не будет, но со страницы скачивания проекта можно взять комплект для патча.

Партиклы прилагаются в разобранном виде, только то, что нужно для работы утилиты. Для адаптации можно использовать petool, брать здесь.

В комплекте также прилагается версия библиотеки для работы с нетпакетами за авторством xStream (файл xs_netpk_545.script). Не пытайтесь её обновлять! Последняя версия не годится, надо использовать именно ту старую, что идёт в архиве.

 

 

Работа во многом полагается на колбеки на нажатия клавиш, введённые с новой xrgame.dll. Главное окно вызывается и закрывается нажатием ENTER. Сверху категории объёктов, для фильтрации списка всех доступных объектов. В основном это разные классы объектов. Там есть одна особенная категория "saved zones". Это специальный рестриктор с секцией "zone_editor_restrictor", в котором можно сохранить результаты редактирования.

Ниже окна фильтров два окна: слева список объектов, соответствующих фильтру, справа - редактор составного шейпа. Слева выбираете в списке объект, справа появляется список его шейпов.

Общие операции: показать/скрыть все элементарные шейпы, добавить новый бокс/сферу (в базовой точке [0,0,0] с размерами 1 игровой метр).

Остальные операции выполняются на редакторе каждого конкретного элементарного шейпа. Галка show включает отображения шейпа партиклами, а размеры и цвет частиц выбираются из списка там же. Галка edit включает интерактивный режим редактирования данного шейпа (клавишами).

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

Можно установить всё вручную и нажать set. Можно обнулить вращение, используя align, можно удалить данный шейп с помощью del и клонировать его с помощью clone. Можно также перейти в интерактивный режим и редактировать указанные выше компоненты с помощью кнопок на цифровой клавиатуре: 79 46 58. Просто нажатие меняет смещение, с зажатым left alt - вращает, с зажатым right alt - меняет размеры.

Можно сохранить то, что вы редактируете в специальном рестрикторе (кнопка save). Только не забудьте сохранить игру, чтобы это не пропало. К сожалению, имя задавать нельзя, так что придётся потом искать последний сохранённый в списке. Можно экспортировать отредактированный составной шейп в текстовом виде (кнопка export). Экспорт выполняется в лог игры. Оттуда его надо вставить копипастой в all.spawn.

 

Изменено пользователем malandrinus
  • Нравится 2
  • Полезно 2
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

Очень жаль, что нет никакого описания и правленного xrGame.dll в комплекте.

В указанной к обсуждению теме нет заявленного собранного файла. (возможно я не нашел).

Ссылка на комментарий

Шапку обновил. Новая ссылка с добавленными парой полезных для адаптации файлов. Новое видео с примером работы с составным шейпом. Также дано краткое описание работы.

Изменено пользователем malandrinus
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Вот это полезнейшая вещь, сам недавно шейпы менял, пришлось локацию в СДК разбирать и спавн с ними делать, а тут прям в игре.

И самое главное - визуально на уровне сделано. Партиклы и интерфейс отличный.

Вопрос: правленный DLL нужен тока для отлова нажатий клавишь? А то я хочу попробовать перенести это на ЧН\ЗП.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

*Shoker*,

Вопрос: правленный DLL нужен тока для отлова нажатий клавишь?

Там ещё пара функций для работы с векторами/матрицами. В частности умножения вектора на матрицу. Можно конечно скриптами имитировать, но это отдельный геморрой.

 

Сяк,

[error]Arguments : LUA error: ...g\s.t.a.l.k.e.r\gamedata\scripts\ogse_signals.script:174: attempt to call global 'check_module' (a nil value)

Недовложено?

В фале _g.script

local fs = getFS()
function check_module(module_name)
    local script_name = fs:update_path("$game_scripts$", module_name..".script")
    local res, err = loadfile(script_name)
    if res then
        log1("module: '"..script_name.."' is correct")
    else
        log1("module: "..script_name.."\nerror: "..err)
    end
    return res, err
end

 

И папка configs названа - случайно?

Именовал вручную, мог и ошибиться.

 

К сожалению, сделано исходно под мою сборку OGSE, и я уже сам не помню, что от чего зависит. Мог и ещё что-то забыть, так что придётся так постепенно с вашей помощью делать адаптацию под чистую игру. Кстати, менеджер сигналов там в общем-то не сильно и нужен. При желании можно прописать все вызовы прямо из биндера актора. Их там всего четыре штуки кажется.

 

Была идея для интерактивного режима сделать отдельное окошко с кнопками операций вращения/размеров/смещения, но на это уже сил не хватило.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Хм. Не вызывается окно редактора по "ENTER" ...

xrGame пропатчен до 20.

 

malandrinus

Огромное спасибо! Всё работает...

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

подправил

http://rghost.net/36172916

в комплекте несколько недостающих текстур и шейдеры из комплекта OGSE 0692. Это то, что нужно для партиклов. Партиклы исходно сделал amik, он и шейдеры в них настраивал. Я в них потом подкрутил только некоторые параметры, но в целом я в партиклах не разбираюсь, поэтому вопросы, как их адаптировать под совсем чистую игру - не ко мне.

Обращаю внимание на косяк в файле bind_stalker ещё с оригинала. В конце нестандартные комментарии, после них код не распознаётся.

 

Добавлено через 33 мин.:

Вот ещё вспомнил, зачем там используется изменённая xrgame.dll. Там из объекта получается его матрица трансформации с помощью чтения числа по смещению от адреса. Это особенно важно для объектов, которые повёрнуты от исходного положения, а таких может быть немало. Без этой функции я не знаю, как получить этот поворот. Может и можно чистыми скриптами, но разбираться по любому лениво.

 

Добавлено через 7 мин.:

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

 

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

Зарание спасибо. 

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

http://rusfolder.com/37996041

в архиве также готовая адаптация под шестой патч (старая версия)

  • Нравится 3
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Shoker,
требует. Можно оттуда убрать колбеки и сделать вызов общего интерфейса не по клавише, а как-то иначе, однако всё равно остаются функции, используемые для получения данных из объектов. Признаться, уже не помню что и где там используется.

Ещё момент. В последней версии редактирование поломано. Поскольку почти не используется, то и чинить не стал. Просмотр и экспорт тем не менее работают полностью.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

@Malandrinus, правки движка (помимо колбэков на клавиши) необходимы для добавления двух функций, обеспечивающих получение данных объекта: obj.get_go_float и matrix().mul_43.

Если бы ты дал немного больше информации о том, что можно было бы сделать скриптами (т.е. что требуется от доп.функций) то можно реализовать это уже доступными способами.

obj.get_go_float - мною уже почти реализовано при помощи нет-пакетов, неясны остались индексы 1,4,5,6 (из 0...15). Можешь, уточнить что они должны означать в контексте векторов позиции и направления?

 

И уточни, плз, что должен делать метод matrix().mul_43 по сравнению с уже имеющимся mul.

Тогда можно сделать не привязанный к движку вариант zone-информера (даже под CS/CoP), позволяющего в игре наблюдать размеры/положения различных зон-объектов, что при тестах/отладках игры порою сильно помогает (особенно когда не известны параметры заспавненных зон/аномалий, а справляться в all.spawn'e иль SDK - потеря времени).

Изменено пользователем Artos
  • Нравится 1

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

@Artos,
get_go_float нужен для получения XFORM объекта, или иными словами его матрицы трансформации. В большинстве случаев можно было бы обойтись без этого и использовать только смещение объекта, которое можно узнать штатными средствами (функция position). В целом нет никакой нужды поворачивать объект зоны, поскольку можно крутить как хочешь отдельные шейпы, но иногда таки повёрнута вся зона, а положение шейпа высчитывается в локальных координатах объекта и для получения финальной формы и положения шейпа нужно знать поворот всей зоны. К сожалению, такое бывает, как я убедился на практике. Не так уж часто, но вполне случается.
Ну а матрица имеет 16 значений, которые получаются по смещению от нуля до 15 от базовой позиции внутри объекта.

mul_43 умножает две матрицы не почленно, а матричным умножением, т.е. переводит вторую матрицу в систему координат, заданную первой.

Я сейчас глянул скрипты. Я там, как выясняется, поставил заглушки на случай отсутствия этих функций. Без mul_43 вполне можно и так работать, там просто будет вычислять скриптами, делая ровно тоже самое. Просто будет немного медленней работать. Ну а с получением матрицы трансформации ничего поделать не могу. Если нет, то будет использоваться предположение о невращении объекта. В ряде случаев это будет давать некорректный результат.

 

Да кстати, поскольку трансформация сдвига в игре не используется, то можно восстановить матрицу трансформации на основе позиции и вектора поворота (direction т.е.). Надо будет как-нибудь сделать.

Изменено пользователем malandrinus
  • Нравится 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

Вот как выглядит заглушка:

local function get_floats(obj)

  local floats = {}
  if type(obj.get_go_float) == 'function' then --/#!#
    for i=0,15 do
      floats = obj:get_go_float(80 + i*4)
    end
  else --/ stub
    local pos, dir = obj:position(), obj:direction()  --log("get_floats: obj=[%s] pos=[%s] dir=[%s]", obj:name(), pos, dir, "") --/#~#
    floats = {
      [ 0]=math.abs(dir.z), [ 1]=-0   , [ 2]=math.abs(dir.x), [ 3]=0, --/ 1:?
      [ 4]=              0, [ 5]= 1   , [ 6]=              0, [ 7]=0, --/ 4:? , 5:? , 6:?
      [ 8]=          dir.x, [ 9]=dir.y, [10]=          dir.z, [11]=0,
      [12]=          pos.x, [13]=pos.y, [14]=          pos.z, [15]=1
    }
  end
  return floats --/>
end

достаточно ли это корректно или могут быть значительные искажения отображения от реального положения объекта?

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

@Artos, насчёт возможности восстановить матрицу трансформации по направлению я вообще говоря был неправ. Этой информации недостаточно, поскольку направление - это одна ось координат, а нужно две. Вот если есть поле серверного объекта angle, то тогда можно. Поскольку там углы поворота, и по ним уже можно восстанавливать матрицу поворота (это центральная часть 3х3 всей матрицы трансформации). К сожалению, это поле есть только в ЗП (и может в ЧН), но не в ТЧ.

 

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

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

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