HLFX.Ru Forum Страницы (200): « Первая ... « 191 192 193 194 [195] 196 197 198 199 » ... Последняя »
Показать все 2989 сообщений этой темы на одной странице

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)


Отправлено Aynekko 05-08-2021 в 07:05:

Цитата:
Ku2zoff писал:
При деактивации камеры делается вызов SET_VIEW на игрока

Это в Stop. А я про FollowTarget. Попробуй сам. Поставь двум камерам время -1, чтобы не выключались автоматом. Потом активируй камеру 1. Не выключая ее, активируй камеру 2. Потом выключи камеру 2. А первую-то не выключили. Я выводил туда алерт, FollowTarget как работал, так и работает. И если ты попытаешься активировать камеру 1, то ничего не произойдет, потому что сначала будет деактивация. Нажмешь еще раз, тогда уже активируешь.

__________________
Мой мод на Xash


Отправлено Aynekko 14-08-2021 в 13:45:

На ксаше. В общем у меня стоит punchangle из сорса, который вычисляется в playermove.
Ситуация - создаю дедикатед сервер. Потом подключаюсь с двух компов - на одном более 200 фпс, на другом 30.
Когда заходит один клиент, любой - панч ведет себя нормально.
Если у обоих клиентов одинаковый фпс - то у обоих все нормально.
Но, если у одного клиента 30 фпс, а у другого 200, то у первого панч ооочень медленный, а у другого наоборот ускоренный. Фпс у обоих клиентов должен быть полностью одинаков, чтобы все нормально работало. Как это побороть?
Код панча:

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 14-08-2021 в 13:50:

у меня DJVU или ты уже задавал этот вопрос?

__________________
My Projects: download page

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


Отправлено Aynekko 14-08-2021 в 14:18:

Цитата:
Дядя Миша писал:
у меня DJVU или ты уже задавал этот вопрос?

Был другой вопрос про "рваность" движения панча, это решилось увеличением дельты.

Добавлено 14-08-2021 в 17:18:

Цитата:
Aynekko писал:
если у одного клиента 30 фпс, а у другого 200, то у первого панч ооочень медленный, а у другого наоборот ускоренный. Фпс у обоих клиентов должен быть полностью одинаков, чтобы все нормально работало. Как это побороть?

Отбой - проблема решилась.
Кому надо, вот решение:
В игрока кидаем
C++ Source Code:
1
void CBasePlayer::PunchAngle(void)
2
{
3
  float PUNCH_DAMPING = 9.0f;	// bigger number makes the response more damped, smaller is less damped
4
  // currently the system will overshoot, with larger damping values it won't
5
  float PUNCH_SPRING_CONSTANT = 65.0f;	// bigger number increases the speed at which the view corrects
6
 
7
  float damping;
8
  float springForceMagnitude;
9
 
10
  if (pev->punchangle.Length() > 0.001 || pev->vuser3.Length() > 0.001)
11
  {
12
    pev->punchangle += pev->vuser3 * gpGlobals->frametime;
13
    damping = 1.0f - (PUNCH_DAMPING * gpGlobals->frametime);
14
 
15
    if (damping < 0.0f)
16
      damping = 0.0f;
17
 
18
    pev->vuser3 *= damping;
19
 
20
    // torsional spring
21
    // UNDONE: Per-axis spring constant?
22
    springForceMagnitude = PUNCH_SPRING_CONSTANT * gpGlobals->frametime;
23
    springForceMagnitude = bound(0, springForceMagnitude, 2);
24
 
25
    pev->vuser3 += pev->punchangle * -springForceMagnitude;
26
 
27
    // don't wrap around
28
    pev->punchangle[0] = bound(-89, pev->punchangle[0], 89);
29
    pev->punchangle[1] = bound(-179, pev->punchangle[1], 179);
30
    pev->punchangle[2] = bound(-89, pev->punchangle[2], 89);
31
  }
32
}

В postthink кидаем
C++ Source Code:
PunchAngle();


Из playermove вообще выкинуть этот панч.

Это слишком просто и гениально, поэтому буду искать, что сломалось

__________________
Мой мод на Xash


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

Цитата:
Aynekko писал:
Это слишком просто и гениально, поэтому буду искать, что сломалось

Мультик.

__________________
My Projects: download page

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


Отправлено Aynekko 14-08-2021 в 14:37:

Цитата:
Дядя Миша писал:
Мультик.

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 14-08-2021 в 15:21:

Этож по локалке. А так будут лаги, скорее всего.

__________________
My Projects: download page

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


Отправлено Aynekko 16-08-2021 в 19:33:

Не могу разобраться с параметром pparams->spectator на клиенте. Откуда он берется. Вот к примеру pmove->spectator говорит, что он активен, когда я переключаюсь в спектатора. В это же время в CalcRefDef pparams->spectator не активируется. Из-за этого я не могу применить некоторые настройки.

И другой вопрос. Как мне в этом refdef достать параметры клиента, вроде iuser1 и всякое такое прочее? Не могу никак найти.

__________________
Мой мод на Xash


Отправлено Ku2zoff 16-08-2021 в 19:58:

Цитата:
Aynekko писал:
Как мне в этом refdef достать параметры клиента, вроде iuser1

Для локального игрока - g_iUser. Для нелокального надо искать по индексу:
C++ Source Code:
gEngfuncs.GetEntityByIndex(player_index)->curstate.iuser1


Добавлено 17-08-2021 в 02:58:

Вообще, поле spectator имеется в секции Player_Encode в дельте. Так что по идее, для игроков этот параметр должен передаваться. Его нет в энтварсах, он есть в entity_state_t. Тут короче, надо задавать его вручную. А для локального клиента, как я уже писал - g_iUser1. Но я не уверен, что spectator вообще надо трогать. Скорее всего, это параметр для HLTV, то есть режима gEngfuncs.IsSpectateOnly.


Отправлено Aynekko 16-08-2021 в 20:01:

Цитата:
Ku2zoff писал:
Для локального игрока - g_iUser.

Спасибо, так и думал. Просто дело в том, что в ксашмоде их нет и вот я пытаюсь их как-то прикрутить (пока безуспешно). Извиняюсь, что сразу не упомянул про ксашмод. Надеялся, что есть более короткий путь.
Режим спектатора вот приделал на сервере, а с клиентом пока проблемы

Добавлено 16-08-2021 в 23:01:

Цитата:
Ku2zoff писал:
поле spectator имеется в секции Player_Encode в дельте

Да, в дельте он есть, сейчас проверил. Странно тогда.

__________________
Мой мод на Xash


Отправлено илья2 17-08-2021 в 15:55:

я кстати тоже спектатором интересуюсь пытаюсь добавить фишку как в dmc но все безуспешно. Как же все таки добавить эту фишку где её найти ? работает он как то так когда мы спавнимся то игрока самого нет он с пектаторе но когда мы нажимаем ок в меню то игрок спавниться.

__________________
Илья


Отправлено Ku2zoff 17-08-2021 в 17:12:

Цитата:
илья2 писал:
игрока самого нет он с пектаторе

Не в спектаторе. Игрок невидим, несолиден, невосприимчив к урону, не может двигаться. Только вертеть головой.
Цитата:
илья2 писал:
пытаюсь добавить фишку как в dmc но все безуспешно

Чего там добавлять? Смотришь код MOTD из dmc, какая консольная команда отправляется при нажатии на кнопку OK. По этой команде всё находишь и копипастишь. Делов не больше, чем на пять минут.


Отправлено илья2 17-08-2021 в 17:46:

[QUOTE]Ku2zoff писал:
[B]Не в спектаторе. Игрок невидим, несолиден, невосприимчив к урону, не может двигаться. Только вертеть головой.

этот эффект я обнаружил в player.cpp в спавне игрока в этом ты прав.

неплохо бы спавн функцию игрока оттуда скопипастить в hl и будет как в dmc.

__________________
Илья


Отправлено Aynekko 17-08-2021 в 18:26:

Цитата:
Aynekko писал:
Просто дело в том, что в ксашмоде их нет

Я тут со всем разобрался - в ксашмоде спектатор-режима вообще нет, там какие-то зачатки - StartObserver и… все. Я даже сомневаюсь что он работал. Наверное хлсдк очень древний брался за основу. g_iUser1 никакого тоже не было и в помине. В общем долго и упорно сверялся с актуальным хлсдк и более-менее собрал спектатора - правда без вида овервью карты. Эх, ксашмод, допиливать и допиливать еще. Но, быть может, соберу-таки мод, в который можно будет адекватно поиграть в мультик, а не только пройти сюжетку - благо перешел на FWGS недавно

__________________
Мой мод на Xash


Отправлено илья2 17-08-2021 в 19:22:

ладно лучше не буду делать. это для тебя так легко для меня это целая эпопея.

__________________
Илья


Временная зона GMT. Текущее время 20:40. Страницы (200): « Первая ... « 191 192 193 194 [195] 196 197 198 199 » ... Последняя »
Показать все 2989 сообщений этой темы на одной странице

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