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

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

Как минимум, это не оригинал, а OGSR, и в OGSR вполне может быть готовая обертка для получения суммарного веса. Например, get_total_weight() в классе game_object – надо спрашивать тех, кто работает c платформой OGSR.

 

В остальном, выводить вес в сообщения/лог при всех действиях с коробкой и ловить момент обнуления. Возможно, не хватает проверки веса предметов в use_callback.

 

local cur_box_weight = 0 как-то используется? В коде только отдельная переменная self.cur_box_weight.

  • Спасибо 1
  • Нравится 2
  • Согласен 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Пробывал добавить на апдейт

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

    if self.object:clsid() == clsid.inventory_box and box_info_wnd ~= nil then
            box_info_wnd:hide()
        else
            box_info_wnd:show()
        end

Но не сработало

  • Жуть! 1
Ссылка на комментарий

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

  • Нравится 2
  • Согласен 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
1 час назад, Norman Eisenherz сказал:

вслепую можно тыкаться очень долго.

Я бы еще добавил - при тыканьи вслепую, вообще нет никаких гарантий, что причина "почему что-то пошло не так" вообще когда-нибудь найдется.

Для отладки, была придумана такая замечательная вещь, как ЛОГИ. Пользуйтесь ими! И тогда любой баг и любое "что-то не работает" можно разобрать по полочкам и понять, почему.

04.01.2024 в 19:34, Colder сказал:

Подскажите что делаю не так?

Так что на этот вопрос, я бы так ответил - логами не пользуешься.

evOZwkZ.png

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

Добавь вывод в лог важной информации и/или просто отладочных сообщений в ключевых методах и блоках кода, относящихся к тому что ты делаешь. Посмотри, что будет в логах. И скорее всего, наверняка, тут же сам поймешь в чем дело.

 

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

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

Ребята что то не могу разобраться. Делаю фикс для погоды ночью отключаю лучи и настраиваю тонемапинг. В игре все работает. Загружаю сохранение ночью все равно лучи волуметрик. Хотя я как бы сохраняю тип лучей в сохранении и загружаю их от туда.

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

 

Изменено пользователем Stalkersof
Ссылка на комментарий
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.

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

 понимаю что я где то начудил и сохранение в сейф не работает. Не могли бы вы подробнее объяснить. Может быть подсказать куда и как

3 часа назад, Zander_driver сказал:

 

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

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

Я вообще отказался от этой затей записывать в сейф условия. Обошелся глобальной переменной которую объявляю в скрипте и при загрузке уровня. Скрипт срабатывает при новой игре или либо при загрузке.

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

@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

 

  • Нравится 2
  • Согласен 2
Ссылка на комментарий
4 часа назад, Stalkersof сказал:

Я вообще отказался от этой затей записывать в сейф условия

да а условие, которое висит на постоянном апдейте не намного лучшее решение:)

 

24 минуты назад, I am Dead сказал:

не советую пользоваться пстором, у движка есть некое хранилище где можешь что то сохранять.

так это же только в ОГСР, а где он написал что работает на этом движке?

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

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

Почему? Сохранение как раз и в вашем коде выше работает. Там чтение из сейва не работает.

А где именно начудил, я же и показал уже в посте выше. Про то что лучше использовать get_stored_vars(), а не пстор, тоже уже сказали (Я не знал что вы OGSR используете). На OGSR, пстор вообще ни для чего не нужен.

Так а что еще нужно то?

Это всегда хуже.

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

Да на ОГСР щас попробую переписать скрипт с сохранением в хранилище ОГСР. В скрипте я только отключаю солнечные лучи во ночное время. Причем сохраняя настройки юзера. Если поменяет тип лучей или отключит то это и вернется. А то что по тонемапингу это только настройки самого эффекта. Сам эффект можно отключить в юзере если кто пожелает. Больно уж эти лучи картинку портят ночью все засвечено. Править погоду не выход. Вот такой костыль.

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

В скрипте я только отключаю солнечные лучи во ночное время

делая это на каждом апдейте, ты заставляешь процессор обрабатывать это условие каждый такт процессора, хотя само условие тебе нужно два раза в сутки ,чтоб сработало, включилось вечером и отключилось утром, оптимизация скрипта таким образом плохая) может условие повесить наоборот при запуске игры, загрузке уровня или сейва, а лучше для оптимизации и мне как юзеру, да и большинству юзеров думаю тоже хотелось бы самим выбрать, что им больше нравиться - играть с объёмными лучами или с ОГСЕ-саншафтами, кому то может наоборот эти объёмные нравятся, зачем юзера так ограничивать:)

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

ты заставляешь процессор обрабатывать это условие каждый такт процессора, хотя само условие тебе нужно два раза в сутки

Ну сгущать краски-то не надо.

Апдейт актора и большинства объектов в X-Ray, по частоте не превышает фпс игры. Т.е. иными словами, апдейт работает с частотой фреймов рендера. И тогда это условие обрабатывается раз в ~16мс (при 60 фпс, например).

Процессоры работают на частотах в несколько гигагерц, т.е. 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.

Ссылка на комментарий
12 минут назад, Zander_driver сказал:

Ну сгущать краски-то не надо.

ну да с тактом я переборщил, сначала хотел просто написать 1 милисекунду, но потом для большего нагнетания написал про такт:)

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

Это ж на каком таком железе надо запускать сталкер, чтобы получить 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.

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

делая это на каждом апдейте, ты заставляешь процессор обрабатывать это условие каждый такт процессора, хотя само условие тебе нужно два раза в сутки ,чтоб сработало, включилось вечером и отключилось утром, оптимизация скрипта таким образом плохая) может условие повесить наоборот при запуске игры, загрузке уровня или сейва, а лучше для оптимизации и мне как юзеру, да и большинству юзеров думаю тоже хотелось бы самим выбрать, что им больше нравиться - играть с объёмными лучами или с ОГСЕ-саншафтами, кому то может наоборот эти объёмные нравятся, зачем юзера так ограничивать:)

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

 

вот собственно без лучей с настроенным томемапингом

https://www.mediafire.com/view/zniete45miig5go/ss_user_09-22-23_16-37-34_%28l02_garbage%29%282%29.jpg/file

Изменено пользователем Stalkersof
Добавлено  Купер,

Правила форума, п. 2.6.
Рекомендуется к ознакомлению: здесь и здесь.

Ссылка на комментарий
12 часов назад, Stalkersof сказал:

Перебрал несколько видов погоды для огср и не только пока в свободном доступе нормальной погоды для огср нет

если у тебя ТЧ-погода, то можно поиграться с секциями flares в конфигах погоды для ночных часов, также в конфигах динамической погоды есть такие параметры как sun_shafts_length и sun_shafts можно тоже их уменьшить значение или скрутить в ноль.

 

как по мне объёмные лучи ночью неплохо выглядят, вот мод с ТЧ-погодой, который я перевёл на ОГСР (динамическая погода в основе Atmosfear) ясная погода при полной луне, объёмные лучи, в конфигах стоит:

sun_shafts        =    2.03
sun_shafts_length         =    1.0                
flares        =     moon

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

putsun.jpg

 

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

если у тебя ТЧ-погода, то можно поиграться с секциями flares в конфигах погоды для ночных часов, также в конфигах динамической погоды есть такие параметры как sun_shafts_length и sun_shafts можно тоже их уменьшить значение или скрутить в ноль.

 

  Объёмные лучи от луны (Скрыть)

putsun.jpg

 

Смысл мне скручивать лучи в ноль в конфигах когда я делаю тоже самое просто отключая их. Мне этот эффект ночью не нравится. У вас картинка синюшная именно от лучей.

Ссылка на комментарий
09.01.2024 в 06:34, CiberZold сказал:

да а условие, которое висит на постоянном апдейте не намного лучшее решение

Ну про это и говорить не стоит даже)

09.01.2024 в 06:34, CiberZold сказал:

так это же только в ОГСР, а где он написал что работает на этом движке?

Предположил, по системе сигналов. Мб и под дефолт тч использует их, хрен его знает.

21 час назад, Zander_driver сказал:

хотя если со статикой попробовать, то чем черт не шутит

Кек, сильное заявление, учитывая что ты сам видел какая вакханалия в коде)

21 час назад, Stalkersof сказал:

нормальной погоды для огср нет

Что значит для огср? Как бы давным давно сделана поддержка тч и зп погоды. Любой погодный мод подходит, хоть CGIM, хоть какой нибудь с аномали аддонов например.

3 часа назад, Stalkersof сказал:

скручивать лучи в ноль в конфигах

Ты можешь не в конфигах их скручивать, интенсивность саншафтов в консоли есть, выкрутил в ноль да и все

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

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

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

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

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

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

Войти

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

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

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