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

Прозекторская


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

Дабы меня не закидали овощами в соседней теме, поделюсь-ка я в очередной раз своим сырым кодом.

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

Я про съемку координат речь веду, если что. В моей подписи как раз есть ссылка на тему где можно посмотреть видео про "Пушку мододела" - инструмент для снятия координат в игре. Координат для чего? Ну в данном варианте для путей работ в гулагах, а вообще-то для чего угодно.

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

Потом на стороне Windows, рядом с логами игры лежит одна программа которую я сам для себя написал. Она открывает файл логов, находит там все эти пакеты данных с координатами, оставленные скриптом, обрабатывает и создает "текст" который можно уже вставлять в файлы распакованного аллспавна и компилировать в игру с помощью acdc.

т.е. на стороне windows все что я делаю - открываю свою программу, тыкаю в ней кнопку, открываю созданный ею файл, нажимаю Ctrl+C, открываю файл распакованного спавна - Ctrl+V. запускаю батник компиляции спавна. все.

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

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

Кому надо и интересно - можно взять и заточить под свои нужды.

 

  код Pascal (Показать)
  • Нравится 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.

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


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

 

 

  abramcumner писал(а):
дельфевый проект

Я же говорил что там минимум :)

  dpr (Показать)
  • Нравится 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.

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


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

А я все же думаю пока оставить это дело тут. В "Сборочном цехе" есть свои правила, которые я сам же писал, и нарушать их не намерен. А эта работа в те правила не вписывается.

  • Полезно 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.

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


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

Вы мне так подпись взорвете :( она же не резиновая.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

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

Тем более что это "изменение" расположено во время загрузки... Загружу я сейв за 40 секунд, или за 40,1 - мне от такого ни холодно ни жарко.

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

Изменено пользователем Zander_driver
  • Согласен 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.

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


Ссылка на сообщение
  Dennis_Chikin писал(а):
Касательно же звука, рекомендую поискать в теме "разработки" солянковской

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

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

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

 

 

  dsh писал(а):
Может я чего не заметил?

Наверное тестов моих не заметил. Там цифры какие-то есть, и они почему-то разные.

 

 

  Dennis_Chikin писал(а):
Плюс к тому уникальные звуки надо вынести по уникальным путям, и грузить вообще не через themes. Ибо если включить лог, и посмотреть, кому что читается - это - страшно.

Вот это справедливо, плюсую. логи включал, смотрел, выпадал в осадок от увиденного.

зы. кактусы не люблю, мышью быть не хочется :)

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


Ссылка на сообщение
  dsh писал(а):
Не, ну я не знаю, что там у тебя раньше было-то

sound_theme.script оригинального ТЧ был. Там как бы сама кухня эта, в процессе определения кому и какие звуки подрубать в npc:add_sound() - уже сама по себе жрала прилично, потому что цикл, а в нем еще цикл, а в нем может быть еще, а внутри вызываем функции но результаты их работы никуда не запоминаем и потому дергаем на каждой итерации цикла заново.

Вот это безобразие и исправил, результат - в посте под спойлером. Про внутри-движковое кэширование звуков я тоже в курсе, видел его проявление в логах, вот только нпс с профилем, таким же как у кого-то из уже загруженных неписей, грузился на оригинальной "кухне" в три раза дольше при всем движковом кэшировании.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

Кстати Денис, я тебя конечно уважаю, но

http://www.amk-team.ru/forum/topic/13078-prozektorskaia/?view=findpost&p=904591

ты прости, работу этого файла проверял? игру с ним запускал?

Я между прочим знаю что нет. Не проверял, не тестировал, не запускал.

 

История то давняя... когда этот файл тут появился, я его сначала в WinMerge открывал. там просто все оранжевое) ладно думаю, попробую напролом. поменял свой старый на этот. вылет, один, другой, третий. отложил на потом.

Вот пришло это потом, стал ковыряться в чем дело...

local c_wnp = _G.c_wpn or {}	-- здесь должна быть табличка clsid стволов.

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

Дальше веселее.

function parse_data1( s )
function parse_syn_data( s )

функции находятся прямо в коде модуля.

и в этом же модуле далее по тексту

local t_def_nil = {
	["meet_state"]		= parse_data1( "5|wait@wait" ),
	["meet_state_wpn"]	= parse_data1( "5|backoff@threat_weap" ),
	["victim"]		= parse_data1( "5|actor" ),
	["victim_wpn"]		= parse_data1( "5|actor" ),

	["use"]			= { { ["section"] = "true", ["infop_check"] = {}, ["infop_set"] = {} } },
	["use_wpn"]		= { { ["section"] = "false", ["infop_check"] = {}, ["infop_set"] = {} } },
	["syndata"]		= parse_syn_data( "backoff@threat_weap" ),

	["init_meet"]		= "talk_hello",
	["precond"]		= "visibility",
	["abuse"]		= "true" } 

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

Знаете это видимо заразно. Писать индусский-солянкоподобный код который по щучьему велению что-то может быть делает а может быть нет, но проверять делает ли он вообще что то и работает ли, мы не будем, не царское это дело.

Разжевываю для тех кто не понял.

При первом упоминании xr_meet где-нибудь, движок приступает к компиляции модуля. Модуль будет доступен тогда, когда она завершится, до этого - он как бы еще не существует.

и вот компилятор добирается до строчки ["meet_state"]        = parse_data1( "5|wait@wait" ),

он видит parse_data1. ее как бы надо вызвать, но где она? в этом же модуле который еще не собран. т.е. функция - не доступна. И знаете что происходит? компиляция прекращается на этом самом месте, что несложно установить просто поставив вызовы printf("проверка") между функций и таблиц. Компиляция обрывается, вернув скомпилированный обрубок кода в качестве модуля. проверки if xr_meet then return true end - исправно возвращают true, функции расположенные в нем ДО проблемного места исправно работают. Кусок кода расположенный ПОСЛЕ этого чудного маневра, просто отваливается.

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

2016 год на дворе.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


Ссылка на сообщение
  Dennis_Chikin писал(а):
В чем проблема с обратиться к функции, описанной до обращения - ВАЩЕ ни панимаю.

в том что модуль еще не собран. а она нужна для его сбора.

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

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

Изменено пользователем Ааз
  • Согласен 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.

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


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

Да причем тут xr_logic и откат к древнеиндусским монстрокодам. Я же не об этом толкую блин. Просто чтобы файл требовал меньше телодвижений при его подключении к произвольно-стороннему проекту.

 

 

  Dennis_Chikin писал(а):
ну ВОТ КАК ???
-- Функция чтения настроек. В нее передается секция, откуда их нужно читать.

local t_def_nil
local t_def_kamp
local t_def_fotoman
local t_def_bandit
local t_def_other
function init_tables()

t_def_nil = {
    ["meet_state"]        = parse_data1( "5|wait@wait" ),
и тэ дэ по тексту...

Ну вот так например.

local xr_meet_initialized = false
function init()
    if not xr_meet_initialized then
    init_tables()
    xr_meet_initialized = true
    end
return true end

и вот так.

И наконец в начале функций где эти таблички используются, вот так.

function init_meet( npc, ini, sect, st, scheme )
xr_meet.init()
далее тело функции

И все будет крутиться само при помещении этого файла в какой угодно проект. Список clsid стволов согласен, должны уж сами догадываться занести. Впрочем я вряд ли ошибусь, если скажу что в большинстве модов этот список не отличается от оригинала.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

Не считая расширения от RvP, у меня стандартный движок ТЧ. Оригинальный.

Как можно запустить построчно, скомпилировав только часть - вот это мне интересно. Мы тут собрали пол-функции, что там дальше еще не знаем, но вы уже можете ее вызвать - так чтоли? И что будет выполняться при вызове такой функции...

Может быть стоит обращать внимание на то, что после чего создается, и что после чего может быть создано. Нельзя вычислить сумму а и б до тех пор пока мы не узнаем чему равны а и б например, это просто логично. И у меня такое ощущение что ты это упускаешь из виду)

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

Я не знаю какое это имеет отношение к теме разговора.

разве что, если писать log("сообщение") то у меня в логе никаких ! Cannot find saved game не будет.

Все мотивы и причины и даже следствия я изложил, не вижу причин повторяться.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

Мдямс. щас повторил твой тест - и у меня работает.

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

Может мы оба что-то не так делаем, но найти причину этого явления будет интересно. А за последние свои претензии приношу извинения.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

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

 

https://yadi.sk/d/x-9OfcydsPRp2

 

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


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

 

 

  Dennis_Chikin писал(а):
Кто и зачем так сделал - науке неизвестно, но скорее всего это был очередной курсовик по ООП очередного скубента.

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

Денис, с возвращением!

 

И кстати, чтобы мой пост содержал не только эмоциональную радость, но и что-нибудь теоретически-интересное. Расскажу-ка я о том, как в своем моде лечил всеми любимого NPC по фамилии Сахаров.

 

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

 

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

Есть как известно, IN-рестрикторы, OUT-рестрикторы, нпс и мутанты их помнят и очень обижаются если такой рестриктор перестает существовать. Ну, и ладно. Собрал значит в кучу память всех нпс и мутантов, перебрал все рестрикторы. Кого в этой всеобщей памяти не нашлось - к стенке, расстрелять.

А у Сахарова, как оказалось, был еще base_in_restrictor. не "не входить", и не "не выходить" а еще какая то третья категория. Зачем так было сделано, и в чем тайный смысл - мне неведомо. Но Сахаров очень был обижен на то что его любимый, хотя и нидлячегоненужный, рестриктор убили. И в отместку убивал сейвы, и не соглашался на перезапись этого base_in_restrictor-а в своем нетпакете. Может Артос таких выкрутасов не предусмотрел, а может свойство только для чтения, кто ж его знает.

В итоге пришлось самого Сахарова удалить :) и поставить на его место копию, которой средствами ОГСЕ приписан тот же стори_ид что был у старого.

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

  • Спасибо 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.

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


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

 

 

  Карлан писал(а):
Ни в каком не в подполье

Если даже и не в подполье, то в каком-то темном углу. Потому как я разбор на эту тему вижу впервые, и посему с утверждением

 

 

  Карлан писал(а):
ничего там интересного нет.

Категорически не согласен. Да и вообще Денис интересно рассказывает, я бы почитал с удовольствием дальше, даже если бы это было "бояном". Но для меня повторюсь, это новое. По всяким подпольям и потайным углам я не любитель лазить.

  • Согласен 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.

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


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

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