AMX MOD X
Четверг, 26.12.2024, 12:55:26



Приветствую Вас Гость | RSS
[ Главная ] [ Куда полетит пуля? - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: slogic, AlMod  
Куда полетит пуля?
tatyxaДата: Суббота, 19.09.2009, 17:38:00 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Не в сети
Здравствуйте Уважаемые.

Смотрел видео, где у админа, когда он наблюдает за игроком, отображается точка(плавно и красиво кружится вокруг прицела), показывающаю куда полетит пуля.
Как это реализовать? (Это вроде было для CSS, меня интересует CS1.6).

С помощью Ham_TraceAttack? Если да, то как правильно испльзовать эту функцию(какие параметры и откуда брать)?

Знаю что можно отлавливать события, и получать вектор пули после выстрела, но вот как это сделать не стреляя - не знаю. :(

 
PomanoBДата: Суббота, 19.09.2009, 17:56:52 | Сообщение # 2
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
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
Репутация: 0
Статус: Не в сети
че за бред ? :)

СТРАНО Я ЗАШОЛ МНЕ КАК МЕНУТУ ПРОИГРАЛ И МНЕ БАН АДМИН КИНУЛ ЗА ШТО ХЗ
ЧЁ ЗА ФИГНЯ ЗАБАНИЛИ НЕ ЗАШТО Я ЗАХАДИЛ И ТАМ БАН ВЫСВЕТЕЛСЯ Я НЕПОНЯЛ 4Е ЗА ФИГНЯ Я РАСТЕРЯЛСЯ
 
LtRATДата: Суббота, 19.09.2009, 18:38:09 | Сообщение # 4
Сержант
Группа: Пользователи
Сообщений: 33
Репутация: 1
Статус: Не в сети
Хм а я собственный v_forward считал через "engfunc(EngFunc_AngleVectors, angle, v_forward, v_right, v_up);"
Глобальный, то уж лучше наверное не трогать :)
 
PomanoBДата: Суббота, 19.09.2009, 18:47:32 | Сообщение # 5
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Ничего плохого-то всё равно не будет)
Я использую глобальный потому что увидел именно такое использование в HL SDK)


http://romanov4400.mybrute.com
 
tatyxaДата: Суббота, 19.09.2009, 19:02:14 | Сообщение # 6
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Не в сети
Огого) Быстро ответили) Спасибо!!! Буду разбираться)

PomanoB если не сложно, можно прокомментировать каждую строчку)) знания мои крайне не велики)))

Сообщение отредактировал tatyxa - Суббота, 19.09.2009, 19:04:58
 
PomanoBДата: Суббота, 19.09.2009, 19:23:03 | Сообщение # 7
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
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
Репутация: 0
Статус: Не в сети
PomanoB, Хм)))

Премного благодарен!

... Нарисовал я лазер от origin до angle... но это не то что я хочу))
Он показывает не направление куда полетит пуля, а направление взгляда игрока(прицел+отдача).
А мне нужно чтобы показывало куда полетит именно ПУЛЯ.(т.е. нужно как-то узнать отклонение(разброс) пули для текущего оружия)

Сообщение отредактировал tatyxa - Суббота, 19.09.2009, 20:05:34
 
LtRATДата: Суббота, 19.09.2009, 20:35:09 | Сообщение # 9
Сержант
Группа: Пользователи
Сообщений: 33
Репутация: 1
Статус: Не в сети
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
Репутация: 0
Статус: Не в сети
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
Репутация: 19
Статус: Не в сети
Когда игрок стреляет можно использовать эту функцию от инклуда 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
Репутация: 70
Статус: Не в сети
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
Репутация: 19
Статус: Не в сети
Quote (PomanoB)
Это вовсе не значит что игрок стреляет Это всего лишь показывает что у него нажата клавиша атаки

Я знаю,просто пример :)


Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
 
PomanoBДата: Суббота, 19.09.2009, 21:07:43 | Сообщение # 14
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Quote (defaultNick8433)
просто пример

Вообще не в тему твой пример <_<


http://romanov4400.mybrute.com
 
tatyxaДата: Суббота, 19.09.2009, 21:11:23 | Сообщение # 15
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Не в сети
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
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

AMX Mod X Russian Community © 2006-2024