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

Редактирование движка X-Ray


Rolan

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

(изменено)

@NOapostoL :dash2:
Серьёзно, если нечего ответить по теме - лучше не писать вообще.  Теперь ещё раз, для самый маленьких и непонятливых)
Вот код который отвечает за перенос в слот итема при открытом инвентаре :
 

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

void CUIActorMenu::SendEvent_Item2Slot(PIItem pItem, u16 recipient, u16 slot_id)
{
    if(pItem->parent_id()!=recipient)
        move_item_from_to            (pItem->parent_id(), recipient, pItem->object_id());
    NET_Packet                        P;
    CGameObject::u_EventGen            (P, GEG_PLAYER_ITEM2SLOT, pItem->object().H_Parent()->ID());
    P.w_u16                            (pItem->object().ID());
    P.w_u16                            (slot_id);
    CGameObject::u_EventSend        (P);
    PlaySnd                            (eItemToSlot);
};

 

и далее начинается ад - вот весь код ниже move_item_from_to работает только если перемещать итем из слота\рюкзака\пояса в слот
Почему? Потому что в момент отправки этого пакета владельцем итема  всё ещё является труп или контейнер. Ведь если я правильно понимаю задумку GSC - то после перемещения в инвентарь актора предмет должен был перемещаться в слот который ему указали.
Вот как это происходит : Короткое видеоподтверждение.
"место, где движок принимает решение - куда деть появившийся у актера инвентарный предмет." - функция CInventory::Take(CGameObject *pObj, bool bNotActivate, bool strict_placement)
выход который я нашёл - дописал функцию так чтобы она напрямую получала слот в который игрок переместил итем и перемещала туда итем. Вот как-то так. Зачем эта стена текста? Я думал что хоть-то сталкивался с этим и знает хорошее решение, потому что то что у меня сейчас - это костыль.

Изменено пользователем mortan

Поделиться этим сообщением


Ссылка на сообщение

@WinCap проблема как раз таки в том что она просто не вызывается) Вернее вызывается только когда предмет перемещается внутри инва актора.

Поделиться этим сообщением


Ссылка на сообщение

Скажите плиз, реально ли исправить вылет связанный с d3d11.dll, D3D11CreateDeviceAndSwapChain()?
Честно говоря я вообще не понимаю природу этой гадости.

Поделиться этим сообщением


Ссылка на сообщение

@AndreySol не совсем понял что ты хочешь, тебе нужно для всех итемов с нужной тебе секцией узнать координаты их ячеек?

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

подскажите а что делает функция iCeil? Я так понимаю она отличается от стандартной ceil функции. Вот её код -
P.S. я в математике не особо силён)
 

ICF int iCeil(float x)
{
    int a = (*(const int*)(&x));
    int exponent = (127 + 31) - ((a >> 23) & 0xFF);
    int r = (((u32)(a) << 8) | (1U << 31)) >> exponent;
    exponent += 31 - 127;
    {
        int imask = (!(((((1 << (exponent))) - 1) >> 8)&a));
        exponent -= (31 - 127) + 32;
        exponent >>= 31;
        a = ~((a - 1) >> 31); /* change sign */
        r -= (imask&a);
        r &= exponent;
        r ^= a;
        r = -r; /* change sign */
    }
    return r; /* r = (int)(ceil(f)) */
}

 

Изменено пользователем mortan

Поделиться этим сообщением


Ссылка на сообщение

кст, давно хотел спросить раз уж эту тему затронули, допустим добавил в модель одну новую косточку то нужно все анимки переделывать? Или их можно как-то быстро "адаптировать"? Я просто как-то пробовал добавить новую косточку, но анимки не трогал и игра с такой моделькой падала(

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@TIGER_VLAD  всего-то? Т.е. тупо открыть и сохранить, ничего более не тыкая?)

Изменено пользователем mortan

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@Romann и остаётся только включение\выключение в движке поправить? Блин, если всё так просто то попробую сделать

Изменено пользователем mortan

Поделиться этим сообщением


Ссылка на сообщение

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

Поделиться этим сообщением


Ссылка на сообщение

Может кто объяснить когда происходит допустим  UPDATE_Read/UPDATE_Write а когда STATE_Read/STATE_Write?
Насколько я понял первое выполняется при (?) каждом апдейте, а вот когда второе? Единоразово при спавне? Или же как-то иначе?

Поделиться этим сообщением


Ссылка на сообщение

@Suhar_, всё намного проще - для актора есть своя переопределённая функция в файле ActorCondition.cpp. И не надо ничего определять, всё уже сделано.

Поделиться этим сообщением


Ссылка на сообщение

@AndreySol, посмотри функцию отрисовки текущего количества патронов в классе оружия, GetBriefInfo.

Поделиться этим сообщением


Ссылка на сообщение

Эх, ну и зачем так делать?) Меня же теперь любопытство сожрёт - а что там было :D

Поделиться этим сообщением


Ссылка на сообщение

@Expropriator, само собой для работы с таким количеством костей нужно и саму форму хранения анимаций подправить. К тому же, если конечно мне память не изменяет и я что-нибудь не путаю,то анимации запускаются игрой для каждой кости отдельно. Я только не понимаю для чего еще кроме сложных объектов типа транспорта или мутантов может потребоваться такое количество костей?! Делать столько костей для оружия уж точно не стоит)

Поделиться этим сообщением


Ссылка на сообщение

@_ХоЗаР_, тогда хочу предупредить о том как работает механизм скрытия костей в сталкере - он просто уменьшает размер кости до нулевого состояния, как себя поведёт игра при попытке сокрытия большого количества костей не могу предсказать точно, плюс полигонаж модели тоже будет приличным)

А, забыл, стоит тогда обратить внимание еще на вот этот фикс - https://github.com/OGSR/OGSR-Engine/commit/ef07585bba6fd859387826da5a8874e34a177cd2#diff-9b6e92cb2608a086529b77e34d3f1a50

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@ed_rez, да не, группы уже условно сделаны, а так он для каждой кости циклом проходит и применяет анимацию. В ЗП нет склеивания скелета ( или я его не встречал в коде ), так называемый аттач тех же рук к оружию как работает - руки и ствол двигаются отдельно, но ствол при этом рендерится относительно матрицы косточки рук ( lead_gun )

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

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

×
×
  • Создать...