Написание плагина, рикошет

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Всем привет!
Подскажите, возможно ли в Cs:Go сделать рикошет пуль?
Если да, то буду крайне благодарен за пример кода; )
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
  1. Определяешь куда попала пуля, если попала не в игрока или NPC (хз, как определить столкновение с щитом/каской), то определяешь насколько уменьшится уровень кинетической энергии пули после столкновения.
    Например, если попал в дерево, воду или стекло, то пуля не станет рикошетить, если в металл или камень, то станет (толщину металла не узнать же никак, как я понимаю).
  2. Если в результате энергия будет больше некого значения (ну т.е. дамаг игроку будет больше 1, например), то нужно определить в каком направлении она станет лететь после отскока от препятствия (нужно найти вектор перпендикулярный поверхности препятствия в точке столкновения и изменить вектор полёта пули согласно правилу "угол падения равен углу отражения")
  3. См. п.1
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@Grey83, он хочет обычный рикошет для ксго при попадании в поверхность и для него требуется просто расчитать вектор. Точку попадания будет брать из события bullet_impact, ну а позиция выстрела и так понятно.
1. Создаешь вектор из точки попадания в точку выстрела.
2. Следующим делом следует найти нормаль к поверхности. Это можно сделать трассировкой в точку попадания и вызовом TR_GetPlaneNormal().
3. Ну а третий шаг - найти вектор, который направлен на угол от первого вектора в два раза большим, чем угол между первым вектором и нормалью.

Уровень кинетической энергии)))
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
я думал он хочет именно рикошет, а не просто его визуальный эффект
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@Grey83, вовсе нет)) И у тебя нету причин так думать.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982

Terminator-ws

Участник
Сообщения
55
Реакции
45
Оффтоп
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@Grey83, чтобы хоть как-то адекватно отвечать на вопросы на этом форуме, ты должен понимать уровень обитающих тут юзеров. И произнося слова "рассчитать уровень кинетической энергии" ты им даже отдалённо не помогаешь. А вот @Terminator-ws понимает, хоть и высказывается слишком саркастично.
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
@Grey83, это все хорошо, но
то определяешь насколько уменьшится уровень кинетической энергии пули после столкновения.
Это если только самому уменьшать(то есть посредством sm не определит/подсчитать) например на значение из квара
перпендикулярный поверхности препятствия в точке столкновения
А разве можно получить по каким углом "ударилась " пуля?
--- Добавлено позже ---
Следующим делом следует найти нормаль к поверхности. Это можно сделать трассировкой в точку попадания и вызовом TR_GetPlaneNormal().
Тоесть этим я получаю угол между вектором1(след выстрела) и поверхностью, правильно понял? :)
--- Добавлено позже ---
@Саша Шеин, когда ожидаешь код и что-то готовенькое, а тебе втирают какую-то дичь теорию)
Ну кода я конечно не ждал, а @Grey83 и @gibs, сказали практически одно и тоже, но первый с точки зрения физики (реальной), а вот gibs более точно попал)
 
Последнее редактирование:

FurFur

Участник
Сообщения
153
Реакции
85
Само проще это отследить координаты пули через bullet_impact, получить углы координат и использовать
TR_TraceRay - RayType_Infinite

Только для углов нужна формула,которая будет рандомно менять их направление
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@Саша Шеин, нормаль - это вектор, который перпендекулярен к поверхности.
нужно найти вектор перпендикулярный поверхности препятствия в точке столкновения и изменить вектор полёта пули согласно правилу "угол падения равен углу отражения"
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
Это если только самому уменьшать(то есть посредством sm не определит/подсчитать) например на значение из квара
Это и подразумевалось. Для разных поверхностей плагин будет подставлять разный коэффициент, которые ты должен сам подставить.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
разный коэффициент
Это ему ещё учитывать, с какого оружия был произведён выстрел (например, AWP - максимальный урон) и в какую часть тела + броня/шлем (больше/меньше урона). Оффтоп
 
Сверху Снизу