HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Скорость всех игроков в CStudioModelRender. (https://hlfx.ru/forum/showthread.php?threadid=4417)
Отправлено ILZM 27-05-2014 в 18:11:
Скорость всех игроков в CStudioModelRender.
Сам топик отсюда http://cs-mapping.com.ua/forum/show...406#post860406.
Вот передаётся скорость через vuser4. Но на клиенте не понятно у какой энтити она изменяется.
На сервере:
C++ Source Code:
1 | void CBasePlayer::PostThink() |
5 | pev->vuser4 = GetAbsVelocity ( ); |
На клиенте:
C++ Source Code:
1 | void CStudioModelRenderer :: StudioProcessGait ( entity_state_t *pplayer ) |
9 | //player = GET_LOCAL_PLAYER(); |
11 | //entity_state_t player; |
12 | //player = *(IEngineStudio.GetPlayerState( m_nPlayerIndex )) |
13 | //vecPlVel = player->curstate.vuser4; |
15 | vecPlVel = m_pCurrentEntity->curstate.vuser4; |
И ни в одном из этих vuser4 нет этих значений с сервера, даже если GET_LOCAL_PLAYER(). В HL норм же идёт, а тут что не так?
Отправлено ~ X ~ 27-05-2014 в 18:42:
ILZM delta.lst, HUD_ProcessPlayerState, HUD_TxferLocalOverrides.
Если не понятно, то ты не достоин быть моддером сакрального Г-сорца
(шутка, типа).
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Отправлено XaeroX 27-05-2014 в 20:27:
AddToFullPack на сервере проверь, возможно, там vuser4 не копируется.
HUD_ProcessPlayerState нужен, если юзать IEngineStudio.GetPlayerState, а он юзает обычный curstate.
Добавлено 28-05-2014 в 03:26:
Второй вариант - покрутить UpdateClientData на сервере и HUD_TxferLocalOverrides на клиенте.
Добавлено 28-05-2014 в 03:27:
А хотя нет, vuser4 у клиентдаты уже заюзан. 
__________________
Отправлено ILZM 28-05-2014 в 06:29:
~ X ~, недостоин я. Всего лишь полукровка-скриптер...
Спасибо вам за советы.
Но, к сожалению, ничего не выходит! Главное пишышь, пишышь инновации, которых девственный ХЛ никогда не касался, а тут вот такая глупая фигня, которая по сравнению с этими инновациями ничто.
Мб я делаю что-то не так?
Мне надо, чтобы у не локальных игроков, двигались ноги. Свои ноги от третьего лица работают, не зависимо от того что было заюзано. В обычном ХЛ всё норм же, а вот в Xash'e они не двигаются!!1!1!! Почему
?!
Чтобы проверять дополнительного игрока, запускаю 2 клиента: один просто хостует, а другой через SandBox. Один из них бегает, другой смотрит. В этом ничего подозрительного нету, потому-что это имитация игры по ланке.
Как говорилось, у локального игрока скорость принимается, а у других - нет!!
Пробовал вот так vecPlVel = m_pCurrentEntity->curstate.velocity;, вот так
C++ Source Code:
player = *(IEngineStudio.GetPlayerState( m_nPlayerIndex )) |
vecPlVel = player.velocity; |
И просто через entity_state_t *pplayer, которую принимает ф-я vecPlVel = player->velocity;
Сравнил с обычным ХЛ. Там есть одно лишь различие в HUD_TxferLocalOverrides в том, что нету state->velocity = client->velocity;, а в XashXT есть. Ну я и закомментил. И в результате даже у локального игрока скорость не принимается! delta.lst вроде бы идентичный.
Пожалуйста, покажите полностью что нужно делать, а то нуб по-ходу.
Отправлено ILZM 28-05-2014 в 12:56:
Как говорят, поспешишь - людей насмешишь
. Но загадка со с полем velocity всё равно остаётся...
Зачем все эти clientdata, HUD_ProcessPlayerState, HUD_TxferLocalOverrides, если уже есть addtofullpack? Передаётся ли инфа дважды?
Отправлено XaeroX 28-05-2014 в 13:06:
Цитата:
ILZM писал:
Зачем все эти clientdata, HUD_ProcessPlayerState, HUD_TxferLocalOverrides, если уже есть addtofullpack? Передаётся ли инфа дважды?
Зачем клиентские функции, если есть серверные? Ну, подумай. 
__________________
Отправлено ILZM 28-05-2014 в 14:23:
Конечно, это понятно. Одно отправляет, другое принимает. Но зачем эти расширения в delta.lst, которые повторяются? Ведь это значит, что одна и та же инфа отправляется. Не так ли?
C++ Source Code:
3 | DEFINE_DELTA( flTimeStepSound, DT_INTEGER, 10, 1.0 ), |
4 | DEFINE_DELTA( origin[0], DT_SIGNED | DT_FLOAT, 24, 128.0 ), |
5 | DEFINE_DELTA( origin[1], DT_SIGNED | DT_FLOAT, 24, 128.0 ), |
6 | DEFINE_DELTA( velocity[0], DT_SIGNED | DT_FLOAT, 16, 8.0 ), |
7 | DEFINE_DELTA( velocity[1], DT_SIGNED | DT_FLOAT, 16, 8.0 ), |
C++ Source Code:
1 | entity_state_t gamedll Entity_Encode |
3 | DEFINE_DELTA( animtime, DT_TIMEWINDOW_8, 8, 1.0 ), |
4 | DEFINE_DELTA( frame, DT_FLOAT, 10, 4.0 ), |
5 | DEFINE_DELTA( origin[0], DT_SIGNED | DT_FLOAT, 24, 128.0 ), |
6 | DEFINE_DELTA( angles[0], DT_ANGLE, 16, 1.0 ), |
7 | DEFINE_DELTA( angles[1], DT_ANGLE, 16, 1.0 ), |
8 | DEFINE_DELTA( origin[1], DT_SIGNED | DT_FLOAT, 24, 128.0 ), |
9 | DEFINE_DELTA( origin[2], DT_SIGNED | DT_FLOAT, 24, 128.0 ), |
C++ Source Code:
1 | entity_state_player_t gamedll Player_Encode |
3 | DEFINE_DELTA( animtime, DT_TIMEWINDOW_8, 8, 1.0 ), |
4 | DEFINE_DELTA( frame, DT_FLOAT, 8, 1.0 ), |
5 | DEFINE_DELTA( origin[0], DT_SIGNED | DT_FLOAT, 24, 128.0 ), |
6 | DEFINE_DELTA( angles[0], DT_ANGLE, 16, 1.0 ), |
7 | DEFINE_DELTA( angles[1], DT_ANGLE, 16, 1.0 ), |
8 | DEFINE_DELTA( origin[1], DT_SIGNED | DT_FLOAT, 24, 128.0 ), |
9 | DEFINE_DELTA( origin[2], DT_SIGNED | DT_FLOAT, 24, 128.0 ), |
Отправлено Ku2zoff 28-05-2014 в 17:27:
Цитата:
ILZM писал:
Но зачем эти расширения в delta.lst, которые повторяются? Ведь это значит, что одна и та же инфа отправляется. Не так ли?
Дык тут же отдельно для обычных энтить, для игрока и для клиентдаты (правда, я не совсем понимаю, что это такое, клиентдата, потому что сетью толком не занимался и в инете не шарил). Каждое для своих задач сделано. То есть, мы можем не передавать какие-то энтварсы игрока на клиент, если в этом нет нужды, экономить сетевой траффик в мультиплеере.
ILZM я не могу понять, как у тебя может не передаваться велосити с сервера на клиент... Ты её пытаешься передать через vuser? Попробуй каждый из трёх компонентов вектора передать через fuser, может быть решит проблему.
И ещё. На сервере-то проверял? Может быть ты vuser4 приравниваешь к какому-то фуфлу, типа null.
Отправлено ~ X ~ 28-05-2014 в 19:17:
Цитата:
ILZM писал:
В обычном ХЛ всё норм же, а вот в Xash'e они не двигаются!!1!1!! Почему ?!

Ахем. Клиентдата более точная, часто передаваемая и предиктабельная. Короче, она нужна. Вопрос у меня в другом - КАК игроки двигаются, если у них нет велосити?! Ну ведь наверняка она есть, хоть в пм_шаред на клиенте. Хотя, мб я чего-то не понял. Задачу, например. 
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Отправлено XaeroX 28-05-2014 в 19:23:
Цитата:
~ X ~ писал:
Короче, она нужна.
На самом деле она не нужна, но в халфе есть - и с этим приходится мириться.
В халфовском сетевом коде на самом деле много чудачеств. Видимо, его много лет писали, отлаживали, тестировали разные идеи и т.д. Вот и получили мы всякие клиент-даты в результате, дублирующие энтити-стейт.
Цитата:
~ X ~ писал:
Ну ведь наверняка она есть, хоть в пм_шаред на клиенте.
На клиенте есть позишен-хистори. 
__________________