Ku2zoff, насчёт FindCover кстати. В hlsdk WorldGraph.m_iLastCoverSearch меняется прямо внутри цикла и при этом складывается с индексом для получения нода, что может привести к пропуску части нодов во время поиска подходящего. Собственно в моём FindRunAway ты можешь видеть, что я переместил эту строчку прямо перед возвращением успеха. Рекомендую то же самое сделать в FindCover.
Я потестировал старый и новый вариант. Разницы не заметно, кроме того, что новый вариант перестаёт ловить последний кадр и даёт рассинхрон (звук и маззлфлеши запаздывают), если анимации быстрые. Видно на примере стрельбы грантов из автомата. Позже буду ещё смотреть. Думаю, лучше всего убрать фиксированный flInterval и m_fSequenceFinished из DispatchAnimEvents и попытаться забороть пропуски эвентов. Дело, я думаю, в частоте тчинка: gpGlobals->time + 0.1. Если как-то заставить DispatchAnimEvents вызываться каждый кадр, то проблема теоретически должна уйти.
ncuxonaT писал: Таким способом можно починить ИИ в Паранойе?
По результатам тестов вышло, что ничего не починилось, кроме тупняков со скриптами (см. gruntbattledemo). В остальном ситуация усугубилась. Нужно втыкать счётчик с алертами, смотреть количество эвентов в играемой анимации и срабатываний HandleAnimEvent. Искать, в каких условиях эвенты пропускаются, и пытаться исправить. Я уже и с клиентской части дёрнул IEngineStudio.ClientEvents - тоже не то пальто. В зависимости от изменений то начало анимации корректно обрабатывается, то конец.
Из всех вариантов лучшим оказался вариант от вэлв, без фиксированного flInterval и m_fSequenceFinished в DispatchAnimEvents.
Цитата:
thambs писал: А монстры теперь умеют толкаться между собой и с игроком?
Научатся, если написать соответствующий код. Не останавливать монстра, если ему блокирует дорогу другой монстр, и двигать блокирующего.
Мне одному примеры для работы искать муторно. Если у кого вдруг есть какие-то регулярно повторяющиеся несрабатывания скриптов или поведения монстров, можете эту фигню сунуть в карту-коробку и кинуть аттачем. Я буду посмотреть и пробовать разные варианты исправлений. Должен же быть способ вылечить пропуски эвентов без фиксированного интервала.
Ku2zoff, после фикса в диспетчере сломался монстр контроллер. Стреляет пару раз и атака прекращается навечно. Посмотри, что там. Я пойду гляну что там с анимациями.
Хм, поменял в анимации атаки первый эвент с 0 на 1 кадр, все равно. Постреляет пару раз и перестает.
Закончил барника. Осталось только сделать ему дробовик. Тут придётся повозиться с анимацией бега, т.к. та, что есть в Zombie Edition выглядит как картон из Terminator 3: War of the Machines.
Ku2zoff писал: та, что есть в Zombie Edition выглядит как картон из Terminator 3: War of the Machines.
Я и забыл какие они там, теперь вспомнил чем они мне не угодили, те что в БХЛ вроде тоже не супер-пупер, но вроде не такие картонные. Из оружия еще можно было бы версию с Магнумом сделать, ну и автоматом, типа у солдата отобрал.
Кстати знаком мод Hard-Life? Мод еще делается, типа более усложненная халва, зомбари бегают, крабы передвигаются прыжками, но не это меня заинтересовало, там классно расширили барников, помимо разного оружия им добавили много разных новых голов, плюс есть варианты с жилетом и без, и помимо каски они могут носить кепку, этого барникам не хватает, у солдат и ученых 4 варианта головы, а у барника одна. Плюс мне там понравились переделки карт из халвы, из расширили, причем неслабо.
Еще бы солдатам было бы неплохо пофиксить их знаменитый тактический маневр - положить гранату на пол и взорвать себя.