Костыли и хитбоксы

Сообщения
101
Реакции
219
Всех приветствую, возникла такая сложная ситуация, уже 2 день ищу информацию и ничего не получается придумать, возможно у кого появится мысль по реализации:
Есть игрок, с большой моделью
Так же у модели местами криво работают хитбоксы, скорее всего из за багов клиента, я проводил проверки через хитбокс трекер и визуально никаких проблем не увидел (Модель устанавливается через реапи нативу с модельиндексом)
Но вопрос не в этом:
Задача - сделать возмжность адекватного нанесения урона игроку, т.е хуки трейсов и тач большого игрока с энтити (Ракеты, к примеру)
Поскольку размер энтити игрока менять нельзя, моя идея - в пресинке игрока таскаю за игроком энтити в которую и ловлю атаку и тач энтить
Проблемы:
1 вариант - дать этой энтити SOLID_SLIDEBOX - в таком случае трейсы ловятся нормально, тачи тоже, но в итоге игроки периодически могут друг в друге застревать из за этих энтить, это неплохой вариант, но вероятно придется постоянно проверять застрял ли игрок, что не круто
2 вариант - эта энтити с SOLID_TRIGGER - в таком случае работают только тачи, а с трейсами(обычные выстрелы) вообще никак
Хотелось бы любой реализации, даже с костылями, но придумать ничего кроме варианта выше не выходит
 
Сообщения
2,713
Реакции
2,993
Помог
59 раз(а)
возможно, понадобится код, для тестов.
 
Сообщения
29
Реакции
62
В zp 4.3 была такая настройка:
INI:
; If you want your models to have accurate hitboxes, try enabling this.
; Note: make sure your models don't have messed up hitboxes, otherwise
; this setting might cause your server insane cpu usage and lag!
SET MODELINDEX OFFSET = 1
Дезинформировать не стану, но все таки выскажусь)
Насколько знаю там задавался modelindex, все остальное уже обрабатывал движок серверный. Были классы зомби-игроков, ревенанты, и это работало нормально с трассой стандартных оружий, насколько я помню. Значит reapi должен выполнять ту же задачу.
Скорее всего вы правы, и дело действительно в самой модели.
 
Сообщения
101
Реакции
219
SerGrib, (Модель устанавливается через реапи нативу с модельиндексом), я даже в пресинке установку индекса пробовал спамить, там в модели дело вероятно
Но суть не в этом, даже если бы хитбоксы работали идеально, игрок бы все равно не мог тачи ракет ловить, из за большого размера самой модельки
Поэтому требуется дополнительная энтити
В данный момент ковыряюсь через var_groupinfo и FM_ShouldCollide, скорее всего это и будет решением, только доразобраться надо
30 Дек 2018

Решение:

Используем var_groupinfo на энтити получения урона, таким образом избавляемся от коллизии с игроком - следовательно застрять не получится, но при этом сохраняем хуки тача и трейсов
Так же используем FM_ShouldCollide с сравнением овнеров у тачера и тачеда, при совпадении блокируем тач
+Для всех ракет желательно использовать SOLID_TRIGGER и конкретно в хуках тачей ракет делать блок если овнеры так же совпадают
На данный момент больше не вижу косяков
 
Последнее редактирование модератором:
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Droads, если не сложно, приведите пример кода,для тех, кто захочет сделать нечто подобное
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Droads, ентити с хитбоксами и ее перемещение вместе с игроком. Конкретно меня интересует вопрос с углами
 
Сообщения
271
Реакции
423
Помог
5 раз(а)
Честно скажу, когда после почти 5-ти летней передышки от SPAWN AMXX начал опять скриптить(а не писать как на c++) заметил большой недостаток средств amxx, таких например как полностью отсутствующий доступ к метаданным модели(bbox, hitbox и т.д.), так же очень напрегает трейс только определенных bbox, я думаю в rehlds определённо надо добавить форвард на функцию SV_Move
 
Сообщения
271
Реакции
423
Помог
5 раз(а)
fantom,
bionext, есть PM_Move.но не уверен оно ли это
Ссылочку пожалуйста, может я чего-то не знаю об amxx, этого я не отрицаю( по крайней мере даже средствами c++ приходилось делать через поиск паттерна в памяти).
 
Сообщения
271
Реакции
423
Помог
5 раз(а)
fantom, Я маленько ошибся, не PM_Move, а SV_Move.
 
Сообщения
101
Реакции
219
Спустя такое время нашлось ещё одно решение которое намного адекватнее предоставленного мной выше -
Просто используем подобный хук:
Код:
RegisterHam(Ham_SetObjectCollisionBox, "player", "SetObjectCollisionBox", false)

public SetObjectCollisionBox(iPlayer)
{
    set_entvar(iPlayer, var_mins, { -200.0, -200.0, -200.0 })
    set_entvar(iPlayer, var_maxs, { 200.0, 200.0, 200.0 })
}
Размер игрока нужно выставлять исходя из размера модельки в юнитах
Таким образом захватываются и работают все хитбоксы в любых положениях модельки и работают все тачи кастомных энтити, в моём случае ракет=)
Способ очевидный, но сообразил только сейчас
 
Сообщения
101
Реакции
219
И снова вопросы и всё на ту же тему.
Суть - При установке модельиндекса на модели игрока, на некоторых картах(это важно) сервер просто фризит до того момента, как игрок с этой моделью не выйдет
Дело в модельке игрока и это никак не вылечить?
Полезна будет любая информация.
Очень странно, что это возникает не на всех картах
 
Сообщения
271
Реакции
423
Помог
5 раз(а)
Droads, карту и модель в студию.
 
Сообщения
101
Реакции
219
Droads, карту и модель в студию.
sw_revenge - всё заработает
sw_convoy - фриз
Хочу уточнить, что когда я тестировал один - всё в порядке
Как заходит второй человек - фриз
(Надеюсь, в картах нет доп. файлов, я не уверен)
 

Вложения

Сообщения
271
Реакции
423
Помог
5 раз(а)
Скрытое содержимое для пользователей:
 
Сообщения
101
Реакции
219
Скрытое содержимое для пользователей: bionext
18 Янв 2019
bionext, Нет идей?
Я вообще не понимаю, почему так может быть
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Droads, а всегда ли фриз или время от времени? Я конешно мало чем смогу, но вдруг поулчится
 
Сообщения
101
Реакции
219
fantom, На некоторых картах
Как только >1 человека
Один из них получает кастомную модель и пока он не выйдет сервер в фризе
У меня уже возникла идея попробовать пересобирать модель и по очереди добавлять хитбоксы, смотреть, но это уже завтра буду пробовать
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу