HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- динамичный прицел (https://hlfx.ru/forum/showthread.php?threadid=3010)
Отправлено DefilerUnit 22-09-2011 в 09:44:
динамичный прицел
кто знает как можно сделать динамичный прицел чтоб он реагирвал на скорость игрока
Отправлено Дядя Миша 22-09-2011 в 09:49:
Разве в параное не такой прицел?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено DefilerUnit 22-09-2011 в 11:04:
ну дак такой тык надо чтоб кто то разжевал как это сделать
Отправлено Дядя Миша 22-09-2011 в 12:39:
TrashBot так ты хотябы начни разбираться. А то всё разжевал, да в рот положил.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено DefilerUnit 22-09-2011 в 15:10:
да как бы всё ок только пока нету возможности поиском пробижаться по всей библиотеке в поиске кода прицела. ну я думаю он на клиенте а раз на клиенте, то тут небольшой ньюанс.
Дядя Миша ты ведь вроде уже эксперементировал с прицелом в ксаше, вот скажи с ним получится такое?: еси скорость такая игрока юзается такой спрайт еси другая юзается другой спрайт
Отправлено Дядя Миша 22-09-2011 в 15:23:
TrashBot запросто.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено DefilerUnit 22-09-2011 в 17:48:
итак нашел где код прицела он оказывается в 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 ) написать?
Отправлено Дядя Миша 22-09-2011 в 17:55:
да не, на сервер топать необязательно.
Достаточно расшарить через глобальную переменную 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'
Отправлено DefilerUnit 22-09-2011 в 21:08:
Дядя Миша напиши тутор плиз
Отправлено Ku2zoff 23-09-2011 в 01:14:
TrashBot тебе примерно объяснили, как найти скорость игрока на клиенте. В HUD_Redraw рисуй четыре полоски через FillRGBA и меняй их координаты в зависимости от скорости. Вот тут тутор по динамическому разбросу пуль. Правда он для HL2, но адаптировать под ХЛ думаю можно, функция GetDynamicSpread это то, что нужно. Если там есть специфичные для сорсСДК функции, то их можно заменить на родные из ХЛ.
Отправлено Дядя Миша 23-09-2011 в 05:50:
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'
Отправлено Ku2zoff 23-09-2011 в 08:46:
Дядя Миша мне и самомму такой прицел нужен, только не сейчас, а как-нибудь попозже. Может сегодня попробую написать, а может потом...
Добавлено 23-09-2011 в 15:40:
Я думаю, лучше данные о размере прицела посылать с сервера, чтобы учитывать не только скорость игрока и то, сидит он или стоит, но ещё и вектор разброса оружия, который будем рассчитывать на сервере в зависимости от количества выстрелов.
Добавлено 23-09-2011 в 15:46:
А передавать это число можно через fuser4 или iuser4, они вроде как ни под что не заюзаны.
Отправлено PLut 23-09-2011 в 11:14:
C++ Source Code:
3 | float cross_size = 20.0f; |
5 | cross_size += gHUD.m_iCSize; // gHUD.m_iCSize - переменная, значение которой я увеличиваю при выстреле. у меня в эвенте. |
7 | if (gHUD.m_iCSize > 0.0f) |
8 | gHUD.m_iCSize -= (gHUD.m_flTimeDelta * CVAR_GET_FLOAT( "hud_crosshair_speed" )); // возвращаем прицелу изначальный размер. hud_crosshair_speed сами подбирайте, какая скорость больше нравится. |
10 | if (gHUD.m_iCSize > 32.0f) |
11 | gHUD.m_iCSize = 32.0f; // ограничиваем переменную |
13 | if (gHUD.m_iCSize < 0.0f) |
14 | gHUD.m_iCSize = 0.0f; // ограничиваем переменную |
16 | if( CVAR_GET_FLOAT( "hud_crosshair" ) ) // рисуем, если hud_crosshair 1 |
21 | x = (ScreenWidth/2)-cross_size+1; |
23 | FillRGBA(x, y, iWidth, iHeight, r, g, b, 255); |
28 | x = (ScreenWidth/2)+cross_size; |
30 | FillRGBA(x, y, iWidth, iHeight, r, g, b, 255); |
36 | y = (ScreenHeight/2)-cross_size+1; |
37 | FillRGBA(x, y, iWidth, iHeight, r, g, b, 255); |
43 | y = (ScreenHeight/2)+cross_size; |
44 | FillRGBA(x, y, iWidth, iHeight, r, g, b, 255); |
Основано на коде из паранойи.
Банальный клиентский прицел, но без изменения размера при передвижении.
Прибавляю единицу в подобном (cross_size+1) месте, для вида, можете её убрать и посмотреть что будет. На точность прицела почти не влияет.
И кстати! Никто не отменял вариант "посмотреть в арранжмоде". Там он больше на ксовский похож. Размер меняется при движении, прыжке, присядке, стрельбе.__________________
Base Defense on Steam, ModDB
Отправлено Ku2zoff 23-09-2011 в 12:56:
PLut чего ж так дофига кода-то?
У меня код отрисовки всего 14 строчек занял. Ну плюс ещё потом добавлю строчки четыре для изменения размера.
Добавлено 23-09-2011 в 19:51:
C++ Source Code:
5 | int xPos = ScreenWidth/2; |
6 | int yPos = ScreenHeight/2; |
13 | FillRGBA(xPos - iDepth/2, yPos - iDepth/2, iDepth, iDepth, r, g, b, a); // center |
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 |
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 писал:
"посмотреть в арранжмоде".
Там прицел кварами меняется
При стрельбе с сервера идёт команда, изменяющая квар. В старых исходниках арранжевого мента точно так. В новых - не знаю.
Отправлено Дядя Миша 23-09-2011 в 13:05:
Та вы чего, меряетесь, кто код короче напишет? 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено PLut 23-09-2011 в 14:40:
Я для себя делал, как мне удобнее 
__________________
Base Defense on Steam, ModDB
Отправлено HAWK0044 23-09-2011 в 20:27:
ну да наверно, пускай кто-нибудь вообще через цикл и массивы это сделает!
Добавлено 24-09-2011 в 00:27:
а я вот тут сделал прицел чисто на клиенте, cross_size= Length( velocity_player)/80 + Length(puncha_player);
А потом:
//!!!HAWK!!! START
int iHeight = 6;
int iWidth = 2;
int iHeight2 = 2;
int iWidth2 = 6;
int pointx = ScreenWidth/2;
int pointy = ScreenHeight/2;
if ( (gHUD.m_iHideHUDDisplay & HIDEHUD_HEALTH) )
return 1;
GetColorFromCvarCrosshair(cr,cg,cb);
// up
pointx = (ScreenWidth / 2) - 1;
pointy = (ScreenHeight /2) -4 -cross_size - 3;
FillRGBA(pointx, pointy, iWidth, iHeight, cr, cg, cb, 255);
//down
pointx = (ScreenWidth / 2) - 1;
pointy = (ScreenHeight /2) - 3 + cross_size + 3;
FillRGBA(pointx, pointy, iWidth, iHeight, cr, cg, cb, 255);
//right
pointx = (ScreenWidth / 2) +cross_size - 2 + 3;
pointy = (ScreenHeight /2) - 2;
FillRGBA(pointx, pointy, iWidth2, iHeight2, cr, cg, cb, 255);
//left
pointx = (ScreenWidth / 2) -cross_size - 6;
pointy = (ScreenHeight /2) - 2;
FillRGBA(pointx, pointy, iWidth2, iHeight2, cr, cg, cb, 255);
//!!!HAWK!!! END
З.Ы Код рисования выдрал из очень старой беты своего мода, не ваш.
Отправлено DefilerUnit 23-09-2011 в 20:45:
Главное все делают, а тутор не кто не пишет...
Напишите тутор чтоб всё внятно было. а вабще мне наверно будет проще новый спрайт заюзать который будет менятся с сервера при скорости
Отправлено PLut 24-09-2011 в 03:14:
TrashBot Тебе 3 тутора написали, разбирайся.
__________________
Base Defense on Steam, ModDB
Отправлено Ku2zoff 24-09-2011 в 04:52:
Цитата:
PLut писал:
Тебе 3 тутора написали
Нету самого главного - кода изменения размера в зависимости от каких-л. условий
Эт надо сервер ковырять и код самого оружия.
Отправлено HAWK0044 24-09-2011 в 06:25:
Ku2zoff
я написал очень внятный код и прицел , ты не поверишь, меняеться в зависимости от панча и от велосити игрока.
TrashBot
учись сам.
Отправлено Ku2zoff 24-09-2011 в 06:39:
Цитата:
HAWK0044 писал:
меняеться в зависимости от панча и от велосити игрока.
А разброс (на сервере) у тебя тоже меняется в зависимости от скорости игрока?
Отправлено PLut 24-09-2011 в 10:44:
Ku2zoff У меня есть всё, кроме изменения размера от велосити. В эвент добавить строчку типа gHUD.m_iCSize += 16; и при выстреле будет прицел увеличиваться, а после плавно уменьшаться в изначальный размер.
__________________
Base Defense on Steam, ModDB
Отправлено Дядя Миша 24-09-2011 в 11:48:
Товарищи, ну оформите свои участики кода в завершенный тутор.
Шутки-шутками, а туторы лишними никогда не были.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено HAWK0044 24-09-2011 в 12:56:
Ku2zoff
да, точно так же.
Добавлено 24-09-2011 в 16:56:
http://www.hlfx.ru/forum/showthread.php?s=&postid=83386