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

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

Попытался восстановить все, связанное с сытостью: чтоб она влияла на здоровье и выносливость ГГ и чтоб этот параметр у артефактов заработал. Вроде все получилось, но кроме одного - не могу восстановить св-во 'satiety' для game_object, чтоб можно было получить скриптово значение db.actor.satiety. В процессе ковыряния выяснил, что обработка самой сытости происходит в CActorCondition::UpdateSatiety()(xrGame\ActorCondition.cpp) и хранится в переменной m_fSatiety, а значение, которое выводится через db.actor.satiety читается из переменной с таким-же именем m_fSatiety класса CEntityCondition(xrGame\EntityCondition.cpp). Там этой переменной в конструкторе класса тупо присваивается значение

m_fSatiety = 1.f;

а затем это значение транслируется ф-цией

IC float GetSatiety() const { return m_fSatiety; }

этого-же класса. Т.е. в игре значение db.actor.satiety всегда равно 1.0. Подскажите как эти значения "поженить", не могу разобраться пока, как эти классы между собой взаимодействуют.

Изменено пользователем UnLoaded
Ссылка на комментарий
m_fSatiety -=	m_fV_Satiety*
						k*
						m_fDeltaTime;
UnLoaded, так вот же на апдейте m_fSatiety изменяется с течением времени. И в этой переменной текущее значение сытости и хранится. С чего Вы взяли, что это значение всегда равно 1.0?
В 7 патче KD давно сделал и это работает :) :
.property("satiety",				&CScriptGameObject::GetSatiety,			&CScriptGameObject::SetSatiety)	// KD	

---

Стоп... Изменяется она только в CActorCondition... Но в любом случае, получение и изменение сытости у меня работает через db.actor.satiety.

Изменено пользователем Kondr48
Ссылка на комментарий
  Kondr48 писал(а):
С чего Вы взяли, что это значение всегда равно 1.0?

Проблема решена, а дело было в том, что в CActorCondition(xrGame\ActorCondition.h) было объявление переменной float m_fSatiety;, которое перекрывало доступ к такой-же переменной класса CEntityCondition(xrGame\EntityCondition.h). Следовательно, всегда читалось не измененное значение этой переменной. Убрал m_fSatiety из CActorCondition - и все заработало.

 

Теперь следующая проблема: пытаюсь добавить в движок новый инвентарный объект. Решил делать по подобию броников, и пошел от class_registrator.script поиском. Дошел до класса class CCustomOutfit: public CInventoryItemObject..., который видимо является базовым классом для всех остальных броников. Собственно создал все новые классы для объекта по образу и подобию. Собственно что-то получилось: предмет можно заспавнить в инвентарь\на местность, можно выбросить\подобрать. Но решил проверить по внимательнее, и обнаружил следующее:
в class_registrator.script для объекта прописано
cs_register(object_factory, "CNewObjectTest",  "se_item.se_newobj", "E_NEW_OBJ", "new_obj_s")
в se_item.script добавил по аналогии новый класс, и для проверки в function se_newobj:on_register() поставил выдачу сообщения. И такая-же выдача сообщения уже была добавлена в тот-же метод класса se_outfit. И получилось у меня, что при создании объекта(спавн в инвентарь ГГ) у меня сообщение приходит из класса se_outfit ! Подумал сразу, что где-то ошибся, когда копипастил из классов броников в новые классы, перепроверил все 2 раза - нет, все нормально, путаницы нигде нет. Собственно нужна подсказка, куда смотреть, что проверять ?
Изменено пользователем UnLoaded
  • Нравится 1
Ссылка на комментарий

 

 

  UnLoaded писал(а):
перепроверил все 2 раза - нет, все нормально, путаницы нигде нет. Собственно нужна подсказка, куда смотреть, что проверять ?

Где-то таки есть не замеченная путаница. Иначе такого быть не может)

  • Согласен 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 писал(а):
Иначе такого быть не может)

Верю...

Может, кто нить, кто уже успешно добавлял новый объект в движок, накидает цепочку действий ? Я бы сверился, вдруг что увижу...

Ссылка на комментарий
Сделал список моих действий по добавлению объекта в игру, может увидит кто ошибку:
  Показать

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

Уже устал долбиться в стену, не понимая что происходит, прошу помощи :) Занялся я детекторами ЧН/ЗП, примерно представляю как оно там работает, начал "перенос" функционала на ТЧ и завис еще в начале. Удалил все в классе детектора что было, начинаю постепенно делать свое. Пока - примитив. Показать худ и три анимации, собственно idle, draw, holster. Вылетов нет, детектор прекрасно спавнится, но нет худа вообще. Т.е. все сообщения в лог выводятся (накидал в те участки кода, где должны воспроизводится анимации) а самого худа нет. Будто он не рисуется. Думаю, где-то проглядел, что худ надо "нарисовать", но не могу найти где. В классе артефактов ничего подобного не нашел (смотрел его, так как худ самый простой). Очень надеюсь на подсказку чего искать.

  CustomDetector.h (Показать)
Изменено пользователем Kondr48
Ссылка на комментарий

@UnLoaded, Сначала чистится магазин, попутно запоминая сколько и каких патронов там было.

Затем эти патроны суются в пачку, имеющуюся в инвентаре, а если там не хватает места - спавнится новая.

Вот и всё собственно.

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

@Eugen81, нет, там не в этом дело.

 

@Kondr48, можешь рассказать конечную цель? Ты что-то свое делаешь или просто переносишь? Когда-то давно меня просили помочь перенести детекторы из ЗП на ТЧ, абсолютно точно помню, что брал код целиком, конечно какие-то сопутствующие правки приходилось вносить, добавлять какие-то функции и классы, но в целом код брался as is. Ничего не выдумывалось, если ты переносишь, то почему не идешь простым путем (полным копированием)? По твоему коду, мне так точно, нужно пробовать завести твой код, чтобы что-то сказать по существу, а что-то вот так сказать у меня опыта не хватает.

 

@UnLoaded, сытость да, в оригинале нужно доделывать. Я переписал несколько формул и вроде еще какой-то параметр добавлял, давно было, не помню. Единственное чего мне не хватило духу сделать, это аппроксимацию изменения здоровья в зависимости от сытости. Возможно попрошу реализовать какую-то общую формулу, которая будет усреднять значения, и перевяжу сытость со многими другими параметрами. Если ты сможешь написать что-то такое, то будет отлично!

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

 

 

  Карлан писал(а):
нет, там не в этом дело.

Оно понятно, вот знать бы в чем ? Уж очень хочется новые предметы в игре...

 

 

  Карлан писал(а):
это аппроксимацию изменения здоровья в зависимости от сытости.

Давай более простыми словами - что именно хочется ?

 

 

  Карлан писал(а):
и перевяжу сытость со многими другими параметрами.

С какими ? В исходнике, она и так связана со здоровьем и выносливостью(или сила, как там обозвали). Ну можно еще с кровотечением связать - я не медик, но допускаю что может быть зависимость заживления ран от сытости\голода.


 

 

  Bak писал(а):
Затем эти патроны суются в пачку, имеющуюся в инвентаре, а если там не хватает места - спавнится новая.

Воо! А то я не мог догнать, что делает:

CWeaponAmmo *l_pA = smart_cast<CWeaponAmmo*>(m_pCurrentInventory->GetAny(l_it->first));

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

можешь рассказать конечную цель? Ты что-то свое делаешь или просто переносишь?

Переношу. Да, сам функционал детекторов он и будет браться практически ai is, согласен. Но слишком много там сейчас того, что мне не потребуется на данном этапе, вроде совместных пистолетов и детекторов и т. п. Начал я именно так, чтобы понять как именно создать свой класс предмета с худом, не наследуя от оружия (оружейный функционал мне там не нужен) а худ нужен не только даже для детекторов. Просто на этих детекторах я начал "учиться" так скажем. Цель сейчас у меня просто заставить детекторы тупо показать худ. Больше ничего  :). Когда он заработает, остальной функционал я постепенно перенесу именно "как есть".

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

Бывает иногда такая ситуация, что при открытии инвентаря, оружие не прячется. И затем, при манипуляциях в открытом инвентаре, происходит "самовольная" перезарядка оружия, если оно было разряжено. Если я правильно понимаю, перезарядка происходит по нажатию левой кнопы мыша, что при активном оружии означает выстрел и вызывает перезарядку. Но тогда почему, при последующих, после перезарядки, нажатиях ЛКМ оружие не стреляет ? Или перезарядка происходит по иной причине ? Кто нить пытался разобраться с этим багом на уровне движка(исходников) ?

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

Всем привет! В файле corrections_list есть такие строчки

 

  Показать

 

Кто-нибудь может подробнее объяснить что это за значения и особенно про количество слотов?


Отключение худа слотов, это наверно при включении делает все слоты не видимые в инвентаре, как нож и бинокль в чистом ТЧ или я ошибаюсь?

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

Кто-нибудь может рассказать историю коллбека 153. Вызывается при получении неписем хита и после него выполняется какая-то обработка этого хита. Чем этот коллбек отличается от стандартного и что там происходит?

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

@dsh,

цитирую из лога

  Цитата
+ коллбек (153 для НПС) на хит от НПС. Передается вредитель. set_int_arg0(1) для того, что НПС проигнорировал хит от вредителя.

Там есть ещё колбек 152 на событие "прехит", с помощью которого можно сделать всё тоже самое. В частности, в огсе через 152 сделаны иммунитеты актору и игнор дружественного огня неписями.

  Полезный утиль (Показать)
Ссылка на комментарий

@Malandrinus, так вот мне и не понятно, зачем сделан 153, при наличии стандартного callback.hit и 152-го?

Для чего такого, уникального, нужен 153? И что этот код еще делает? Там не только обработка set_int_arg0. Там какие-то действия, в зависимости от типа хита. Не могу понять, плохо ассемблер знаю.

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

@dsh,

разные авторы правок. Колбек 153 был добавлен позднее. Возможно, его автор не вполне был в курсе всех возможностях колбека 152. С документацией в этом проекте всегда было туго.

 

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

  • Спасибо 1
  • Нравится 1
  Полезный утиль (Показать)
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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