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

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


Rolan

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

Кстати, насчет CInventoryItem::CanTrade() - оказалось, что это не самое правильное место для того, что я хотел сделать. Выяснилось. что эта ф-ция вызывается не только при построении списков торговли, но и при обычном шмоне инв. ящиков\нычек. Типа, даже фича получилась: хочешь выложить предмет из слота в ящик - сначала сними из слота:). Но для моей похотелки все же нашлось более правильное место...

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


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

Подскажите, где в движке сделано изменение веса оружия в зависимости от кол-ва заряженых в него патронов? А то чет роюсь в Weapon-классах, не попадается никак это место.

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


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

@stalker MAX

Уточни, с какой студией работаешь и что вней собираешь: чистый 1.0007rc1 или что-то с какого-то репо?

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


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

Интерфейсы IDirectSound.... объявлены в хедере "....\xr_src\SDK\dx9sdk\dx9sdk\include\dsound.h". Скорее всего у тебя проблема в подключении всех необходимых компонентов. Смотри в настройках пректа все, что связано с инклюдами, конкретно SDK\dx9sdk\dx9sdk\include.

  • Спасибо 1

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


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

Для UI-классов есть какой аналог shedule_Update(u32 dt) классов инвентарных предметов?

У CLevel есть методы для работы с игровым временем. А есть ли где, что-то для реального времени?

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

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


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

UPD: не актуально, удалено.

 

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

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


Ссылка на сообщение
2 часа назад, mortan сказал:

а что там было

Да ни чего особенного, разобрался с непонятками.

Насчет ф-ций реального времени нашел у CLevel, унаследованные им от IPureClient:
IC u32 timeServer()
IC u32 timeServer_Async() <- тут миллисекундный таймер
IC u32 timeServer_Delta()
IC void timeServer_UserDelta(s32 d)
IC void timeServer_Correct(u32 sv_time, u32 cl_time); 

Для UI-классов ф-ция Update имеется, правда на нее завязана отрисовка, ну да ладно, что есть - то есть.
 

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


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

Если добавить для какого либо класса новую переменную в нет-пакет, то где-нибудь в движке могут проблемы появиться? Т.е., где-нибудь в движке есть прямое использование данных из нет-пакета вне ф-ций net_Import\net_Export, net_Spawn, save\load?

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


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

Помогите разобраться.

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

void CInventory::UpdateDropTasks()
{
    for(u32 i=0; i<m_slots.size(); ++i)    
    {
        if(m_slots.m_pIItem)
            UpdateDropItem(m_slots.m_pIItem);
    }

    for(i = 0; i < 2; ++i)    
    {
        TIItemContainer &list            = i?m_ruck:m_belt;
        TIItemContainer::iterator it    = list.begin();
        TIItemContainer::iterator it_e    = list.end();
    
        for( ;it!=it_e; ++it)
        {
            UpdateDropItem(*it);
        }
    }

    if (m_drop_last_frame)
    {
        m_drop_last_frame = false;
        m_pOwner->OnItemDropUpdate    ();
    }
}

Вот этот кусок

    for(i = 0; i < 2; ++i)    
    {
        TIItemContainer &list            = i?m_ruck:m_belt;

как понимать? i будет иметь значения 0 а затем 1, соответственно код оператора будет выполнен для пояса а затем для рюкзака. А на кой это в for оборачивать ?

Изменено пользователем AndreySol
  • Согласен 1

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


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

Ф-ция CWeapon::SpawnAmmo. Как-то можно для боеприпаса, который в ней будет создан, задать инвентарный флаг EItemPlace? Т.е. указать для создаваемой пачки патронов, контейнер инвентаря в который она должна попасть.

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

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


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

Кто нить пробовал решать такую задачу: для рюкзака сделать ограничение кол-ва используемых ячеек(клеточек)? При этом оставив группировку предметов.

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


Ссылка на сообщение
4 часа назад, naxac сказал:

это вроде в xml драг-дропа можно задать: unlimited="0"

Это не работает, точнее -  работает криво. Флаг unlimited="1" просто позволяет динамически увеличивать емкость контейнера + включает отображение скроллбара. А мне надо именно четкое ограничение по кол-ву клеточек(ячеек). Просто, перед тем, как свое колхозить хотелось бы посмотреть как другие подобное делали...

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


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

@Molphar

Я пока ничего не понял - с какой целью ты полез в движковый код чтоб спавнить что-то? Насколько мне известно, вроде в игре все спавнится без проблем из all.spawn или ф-цией create(....)

3 часа назад, Molphar сказал:

то секция предмета соответствует текущему предмету который находится в руках

Еще непонятнее - то у тебя предмет "просто висит в воздухе", то он в руках?

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


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

@antosha_chehonte

Руками... Вы бы показали как пытались портировать, что за ошибки у Вас происходят. Тогда и подсказки будут по делу, а если вы ждете точной инструкции, то будете еще долго ее ждать. До пенсии наверно...

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


Ссылка на сообщение
8 часов назад, Zander_driver сказал(а):

и с ужасом представляю, что можно сотворить с игрой, если некоторыми из этих новых функций, воспользуется достаточно криворукий кодер

Если оглядываться на криворуких кодеров - то лучше вообще ничего не делать. По Вашему получается, что если есть те, кто пьяным салится за руль и совершает всякое непотребство на дорогах - то надо прекратить производство и продажу авто, от греха подальше. Да и дороги то же ликвидировать... Странная идеология, из тех, что "лучше все запретить, как бы чего не вышло".

  • Нравится 1
  • Согласен 1

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


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

@ARTLantist 

Неплохо бы указывать версию движка, про который спрашиваешь, а то в этой теме все в кучу.

Для ТЧ изменить условия группировки предметов:

bool CUIInventoryCellItem::EqualTo(CUICellItem* itm)
{
    CUIInventoryCellItem* ci = smart_cast<CUIInventoryCellItem*>(itm);
    if (!ci)
        return false;

    // если состояние различается не более 1% и секции совпадают - группируем объекты
    return (fsimilar(object()->GetCondition(), ci->object()->GetCondition(), 0.01f) &&(object()->object().cNameSect() == ci->object()->object().cNameSect()));
}

Откуда вызывается думаю найдешь сам.

 

@ARTLantist - предполагаю, что в ЗП похожим образом группировка работает. Ищи поискомназвание ф-ции, от нее дальше раскапывай...

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

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


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

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

AMK-Team.ru

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