HLFX.Ru Forum Страницы (260): « Первая ... « 182 183 184 185 [186] 187 188 189 190 » ... Последняя »
Показать все 3886 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)


Отправлено SNMetamorph 14-03-2021 в 15:14:

Цитата:
Crystallize писал:
Какие ребята, кто их видел? ©Ставь птицу!
На другом форуме каком-то?

Ребята из FWGS, альбатрос в частности и кто-то еще. Ну я тоже пулл реквесты с фиксами багов отправлял несколько раз.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Aynekko 25-03-2021 в 09:39:

Вопрос по punchangle. Взял код из паранои 2, он же сорсовский, поставил себе в ксаш. Все работает, но...он как будто лагает что ли? Когда панч большой, то это не так заметно. Но если выставить маленький, то когда панч при возврате в центр движется совсем медленно, заметны некие рывки в движении. Не знаю, как еще лучше объяснить. В хл2 такого не наблюдается.
Вот код который у меня сейчас:

C++ Source Code:
1
#define PUNCH_DAMPING		9.0f
2
#define PUNCH_SPRING_CONSTANT		65.0f
3
 
4
void PM_DropPunchAngle ( Vector &punchangle )
5
{
6
  float damping;
7
  float springForceMagnitude;
8
 
9
  if ( punchangle.Length() > 0.001 || pmove->vuser3.Length() > 0.001 )
10
  {
11
    punchangle += pmove->vuser3 * pmove->frametime;
12
    damping = 1.0f - (PUNCH_DAMPING * pmove->frametime);
13
 
14
    if ( damping < 0.0f )
15
    {
16
      damping = 0.0f;
17
    }
18
    pmove->vuser3 *= damping;
19
 
20
    // torsional spring
21
    // UNDONE: Per-axis spring constant?
22
    springForceMagnitude = PUNCH_SPRING_CONSTANT * pmove->frametime;
23
    springForceMagnitude = bound( 0, springForceMagnitude, 2 );
24
 
25
    pmove->vuser3 += punchangle * -springForceMagnitude;
26
 
27
    // don't wrap around
28
    punchangle[0] = bound( -89, punchangle[0], 89 );
29
    punchangle[1] = bound( -179, punchangle[1], 179 );
30
    punchangle[2] = bound( -89, punchangle[2], 89 );
31
  }
32
}


Вот код из соурс сдк 2013:
C++ Source Code:
1
void CGameMovement::DecayPunchAngle( void )
2
{
3
  if ( player->m_Local.m_vecPunchAngle->LengthSqr() > 0.001 || player->m_Local.m_vecPunchAngleVel->LengthSqr() > 0.001 )
4
  {
5
    player->m_Local.m_vecPunchAngle += player->m_Local.m_vecPunchAngleVel * gpGlobals->frametime;
6
    float damping = 1 - (PUNCH_DAMPING * gpGlobals->frametime);
7
 
8
    if ( damping < 0 )
9
    {
10
      damping = 0;
11
    }
12
    player->m_Local.m_vecPunchAngleVel *= damping;
13
 
14
    // torsional spring
15
    // UNDONE: Per-axis spring constant?
16
    float springForceMagnitude = PUNCH_SPRING_CONSTANT * gpGlobals->frametime;
17
    springForceMagnitude = clamp(springForceMagnitude, 0.f, 2.f );
18
    player->m_Local.m_vecPunchAngleVel -= player->m_Local.m_vecPunchAngle * springForceMagnitude;
19
 
20
    // don't wrap around
21
    player->m_Local.m_vecPunchAngle.Init(
22
    clamp(player->m_Local.m_vecPunchAngle->x, -89.f, 89.f ),
23
    clamp(player->m_Local.m_vecPunchAngle->y, -179.f, 179.f ),
24
    clamp(player->m_Local.m_vecPunchAngle->z, -89.f, 89.f ) );
25
  }
26
  else
27
  {
28
    player->m_Local.m_vecPunchAngle.Init( 0, 0, 0 );
29
    player->m_Local.m_vecPunchAngleVel.Init( 0, 0, 0 );
30
  }
31
}


Добавил ломику схожие значения, но все равно панч какой-то заедающий слегка. Вот соурс сдк у ломика:
C++ Source Code:
1
QAngle punchAng;
2
 
3
punchAng.x = random->RandomFloat( 1.0f, 2.0f );
4
punchAng.y = random->RandomFloat( -2.0f, -1.0f );
5
punchAng.z = 0.0f;
6
 
7
pPlayer->ViewPunch( punchAng );

У меня:
C++ Source Code:
m_pPlayer->pev->punchangle.x = RANDOM_FLOAT( 1.0f, 2.0f );
m_pPlayer->pev->punchangle.y = RANDOM_FLOAT( -2.0f, -1.0f );


Может что-то упустил где-то...

__________________
Мой мод на Xash


Отправлено Дядя Миша 25-03-2021 в 09:43:

Этот панч еще БУзер делал для первой паранои, я к нему никаким боком.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 25-03-2021 в 09:45:

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 25-03-2021 в 10:30:

Время по разному идёт, в этом всё дело.
FPS отпущен?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 25-03-2021 в 10:46:

Вот я тоже подумал, будто бы эффект обновляется не так быстро или еще что-то. Фпс что 60 что 200 разницы нет никакой внешне

__________________
Мой мод на Xash


Отправлено Sigurth 25-03-2021 в 14:51:

Aynekko Я уже копипастил себе этот пунч. Лагает он из-за того, что нужно делать его на клиенте. Серверный пунч передается на клиент в четырьмя знаками после запятой у флоатов. Поэтому на маленьких значениях и лагает.

Добавлено 25-03-2021 в 21:49:

У себя я сделал так, что серверный пунч больше не влияет на наклон камеры, но все еще влияет на направление стрельбы. И все pev->pubchangle += ...; менял на вызов функции ,которая отправляет мессагу на клиент, который в свою очередь делает клиентский пунч чисто для визуального эффекта. То есть этот код должен быть и на клиенте и на сервере.

[i]Добавлено 25-03-2021 в 21:51:


Я делал это для красивой отдачи у оружия. Если пунч не должен влиять на направление стрельбы, то можно обойтись лишь клиентским эффектом.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Aynekko 25-03-2021 в 15:24:

Цитата:
Sigurth писал:
Лагает он из-за того, что нужно делать его на клиенте.

Блин вот я так и думал. А в случае ксаша, может как-то можно добавить больше знаков?

__________________
Мой мод на Xash


Отправлено Ku2zoff 25-03-2021 в 16:37:

Цитата:
Sigurth писал:
Лагает он из-за того, что нужно делать его на клиенте.

Я все "косметические" пунчи и скриншейки (которые не влияют на меткость стрельбы) стараюсь делать на клиенте. Случай с монтировкой именно такой, толчки экрана не влияют ни на что, а лишь трясут экран. pm_shared конечно позволяет в какой-то степени синхронизировать сервер с клиентом, но в данном случае такое не нужно, т.к. трясти будет лишь экран локального игрока.
Что бы я действительно попытался реализовать - это "землетрясения" из ку2. Там не просто трясётся экран, как от скриншейка, там ещё игрока кидает из стороны в сторону. Будет весьма полезно в паре моментов, что я задумал.

Добавлено 25-03-2021 в 23:36:

Цитата:
Aynekko писал:
может как-то можно добавить больше знаков?

В твоём случае это локальный эффект, его не нужно шарить другим игрокам. Сделай его в эвенте монтировки, чисто на клиенте, не затрагивая сервер.

Добавлено 25-03-2021 в 23:37:

Цитата:
Sigurth писал:
Если пунч не должен влиять на направление стрельбы, то можно обойтись лишь клиентским эффектом.

Вот я об этом чуть выше сказал. Если это косметика, то нужно делать лишь на клиенте.


Отправлено Aynekko 26-03-2021 в 11:52:

Проблема с лагающим punchangle решилась банально с помощью delta.lst.
Вместо 8.0 поставил 32.0 и все отлично стало.

__________________
Мой мод на Xash


Отправлено Sigurth 26-03-2021 в 14:25:

Цитата:
Aynekko писал:
Проблема с лагающим punchangle решилась банально с помощью delta.lst.
Вместо 8.0 поставил 32.0 и все отлично стало.

Я сейчас на голдсорсе попробовал, все работает. А я городил, как обычно, непонятно что)

__________________
Никогда не поздно сделать мод под хл1


Отправлено Shapirlic 30-03-2021 в 18:49:

gEngfuncs.COM_LoadFile( char *path, int usehunk, int *pLength );

Кто нить знает за что отвечает usehunk?


Отправлено Дядя Миша 30-03-2021 в 19:19:

В какую область памяти положить загруженный файл. Чтобы не было неожиданностей, следует использовать только число 5.

C++ Source Code:
1
if (usehunk == 1)
2
  buf = Hunk_AllocName (len+1, base);
3
else if (usehunk == 2)
4
  buf = Hunk_TempAlloc (len+1);
5
else if (usehunk == 0)
6
  buf = Z_Malloc (len+1);
7
else if (usehunk == 3)
8
  buf = Cache_Alloc (loadcache, len+1, base);
9
else if (usehunk == 4)
10
{
11
  if (len+1 > loadsize)
12
    buf = Hunk_TempAlloc (len+1);
13
  else
14
    buf = loadbuf;
15
}

В кваке пятого режима нет, в халфе там malloc
Это говно было нужно под DOS, т.к. там не было системного менеджера памяти.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Shapirlic 31-03-2021 в 11:24:

Цитата:
Дядя Миша писал:
В кваке пятого режима нет, в халфе там malloc
Это говно было нужно под DOS, т.к. там не было системного менеджера памяти.

Понял, спасибо за ответ.
Но есть ещё вопросы вдогонку

От чего может COM_LoadFile тупо падать при загрузке файлов, которые обычно у него не вызывают проблем? Гружу tga/dds текстуры, и на некоторых уровнях при загрузке падает. При этом если ставить usehunk = 2 то работает, причём и тот конкретный уровень с багом, и пол компании ХЛ я прошёл с usehunk = 2. Исходя из твоих слов лучше убрать usehunk 2 и поставить 5, но интересно, какого хера с пятёркой вылетает.


Отправлено Дядя Миша 31-03-2021 в 11:29:

Цитата:
Shapirlic писал:
и на некоторых уровнях при загрузке падает.

а где конкретно?

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 23:37. Страницы (260): « Первая ... « 182 183 184 185 [186] 187 188 189 190 » ... Последняя »
Показать все 3886 сообщений этой темы на одной странице

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