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

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


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

Есть ли в игре колбек на перекладывание объекта из своего инвенторя в другой?

Осенний каламбур. Сентябрь - лето.

img.php?nick=Balavnik&sert=2&text=t6

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

1. Стоит уточнять, что это OGSR.

2. Стоит распаковать себе [gamedata\] и найти [scripts\lua_help] class_callback: как минимум, есть событие on_inv_box_item_drop – надо только потестить совместимость с трупами.

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

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

Шпаргалка

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

Стоит уточнять, что это OGSR.

Дико плюсую, ибо я уже почти набил отличающийся ответ по оригиналу ТЧ.

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

из своего инвенторя в другой?

Ну как минимум, on_item_drop сработает при любом перемещении/удалении чего угодно из своего инвентаря. А он есть и в оригинале. Дальше можно уже отследить, куда переместился объект.
В OGSR же к этому добавляются соотв.колбеки (on_item_take/on_item_drop) у нпс и ящиков (Или у нпс тоже в оригинале были? не помню). Так что задача становится совсем простой.

3 часа назад, Norman Eisenherz сказал:

совместимость с трупами

Трупы продолжают работать под xr_motivator, отрабатывая все колбеки оттуда.

У тайников и прочих ящиков свой биндер со своими колбеками, если это OGSR.

Изменено пользователем Zander_driver
  • Согласен 1
  • Полезно 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.

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

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

  • Согласен 1

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

Шпаргалка

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

А в реестре следов не оставит

Если их не было, то не оставит. xrGame.dll импортирует только RegOpenKeyExA, а RegCreateKeyExA не импортирует. То есть она может открыть существующий ключ реестра, а новый создать не может.

В реестр пишутся cd-key и имя игрока.

 

eax.dll импортирует RegCreateKeyExA. Что она с ним делает, не знаю.

 

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

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

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

  • Полезно 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.
кто может помочь - пишите в ЛС.

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

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

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

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

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

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

Войти

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

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

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