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

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


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

Первый параметр - рекурсия включена/выключена (для операций с массивом файлов, например, чтением их списка в папке), второй - уведомление (движка) об изменениях включено/выключено.

Где и в каких сценариях используется второй параметр, сказать не могу, не изучал.

  • Полезно 1
Ссылка на комментарий
13 минут назад, Kirgudu сказал:

рекурсия включена/выключена (для операций с массивом файлов, например, чтением их списка в папке)

Как применить понятие рекурсия к списку файлов непонятно, ну да ладно))))

К файлу юзер.лтх нельзя выходит применить сохранение в какую-то отдельную папку?

19 часов назад, Kirgudu сказал:

но он вроде как и не требуется особо

Ну так то не хватает))

Изменено пользователем dPlayer
Ссылка на комментарий
28 минут назад, dPlayer сказал:

Как применить понятие рекурсия к списку файлов непонятно, ну да ладно))))

Эммм... "с учётом вложенных папок" пойдёт? )

30 минут назад, dPlayer сказал:

К файлу юзер.лтх нельзя выходит применить сохранение в какую-то отдельную папку?

Если не ошибаюсь, user.ltx сохраняется в "$app_data_root$".

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

"с учётом вложенных папок" пойдёт? )

Более чем:biggrin:

Пока ковырялся аж захотелось какой нибудь мод опять начать делать:616:

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

кто-нибудь знает как на время запретить игроку переходить на другую локацию, например пока идёт выброс и т.п. ,в момент когда появляется окно перехода (перейти на локацию и например, чтоб активна была только кнопка НЕТ или окно само закрывалось до наступления определённого момента)

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

В OGSR есть callback.level_changer_action.

 

В ТЧ надо поймать активное окно через level.main_input_receiver() и проверить наличие одного из уникальных методов класса CUIMessageBoxEx – вот тут недавно было объяснение. Это в теории; на практике имеем следующее:

• у такого окна всего два уникальных метода, GetHost() или GetPassword(), и они есть только у окна с конфигом "ввод пароля для сети" – окно "приглашение к переходу" можно поймать только через общие методы класса CUIDialogWnd, например, if wnd:GetHolder() …;

• общие методы определяются для любого диалогового окна – надо будет отсечь инфо-поршни всех обычных окон и КПК;

• в оригинальном движке нет инфо "ГГ наступил в область перехода" – придется ловить окно через апдейт, и тут тоже сложность: апдейт ГГ ставится на паузу в диалоге перехода – надо запускать проверку "выброс + окно + метод" отдельным потоком через level.add_call(проверка, действие).

 

Еще вариант: при запуске выброса удалить все переходы на активной локации, а после проспавнить их заново и расставить метки. Потребуется список story_id и spawn_id переходов; если первое значение или ссылку на сам объект можно получить перебором obj:clsid() == clsid.level_changer, то второе (номер секции в all.spawn) в оригинале читать нечем – только выписывать вручную.

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

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

Шпаргалка

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

при запуске выброса удалить все переходы на активной локации

И игрок благополучно уйдёт за карту))

А левел_ченжер это же рестриктор фактически? Мб изменить его так, чтобы разворачивал гг мордой обратно при выбросе и давал какое нибудь сообщение? Ну или поставить на переходе другой рестриктор с такой логикой 

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

@dPlayer в OGSR есть подобный прикол, мол ГГ не может пройти в переход (перемещает в обратную сторону) пока он отыгрывает анимацию использования предмета. На основе этого думаю можно чего-то придумать.

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

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

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

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

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

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

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

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

Войти

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

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

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