Это популярное сообщение. Zander_driver 10 333 Опубликовано 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 527 Опубликовано 19 Февраля Поделиться Опубликовано 19 Февраля (изменено) 18.02.2024 в 00:17, kenguru сказал: Да, это конечно понятно, однако трабла в том, что АФФТары игры в большинстве случаев не предусмотрели очистку от ненужных использованных инфопоршней Представляю, сколько сюжетных диалогов по новой появятся! Большинство диалогов на инфопорциях завязано. Рус, неужели у тебя все вылеты на переполнение стека завязаны? Битье сейвов четко говорит о переполнении стоража актора. Изменено 19 Февраля пользователем AndrewMor 1 1 Сталкер - наше всё! Ссылка на комментарий
Zander_driver 10 333 Опубликовано 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 347 Опубликовано 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 333 Опубликовано 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 527 Опубликовано 20 Февраля Поделиться Опубликовано 20 Февраля 11 часов назад, kenguru сказал: Конечно речь всё время шла о pstor О том и речь. Сталкер - наше всё! Ссылка на комментарий
Капрал Хикс 521 Опубликовано 24 Февраля Поделиться Опубликовано 24 Февраля Согласно этой вот статье: https://stalker.fandom.com/ru/wiki/Ранг Есть баг с точностью НПС... И вот вопрос - этот баг в формуле в движке править надо? Или оно зарыто где-то в скриптах? Можно, конечно, порезать всем ранг в 10 раз в конфигах, но проблему полностью это не решит... 2 Ссылка на комментарий
Купер 2 841 Опубликовано 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 но появилась загвоздка я даже понятия не имею куда лезть что бы посмотреть как это можно реализовать и возможно ли это вообще если есть кто знает где смотреть и что курить, подскажите пожалуйста Ссылка на комментарий
Капрал Хикс 521 Опубликовано 25 Февраля Поделиться Опубликовано 25 Февраля Ищу скрипт, позволяющий НПС игнорировать определённые виды мутантов. Наверняка есть где подсмотреть. Нужно для целого гулага вояк на Кордоне. Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 25 Февраля Поделиться Опубликовано 25 Февраля @Капрал Хикс Может, это подойдет: Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Капрал Хикс 521 Опубликовано 25 Февраля Поделиться Опубликовано 25 Февраля @Norman Eisenherz , это я помню, писал там. Не то, там так решение и не нашли. Ссылка на комментарий
imcrazyhoudini 208 Опубликовано 25 Февраля Поделиться Опубликовано 25 Февраля @Капрал Хикс ну впихни этих мутантов в гулаг и пускай этот гулаг твои вояки и игнорят. ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
dsh 3 824 Опубликовано 26 Февраля Поделиться Опубликовано 26 Февраля 22 hours ago, Капрал Хикс said: Нужно для целого гулага вояк на Кордоне. Ну угадай с одного раза - где: https://github.com/dsh2dsh/op2ogse/blob/5a01f59d220b7808dbb68cce0af42ce333bb85d4/gamedata/scripts/dsh/dsh_enemies.script#L50 И вот прямо таки как раз для целого гулага вояк на Кордоне. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Pavel_2000 5 Опубликовано 26 Февраля Поделиться Опубликовано 26 Февраля (изменено) Интересно, а есть проверка на наличие определённого предмета в inventory box? Пытался гуглить ничего не нашёл. Может какие то костыли есть? Изменено 27 Февраля пользователем Опричник Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 27 Февраля Поделиться Опубликовано 27 Февраля Перебрать сервер с проверками "существующий объект + наличие родителя + id родителя = id коробки". 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
imcrazyhoudini 208 Опубликовано 27 Февраля Поделиться Опубликовано 27 Февраля @Pavel_2000 можно в bind_stalker.script в actor_binder:take_item_from_box: if box:story_id() == 47 and item:section() == "af_ice" then db.actor:give_info_portion("yan_have_snezhinka") end Как пример. Правда, надо стори ид назначать. 1 ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
Kirgudu 1 207 Опубликовано 27 Февраля Поделиться Опубликовано 27 Февраля @Pavel_2000 зависит от версии игры. В ЧН и ЗП есть вполне себе работающий итератор iterate_inventory_box, аналогичный по действию итератору iterate_inventory, но предназначенный, как можно догадаться, как раз для ящиков. В ТЧ - см. совет выше по перебору серверных объектов. 1 1 Инструмент Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти