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

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


Halford

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

только что, mortan сказал:

бой идёт в основном не дальше 15-20 метров и поэтому всё заточено под такую дистанцию.

Даже если бы так оно и было, все равно непонятно зачем "затачивать" такими странными средствами. Это не затачивание, это урезание.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
только что, Shennondoah сказал:

а можно-ли

Можно.

Но надо движок ковырнуть. И шейдеры подрихтовать.

  • Нравится 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение

@Eragorn, у вас переменная s_obj не инициализована.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
13 часов назад, Max_Raf сказал:

npc:add_restrictions(se_anom:name(), "")    (к онлайновому объекту нпс закидываю через метод добавления рестриктора по имени вида СекцияИд)

но им чёт фиолетово - всё так же лезут в аномалию и дохнут. Что я делаю не так?

Емнип, туда id объектов (аномалий) пихать надо.

  • Нравится 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
10 часов назад, Romann сказал:

ЛЦУ, есть пара способов в движке, при первом не получается нормально проецировать партикл точки на геометрии, сейчас буду пробовать второй.

Так это по идее просто. Берем вектор дирекции ствола в руках, запускаем по нему трассировку луча. И нам вернет координаты столкновения этого луча с геометрией, какой-нибудь. Если столкновение есть.

Дальше просто лепим партикл в полученные координаты, и вуаля, дело в шляпе. Но правда я на практике этим пока не занялся - другие заботы в движке правлю... Там нашлись подводные камни какие-то на пути этого метода?

10 часов назад, Romann сказал:

И помочь же никто не хочет.

Вполне можно и по-сотрудничать, если у нас обоих найдется что-то интересное друг для друга. Почему нет?

9 минут назад, Biblia сказал:

3д прицел

В OGSR уже реализовано. Код открыт. Любой желающий может просто скопировать оттуда.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение

@Jek@n в xr_motivator.script

function motivator_binder:hit_callback(obj, amount, local_direction, who, bone_index)
	--В самом начале хит-колбека, добавь такую проверку:
	if (amount < 0.0001) then return end

Просто некоторые звуки (те же выстрелы), могут вызывать самопроизвольное срабатывание хит-колбека, с нулевым уроном. Это известный баг X-Ray, случается и на ТЧ и на ЗП, насколько я понимаю.

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

 

  • Спасибо 1
  • Полезно 3

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение

@ARTLantist Замысловатую вещь ты затеял)

Это надо каждой иконке, помнить сколько предметов под ней объединено, и помнить ну например, ID предметов, которые под нее записаны.

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

Мороки много, а выхлоп сомнительный, на мой взгляд.

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

Выглядит примерно так:

/*** UICellItems.h ***/
u8						max_stack;
	virtual void			SetMaxStack(u8 x) { max_stack = x; };
	virtual u8				GetMaxStack() const { return max_stack; }
	virtual u8				GetStack() const { return 1 + m_childs.size(); }
/*** UICellItems.cpp ***/

bool CUICellItem::EqualTo(CUICellItem* itm)
{
	if ((itm->GetStack() + GetStack()) > GetMaxStack()) return false;

	return (m_grid_size.x==itm->GetGridSize().x) && (m_grid_size.y==itm->GetGridSize().y);
}

 

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение

Ну да)

При инициализации иконки, она читает этот параметр из секции конфига того предмета, на который создается.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение

@ARTLantist У серверных объектов НПС, есть свой биндер, расположен в файле se_stalker.script

И там среди прочего, есть такой метод

function se_stalker:on_spawn()

Который как раз и вызывается после появления в игре, нового серверного объекта нпс.

  • Спасибо 1
  • Полезно 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
Только что, ARTLantist сказал(а):

С чем это может быть связано?

Предлагаешь форумчанам по-гадать на кофейной гуще? Или шар стеклянный поискать...

Мой тебе совет, как искать причины вообще любых каких угодно багов, уже был у тебя в личке. Ставь вызовы Msg во всех подозреваемых местах, и смотри что там творится. По цепочке начиная от обработки нажатия кнопок в Actor OnKeyboard, и до открытия окна CUICarBodyWnd его методом Show. Проследи по порядку, кто откуда кого вызывает, если твой движок не прикладывает время к каждой строчке лога автоматически, значит добавь в каждый Msg вывод Device.dwTimeGlobal.

Логи в руки, и вперед) Другого совета тут быть не может, полагаю. Тебе же для отладки нужен точный ответ, а не какие-то догадки. Он получается только так.

  • Согласен 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
3 часа назад, Max_Raf сказал(а):

Как эту дрянь поймать?

profile_timer вставленный в нетспавн неписей, чем не устраивает?

функционально аналогичен performance.now из javaScript...

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
7 минут назад, otani-san сказал:

невозможность это исправить без "пердоленья" движка

Движок давным давно можно редактировать, если кто-то не в курсе.

  • Нравится 1
  • Согласен 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
7 часов назад, egorkaufman1 сказал:

scripts\_g.script:480: bad argument #2 to 'format' (string expected, got nil)

Для устранения таких вылетов неплохо было бы привести в порядок _g.script, заменив в нем древние и убогие функции вывода лога, на более логически адекватные. Ведь есть же уже куча примеров как это сделать.

А так, вам _g.script буквально сообщает, что "вылет произошел потому, что не получилось сообщить причину вылета в логе".  Это практически анекдот "вскрытие показало, что пациент умер от вскрытия" - ну неужели вас это не смущает в вашем моде? Не приводит к мысли, что может быть, этот скрипт должен работать не так?

Скрытый текст

 

Чтобы не быть голословным.

--==============================================================================================
local tostring_all_tbl = {
    ["table"] 	   = function(table, ind) --Распечатка таблиц
                        local res = "{" --Начало
                        local end_res = ind and "\n"..ind.."}" or "\n}" --Конец
                        local def_ind = "  " --Отступ от начала строки
                        ind = ind and ind..def_ind or def_ind --Для каждой "таблицы внутри таблицы" отступ увеличивается в 2 раза
                        for k, v in pairs(table) do
                            res = res.."\n"..ind.."["..tostring_all(k, ind).."] = "..tostring_all(v, ind)..","
                        end
                        return res..end_res
                    end,
    ["string"]    = function(v) return "'"..v.."'" end, --Строки берём в кавычки. Это нужно, чтобы можно было отличить строку "123" от числа 123, "nil" от nil и тд...
    ["number"]    = function(v) return tostring(v) end,
    ["boolean"]   = function(v) return tostring(v) end,
    ["nil"]       = function(v) return tostring(v) end,
    ["function"]  = function() return "[[FUNCTION]]" end, --Function, Userdata и Thread распечатать нельзя, просто заменим на строки
    ["userdata"]  = function() return "[[USERDATA]]" end,
    ["thread"]    = function() return "[[THREAD]]" end,
}
--Конвертирование чего угодно в строку. Использовать только для вывода в лог!
function tostring_all(obj, ind) --ind - служебный аргумент для распечатки "таблиц в таблицах".
	return tostring_all_tbl[type(obj)](obj, ind)
end

--Функциональная обёртка для log1.
--Делает дополнительную работу по конвертации параметров, которые не воспринимаются родной функцией string.format.
--Параметры можно передавать ЛЮБОГО ТИПА! В строке формата они должны стоять как %s (потому, что будут сконвертированы в строки).
function log3(fmt, ...)
	local args = {...}
	for i=1, #args do
		args[i] = tostring_all(args[i])
	end
	local res, msg = pcall(string.format, fmt, unpack(args))
	if not res then --Если произошла ошибка
		msg = "!!log3 failed: "..msg.."\n"..debug.traceback()
	end
	log1(msg)
end
--==============================================================================================
function abort(fmt, ...)
	log1("!!****************************[ABORT]*********************************")
	log1(debug.traceback())
	log3(fmt, ...)
	log1("!!********************************************************************")
	error(tostring(fmt))
end

Вот из OGSR для примера. Тоже старый, не лучший (имхо) вариант, но хорош тем что не подтягивает функций из других файлов - тут все перед глазами, наглядно. Он не пишет сообщений в духе "вскрытие показало, что пациент умер от вскрытия" - а пишет по делу.

 

 

 

 

 

 

 

  • Нравится 1
  • Полезно 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
21 час назад, Norman Eisenherz сказал:

скриптовый способ добавить в инвентарь кнопку

Оригинальные версии X-Ray в принципе такого функционала не дают скриптам нигде. Ни в инвентаре, ни в торговле, ни в каких-либо других интерфейсах.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
10 часов назад, Norman Eisenherz сказал:

В движке перечисленные эффекты для артефактов закомментированы

Это описания эффектов, а не эффекты. Поэтому и

10 часов назад, Norman Eisenherz сказал:

в описании самого арта ничего

 

xrGame\ui\ui_af_params.cpp отвечает только за отображение описания эффектов. Больше он ничего не делает и ни на что не влияет. (Что явно следует и из самого файла и его расположения).

  • Полезно 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
12.09.2023 в 19:21, ziper сказал:

бывший скриптер много плохого в скриптах сделал

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

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

 

23.09.2023 в 14:10, nktbuba сказал:

scripts\hf_obj_manager.script:50: attempt to call global 'game_objects_iter' (a nil value)

Криво собрали сборку, скрипт хочет вызвать глобальную функцию game_objects_iter, а такой нет. Скорее всего файлик с ней просто забыли в сборку добавить (в оригинале такой нет).

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение

@bsanek628 Ну очевидно надо добавить секцию патрона в список боеприпасов соответствующих конфигов оружия.
Подсветку оттуда же из этих списков сам подтянет движок. А по торговцам и тайникам надо спецов по ЗП дождаться, я им не являюсь.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
3 часа назад, SWEAW сказал:

Только это, как я слышал, чревато проблемами с производительностью?

Формально да, на слабых ПК могут быть проблемы. Но у нас тестили вариант, когда алайф задается таким чтобы заведомо любая локация была в онлайне полностью вся.

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

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

  • Полезно 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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