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

[SoC] Ковыряемся в файлах


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

Воистину, краткость - сестра таланта.

Оригинал: начиная с 1.004. Формат свой. C ЗП/ЧН не совместим.

OGSR: поправлено? Но лучше уточнить.

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

Каким образом можно высчитать положение интерфейса на экрана на квадратных мониторах?

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

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

Привязать положение окон к углам в габаритах device().height и device().width при известных габаритах окон и масштабе X/Y относительно базы 1024x768. Если я правильно понимаю о чем речь…

Изменено пользователем Norman Eisenherz
  • Согласен 1

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

Шпаргалка

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

Если верить математике, множители будут равны X = 1920/1024, Y = 1080/768. На деле более-менее совпадет только высота, а по горизонтали окна будут сжаты (или растянуты, в зависимости от направления пересчета).

  • Полезно 1
  • Сомнительно 1

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

Шпаргалка

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

множители будут равны X = 1920/1024, Y = 1080/768.

device.width/1024 и device.height/768 подойдет для абсолютно любого экрана с каким угодно разрешением. И все пропорции текстур, окон, иконок, будут соблюдаться.

 

Учитывая что изначально спрашивал @Houdini_one , а он вроде как, на OGSR пытается.

В движке OGSR есть возможность автоматического пересчета, я сам лично ее туда и добавлял. Всего лишь нужно для любого xml-элемента интерфейса указать параметр :

as_is="1"

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

  • Полезно 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.

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

@Zander_driver Ну вот как это понимать? Сначала пишешь, что все пропорции соблюдаются при простом пересчете, следом пишешь, что нужен дополнительный пересчет (потому что круглые или квадратные статики потеряют исходное соотношение сторон – см. прицелы).

Прямые ссылки на текущие значения ширины и высоты экрана упомянуты постом выше для общего случая, а конкретно для 16:9 популярным будет именно вариант 1920x1080 – не вижу повода для исправлений.

Вносишь путаницу: device().height, device().width.

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

Шпаргалка

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

Кто-нибудь вообще задавался вопросом, почему музыка в сталкере разделена на левый и правый каналы?

  • Нравится 1

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

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

Если в state {0, 1}, что в скриптах типа gulag_escape оставить лишь одно значение (0, день то бишь), то ночью мобы будут уходить в оффлайн?
Если нет, то каким образом реализовывается дневные-ночные монстры? (ночью онлайн, днём оффлайн).

Ещё вопрос: почему может иногда слетать логика при сэйв-лоаде у sr_psy_antenna?
Это чревато тем, что постоянно наносится пси-дамаг, даже если выйдешь за пределы этой зоны.
Как править такое?

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

Ссылка на комментарий
4 hours ago, Houdini_one said:

Если в state {0, 1}, что в скриптах типа gulag_escape оставить лишь одно значение (0, день то бишь), то ночью мобы будут уходить в оффлайн?

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

 

4 hours ago, Houdini_one said:

Если нет, то каким образом реализовывается дневные-ночные монстры? (ночью онлайн, днём оффлайн).

Раз фигурируют слова онлайн оффлайн, то скорее всего через функции can_switch_online can_switch_offline в se_monster.script

  • Спасибо 1
Ссылка на комментарий
4 часа назад, Houdini_one сказал:

каким образом реализовывается дневные-ночные монстры

Задать условия по времени для состояний, например.

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

function load_job(sj, gname, type, squad, groups)
    --" Кровосос, хоум недалеко на восток от грузовика смерти
    if type == "esc_smart_bloodsucker" then
        -- днём оффлай
        t = { section = "logic@esc_smart_bloodsucker_day",
        idle = 0,
        prior = 5, state = {0},
        online = false,
        in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        -- ночью резвится
        t = { section = "logic@esc_smart_bloodsucker_night",
        idle = 0,
        prior = 5, state = {1},
        online = true,
        in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
    end

    ...

end

...

function load_states(gname, type)
    if type == "esc_smart_bloodsucker" then
        return function(gulag)
            if db.actor ~= nil then
                if ( level.get_time_hours() >= 3 and level.get_time_hours() <= 21 ) then
                    return 0  -- день
                else
                    return 1  -- ночь
                end
            else
                return gulag.state
            end
        end
    end

    ...

end

 

  • Спасибо 1
  • Согласен 1

Здесь могла быть ваша реклама.

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

@mole venomous обязательно в         t = { section = "logic@esc_smart_bloodsucker_night" писать разную логику?

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

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

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

  • Нравится 1
  • Согласен 2
  • Полезно 1
Ссылка на комментарий

Вот у ГГ есть оружие, которое нельзя выбросить с инвентаря.
Но по кнопке G всё равно выбросить возможно.

Как это исправить?

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

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

@macron ну если без шуток то вариант наверное нормальный, только вот как.

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

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

@Houdini_one Есть вариант: если сброшен объект с заданной секцией, передать его обратно в инвентарь.

actor_binder:on_item_drop(obj) + db.actor:transfer_item(obj, db.actor)

 

Потребуется проверка на начало общей чистки инвентаря при перезагрузке или завершении игры:

Spoiler
[bind_stalker.script]
function actor_binder:on_item_drop(obj)
	
(+)
	if obj:section() == "bolt" then			-- всегда удаляется первым
		restart = true
	end

	if obj:section() == "секция_нужного_предмета" then
		if not restart then
			db.actor:transfer_item(obj, db.actor)
		end
	end

 

 

Вопрос к более опытным: попытка выставить такой же логический флаг в начале обработчика actor_binder:net_destroy() не учитывается. Почему?

  • Смешно 1

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

Шпаргалка

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

@Norman Eisenherz вариант хороший.

Если у меня таких предметов несколько, то просто писать такое несколько раз?:
 

	if obj:section() == "секция_нужного_предмета" then
		if not restart then
			db.actor:transfer_item(obj, db.actor)
		end
	end

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

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

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

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

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

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

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

Войти

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

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

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