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

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

@CiberZold да, согласен, может быть множество других причин, но вся динамика ДОЛЖНА быть в памяти для успешной игры, а старые поршни есть суть статическое зло, как правило. И только их я могу с более-менее уверенной мордой лица удалять. Если удалил и что-то заглючило с квестами - сам виноват и разбирайся. А вот эти "общие" вылеты по памяти - они подрубают, т.к. выяснить причину маловероятно..

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

И да, грешу на поршни вследствие многочисленных тестов. Когда набираешь много заданий, когда имеешь параллельно с сюжетом несколько веток квестов - начинаются траблы. У моего соратника Ворона, например, стали биться сейвы в самом конце сюжета, на ЧАЭС-2.

Я лично, набрал заданий выше крыши (специально в целях тестирования), и полез в сюжет. И тоже стали случаться вылеты по памяти. Это с великой долей вероятности указывает, что накопление статической инфы виновато. Вот поэтому я решил вычислить масштабы проблемы древних инфопоршней (типа таких: "tutorial_artefact_start"), висящих мёртвым грузом в памяти.:az1000106:

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

С уважением, КенГуру ;)

Пилим S.T.A.L.K.E.R UZI

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

@kenguru если у тебя старый сюжет остался то ты там особо не разгуляешься, там большая часть поршней нужна чтоб этот сюжет двигать, я бы тогда вообще оригинальный сюжет вырезал вместо с поршнями и прочими хвостами, ну если в моде и так много заданий то зачем ещё и оригинальный всем надоевший сюжет тянуть, но понимаю объём работы  - вырезать все хвосты оригинала за это время можно небольшой новый мод сделать )

  • Нравится 1
Ссылка на комментарий
5 часов назад, kenguru сказал:

нужно чистить статику от мусора

как по мне, экономия на спичках. А с кол-вом второстепенных заданий, которые сбиваются, проблему уже решали. Стоит покурить доработанные task_manager.script.

 

5 часов назад, kenguru сказал:

Если удалил и что-то заглючило с квестами - сам виноват и разбирайся.

 Игроку разбираться? :). Стоит ИМХО не резать всё подряд, чтобы оно потом глючило.

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

Приветствую, сталкерА!

 

8 часов назад, Капрал Хикс сказал:

как по мне, экономия на спичках

Вот мне и хотелось бы убедиться на фактах, так сказать.. Ну, а вдруг?

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

8 часов назад, Капрал Хикс сказал:

Игроку разбираться?

Да нет конечно. Мне и разбираться придётся. Резать не глядя конечно не собирался, однако знать что там с этим всем творится - очень нужно.

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

8 часов назад, Капрал Хикс сказал:

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

Нет, ничего не сбивается, однако в моде всё на рандомах, динамично - поэтому велика нагрузка на память.

9 часов назад, CiberZold сказал:

там большая часть поршней нужна чтоб этот сюжет двигать

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

  • Не нравится 1

С уважением, КенГуру ;)

Пилим S.T.A.L.K.E.R UZI

Ссылка на комментарий
2 часа назад, kenguru сказал:

и мне жуть как ручонки чешутся потереть все заюзанные и окаменевшие из них

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

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

Здравствуйте, заметил что в повелителе зоны во вкладке "локации" прописаны все смарты сталкеров и их описания написаны как сталкеры в диалоге пишут, захотел сделать так что бы в списке локации были только сами локации: скадовск, янов, внз круг и тд...

нашёл функцию которая за это отвечает

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

-- Локации
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 - скрин

Ссылка на комментарий
18.02.2024 в 00:17, kenguru сказал:

Да, это конечно понятно, однако трабла в том, что АФФТары игры в большинстве случаев не предусмотрели очистку от ненужных использованных инфопоршней

Представляю, сколько сюжетных диалогов по новой появятся! Большинство диалогов на инфопорциях завязано.

 

Рус, неужели у тебя все вылеты на переполнение стека завязаны? Битье сейвов четко говорит о переполнении стоража актора.

Изменено пользователем AndrewMor
  • Нравится 1
  • Согласен 1

Сталкер - наше всё!

Ссылка на комментарий
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.

Ссылка на комментарий
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
Ссылка на комментарий

Привет всем!

 

12 часов назад, Zander_driver сказал:

переполнение стека и переполнение "стоража" (нетпакета?) актора - как бы тоже совершенно разные и никак не связанные вещи...

Да, это я сдуру их в одну кучу валю. Конечно речь всё время шла о pstor

Звиняйте - мы академиев не кончали :biggrin:

12 часов назад, Zander_driver сказал:

script_vars_storage

вот с этого места можно немного поподробней? А то ни сном, ни духом..:unknw:

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

С уважением, КенГуру ;)

Пилим S.T.A.L.K.E.R UZI

Ссылка на комментарий
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.

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

Согласно этой вот статье:

https://stalker.fandom.com/ru/wiki/Ранг

Есть баг с точностью НПС... И вот вопрос - этот баг в формуле в движке править надо? Или оно зарыто где-то в скриптах? Можно, конечно, порезать всем ранг в 10 раз в конфигах, но проблему полностью это не решит...

  • Полезно 2
Ссылка на комментарий

@Капрал Хикс , в движке, похоже. 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
Ссылка на комментарий

потихоньку изучаю модинг

появилась идея заставить эту штуку выстрелить при опускании рычага(типо чтоб последовательно появились например эффекты элекрты ну и звук)

https://disk.yandex.ru/i/6bf1M-KjrKliQQ

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

если есть кто знает где смотреть и что курить, подскажите пожалуйста

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

Ищу скрипт, позволяющий НПС игнорировать определённые виды мутантов. Наверняка есть где подсмотреть. Нужно для целого гулага вояк на Кордоне.

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

@Капрал Хикс ну впихни этих мутантов в гулаг и пускай этот гулаг твои вояки и игнорят.

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

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

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

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

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

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

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

Войти

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

Войти
  • Недавно просматривали   0 пользователей

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