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

[SoC] Ковыряемся в файлах


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

Что означают section,position,levelvertex,gamevertex?

section - название секции объекта как оно задано в лтх

position - вектор состоящий из 3-х координат (x,y,z) определяющий местоположение объекта на карте

levelvertex - идентификатор левелвертекса необходим для уточнения местоположения объекта на текущей карте

gamevertex - идентификатор геймвертекса необходим для уточнения местоположения объекта в игре в целом

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

А кстати,кто нибудь знает в чем природа этих левел и гейм вертексов?

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

 

Зачем они нужны,эти вертексы?

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

Monnoroch, скорее всего когда-то в сталкере хотели ввести систему глобального позиционирования

и изначально координаты писались под нее - вот вам и отголосок того "бесшовного мира" которого никто так и не увидел

i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх

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

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

Другое название этой сетки - сетка навигации. Ещё название - AI-сетка, что по сути одно и тоже, поскольку весь AI так или иначе связан с перемещениями.

Проще всего понять, на что похожа сетка уровня (граф навигации уровня), если эту сетку как-то визуализировать. Есть для этого тулза, созданная IG-2007.

Но я попробую словами...

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

Узлы этой сетки - это такие маленькие прямоугольные площадки, размером как правило 0.7 игровых метра. Если смотреть в плане, то все эти площадки строго упорядочены, как клетки шахматной доски. По высоте (т.е. по оси Y) они отличаются, чтобы воспроизводить ландшафт. В том числе в одном месте по горизонтали (т.е. в плоскости XZ) могут находиться две и более таких площадок, но с разной высотой. Ну понятно в общем - это для этажей зданий и прочего в этом роде.

В некоторых местах сетки нет. Во-первых, вся сетка вообще ограничена определённым параллелепипедом в пространстве. Это связано со способом её хранения, вне этого пространства сетки попросту не может быть. Некоторых узлов нет, и сетка образует дырки, соответствующие стенам, кустам, препятствиям вообще. Эти дырки в частности используются движком игры, чтобы искать для неписей укрытия. Видели функцию level.cover_in_direction? Нетрудно представить логику её работы: найти вертекс, закрытый дыркой в определённом направлении. Если в дырке на самом деле стоит куст или дерево, то это как бы укрытие. Впрочем, до конца этот вопрос я не исследовал и думаю, что на самом деле "дырки укрытия" как-то специально промаркированы.

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

 

Глобальный или оффлайновый граф, как ясно из его названия, нужен для навигации в оффлайне. Он уже больше похож на граф. На уровень таких узлов может быть что-то около пары сотен. Навигация в оффлайне в том числе допускает и перемещение между уровнями. Непись, которому сказали идти на узел глобального графа, находящийся на другом уровне, сначала строит свой путь по локальной сетке уровня до подходящего геймвертекса, дойдя до него - переходит в оффлайн и дальше уже перемещается по глобальному графу на нужный уровень.

 

Насчёт необходимости указывать эти значения при спавне. В принципе, геймвертекс - единственная привязка к уровню, поскольку координаты указываются локальные. Без геймвертекса будет неясно, на каком уровне создан объект. Левел вертекс однозначно нужен для неписей, иначе может возникнуть ситуация, что непись стоит невесть где и не знает, как дойти, куда ему там надо. Хотя в ряде случаев я согласен, указание левелвертекса выглядит избыточным. Например, для физических объектов, которые по сетке не ходят, а определяются физикой. Но зачем-то это движку надо. Я подозреваю, что в ряде случаев допустимы отклонения от точности указания этих параметров.

 

 

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

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

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

 

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

Вопрос - как перенести некоторые партиклы из одного particles.xr в другой?

 

Сообщение от модератора n6260
1. Есть статья (даже вроде на ВИКИ).

2. Есть утилита от Колмогора.

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

Как переделать путь к текстуре? наприме было "textures\wpn" а надо сделать так что бы одна определённая модель брала текстуру из папки "111\wpn" то есть сделать ещё одну папку для текстуры. Все текстуры пускай беруться как и раньше из папки textures, а вот одна модель совсем дургая обязательно из папки 111. Как это сделать? Заранее спасибо за ответ.

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

ЯДиск папка с крутым схроном!

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

Starter,

Папка Textures прописана в fsgame.ltx - если ее изменить игра полетит у тебя.

i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх

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

Создал скриптовое меню со своей текстурой - работает.

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

делал через CUIStatic()

 

вот так

local stat= CUIStatic() --определяем класс виджета

stat:SetAutoDelete(true) --вот это не знаю зачем надо

stat:Init(463, 214, 168, 214) --устанавливаем координаты виджета и размер

self:AttachChild(stat) --создаём виджет с указанными координатами.

stat:SetWindowName("screen") --назначаем ему имя

stat:InitTexture("ui\\screen.dds") --отобразим в виджете текстуру.

stat:SetFont(GetFontLetterica16Russian()) --назначим шрифт выводимому тексту.

stat:SetTextX(476)

stat:SetTextY(319)

stat:SetTextColor(255,160,160,160)

stat:SetTextAlign(0)

 

все это вписано в блок InitControls() основного меню

 

в коллбеке на нажатие кнопки активация виджета

function my_message:message_1()

local vij = self:GetStatic("screen") --инициализация виджета по имени

local text= this.show_message()

vij:SetText(text)

end

 

Вопрос: почему виджет не отображается?

И вообще он должен именно поверх текстуры бэкграунда отображаться (то бишь текстуры фона самого меню) или нет?

А то вдруг он под ней отображается - потому и не видно... <_<

 

Вопрос полностью решен.

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

lekzd я не имею ввиду изменить, я имею ввиду просто добавить ещё папку для текстуры. Как это сделать?

ЯДиск папка с крутым схроном!

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

Starter,

Путь к текстуре определённой модели прописан в самой модели. Изменить этот путь можно либо HEX-редактором, при этом соблюдая количество символов пути к текстуре (т.е. подгонять название текстуры под путь и количество символов в модели), либо через утилиту - SDK, тогда можно прописать текстуру с любым количеством символов (название текстуры).

Изменить или добавть папку, альтернативную папке textures не получится. Этот способ позволяет создать папку для текстур только внутри папки textures.

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

banderos насчёт hex это знаю что должно совпадать. вот ничего не надо кроме как создать аналог папке textures. Ну лан и на этом спасиб

 

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

Ну хорошо если это не возможно тогда как запаковать файлы в архив gamedata?

 

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

ЯДиск папка с крутым схроном!

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

Подскажите как правильно отформатировать вывод текста.

У меня текст выводится из таблицы lua куда пишется одной строкой.

вывод идет на экран виджета - соответственно нужно чтобы он не выходил за его границы.

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

пробовал и через string.format и string.gsub но ничего пока не вышло.

 

и вообще мне интересно как форматируется вывод текста в диалогах - чтобы он в рамках меню был и при этом переносы правильные.

 

Gonarh

а то я не знаю.

только строка то формируется скриптом - в разных местах из разных данных (+варианты без данных)

и что мне через каждые три слова перевод каретки насовать? это не то.

стал бы я заморчиваться если б все было так просто ...

 

вопрос снимается - пришлось отказаться от CUIStatic() и сделать нужные настройки виджета (в том числе и выравнивание текста при выводе на виджет) в hml конфиге меню.

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

levonxxx, скачай шпаргалку от n6260(у него в профиле есть)

Там много чего есть, а по делу gamedata\config\weapons\weapons.ltx

Ищешь:

time_step = *(*какоето значение)

Пишешь после равно 33, что бы получилось:

time_step = 33

Всё. Качай шпаргалку.

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

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

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

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

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

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

Войти

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

Войти
×
×
  • Создать...