kenguru 336 Опубликовано 17 Февраля Поделиться Опубликовано 17 Февраля @CiberZold да, согласен, может быть множество других причин, но вся динамика ДОЛЖНА быть в памяти для успешной игры, а старые поршни есть суть статическое зло, как правило. И только их я могу с более-менее уверенной мордой лица удалять. Если удалил и что-то заглючило с квестами - сам виноват и разбирайся. А вот эти "общие" вылеты по памяти - они подрубают, т.к. выяснить причину маловероятно.. @Zander_driver они способствуют этому переполнению, не так ли? А раз динамических записей много - нужно чистить статику от мусора. И да, грешу на поршни вследствие многочисленных тестов. Когда набираешь много заданий, когда имеешь параллельно с сюжетом несколько веток квестов - начинаются траблы. У моего соратника Ворона, например, стали биться сейвы в самом конце сюжета, на ЧАЭС-2. Я лично, набрал заданий выше крыши (специально в целях тестирования), и полез в сюжет. И тоже стали случаться вылеты по памяти. Это с великой долей вероятности указывает, что накопление статической инфы виновато. Вот поэтому я решил вычислить масштабы проблемы древних инфопоршней (типа таких: "tutorial_artefact_start"), висящих мёртвым грузом в памяти. 1 1 С уважением, КенГуру Пилим S.T.A.L.K.E.R UZI Ссылка на комментарий
CiberZold 142 Опубликовано 17 Февраля Поделиться Опубликовано 17 Февраля @kenguru если у тебя старый сюжет остался то ты там особо не разгуляешься, там большая часть поршней нужна чтоб этот сюжет двигать, я бы тогда вообще оригинальный сюжет вырезал вместо с поршнями и прочими хвостами, ну если в моде и так много заданий то зачем ещё и оригинальный всем надоевший сюжет тянуть, но понимаю объём работы - вырезать все хвосты оригинала за это время можно небольшой новый мод сделать ) 1 Ссылка на комментарий
Капрал Хикс 505 Опубликовано 17 Февраля Поделиться Опубликовано 17 Февраля 5 часов назад, kenguru сказал: нужно чистить статику от мусора как по мне, экономия на спичках. А с кол-вом второстепенных заданий, которые сбиваются, проблему уже решали. Стоит покурить доработанные task_manager.script. 5 часов назад, kenguru сказал: Если удалил и что-то заглючило с квестами - сам виноват и разбирайся. Игроку разбираться? :). Стоит ИМХО не резать всё подряд, чтобы оно потом глючило. 1 Ссылка на комментарий
kenguru 336 Опубликовано 17 Февраля Поделиться Опубликовано 17 Февраля Приветствую, сталкерА! 8 часов назад, Капрал Хикс сказал: как по мне, экономия на спичках Вот мне и хотелось бы убедиться на фактах, так сказать.. Ну, а вдруг? Первоочередная чистка от поршней дохлых мутов и неписей реально сильно помогла на какое-то время. 8 часов назад, Капрал Хикс сказал: Игроку разбираться? Да нет конечно. Мне и разбираться придётся. Резать не глядя конечно не собирался, однако знать что там с этим всем творится - очень нужно. Если не получу помощи с форматированием любой строки, и не напишу сам, то позже буду поимённо ища поршни - вычислять масштабы проблемы. 8 часов назад, Капрал Хикс сказал: с кол-вом второстепенных заданий, которые сбиваются Нет, ничего не сбивается, однако в моде всё на рандомах, динамично - поэтому велика нагрузка на память. 9 часов назад, CiberZold сказал: там большая часть поршней нужна чтоб этот сюжет двигать Да, это конечно понятно, однако трабла в том, что АФФТары игры в большинстве случаев не предусмотрели очистку от ненужных использованных инфопоршней, и мне жуть как ручонки чешутся потереть все заюзанные и окаменевшие из них. А переполнение стека как раз в конце сюжета назревает, когда они уже и не нужны, а фриплей и вся побочка с альтернативкой только начинается. 1 С уважением, КенГуру Пилим S.T.A.L.K.E.R UZI Ссылка на комментарий
CiberZold 142 Опубликовано 18 Февраля Поделиться Опубликовано 18 Февраля 2 часа назад, kenguru сказал: и мне жуть как ручонки чешутся потереть все заюзанные и окаменевшие из них понятно, но это будет непросто, тут или удалять по ходу игры, отслеживать постоянно какой инфопоршень выдался по info_id, а потом его отключать, но чревато что в будущем можешь сломать какой-то диалог или сценку ,или уже в конце поняв какие сюжетные какие нет, перед фриплеем их все сразу задисейблить. 1 Ссылка на комментарий
Это популярное сообщение. Zander_driver 10 330 Опубликовано 18 Февраля Это популярное сообщение. Поделиться Опубликовано 18 Февраля 22 часа назад, kenguru сказал: они способствуют этому переполнению, не так ли? Переполнению стека? НЕТ Конечно. Вообще никаким образом не связано. 22 часа назад, kenguru сказал: Это с великой долей вероятности указывает, что накопление статической инфы виновато. Вот поэтому я решил вычислить масштабы проблемы древних инфопоршней Вы это блин серьезно? ВЕСЬ объем инфопоршней от силы потянет несколько килобайт. И вы думаете что вот именно они, будут причиной каких-то вылетов по недостатку чего-то, на 64-битном движке способном использовать десятки гигабайт памяти, при необходимости. Бред сивой кобылы. 8 часов назад, kenguru сказал: Вот мне и хотелось бы убедиться на фактах, так сказать.. Ну, а вдруг? Ну а вдруг, если отрезать себе руки, то зрение восстановится? Примерно такая у вас логика... Вместо решения проблемы, а займемся-ка мы беспощадно чем-нибудь совершенно бессмысленным и не относящимся к нашей проблеме. 5 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. Ссылка на комментарий
Pavel_2000 5 Опубликовано 19 Февраля Поделиться Опубликовано 19 Февраля Здравствуйте, заметил что в повелителе зоны во вкладке "локации" прописаны все смарты сталкеров и их описания написаны как сталкеры в диалоге пишут, захотел сделать так что бы в списке локации были только сами локации: скадовск, янов, внз круг и тд... нашёл функцию которая за это отвечает Скрытый текст -- Локации if n=="2" then mode = "level" local tbl local name tbl = god_tbl.god_smart_table if db.actor~=nil then for i=1, 65535 do local obj = alife():object(i) if obj~=nil then if obj:section_name()=="smart_terrain" then local s_name = game.translate_string("st_stalker_"..obj:name()) if s_table[s_name]~=nil then s_name = s_table[s_name] end self:AddItemToList(s_name, i) end end end end end путём логических размышлений я понял что эта функция берёт все секции смартов из алайфов и переводит он их соответственно изменил строчку перевода Скрытый текст local s_name = game.translate_string("st_"..obj:name().."_name") теперь переводит нормально основные места, но в списке есть и другие места которые попросту не переводятся, а ещё заметил что есть таблица с этими основными местами, но как я понял она не используется(точнее их две) Скрытый текст god_smart_table = { ["zat_b100"] = "st_zat_b100_name", ["zat_b104"] = "st_zat_b104_name", ["zat_b38"] = "st_zat_b38_name", ["zat_b40"] = "st_zat_b40_name", ["zat_b56"] = "st_zat_b56_name", ["zat_b5"] = "st_zat_b5_name", ["zat_a2"] = "st_zat_a2_name", ["zat_b20"] = "st_zat_b20_name", ["zat_b53"] = "st_zat_b53_name", ["zat_b101"] = "st_zat_b101_name", ["zat_b106"] = "st_zat_b106_name", ["zat_b7"] = "st_zat_b7_name", ["zat_b14"] = "st_zat_b14_name", ["zat_b52"] = "st_zat_b52_name", ["zat_b39"] = "st_zat_b39_name", ["zat_b33"] = "st_zat_b33_name", ["zat_b18"] = "st_zat_b18_name", ["zat_b54"] = "st_zat_b54_name", ["zat_b12"] = "st_zat_b12_name", ["zat_b28"] = "st_zat_b28_name", ["zat_b103"] = "st_zat_b103_name", ["jup_b1"] = "st_jup_b1_name", ["jup_b46"] = "st_jup_b46_name", ["jup_b202"] = "st_jup_b202_name", ["jup_b211"] = "st_jup_b211_name", ["jup_b200"] = "st_jup_b200_name", ["jup_b19"] = "st_jup_b19_name", ["jup_a6"] = "st_jup_a6_name", ["jup_b25"] = "st_jup_b25_name", ["jup_b6"] = "st_jup_b6_name", ["jup_b205"] = "st_jup_b205_name", ["jup_b206"] = "st_jup_b206_name", ["jup_b32"] = "st_jup_b32_name", ["jup_a10"] = "st_jup_a10_name", ["jup_b209"] = "st_jup_b209_name", ["jup_b208"] = "st_jup_b208_name", ["jup_a12"] = "st_jup_a12_name", ["jup_b212"] = "st_jup_b212_name", ["jup_b9"] = "st_jup_b9_name", ["jup_b201"] = "st_jup_b201_name", ["jup_a9"] = "st_jup_a9_name", ["pri_a28"] = "st_pri_a28_name", ["pri_b36"] = "st_pri_b36_name", ["pri_b303"] = "st_pri_b303_name", ["pri_b301"] = "st_pri_b301_name", ["pri_a17"] = "st_pri_a17_name", ["pri_b306"] = "st_pri_b306_name", ["pri_a16"] = "st_pri_a16_name", ["pri_a25"] = "st_pri_a25_name", ["pri_b35"] = "st_pri_b35_name", ["pri_a21"] = "st_pri_a21_name", ["pri_b304"] = "st_pri_b304_name", ["pri_a18"] = "st_pri_a18_name" } Скрытый текст god_smart_table_full = { {"zat_b55", "st_zat_b55_name"}, {"zat_b100", "st_zat_b100_name"}, {"zat_b104", "st_zat_b104_name"}, {"zat_b38", "st_zat_b38_name"}, {"zat_b40", "st_zat_b40_name"}, {"zat_b56", "st_zat_b56_name"}, {"zat_b5", "st_zat_b5_name"}, {"zat_a2", "st_zat_a2_name"}, {"zat_b20", "st_zat_b20_name"}, {"zat_b53", "st_zat_b53_name"}, {"zat_b101", "st_zat_b101_name"}, {"zat_b106", "st_zat_b106_name"}, {"zat_b7", "st_zat_b7_name"}, {"zat_b14", "st_zat_b14_name"}, {"zat_b52", "st_zat_b52_name"}, {"zat_b39", "st_zat_b39_name"}, {"zat_b33", "st_zat_b33_name"}, {"zat_b18", "st_zat_b18_name"}, {"zat_b54", "st_zat_b54_name"}, {"zat_b12", "st_zat_b12_name"}, {"zat_b28", "st_zat_b28_name"}, {"zat_b103", "st_zat_b103_name"}, {"jup_b1", "st_jup_b1_name"}, {"jup_b46", "st_jup_b46_name"}, {"jup_b202", "st_jup_b202_name"}, {"jup_b211", "st_jup_b211_name"}, {"jup_b200", "st_jup_b200_name"}, {"jup_b19", "st_jup_b19_name"}, {"jup_a6", "st_jup_a6_name"}, {"jup_b25", "st_jup_b25_name"}, {"jup_b6", "st_jup_b6_name"}, {"jup_b205", "st_jup_b205_name"}, {"jup_b206", "st_jup_b206_name"}, {"jup_b32", "st_jup_b32_name"}, {"jup_a10", "st_jup_a10_name"}, {"jup_b209", "st_jup_b209_name"}, {"jup_b208", "st_jup_b208_name"}, {"jup_a12", "st_jup_a12_name"}, {"jup_b212", "st_jup_b212_name"}, {"jup_b9", "st_jup_b9_name"}, {"jup_b201", "st_jup_b201_name"}, {"jup_a9", "st_jup_a9_name"}, {"pri_a28", "st_pri_a28_name"}, {"pri_b36", "st_pri_b36_name"}, {"pri_b303", "st_pri_b303_name"}, {"pri_b301", "st_pri_b301_name"}, {"pri_a17", "st_pri_a17_name"}, {"pri_b306", "st_pri_b306_name"}, {"pri_a16", "st_pri_a16_name"}, {"pri_a25", "st_pri_a25_name"}, {"pri_b35", "st_pri_b35_name"}, {"pri_a21", "st_pri_a21_name"}, {"pri_b304", "st_pri_b304_name"}, {"pri_a18", "st_pri_a18_name"} } и вот то в чём вопрос как сделать так чтоб этот скрипт использовал эту таблицу? что бы не было вот этих лишних мест https://disk.yandex.ru/i/mK-Tbn7hWt_a2A - скрин Ссылка на комментарий
AndrewMor 526 Опубликовано 19 Февраля Поделиться Опубликовано 19 Февраля (изменено) 18.02.2024 в 00:17, kenguru сказал: Да, это конечно понятно, однако трабла в том, что АФФТары игры в большинстве случаев не предусмотрели очистку от ненужных использованных инфопоршней Представляю, сколько сюжетных диалогов по новой появятся! Большинство диалогов на инфопорциях завязано. Рус, неужели у тебя все вылеты на переполнение стека завязаны? Битье сейвов четко говорит о переполнении стоража актора. Изменено 19 Февраля пользователем AndrewMor 1 1 Сталкер - наше всё! Ссылка на комментарий
Zander_driver 10 330 Опубликовано 19 Февраля Поделиться Опубликовано 19 Февраля 2 часа назад, AndrewMor сказал: Битье сейвов четко говорит о переполнении стоража актора. Используйте script_vars_storage OGSR, и будет вам счастье. Оно не переполняется никогда. А вообще-то смешались в кучу кони, люди... переполнение стека и переполнение "стоража" (нетпакета?) актора - как бы тоже совершенно разные и никак не связанные вещи... Шайтан вас разберет, а я больше без конкретных логов и/или конкретного кода, зря писать ничего не буду. 8 часов назад, Pavel_2000 сказал: как сделать так чтоб этот скрипт использовал эту таблицу? Использовать переменную tbl в коде. 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. Ссылка на комментарий
Pavel_2000 5 Опубликовано 19 Февраля Поделиться Опубликовано 19 Февраля 8 минут назад, Zander_driver сказал: Использовать переменную tbl в коде. я понимаю, но не понимаю как её использовать куда вставить или как, гуглил про таблицы курил lua но так и не понял в итоге я сам разобрался) нашёл в инете функцию проверки есть ли в массиве определенное значение Скрытый текст function check_table(arg, table, mode) if mode == 1 then -- Если нужен поиск по ключу for k, v in pairs(table) do if k == arg then return true end end else -- Если нужен поиск по значению for k, v in pairs(table) do if v == arg then return true end end end return false end ну и сами проверки Скрытый текст -- Проверка ключа: if check_table('First', red, 1) then -- 1 аргумент - Слово для поиска, 2 аргумент - Твоя таблица, 3 аргумент - режим. print('Найден ключ!') end -- Проверка значения: if check_table('Hello', blue, 2) then -- 1 аргумент - Слово для поиска, 2 аргумент - Твоя таблица, 3 аргумент - Режим. print('Найдено значение!') end ну и сделал вот так Скрытый текст if obj:section_name()=="smart_terrain" and check_table(obj:name(), tbl, 1) then и всё получилось. https://disk.yandex.ru/i/92E8xUoaHDYU9w - скрин 1 Ссылка на комментарий
kenguru 336 Опубликовано 20 Февраля Поделиться Опубликовано 20 Февраля (изменено) Привет всем! 12 часов назад, Zander_driver сказал: переполнение стека и переполнение "стоража" (нетпакета?) актора - как бы тоже совершенно разные и никак не связанные вещи... Да, это я сдуру их в одну кучу валю. Конечно речь всё время шла о pstor Звиняйте - мы академиев не кончали 12 часов назад, Zander_driver сказал: script_vars_storage вот с этого места можно немного поподробней? А то ни сном, ни духом.. Изменено 20 Февраля пользователем kenguru С уважением, КенГуру Пилим S.T.A.L.K.E.R UZI Ссылка на комментарий
Zander_driver 10 330 Опубликовано 20 Февраля Поделиться Опубликовано 20 Февраля 2 часа назад, kenguru сказал: pstor В OGSR вообще не надо использовать. 2 часа назад, kenguru сказал: А то ни сном, ни духом А как же вы мод на движок OGSR пересаживали, OGSR-Wiki не читая? И, если не читали - то зачем пересаживали? (Там же в вики все реальные резоны и причины для этого написаны...) Всегда, когда я даю подсказки людям в виде пары слов, то это именно ключевые слова, по которым уже можно найти то что надо. Т.е. заходим в OGSR-Wiki, там вводим в поиск то самое, заветное слово script_vars_storage, и радуемся 2 часа назад, kenguru сказал: поподробней Скрытый текст function get(var_name, default) -- чтение local s = get_stored_vars() if s[var_name] ~= nil then return s[var_name] end return default end function set(var_name, value) -- запись local s = get_stored_vars() s[var_name] = value end И ничего не переполнится никогда. Я сотни тысяч var_name так храню. 1 3 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. Ссылка на комментарий
AndrewMor 526 Опубликовано 20 Февраля Поделиться Опубликовано 20 Февраля 11 часов назад, kenguru сказал: Конечно речь всё время шла о pstor О том и речь. Сталкер - наше всё! Ссылка на комментарий
Капрал Хикс 505 Опубликовано 24 Февраля Поделиться Опубликовано 24 Февраля Согласно этой вот статье: https://stalker.fandom.com/ru/wiki/Ранг Есть баг с точностью НПС... И вот вопрос - этот баг в формуле в движке править надо? Или оно зарыто где-то в скриптах? Можно, конечно, порезать всем ранг в 10 раз в конфигах, но проблему полностью это не решит... 2 Ссылка на комментарий
Купер 2 767 Опубликовано 24 Февраля Поделиться Опубликовано 24 Февраля @Капрал Хикс , в движке, похоже. ai_stalker.cpp: Скрытый текст static float novice_rank_dispersion = pSettings->r_float("ranks_properties", "dispersion_novice_k"); static float expirienced_rank_dispersion = pSettings->r_float("ranks_properties", "dispersion_experienced_k"); CHARACTER_RANK_VALUE rank = Rank(); clamp(rank, 0, 100); float rank_k = float(rank)/100.f; m_fRankImmunity = novice_rank_immunity + (expirienced_rank_immunity - novice_rank_immunity) * rank_k; m_fRankVisibility = novice_rank_visibility + (expirienced_rank_visibility - novice_rank_visibility) * rank_k; m_fRankDisperison = expirienced_rank_dispersion + (expirienced_rank_dispersion - novice_rank_dispersion) * (1-rank_k); 2 Ссылка на комментарий
Pavel_2000 5 Опубликовано 25 Февраля Поделиться Опубликовано 25 Февраля потихоньку изучаю модинг появилась идея заставить эту штуку выстрелить при опускании рычага(типо чтоб последовательно появились например эффекты элекрты ну и звук) https://disk.yandex.ru/i/6bf1M-KjrKliQQ но появилась загвоздка я даже понятия не имею куда лезть что бы посмотреть как это можно реализовать и возможно ли это вообще если есть кто знает где смотреть и что курить, подскажите пожалуйста Ссылка на комментарий
Капрал Хикс 505 Опубликовано 25 Февраля Поделиться Опубликовано 25 Февраля Ищу скрипт, позволяющий НПС игнорировать определённые виды мутантов. Наверняка есть где подсмотреть. Нужно для целого гулага вояк на Кордоне. Ссылка на комментарий
Norman Eisenherz 291 Опубликовано 25 Февраля Поделиться Опубликовано 25 Февраля @Капрал Хикс Может, это подойдет: Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Капрал Хикс 505 Опубликовано 25 Февраля Поделиться Опубликовано 25 Февраля @Norman Eisenherz , это я помню, писал там. Не то, там так решение и не нашли. Ссылка на комментарий
imcrazyhoudini 202 Опубликовано 25 Февраля Поделиться Опубликовано 25 Февраля @Капрал Хикс ну впихни этих мутантов в гулаг и пускай этот гулаг твои вояки и игнорят. ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти