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

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


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

@dPlayer , нет.

В данном контексте OGSR - кастомный движок, в котором добавлен соответствующий коллбек: callback.level_changer_action.

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

в OGSR есть подобный прикол, мол ГГ не может пройти в переход (перемещает в обратную сторону)

а есть пример этого прикола? потому что в Вики по ОГСР есть только метод который меняет текст названия в окошке типа "переход с уровня... на такой...."

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

а есть пример этого прикола?

Режим g_block_all_except_movement, что-то такое.

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

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

Режим g_block_all_except_movement

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

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

@CiberZold ну подожди крайней версии движка, вот там когда в переход ступаешь то ГГ на 180 разворачивается просто) Вот как раз по этому режиму же.

  • Согласен 1

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

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

@imcrazyhoudini ну с анимациями и сейчас просто можно отрубать их в момент вступления в левел ченджер, и разрешить управление, а вот просто чтоб откинуло нет, в Сталкере если попал в это месседж-окошко то никак из него не вылезти пока не кликшешь yes или no:)

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

Почему никак не вылезти? level.start_stop_menu(окно) – так еще в старой солянке инвентарь закрывали при "сломанном КПК", не разбираясь, где какое окно. Можно просто нажать [Esc].

 

Кстати, о птичках: в OGSR можно симулировать нажатие клавиши – виртуальное нажатие [Esc] как раз отменит переход и поставит ГГ на позицию pt_move_if_reject из логики level_changer.

  • Согласен 2

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

Шпаргалка

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

Почему никак не вылезти?

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

15 часов назад, Norman Eisenherz сказал:

Можно просто нажать [Esc].

нет просто нажать нельзя, то есть нажать можно, но Esc откроет главное меню ,а не закроет окошко-месседж.

15 часов назад, Norman Eisenherz сказал:

можно симулировать нажатие клавиши – виртуальное нажатие

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

 

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

if level.only_movekeys_allowed() then
 for a=1,65635,1 do
        local obj=level.object_by_id(a)
          local act = db.actor
        if obj and string.find(obj:name(),"exit_to") then 
            if obj:position():distance_to(act:position()) <= 5 then
                     local v= act:position():add(act:direction():mul(-4))        
                            db.actor:set_actor_position(v) 
                news_manager.send_tip(db.actor, "Переход временно недоступен.", nil, nil, 3000)
            end
       end
 end
end

 когда до перехода остаётся меньше 5 м, откидывает назад на 4 м

 

вот как этот код ( в данном случае при блокировке клавиш ,кроме движения, для анимаций, но можно поставить и например проверку на выброс, инфопоршня и пр.) выглядит в игре:

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

 

 

Добавлено  Купер,

Правила форума, п. 2.0 (мат и другая грубая лексика).
Предупреждение.

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

а вот на апдейте довольно легко сделал

УЖЗ причем полный, на апдейте перебираешь все объекты...

P.S Дабы бедный игроки не страдали, решение...

image.png?ex=665c8e79&is=665b3cf9&hm=e5d

Изменено пользователем I am Dead
  • Нравится 1
  • Согласен 3
Ссылка на комментарий

Когда я даже не знал про существование правленых движков, я спавнил в районе ЛС зону рестриктора, при входе в которую ГГ отбрасывало назад и разворачивало. 

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

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

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

но Esc откроет главное меню ,а не закроет окошко-месседж

В ТЧ и ЧН [Esc] по умолчанию действует как "закрыть активное окно". На какой версии движка наблюдается указанное поведение?

 

И еще: для объектов с логикой лучше перебирать A-Life – так список будет гораздо меньше

for id, v in pairs(db.storage) …

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

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

Шпаргалка

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

На какой версии движка наблюдается указанное поведение?

ОГСР но не самый последний билд

8 часов назад, Norman Eisenherz сказал:

И еще: для объектов с логикой лучше перебирать A-Life – так список будет гораздо меньше

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

8 часов назад, I am Dead сказал:

Дабы бедный игроки не страдали, решение...

опомнились когда движку уже дофига лет:)

@I am Dead ты лучше скажи за каких хреном вы из последних билдов убрали полезные колбеки типа weapon zoom in/out или on weapon fire, зато всяких жрущих производительность свистоперделок добавили вагон , что сажают фпс побольше чем цикл на постоянном апдейте:) вот где настоящий УЖС.

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

столкнулся с таким багом

 

что когда в комбезе с включенным ПНВ подбираешь предмет на коллбеке типа on_ruck (при попадании предмета в инвентарь), если подбираешь любой предмет кроме костюмов то норм, а если другой комбез, то почему то переменная  outfit = db.actor:get_current_outfit() принимает значение  nil и таким образом выполняется дальнейшее условие типа if not outfit then и ПНВ вырубается, хотя комбез то на акторе надет, и должно выдавать true.

 

не помню, но вроде бы это известный баг и было какое-то решение или фикс по этому поводу?

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

Игра пытается поставить в слот любой предмет со словом "outfit" в секции, даже если это флешка (в ЧН помимо отключения ПНВ еще и артефакты с пояса снимаются).

 

В OGSR исправлено на уровне движка, но, видимо, не во всех билдах. В моде OGSE 0.6.9.3. правка уже была.

 

В ТЧ/ЧН можно обойти через кейлоггер и ручное переключение эффекта ПНВ.

  • Согласен 1
  • Полезно 1

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

Шпаргалка

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

@Norman Eisenherz да это жёстко пришлось самому такой скрипт городить

 

Скрытый текст
function disable_nv(obj)
    if not db.actor:has_info("nv_on") then return end
    local class = get_string(obj:section(),"class")
           if class == "E_STLK" then
             ogse.level_timeout( 100, function() ogsr_actor_animation.check_outfit_nv() end )
            end
end

local snd_nv_work = xr_sound.get_safe_sound_object( "interface\\nv_loop" )
function check_outfit_nv()
   local outfit = db.actor:get_current_outfit()
   local snd_obj = xr_sound.get_safe_sound_object([[interface\nv_off]])
 if not outfit then
		snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 9.0)                                                
		level.remove_pp_effector(2522)
		db.actor:disable_info_portion("nv_on")
                                   if snd_nv_work and snd_nv_work:playing() then
                                                     snd_nv_work:stop()
                                  end
  end

 if outfit then
     local outfit_section = outfit:section()
     local nightvision_section = get_string(outfit_section, "nightvision_sect")
         if not nightvision_section then
	snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 9.0)                                                
	level.remove_pp_effector(2522)
	db.actor:disable_info_portion("nv_on")
                   if snd_nv_work and snd_nv_work:playing() then
                                           snd_nv_work:stop()
                   end
         end
      if nightvision_section then
	snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 9.0)
	 local nightvision_effector = get_string(nightvision_section, "pp_eff_name")
	  level.add_pp_effector(nightvision_effector, 2522, true)
                    db.actor:give_info_portion("nv_on")
      end
 end

 

смысл в том, что сначала при подборе проверяем включен или нет ПНВ, потом определяем что подняли комбез по классу, для гарантии ещё добавил level timeout (подойдёт любой таймер, на случай если в момент подъёма игра не видит комбез в слоте). потом через это время игра проверяет, есть ли надетый комбез, если нет комбеза отключаем ПНВ ,поршни, звуки, если комбез есть, но например мы его быстро заменили дабл кликом мыши или подняли с земли, ящиков, то проверяем есть ли в текущем комбезе ПНВ, если нет отключаем, если есть - меняем на эффект от одетого костюма.

 

да может не идеально, но получилось прикольно , учитывая разные постэффекты у костюмов, у некоторых при подъеме с земли одетый мигает ПНВ, но не выключается как было, получилось даже атмосферно, этакий баг, переходящий в фичу:)

Изменено пользователем CiberZold
  • Нравится 1
  • Полезно 1
Ссылка на комментарий
02.06.2024 в 06:50, CiberZold сказал:

вы из последних билдов убрали полезные колбеки типа weapon zoom in/out или on weapon fire

Ни ко мне вопрос, в моей ветке все это есть

02.06.2024 в 06:50, CiberZold сказал:

опомнились когда движку уже дофига лет

За всем не уследишь, до этого никто не говорил о данной проблеме

02.06.2024 в 06:50, CiberZold сказал:

что сажают фпс побольше чем цикл на постоянном апдейте

А ты замерял, чтобы такие выводы делать?

10 часов назад, CiberZold сказал:
function check_outfit_nv()

Дай угадаю, на апдейте?

Изменено пользователем I am Dead
  • Нравится 4
Ссылка на комментарий

@CiberZold Вот твое полотно, в более компактном и читабельном виде, про хранилище видимо ты тоже не в курсе

 

local snd_nv_work = xr_sound.get_safe_sound_object( "interface\\nv_loop" )
function check_outfit_nv()
    local nightvision_section
    local outfit = db.actor:get_current_outfit()
    local snd_obj = xr_sound.get_safe_sound_object([[interface\nv_off]])

    if outfit then
        local outfit_section = outfit:section()
        nightvision_section = get_string(outfit_section, "nightvision_sect")
        if nightvision_section then
            local nightvision_effector = get_string(nightvision_section, "pp_eff_name")
            level.add_pp_effector(nightvision_effector, 2522, true)
            db.actor:give_info_portion("nv_on")
            snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 9.0)
        end
    end

    if not outfit or not nightvision_section then
        level.remove_pp_effector(2522)
        db.actor:disable_info_portion("nv_on")
        if snd_nv_work and snd_nv_work:playing() then
            snd_nv_work:stop()
        end
        snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 9.0)
    end
end

 

02.06.2024 в 22:16, Norman Eisenherz сказал:

В ТЧ/ЧН можно обойти через кейлоггер и ручное переключение эффекта ПНВ.

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

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

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

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

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

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

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

Войти

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

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

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