HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > динамичный прицел
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
DefilerUnit
Житель форума
Девойс

Дата регистрации: May 2011
Проживает: (void)
Сообщений: 106
Возраст: 105

Рейтинг



динамичный прицел

кто знает как можно сделать динамичный прицел чтоб он реагирвал на скорость игрока

Сообщить модератору | IP: Записан
Сообщение: 83323

Старое сообщение 22-09-2011 09:44
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33059
Нанёс повреждений: 392 ед.

Рейтинг



Разве в параное не такой прицел?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 83324

Старое сообщение 22-09-2011 09:49
-
DefilerUnit
Житель форума
Девойс

Дата регистрации: May 2011
Проживает: (void)
Сообщений: 106
Возраст: 105

Рейтинг



ну дак такой тык надо чтоб кто то разжевал как это сделать

Сообщить модератору | IP: Записан
Сообщение: 83326

Старое сообщение 22-09-2011 11:04
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33059
Нанёс повреждений: 392 ед.

Рейтинг



TrashBot так ты хотябы начни разбираться. А то всё разжевал, да в рот положил.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 83329

Старое сообщение 22-09-2011 12:39
-
DefilerUnit
Житель форума
Девойс

Дата регистрации: May 2011
Проживает: (void)
Сообщений: 106
Возраст: 105

Рейтинг



да как бы всё ок только пока нету возможности поиском пробижаться по всей библиотеке в поиске кода прицела. ну я думаю он на клиенте а раз на клиенте, то тут небольшой ньюанс.
Дядя Миша ты ведь вроде уже эксперементировал с прицелом в ксаше, вот скажи с ним получится такое?: еси скорость такая игрока юзается такой спрайт еси другая юзается другой спрайт

Сообщить модератору | IP: Записан
Сообщение: 83344

Старое сообщение 22-09-2011 15:10
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33059
Нанёс повреждений: 392 ед.

Рейтинг



TrashBot запросто.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 83345

Старое сообщение 22-09-2011 15:23
-
DefilerUnit
Житель форума
Девойс

Дата регистрации: May 2011
Проживает: (void)
Сообщений: 106
Возраст: 105

Рейтинг



итак нашел где код прицела он оказывается в ammo.cpp (афигеть куда его засунули) и нашел код где он меняется:
if ( gHUD.m_iFOV >= 90 )
{ // normal crosshairs
if (fOnTarget && m_pWeapon->hAutoaim)
SetCrosshair(m_pWeapon->hAutoaim, m_pWeapon->rcAutoaim, 255, 255, 255);
else
SetCrosshair(m_pWeapon->hCrosshair, m_pWeapon->rcCrosshair, 255, 255, 255);
}
else
{ // zoomed crosshairs
if (fOnTarget && m_pWeapon->hZoomedAutoaim)
SetCrosshair(m_pWeapon->hZoomedAutoaim, m_pWeapon->rcZoomedAutoaim, 255, 255, 255);
else
SetCrosshair(m_pWeapon->hZoomedCrosshair, m_pWeapon->rcZoomedCrosshair, 255, 255, 255);

}
значит мне нужно прописать еще один Crosshair и топать на сервер а на сервере прописывать что типо m_fInZoom = 1; который будет юзать мой прицел при разной speed. Или можно как то на клиенте if (speed ) написать?

Сообщить модератору | IP: Записан
Сообщение: 83348

Старое сообщение 22-09-2011 17:48
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33059
Нанёс повреждений: 392 ед.

Рейтинг



да не, на сервер топать необязательно.
Достаточно расшарить через глобальную переменную clientdata->velocity
например из функции HUD_TxferLocalOverrides.
Ну и там сделать sqrt( DotProduct( velocity, velocity )) и получить текущую скорость игрока.
И скорость эта будет обычно равна трём значениям: 320 - когда бежишь, 160 когда идешь и 0 когда стоишь. Ну и вот опираясь на эти значения и надо делать условия.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 83350

Старое сообщение 22-09-2011 17:55
-
DefilerUnit
Житель форума
Девойс

Дата регистрации: May 2011
Проживает: (void)
Сообщений: 106
Возраст: 105

Рейтинг



Дядя Миша напиши тутор плиз

Сообщить модератору | IP: Записан
Сообщение: 83351

Старое сообщение 22-09-2011 21:08
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6867
Возраст: 34

Рейтинг



TrashBot тебе примерно объяснили, как найти скорость игрока на клиенте. В HUD_Redraw рисуй четыре полоски через FillRGBA и меняй их координаты в зависимости от скорости. Вот тут тутор по динамическому разбросу пуль. Правда он для HL2, но адаптировать под ХЛ думаю можно, функция GetDynamicSpread это то, что нужно. Если там есть специфичные для сорсСДК функции, то их можно заменить на родные из ХЛ.

Сообщить модератору | IP: Записан
Сообщение: 83353

Старое сообщение 23-09-2011 01:14
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33059
Нанёс повреждений: 392 ед.

Рейтинг



TrashBot вон, пусть лучше Ku2zoff напишет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 83354

Старое сообщение 23-09-2011 05:50
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6867
Возраст: 34

Рейтинг



Дядя Миша мне и самомму такой прицел нужен, только не сейчас, а как-нибудь попозже. Может сегодня попробую написать, а может потом...

Добавлено 23-09-2011 в 15:40:

Я думаю, лучше данные о размере прицела посылать с сервера, чтобы учитывать не только скорость игрока и то, сидит он или стоит, но ещё и вектор разброса оружия, который будем рассчитывать на сервере в зависимости от количества выстрелов.

Добавлено 23-09-2011 в 15:46:

А передавать это число можно через fuser4 или iuser4, они вроде как ни под что не заюзаны.

Сообщить модератору | IP: Записан
Сообщение: 83355

Старое сообщение 23-09-2011 08:46
- За что?
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 31

Рейтинг



C++ Source Code:
1
int iHeight;
2
int iWidth;
3
float cross_size = 20.0f;
4
 
5
cross_size += gHUD.m_iCSize; // gHUD.m_iCSize - переменная, значение которой я увеличиваю при выстреле. у меня в эвенте.
6
 
7
if (gHUD.m_iCSize > 0.0f)
8
  gHUD.m_iCSize -= (gHUD.m_flTimeDelta * CVAR_GET_FLOAT( "hud_crosshair_speed" )); // возвращаем прицелу изначальный размер. hud_crosshair_speed сами подбирайте, какая скорость больше нравится.
9
 
10
if (gHUD.m_iCSize > 32.0f)
11
  gHUD.m_iCSize = 32.0f; // ограничиваем переменную
12
 
13
if (gHUD.m_iCSize < 0.0f)
14
  gHUD.m_iCSize = 0.0f; // ограничиваем переменную
15
 
16
if( CVAR_GET_FLOAT( "hud_crosshair" ) ) // рисуем, если hud_crosshair 1
17
{
18
  // левая полоска
19
  iHeight = 1;
20
  iWidth = -8;
21
  x = (ScreenWidth/2)-cross_size+1;
22
  y = (ScreenHeight/2);
23
  FillRGBA(x, y, iWidth, iHeight, r, g, b, 255);
24
 
25
  // правая полоска
26
  iHeight = 1;
27
  iWidth = 8;
28
  x = (ScreenWidth/2)+cross_size;
29
  y = (ScreenHeight/2);
30
  FillRGBA(x, y, iWidth, iHeight, r, g, b, 255);
31
 
32
  // верхняя полоска
33
  iHeight = -8;
34
  iWidth = 1;
35
  x = (ScreenWidth/2);
36
  y = (ScreenHeight/2)-cross_size+1;
37
  FillRGBA(x, y, iWidth, iHeight, r, g, b, 255);
38
 
39
  // нижняя полоска
40
  iHeight = 8;
41
  iWidth = 1;
42
  x = (ScreenWidth/2);
43
  y = (ScreenHeight/2)+cross_size;
44
  FillRGBA(x, y, iWidth, iHeight, r, g, b, 255);
45
}


Основано на коде из паранойи.
Банальный клиентский прицел, но без изменения размера при передвижении.
Прибавляю единицу в подобном (cross_size+1) месте, для вида, можете её убрать и посмотреть что будет. На точность прицела почти не влияет.

И кстати! Никто не отменял вариант "посмотреть в арранжмоде". Там он больше на ксовский похож. Размер меняется при движении, прыжке, присядке, стрельбе.

__________________
Base Defense on Steam, ModDB

Отредактировано PLut 23-09-2011 в 11:23

Сообщить модератору | IP: Записан
Сообщение: 83362

Старое сообщение 23-09-2011 11:14
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6867
Возраст: 34

Рейтинг



PLut чего ж так дофига кода-то? У меня код отрисовки всего 14 строчек занял. Ну плюс ещё потом добавлю строчки четыре для изменения размера.

Добавлено 23-09-2011 в 19:51:

C++ Source Code:
1
int iDist = XRES(4);
2
int iLength = XRES(10);
3
int iDepth = XRES(1);
4
 
5
int xPos = ScreenWidth/2;
6
int yPos = ScreenHeight/2;
7
 
8
int r = 200;
9
int g = 200;
10
int b = 0;
11
int a = 180;
12
 
13
FillRGBA(xPos - iDepth/2, yPos - iDepth/2, iDepth, iDepth, r, g, b, a); // center
14
 
15
FillRGBA(xPos - iDepth/2, yPos - iDist - iLength, iDepth, iLength, r, g, b, a); // top
16
FillRGBA(xPos - iDepth/2, yPos + iDist, iDepth, iLength, r, g, b, a); // bottom
17
 
18
FillRGBA(xPos - iDist - iLength, yPos - iDepth/2, iLength, iDepth, r, g, b, a); // left
19
FillRGBA(xPos + iDist, yPos - iDepth/2, iLength, iDepth, r, g, b, a); // right

А вот мой вариант. На некоторых разрешениях выглядит неровно. Но на 1024 и 1280 нормально. Посередине есть точка Как в ДОДе.

Добавлено 23-09-2011 в 19:56:

Цитата:
PLut писал:
"посмотреть в арранжмоде".

Там прицел кварами меняется При стрельбе с сервера идёт команда, изменяющая квар. В старых исходниках арранжевого мента точно так. В новых - не знаю.

Сообщить модератору | IP: Записан
Сообщение: 83364

Старое сообщение 23-09-2011 12:56
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33059
Нанёс повреждений: 392 ед.

Рейтинг



Та вы чего, меряетесь, кто код короче напишет?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 83365

Старое сообщение 23-09-2011 13:05
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 17:22. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > динамичный прицел
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024