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

AndreySol

Опытные
  • Число публикаций

    419
  • Регистрация

  • Последнее посещение

1 подписчик

О AndreySol

Недавние посетители профиля

221 просмотр профиля
  1. [SoC] Ковыряемся в файлах

    В спавне менять ничего не надо... Надо смотреть в скрипты - похоже установлен какой-то уборщик трупов.
  2. [SoC] Ковыряемся в файлах

    Видимо за тем, что меряться пиписками с ботами - нонсенс крайней степени...
  3. Редактирование движка X-Ray

    Тут бы подсказочку, куда конкретно там смотреть, а то пока не очень понятно...
  4. Редактирование движка X-Ray

    1.0007rc1. У меня CScriptGameObject::MoveToSlot равно как и "move_to_slot" - отсутствуют. CUIGameSP::ReInitShownUI() -> CUIInventoryWnd::InitInventory_delayed(){m_b_need_reinit = true;} - просмотрел UIInventoryWnd.cpp, UIInventoryWnd2.cpp и UIInventoryWnd3.cpp, нигде не увидел чтоб проверялся этот m_b_need_reinit и что-то выполнялось в зависимости от его значения.
  5. Редактирование движка X-Ray

    Мне надо при активном(открытом) окне инвентаря предмет переместить из рюкзака в слот. Вариант использования CInventory::Slot(PIItem pIItem, bool bNotActivate) не подходит, т.к. при использовании этой ф-ции предмет-то в слот перемещается, да вот только отображения этого действия нет - чтоб увидеть результат, надо закрыть окно инв. и снова открыть. Я ранее добавлял ф-цию снятия предмета из слота в рюкзак: bool CUIInventoryWnd::RemToBag(PIItem pItem) { if (GetInventory()->CanPutInRuck(pItem)) { CUIDragDropListEx* old_owner = GetSlotList(pItem->GetSlot()); CUICellItem* itm = old_owner->ItemsCount() ? old_owner->GetItemIdx(0) : NULL; CUIDragDropListEx* new_owner = m_pUIBagList; bool result = GetInventory()->Ruck(pItem); VERIFY(result); CUICellItem* i = old_owner->RemoveItem(itm, false); <- здесь происходит перемещение ячейки с предметом от одного new_owner->SetItem(i); <- владельца другому SendEvent_Item2Ruck(pItem); return true; } return false; } В случае перемещения предмета из слота все просто - в слоте всегда одна ячейка, получить ее не сложно и все работает нормально. А вот как для рюкзака получить нужную ячейку для нужного предмета ? Как сам предмет получить я вроде знаю: PIItem pItem = pActor->inventory().GetItemFromInventory("ля-ля-ля"); а вот с ячейкой затык. Смотрел реализацию CUIDragDropListEx, там нашел только получение ячейки по индексу: CUICellItem* CUIDragDropListEx::GetItemIdx(u32 idx) { R_ASSERT(idx<ItemsCount()); WINDOW_LIST_it it = m_container->GetChildWndList().begin(); std::advance (it, idx); return smart_cast<CUICellItem*>(*it); } Но как индекс узнать ?
  6. X-Ray extensions

    Зачем его получать, если он всегда - "actor" ?
  7. Редактирование движка X-Ray

    Может кто решал подобную задачу, подскажите плиз: как при активном(открытом) окне инвентаря получить для инвентарного объекта, по его конфиговой секции, объект класса CUICellItem, т.е. ячейку инв. в которой он находится(если я правильно понял назначение класса CUICellItem) ?
  8. [SoC] Вопросы по SDK

    Этот ключ используется для сборки спавна(-s), в остальных этапах он не применим.
  9. Справочник по функциям и классам

    @WinCap Спрошу, однако: информация откуда ? Тесты, курение исходников, еще что-то ?
  10. Скриптование

    Мало исходных данных... Надо знать, что за монстров Вы будете удалять - они работают в каком-то гулаге, они под персональной логикой, они просто под движковым управлением ? Насчет отрегистрации в гулагах и респавнерах, на мой взгляд, лучше сделать так, как в первом Вашем посте предлагалось - убить моба, а затем по факту его смерти удалить. Тогда он автоматом будет отрегистрирован везде, где был завязан. Код может выглядеть как-то так: mob:kill(db.actor) level.add_call(mob, function() return mob:alive() ~= false end, function() alife():release(alife():object(mob:id()),true) end)) тут мы используем кэллбэк-ф-цию, которая даст время движку на умерщвление моба, после чего удалит его.
  11. Скриптование

    mob:kill(mob) alife():release(alife():object(mob:id()),true) Весь Сталкер построен на апдейтах(обновление по таймеру с определенным интервалом), соответственно движку, что бы выполнить какое-то сложное действие над объектом, требуется один\несколько апдейтов. А твой код будет выполнен в один апдейт, соответственно метод kill не будет полноценно обработан для объекта, и он будет сразу удален. Если у тебя этот моб будет под гулаговой логикой или в моде используется какая-то схема, которая прописывает рестрикторы мобам - будет вылет или зависание в скриптах(= битый сейв).
  12. Ищу файлы / моды / аддоны

    Кому не лень будет, скиньте текстурки все необходимые от стрелочного индикатора радиации из ЗП(или ЧН, если и там есть). Заранее благодарен.
  13. [SoC] Вопросы по SDK

    @black bloodsucker, WolfHeart Ну читайте все же логи внимательнее: !WARNING: CLocatorAPI::check_for_file ..... - это ПРЕДУПРЕЖДЕНИЕ, а не ошибка. А вот далее: [14.10.17 15:47:35.584] FATAL ERROR - вот это уже ФАТАЛЬНАЯ ОШИБКА, которую компилятор не смог прожевать. Ты пишешь, что проблемы у тебя при сборке game.graph и all.spawn, а лог выкладываешь от этапа all.spawn'а. А ведь game.graph собирается раньше спавна. И проблема у тебя похоже не в сборке all.spawn'а, а в самом начале компиляции всего, что с AI-сеткой связано, по этому давай все по порядку - лог сборки сетки на драфте для любой локации, затем лог проверки для этой же локации, затем просчет укрытий этой же локации, затем сборка сетки этой же локации, затем сборка глобального графа. Лог сборки спавна уже есть.
  14. Скриптование

    В скрипте, который управляет новостями, отслеживать выброс и блокировать выдачу новостей. Элементарно Ватсон...
  15. [SoC] Ковыряемся в файлах

    @вася5657 Смотри в скрипты со словом "death" в названии. Ну и конфиги, соответственно... Есть класс менеджера смерти мобов, в котором прописано все: подчистка инвентаря мобов от предметов, которых не должно быть после их смерти, изменение состояния предметов после смерти их владельца и тд
×