|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Куда полетит пуля?
|
|
tatyxa | Дата: Суббота, 19.09.2009, 17:38:00 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 7
Статус: Не в сети
| Здравствуйте Уважаемые. Смотрел видео, где у админа, когда он наблюдает за игроком, отображается точка(плавно и красиво кружится вокруг прицела), показывающаю куда полетит пуля. Как это реализовать? (Это вроде было для CSS, меня интересует CS1.6). С помощью Ham_TraceAttack? Если да, то как правильно испльзовать эту функцию(какие параметры и откуда брать)? Знаю что можно отлавливать события, и получать вектор пули после выстрела, но вот как это сделать не стреляя - не знаю.
|
|
| |
PomanoB | Дата: Суббота, 19.09.2009, 17:56:52 | Сообщение # 2 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Code new Float:origin[3], Float:v_ofs[3], Float:angle[3], Float:punch_angle[3], tr
pev(id, pev_origin, origin) pev(id, pev_view_ofs, v_ofs)
xs_vec_add(origin, v_ofs, origin)
pev(id, pev_v_angle, angle) pev(id, pev_punchangle, punch_angle)
xs_vec_add(angle, punch_angle, angle)
engfunc(EngFunc_MakeVectors, angle)
global_get(glb_v_forward, angle)
xs_vec_mul_scalar(angle, 4048.0, angle) xs_vec_add(angle, origin, angle)
engfunc(EngFunc_TraceLine, origin, angle, 0, id, tr)
get_tr2(tr, TR_vecEndPos, angle) free_tr2(tr)
/* После этого начальная позиция пули в origin, конечная в angle */
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Суббота, 19.09.2009, 17:57:28 |
|
| |
LaFA | Дата: Суббота, 19.09.2009, 18:00:45 | Сообщение # 3 |
Подполковник
Группа: Только чтение
Сообщений: 148
Статус: Не в сети
| че за бред ?
СТРАНО Я ЗАШОЛ МНЕ КАК МЕНУТУ ПРОИГРАЛ И МНЕ БАН АДМИН КИНУЛ ЗА ШТО ХЗ ЧЁ ЗА ФИГНЯ ЗАБАНИЛИ НЕ ЗАШТО Я ЗАХАДИЛ И ТАМ БАН ВЫСВЕТЕЛСЯ Я НЕПОНЯЛ 4Е ЗА ФИГНЯ Я РАСТЕРЯЛСЯ
|
|
| |
LtRAT | Дата: Суббота, 19.09.2009, 18:38:09 | Сообщение # 4 |
Сержант
Группа: Пользователи
Сообщений: 33
Статус: Не в сети
| Хм а я собственный v_forward считал через "engfunc(EngFunc_AngleVectors, angle, v_forward, v_right, v_up);" Глобальный, то уж лучше наверное не трогать
|
|
| |
PomanoB | Дата: Суббота, 19.09.2009, 18:47:32 | Сообщение # 5 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Ничего плохого-то всё равно не будет) Я использую глобальный потому что увидел именно такое использование в HL SDK)
http://romanov4400.mybrute.com
|
|
| |
tatyxa | Дата: Суббота, 19.09.2009, 19:02:14 | Сообщение # 6 |
Рядовой
Группа: Пользователи
Сообщений: 7
Статус: Не в сети
| Огого) Быстро ответили) Спасибо!!! Буду разбираться) PomanoB если не сложно, можно прокомментировать каждую строчку)) знания мои крайне не велики)))
Сообщение отредактировал tatyxa - Суббота, 19.09.2009, 19:04:58 |
|
| |
PomanoB | Дата: Суббота, 19.09.2009, 19:23:03 | Сообщение # 7 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Code // Объявляем используемые переменные new Float:origin[3], Float:v_ofs[3], Float:angle[3], Float:punch_angle[3], tr
// Получить координаты игрока pev(id, pev_origin, origin)
// Получить смещение глаз игрока pev(id, pev_view_ofs, v_ofs)
// Складываем смещение глаз и координаты игрока - получаем координаты его глаз xs_vec_add(origin, v_ofs, origin)
// Получаем угол куда смотрит игрок pev(id, pev_v_angle, angle)
// Это так сказать "искажение" угла взора игрока pev(id, pev_punchangle, punch_angle)
// Складываем и получаем настоящий угол xs_vec_add(angle, punch_angle, angle)
// Делаем из угла единичный вектор engfunc(EngFunc_MakeVectors, angle)
// Получаем этот вектор global_get(glb_v_forward, angle)
// Умножаем его xs_vec_mul_scalar(angle, 4048.0, angle)
// Прибавляем к координатам игрока, чтобы получить вектор от координат игрока, направленный по его взору xs_vec_add(angle, origin, angle)
// Трассируем линию от координат до конца вектора engfunc(EngFunc_TraceLine, origin, angle, 0, id, tr)
// Получаем конечную точку get_tr2(tr, TR_vecEndPos, angle)
// Освобождаем "указатель" трассирования free_tr2(tr)
/* После этого начальная позиция пули в origin, конечная в angle */
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Суббота, 19.09.2009, 19:23:32 |
|
| |
tatyxa | Дата: Суббота, 19.09.2009, 19:27:44 | Сообщение # 8 |
Рядовой
Группа: Пользователи
Сообщений: 7
Статус: Не в сети
| PomanoB, Хм))) Премного благодарен! ... Нарисовал я лазер от origin до angle... но это не то что я хочу)) Он показывает не направление куда полетит пуля, а направление взгляда игрока(прицел+отдача). А мне нужно чтобы показывало куда полетит именно ПУЛЯ.(т.е. нужно как-то узнать отклонение(разброс) пули для текущего оружия)
Сообщение отредактировал tatyxa - Суббота, 19.09.2009, 20:05:34 |
|
| |
LtRAT | Дата: Суббота, 19.09.2009, 20:35:09 | Сообщение # 9 |
Сержант
Группа: Пользователи
Сообщений: 33
Статус: Не в сети
| Quote (PomanoB) Ничего плохого-то всё равно не будет) Это если ХЛ или другие плагины всегда пересчитывают v_forawrd итп перед тем как их использовать, а быть уверенным в этом нельзя Всетаки получается, что изменяем глобальное значение Quote (tatyxa) ... Нарисовал я лазер от origin до angle... но это не то что я хочу)) Есть ряд плагинов которые работают на основе перехвата Trace_line, trace_hull(если knife) , но в них лишние трэйсы фильтруются как раз проверками на атаку... ну вот например http://forums.alliedmods.net/showthread.php?t=92185 так и делает... Тут только вопрос - когда ХЛ просчитывает куда полетит пуля - именно во время атаки или для каждого момента времени... Если в момент атаки, то получается просто нереализуемо...
|
|
| |
tatyxa | Дата: Суббота, 19.09.2009, 20:49:26 | Сообщение # 10 |
Рядовой
Группа: Пользователи
Сообщений: 7
Статус: Не в сети
| Quote (LtRAT) Если в момент атаки, то получается просто нереализуемо... Если читы умеют это делать и есть плагины для создания нового оружия, то это не кажется нереализуемым ))) Как мне кажется, надо научиться проигрывать event для оружия(симуляция выстрела) и потом перехватывать(Ham_TraceAttack или что еще). К моему сожалению, знания мои в скриптинге очень поверхностны, и разобраться самому.... врятли получится. Собсно вопрос.. как сделать фэйк выстрел от игрока, чтобы поймать ивент атаки? А может кто знает как просчитывается Spread(разброс) для каждого оружия?? Пытаюсь извлечь что-то полезное из плагина новых оружий http://www.nsmod.org/forums/index.php?showtopic=4679
Сообщение отредактировал tatyxa - Суббота, 19.09.2009, 20:59:13 |
|
| |
defaultNick8433 | Дата: Суббота, 19.09.2009, 20:53:51 | Сообщение # 11 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| Когда игрок стреляет можно использовать эту функцию от инклуда engine Code if(entity_get_int(id,EV_INT_button)&IN_ATTACK){ //код }
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
Сообщение отредактировал defaultNick8433 - Суббота, 19.09.2009, 20:54:20 |
|
| |
PomanoB | Дата: Суббота, 19.09.2009, 21:01:07 | Сообщение # 12 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Quote (LtRAT) Это если ХЛ или другие плагины всегда пересчитывают v_forawrd итп перед тем как их использовать, а быть уверенным в этом нельзя Интересно, как они могут использовать не пересчитывая)) Разве что для получения случайных чисел) Quote (tatyxa) Если читы умеют это делать и есть плагины для создания нового оружия, то это не кажется нереализуемым ))) Плагины создающие новое оружие ничего не просчитываютQuote (tatyxa) надо научиться проигрывать event для оружия(симуляция выстрела) Можно попробовать EngFunc_PlaybackEvent, но не знаю что из этого получится Quote (defaultNick8433) Когда игрок стреляет можно использовать эту функцию от инклуда engine Это вовсе не значит что игрок стреляет Это всего лишь показывает что у него нажата клавиша атаки
http://romanov4400.mybrute.com
|
|
| |
defaultNick8433 | Дата: Суббота, 19.09.2009, 21:03:28 | Сообщение # 13 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| Quote (PomanoB) Это вовсе не значит что игрок стреляет Это всего лишь показывает что у него нажата клавиша атаки Я знаю,просто пример
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
|
|
| |
PomanoB | Дата: Суббота, 19.09.2009, 21:07:43 | Сообщение # 14 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Quote (defaultNick8433) просто пример Вообще не в тему твой пример
http://romanov4400.mybrute.com
|
|
| |
tatyxa | Дата: Суббота, 19.09.2009, 21:11:23 | Сообщение # 15 |
Рядовой
Группа: Пользователи
Сообщений: 7
Статус: Не в сети
| Quote (PomanoB) Можно попробовать EngFunc_PlaybackEvent, но не знаю что из этого получится EngFunc_PlaybackEvent, (int flags, const edict_t *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, ...args...) Эм)) Жду помощи))) Какие аргументы подставлять? Например eventindex? Где его вобще взять... Справки не нашел( Edit: Вот что только получилось: Code evnt = precache_event(1,"events/deagle.sc") playback_event(0, id, evnt,.... Прикольный результат:вне зависимости от того что "в руках" проигрывается звук выстрела "дигла"; на стене, каждый раз ровно по центру прицела, рисуется деколь якобы от попадания. Никакого разброса.... и патроны не отнимаются. Вобщем полнейший фэйк и толку 0. Как же произвести нормальный фэйк выстрел???????..
Сообщение отредактировал tatyxa - Воскресенье, 20.09.2009, 00:08:43 |
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |