Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
По идее это должно работать так:
Идёт проверка на кол-во нанесённого дамага (тип выстрел на кол-во хп) и если дамаг равен -1\0 то рендрен текста миссед шот дуе сприд.
Кода нет но сделай сам а
По идее это должно работать так:
Идёт проверка на кол-во нанесённого дамага (тип выстрел на кол-во хп) и если дамаг равен -1\0 то рендрен текста миссед шот дуе сприд.
Кода нет но сделай сам а
Принцип прост, у меня работает вообще идеально:
1. Ставишь эвент логгер на weapon_fire, bullet_impact, player_hurt
2. в аиме сохраняешь запись бэктрека в которую стрелял последний раз, и прочие данные
3. все эвенты присылаются клиенту последовательно, и одним пакетом, простейший пример того как приходят эвенты с прострелом одной стены:
Код:
weapon_fire - происходит выстрел из оружия локального игрока
bullet_impact - пуля попала в стену
bullet_impact - пуля вылетела из стены и летит дальше
bullet_impact - пуля попала в игрока
bullet_impact - пуля вылетела из игрока и попала в не пробиваему стенку
пенетрация стен останавливается, FireBullets и HandleBulletPenetration заканчивают свою работу, и вызывается TraceAttack, который вызовет OnTakeDamage
player_hurt - игроку был нанесен урон
повторяем если пришло несколько выстрелов - например если стрелять во время фейклага, или выстрел был сделан из дробовиков
4. на каждом weapon_fire создаем структуру в которую будем добавлять наши импакты и урон
сразу замечу, что если урона нет, это не значит что ресольвер или годмод - иногда невозможно было прострелить стенку просто из-за разброса
если есть player_hurt, то трейсировку лучей и тест импактов можно просто пропустить, и просто применить в ресольвере данные сохраненные в аиме, из второго шага
если же player_hurt эвент отсутствует то делаем трейсировку лучей
а теперь сама проверка импактов и трейсировка лучей:
1. проверяем по сохраненным данным с аима, то что от позиции выстрела до самого последнего импакта дистанция больше чем до игрока, иначе - missed shot due to spread
2. если дистанция в норме, то получаем от позиции импактов направление выстрела на сервере, и начинаем трейсировку лучей - если луч ударил в хитбокс, то это missed due to resolver, если не попал по хитбоксам - missed shot due to spread
3. ( Я НЕ ТЕСТИЛ ЭТОТ ШАГ! ) если же луч ударил в хитбокс, и у нас есть импакт на игроке( просто проверяем что он в bounding box-e ) от выстрела, то это missed shot due to godmode
UPD: не обязательно для трейсировки лучей использовать TraceRay/ClipTraceToPlayer, можно использовать простейшую интерсекцию: