Norman Eisenherz 297 Опубликовано 5 Января Поделиться Опубликовано 5 Января Как минимум, это не оригинал, а OGSR, и в OGSR вполне может быть готовая обертка для получения суммарного веса. Например, get_total_weight() в классе game_object – надо спрашивать тех, кто работает c платформой OGSR. В остальном, выводить вес в сообщения/лог при всех действиях с коробкой и ловить момент обнуления. Возможно, не хватает проверки веса предметов в use_callback. local cur_box_weight = 0 как-то используется? В коде только отдельная переменная self.cur_box_weight. 1 2 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Colder 12 Опубликовано 6 Января Поделиться Опубликовано 6 Января Пробывал добавить на апдейт Скрытый текст if self.object:clsid() == clsid.inventory_box and box_info_wnd ~= nil then box_info_wnd:hide() else box_info_wnd:show() end Но не сработало 1 Ссылка на комментарий
Norman Eisenherz 297 Опубликовано 6 Января Поделиться Опубликовано 6 Января Пока нет привычки к прямому "переводу", стоит писать словами, что этот скрипт должен делать при каждом событии взаимодействия с коробкой, и пошагово сравнивать с кодом – вслепую можно тыкаться очень долго. 2 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Zander_driver 10 331 Опубликовано 6 Января Поделиться Опубликовано 6 Января 1 час назад, Norman Eisenherz сказал: вслепую можно тыкаться очень долго. Я бы еще добавил - при тыканьи вслепую, вообще нет никаких гарантий, что причина "почему что-то пошло не так" вообще когда-нибудь найдется. Для отладки, была придумана такая замечательная вещь, как ЛОГИ. Пользуйтесь ими! И тогда любой баг и любое "что-то не работает" можно разобрать по полочкам и понять, почему. 04.01.2024 в 19:34, Colder сказал: Подскажите что делаю не так? Так что на этот вопрос, я бы так ответил - логами не пользуешься. Вот все что в твоем коде нашлось, по части вывода в лог... Подключение биндера, вкл/выкл графпоинтов, хит, уничтожение... Других методов вывода информации в лог, в коде не замечено. Т.е. информация, относящаяся к обозначенной тобой проблеме, в лог тобою же и не выводится. Ну и что кроме гадания, остается? Добавь вывод в лог важной информации и/или просто отладочных сообщений в ключевых методах и блоках кода, относящихся к тому что ты делаешь. Посмотри, что будет в логах. И скорее всего, наверняка, тут же сам поймешь в чем дело. 1 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. Ссылка на комментарий
I am Dead 909 Опубликовано 7 Января Поделиться Опубликовано 7 Января 03.01.2024 в 07:12, Colder сказал: Подскажите как правильно прочитать строку из ltx файла У тебя тут ни одна строка... Мне кажется, тебе проще будет записать нужные тебе предметы в одну строку, разделить например их запятой, потом разбить эту строку с помощь split_comma_separated_list: -- делит строку в виде "aaa,bbb,ccc" на строки "aaa", "bbb", "ccc" и возвращает их в виде массива function split_comma_separated_list(s) return string.explode(",", s) end Пример for info, recipe in pairs(split_comma_separated_list(get_string(anom:section(), "anomaly_recipes"))) do component_sect_string = get_string("transform_" .. recipe, "components") if db.actor:has_info(recipe) and component_sect_string == obj:section() then -- есть рецепт и этот компонент в нём участвует end end 06.01.2024 в 22:10, Colder сказал: if self.object:clsid() == clsid.inventory_box and box_info_wnd ~= nil then box_info_wnd:hide() else box_info_wnd:show() end Гениально... box_info_wnd не существует, делаем ему show()... 1 2 Ссылка на комментарий
Stalkersof 120 Опубликовано 8 Января Поделиться Опубликовано 8 Января (изменено) Ребята что то не могу разобраться. Делаю фикс для погоды ночью отключаю лучи и настраиваю тонемапинг. В игре все работает. Загружаю сохранение ночью все равно лучи волуметрик. Хотя я как бы сохраняю тип лучей в сохранении и загружаю их от туда. local sm = ogse_signals.get_mgr() function attach(sm) -- для менеджера сигналов sm:subscribe({signal = "on_update", fun = this.update}) end local htime local parametr local console = get_console() function update() htime = level.get_time_hours() if htime <= 5 or htime >= 21 then --ночь if xr_logic.pstor_retrieve(db.actor, "tonemap", nil) == nil or xr_logic.pstor_retrieve(db.actor, "tonemap", true) == true then parametr = console:get_string("r_sunshafts_mode") xr_logic.pstor_store(db.actor, "fix", parametr) console:execute("r_sunshafts_mode st_opt_off") console:execute("r2_tonemap_amount 0.4") console:execute("r2_tonemap_middlegray 0.4") xr_logic.pstor_store(db.actor, "tonemap", false) end else --день if xr_logic.pstor_retrieve(db.actor, "tonemap", false) == false then parametr = xr_logic.pstor_retrieve(db.actor, "fix", 0) console:execute("r_sunshafts_mode "..parametr) console:execute("r2_tonemap_amount 0.8") console:execute("r2_tonemap_middlegray 0.8") xr_logic.pstor_store(db.actor, "tonemap", true) end end end Изменено 8 Января пользователем Stalkersof Freeplay Graphic Mod(FGM) Ссылка на комментарий
Zander_driver 10 331 Опубликовано 8 Января Поделиться Опубликовано 8 Января 1 час назад, Stalkersof сказал: if xr_logic.pstor_retrieve(db.actor, "tonemap", nil) == nil or xr_logic.pstor_retrieve(db.actor, "tonemap", true) == true then 1 час назад, Stalkersof сказал: if xr_logic.pstor_retrieve(db.actor, "tonemap", false) == false then Эти блоки кода сработают только в том случае, если в пстор ничего не сохранялось. А как только сохранили и загрузили сейв, условие не срабатывает и блок внутри не выполняется, логично. Впрочем, ты прямо внутри этих блоков записываешь, так что они срабатывают только один раз при старте новой игры, и всё. 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. Ссылка на комментарий
Stalkersof 120 Опубликовано 8 Января Поделиться Опубликовано 8 Января понимаю что я где то начудил и сохранение в сейф не работает. Не могли бы вы подробнее объяснить. Может быть подсказать куда и как 3 часа назад, Zander_driver сказал: Эти блоки кода сработают только в том случае, если в пстор ничего не сохранялось. А как только сохранили и загрузили сейв, условие не срабатывает и блок внутри не выполняется, логично. Впрочем, ты прямо внутри этих блоков записываешь, так что они срабатывают только один раз при старте новой игры, и всё. Я вообще отказался от этой затей записывать в сейф условия. Обошелся глобальной переменной которую объявляю в скрипте и при загрузке уровня. Скрипт срабатывает при новой игре или либо при загрузке. Freeplay Graphic Mod(FGM) Ссылка на комментарий
I am Dead 909 Опубликовано 8 Января Поделиться Опубликовано 8 Января @Stalkersof Бро, не советую пользоваться пстором, у движка есть некое хранилище где можешь что то сохранять. Модуль local xvars = get_stored_vars() --------------| Публичный интерфейс модуля |----------------------------------- function unpack_value(value) if type(value) == "userdata" then value = value(true) end return value end function value_exist(name) return xvars[name] ~= nil end function set_value(name, value) xvars[name] = value end function get_value(name, default_value) local value = xvars[name] if value == nil then ASSERT(default_value ~= nil, "get_value: neither value '%s' is exist, nor default value is provided", name) set_value(name, default_value) return default_value end return unpack_value(value) end -- в случае, если не существует, просто вернуть nil function get_value_safe(name) return unpack_value(xvars[name]) end function remove_value(name) xvars[name] = nil end function set_or_remove_value(name, value) if value then set_value(name, value) else remove_value(name) end end function get_all_vars() return xvars() end 1 2 Ссылка на комментарий
CiberZold 142 Опубликовано 8 Января Поделиться Опубликовано 8 Января 4 часа назад, Stalkersof сказал: Я вообще отказался от этой затей записывать в сейф условия да а условие, которое висит на постоянном апдейте не намного лучшее решение 24 минуты назад, I am Dead сказал: не советую пользоваться пстором, у движка есть некое хранилище где можешь что то сохранять. так это же только в ОГСР, а где он написал что работает на этом движке? Ссылка на комментарий
Zander_driver 10 331 Опубликовано 9 Января Поделиться Опубликовано 9 Января 9 часов назад, Stalkersof сказал: я где то начудил и сохранение в сейф не работает Почему? Сохранение как раз и в вашем коде выше работает. Там чтение из сейва не работает. А где именно начудил, я же и показал уже в посте выше. Про то что лучше использовать get_stored_vars(), а не пстор, тоже уже сказали (Я не знал что вы OGSR используете). На OGSR, пстор вообще ни для чего не нужен. 9 часов назад, Stalkersof сказал: Не могли бы вы подробнее объяснить Так а что еще нужно то? 5 часов назад, CiberZold сказал: условие, которое висит на постоянном апдейте Это всегда хуже. Но, может автор так хочет не допустить того что юзер сам ручками в консоли свои значения впишет. Апдейт тут же скинет как было... 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. Ссылка на комментарий
Stalkersof 120 Опубликовано 9 Января Поделиться Опубликовано 9 Января 2 часа назад, Zander_driver сказал: Почему? Сохранение как раз и в вашем коде выше работает. Там чтение из сейва не работает. А где именно начудил, я же и показал уже в посте выше. Про то что лучше использовать get_stored_vars(), а не пстор, тоже уже сказали (Я не знал что вы OGSR используете). На OGSR, пстор вообще ни для чего не нужен. Так а что еще нужно то? Это всегда хуже. Но, может автор так хочет не допустить того что юзер сам ручками в консоли свои значения впишет. Апдейт тут же скинет как было... Да на ОГСР щас попробую переписать скрипт с сохранением в хранилище ОГСР. В скрипте я только отключаю солнечные лучи во ночное время. Причем сохраняя настройки юзера. Если поменяет тип лучей или отключит то это и вернется. А то что по тонемапингу это только настройки самого эффекта. Сам эффект можно отключить в юзере если кто пожелает. Больно уж эти лучи картинку портят ночью все засвечено. Править погоду не выход. Вот такой костыль. Freeplay Graphic Mod(FGM) Ссылка на комментарий
CiberZold 142 Опубликовано 9 Января Поделиться Опубликовано 9 Января 1 час назад, Stalkersof сказал: В скрипте я только отключаю солнечные лучи во ночное время делая это на каждом апдейте, ты заставляешь процессор обрабатывать это условие каждый такт процессора, хотя само условие тебе нужно два раза в сутки ,чтоб сработало, включилось вечером и отключилось утром, оптимизация скрипта таким образом плохая) может условие повесить наоборот при запуске игры, загрузке уровня или сейва, а лучше для оптимизации и мне как юзеру, да и большинству юзеров думаю тоже хотелось бы самим выбрать, что им больше нравиться - играть с объёмными лучами или с ОГСЕ-саншафтами, кому то может наоборот эти объёмные нравятся, зачем юзера так ограничивать 1 1 Ссылка на комментарий
Zander_driver 10 331 Опубликовано 9 Января Поделиться Опубликовано 9 Января (изменено) 1 час назад, CiberZold сказал: ты заставляешь процессор обрабатывать это условие каждый такт процессора, хотя само условие тебе нужно два раза в сутки Ну сгущать краски-то не надо. Апдейт актора и большинства объектов в X-Ray, по частоте не превышает фпс игры. Т.е. иными словами, апдейт работает с частотой фреймов рендера. И тогда это условие обрабатывается раз в ~16мс (при 60 фпс, например). Процессоры работают на частотах в несколько гигагерц, т.е. 1 такт длится сотни пикосекунд. Так что тактов процессора за один апдейт пройдет порядка сотен миллионов. И один раз в каждые несколько сотен миллонов тактов, процессор будет заниматься перепроверкой этого условия. Это не хорошо, но все же это не каждый такт Очень далеко не каждый. В остальном согласен Изменено 9 Января пользователем 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. Ссылка на комментарий
CiberZold 142 Опубликовано 9 Января Поделиться Опубликовано 9 Января 12 минут назад, Zander_driver сказал: Ну сгущать краски-то не надо. ну да с тактом я переборщил, сначала хотел просто написать 1 милисекунду, но потом для большего нагнетания написал про такт 1 Ссылка на комментарий
Zander_driver 10 331 Опубликовано 9 Января Поделиться Опубликовано 9 Января Скрытый текст Это ж на каком таком железе надо запускать сталкер, чтобы получить 1000 фпс, и время апдейта в 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. Ссылка на комментарий
Stalkersof 120 Опубликовано 9 Января Поделиться Опубликовано 9 Января (изменено) 3 часа назад, CiberZold сказал: делая это на каждом апдейте, ты заставляешь процессор обрабатывать это условие каждый такт процессора, хотя само условие тебе нужно два раза в сутки ,чтоб сработало, включилось вечером и отключилось утром, оптимизация скрипта таким образом плохая) может условие повесить наоборот при запуске игры, загрузке уровня или сейва, а лучше для оптимизации и мне как юзеру, да и большинству юзеров думаю тоже хотелось бы самим выбрать, что им больше нравиться - играть с объёмными лучами или с ОГСЕ-саншафтами, кому то может наоборот эти объёмные нравятся, зачем юзера так ограничивать Не какому юзеру лучи ночью не понравятся. Эти лучи в любых вариантах ОГСЕ ночью непотребны засвечивают всю картинку это даже нереалистично выглядеть. Где вы видели лучи от луны ночью. Тем более я сказал что после днем лучи возвращаются и те которые выбрал пользователь. Эти лучи ночью дикое непотребство. Перебрал несколько видов погоды для огср и не только пока в свободном доступе нормальной погоды для огср нет. вот собственно без лучей с настроенным томемапингом https://www.mediafire.com/view/zniete45miig5go/ss_user_09-22-23_16-37-34_%28l02_garbage%29%282%29.jpg/file Изменено 9 Января пользователем Stalkersof Добавлено Купер, 9 Января Правила форума, п. 2.6. Рекомендуется к ознакомлению: здесь и здесь. Freeplay Graphic Mod(FGM) Ссылка на комментарий
CiberZold 142 Опубликовано 10 Января Поделиться Опубликовано 10 Января (изменено) 12 часов назад, Stalkersof сказал: Перебрал несколько видов погоды для огср и не только пока в свободном доступе нормальной погоды для огср нет если у тебя ТЧ-погода, то можно поиграться с секциями flares в конфигах погоды для ночных часов, также в конфигах динамической погоды есть такие параметры как sun_shafts_length и sun_shafts можно тоже их уменьшить значение или скрутить в ноль. как по мне объёмные лучи ночью неплохо выглядят, вот мод с ТЧ-погодой, который я перевёл на ОГСР (динамическая погода в основе Atmosfear) ясная погода при полной луне, объёмные лучи, в конфигах стоит: sun_shafts = 2.03 sun_shafts_length = 1.0 flares = moon Скрытый текст Изменено 10 Января пользователем CiberZold 1 Ссылка на комментарий
Stalkersof 120 Опубликовано 10 Января Поделиться Опубликовано 10 Января 5 часов назад, CiberZold сказал: если у тебя ТЧ-погода, то можно поиграться с секциями flares в конфигах погоды для ночных часов, также в конфигах динамической погоды есть такие параметры как sun_shafts_length и sun_shafts можно тоже их уменьшить значение или скрутить в ноль. Объёмные лучи от луны (Скрыть) Смысл мне скручивать лучи в ноль в конфигах когда я делаю тоже самое просто отключая их. Мне этот эффект ночью не нравится. У вас картинка синюшная именно от лучей. Freeplay Graphic Mod(FGM) Ссылка на комментарий
I am Dead 909 Опубликовано 10 Января Поделиться Опубликовано 10 Января 09.01.2024 в 06:34, CiberZold сказал: да а условие, которое висит на постоянном апдейте не намного лучшее решение Ну про это и говорить не стоит даже) 09.01.2024 в 06:34, CiberZold сказал: так это же только в ОГСР, а где он написал что работает на этом движке? Предположил, по системе сигналов. Мб и под дефолт тч использует их, хрен его знает. 21 час назад, Zander_driver сказал: хотя если со статикой попробовать, то чем черт не шутит Кек, сильное заявление, учитывая что ты сам видел какая вакханалия в коде) 21 час назад, Stalkersof сказал: нормальной погоды для огср нет Что значит для огср? Как бы давным давно сделана поддержка тч и зп погоды. Любой погодный мод подходит, хоть CGIM, хоть какой нибудь с аномали аддонов например. 3 часа назад, Stalkersof сказал: скручивать лучи в ноль в конфигах Ты можешь не в конфигах их скручивать, интенсивность саншафтов в консоли есть, выкрутил в ноль да и все 2 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти