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

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


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

10 минут назад, Kirgudu сказал:

либо, как мы раньше писали, для NPC это не сработает

Вообще я бы предложил. Для начала попробовать на совершенно простейшем объекте. Аптечке там или пачке патронов.

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

Подозрения что живого NPC оторвать малой кровью от AI-сетки, нельзя - очень сильны.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Или так, наверное. Только что-то одно.

 

Пробовал через bit_xor с bit_or и  bit_and как Вы написали, но пока не дало результата... Копаю дальше...

6 минут назад, Zander_driver сказал:

Для начала попробовать на совершенно простейшем объекте. Аптечке там

 

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

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

не знаю как их там прописывать

А зачем прописывать новый класс? Аптечка в игре и так уже есть. И пачка патронов есть. Можно и любой другой простой тип объекта.

В class_registrator ничего прописывать для этого не надо, классы объектов указаны в их конфиге.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

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

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

@Kirgudu прокомментируй?

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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, он требует минимум if self.cb_netpk then self.cb_netpk(self, packet) end в методе STATE_Write... Просто я не знаю, что для аптечек нужно использовать в se_... Пробовал на костюме, там понятно что писать нужно в se_outfit:STATE_Write(packet)

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

data.object_flags = bit_and(data.object_flags, bit_not(128)) -- сброс UsedAI_Locations 

 

вместо:
 

data.object_flags = bit_xor(data.object_flags, 128)

data.object_flags = bit_or(data.object_flags, 128)

 

экзоскелет (exo_outfit) реально падает, в то время как вариант с xor + or он практически сразу же лежит на поверхности карты....

 

@Zander_driver, @Kirgudu,можно ли сказать в таком случае, что если каким-то образом зафиксировать data.object_flags, то костюм будет висеть в воздухе? Я так понимаю, смотреть в сторону update не стоит, нужен искать способ, как заморозить это значение?

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

можно ли сказать в таком случае, что если каким-то образом зафиксировать data.object_flags, то костюм будет висеть в воздухе?

Для этого надо не только отключать привязку к AI-сетке, но и отключать для него физику, что делает другой флаг (не скажу какой, у меня это получалось манипуляциями в движке, но доступный скриптово флаг для этого вроде тоже существует). При включенной физике объект упадет. При выключенной - на пули и другие коллизии он реагировать не будет тоже.

 

1 час назад, div сказал:

self.cb_netpk(self, packet)

А что внутри этого метода? Он ведь добавленный. В оригинале игры нет такого.

  • Нравится 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 час назад, Zander_driver сказал:

прокомментируй

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

1 час назад, div сказал:
data.object_flags = bit_xor(data.object_flags, 128)
data.object_flags = bit_or(data.object_flags, 128)

Потому что вызов данных команд в паре приводит к исходному положению дел. Ведь даже в комментарии поста

сказано, что первая - сброс флага, тогда как вторая - поднятие оного. В итоге флаг привязки к сетке после парного выполнения остаётся установленным.


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

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

Иначе как раз переключение оффлайн-онлайн работать не будет.

Ээм, а почему?

Оно же делается методами-флагами самого sobj-объекта. Во всяком случае, так можно сделать и в серверном биндере оно нуждаться не будет.

 

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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, оговорился.
Не будет работать запись в абстрактную часть пакета, которая возможна только при выходе в онлайн. А это - STATE_Write.

Изменено пользователем Kirgudu
Ссылка на комментарий

В общем, если собрать увод объекта в оффлайн ручками самостоятельно, и возврат оттуда также ручками самостоятельно, то от ряда приблуд поздних Артосо-модулей, и от требований к class_registra-ции, можно избавиться.
Но работу с оффлайн-онлайн переходами придется писать самостоятельно в этом случае.

Только что, Kirgudu сказал:

А это - STATE_Write.

Но это ведь базовый метод, который можно вызывать у любого серверного объекта.
Зачем скриптовые биндеры?

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Вот как раз чтобы не писать руками в каждом необходимом случае. :) Один раз поправил нужные биндеры - и затем хоть сотню разных однотипных объектов в разных местах кода и с разными условиями перемещай, коллбэк сделает всё за тебя.
Не знаю. Мне это кажется достаточно удобным. Зависит от требований к масштабируемости.

Изменено пользователем Kirgudu
Ссылка на комментарий

Вообще если в предельно упрощенном виде.
Модуль Артоса читает нетпакет объекта методом STATE_Read,
Позволяет изменить там некоторые параметры (Предоставляя более-менее удобный доступ к полям, а не по hex-смещению)
Записывает эти параметры в нетпакет методом STATE_Write
После чего надо увести объект в оффлайн
И затем ввести его в онлайн, чтобы сделанные изменения применились.
 

В принципе, всю эту последовательность действий спокойно делали до всяких Артосо-модулей, правда тогда это выливалось в огромные простыни кода, но тем не менее. Оно работало и в голом виде, и без скриптовых биндеров на серверный объект.
А 1.0004 не всем классам позволяет вообще дать такой биндер.

И ранние версии Артосо-модулей еще работали на хард-уровне, позволяя просто "читать нетпакет какого-то объекта", и затем "писать нетпакет какого-то объекта", на свой страх и риск, полагаясь на то что юзер знает что делает. Правда, накосячив можно было получить последствия любой степени неожиданности, но это работало с любым объектом. Вообще любым.

5 минут назад, Kirgudu сказал:

Мне это кажется достаточно удобным

Да никто ж не спорит. Удобно, и с "защитой от дурака", сделано.
Но в 1.0004 нельзя биндер сделать на некоторые вещи. Что тогда?)

  • Согласен 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 минуты назад, div сказал:

@Kirgudu, а вес (массу) m_netpk для npc поменять нельзя, так же?

Масса, емнип, есть только для физических объектов в state части их пакета.

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

@div обрати внимание:

6 минут назад, Zander_driver сказал:

После чего надо увести объект в оффлайн

и

6 минут назад, 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.

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

@div Думаю что нет таких анимаций.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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, нет возможности такую создать, или нет в игре? Я просто с анимациями в этой игре еще работал, но если принцип схож с общими правилами для разных игр, то должна быть родительская кость, которая определяет положение в пространстве...

@Zander_driver, @Kirgudu, кстати, а вентилятор из примера спокойно зависает в воздухе без всяких изменений флагов, пока ГГ его не затронет...

 

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

screen.jpg

 

  • Согласен 1
Ссылка на комментарий
19.12.2023 в 21:47, Купер сказал:

@EugenXS12_12 , slot = X забыл закомментировать в конфиге. В оригинале он хитро "скрытый" от ГГ, ну так и вот.

Закомментировать это всмысле поставить точку с запятой?

  • Согласен 2

Возрождаем ТЧ

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

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

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

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

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

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

Войти

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

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

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