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

Дата регистрации: Nov 2009
Проживает: Томск
Сообщений: 398

Рейтинг



Как с клиента узнать что другой игрок мёртв?

На данный момент в ксаше все трупы игроков твёрдые для клиента.
Нужно разобраться как отличить труп от живого игрока со стороны движка. Есть какие-то идеи?

Отредактировано mittorn 06-09-2016 в 02:26

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

Старое сообщение 06-09-2016 02:14
- За что?
ILZM
LAW

Дата регистрации: Oct 2011
Проживает: Mega City One
Сообщений: 301

Рейтинг



mittorn на сервере в движке скорее всего такого нету. Труп - это вроде только на клиенте рендерится, а сервер про него ничего не знает.

gl_studio.c

C++ Source Code:
1
static int R_StudioDrawModel( int flags )
2
{
3
  alight_t	lighting;
4
  vec3_t	dir;
5
 
6
  if( RI.currententity->curstate.renderfx == kRenderFxDeadPlayer )
7
    ...

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

Старое сообщение 06-09-2016 03:17
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



ILZM сервер всё-таки знает от трупах. В дллках точно, в движке не знаю. CopyToBodyQue присваивает модель игрока специальной энтите bodycue, которая как раз и имеет свойство kRenderFxDeadPlayer. Я думаю, ничто не будет мешать завести проверку на этот рендермод и в серверной части движка.

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

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

Старое сообщение 06-09-2016 03:43
- За что?
mittorn
Житель форума
Девойс

Дата регистрации: Nov 2009
Проживает: Томск
Сообщений: 398

Рейтинг



ILZM сервер health проверяет. И не линкует эдикт в таёрдый мир если он не живой А на клиенте health всегда 0.

Добавлено 06-09-2016 в 07:26:

Ku2zoff такая проверка не нужна. Он уже SOLID_NOT.
Твёрдый игрок до респавна.

Добавлено 06-09-2016 в 07:32:

http://mittorn.the-swank.pp.ua/xash...528c16dfaf6719a

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

Старое сообщение 06-09-2016 04:32
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



mittorn я перепутал. На клиенте же надо. ХЗ, ХЗ. По рендермоду бесполезно проверять. Мёртвый игрок не имеет kRenderFxDeadPlayer. В момент респавна создаётся bodyque с этим рендермодом. Надо подумать, что у мёртвого игрока можно отследить на клиенте. pev->deadflag? pev->view_ofs? pev->solid?
Та ещё фигня. В каэске для определения труп/нетруп и показания уровня здоровья в режиме спектатора вообще отдельные мессаги заведены. В рамках мода можно обойтись или мессагами, или добавить строчки в дельту. А вот в движке, чтобы не изломать совместимость, придётся подумать.

Добавлено 06-09-2016 в 11:41:

Цитата:
mittorn писал:
http://mittorn.the-swank.pp.ua/xash...528c16dfaf6719a

Открывается только через прокси. Наверное потому что украинский хостинг. Ростелеком их много позаблочил.

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

Старое сообщение 06-09-2016 04:41
- За что?
mittorn
Житель форума
Девойс

Дата регистрации: Nov 2009
Проживает: Томск
Сообщений: 398

Рейтинг



Ku2zoff у меня пашет. Хотя тоже гостелекомом обмазываюсь. Попробуй google dns.
Вот как раз solid не меняется. deadflag что-то нету. health нулевой. По view вроде неправильно, однако можно. Чекну. Как временныф фикс пойдёт.

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

Старое сообщение 06-09-2016 05:03
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
mittorn писал:
По view вроде неправильно

pm_shared.c, где-то в районе строки 2890:
C++ Source Code:
// Set dead player view_offset
if ( pmove->dead )
{
  pmove->view_ofs[2] = PM_DEAD_VIEWHEIGHT;
}

Может быть и неправильно, но по-моему сойдёт.

Добавлено 06-09-2016 в 12:07:

Цитата:
mittorn писал:
у меня пашет

Это у меня браузер чудит оказывается. Всё норм.

Добавлено 06-09-2016 в 12:09:

Не пробовал svgame.pmove->dead?

Добавлено 06-09-2016 в 12:11:

Блин, оно ж по здоровью чекается. Руки пооткрутить бы вальве. Та же самая кривая песня, как с FL_DUCKING и usehull.

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

Старое сообщение 06-09-2016 05:11
- За что?
mittorn
Житель форума
Девойс

Дата регистрации: Nov 2009
Проживает: Томск
Сообщений: 398

Рейтинг



Ku2zoff
Там везде так.
svgame->pmove ==NULL.
Ну и мне нужны данные других игроков.

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

Старое сообщение 06-09-2016 05:38
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



BodyQue - это не игрок. Это вообще обманка такая, чёб трупы показывать.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-09-2016 05:53
-
mittorn
Житель форума
Девойс

Дата регистрации: Nov 2009
Проживает: Томск
Сообщений: 398

Рейтинг



Дядя Миша тут вроде уже сказали про это.
А баг именно с игроками. Возможно сервер просто скрыввет что они мертвы.

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

Старое сообщение 06-09-2016 05:57
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Игрок мёртв однозначно, если у него MOVETYPE_NONE стоит.

C++ Source Code:
1
// once we're done animating our death and we're on the ground, we want to set movetype to None so our dead body won't do collisions and stuff anymore
2
// this prevents a bug where the dead body would go to a player's head if he walked over it while the dead player was clicking their button to respawn
3
if ( pev->movetype != MOVETYPE_NONE && FBitSet(pev->flags, FL_ONGROUND) )
4
  pev->movetype = MOVETYPE_NONE;

Т.е. в CL_SetSolidPlayers надо добавить от это
C++ Source Code:
if( state->movetype == MOVETYPE_NONE )
  continue; // dead

И еще, на ЗОГ-медко.
C++ Source Code:
if( state->effects & EF_NODRAW )
  continue; // skip invisible

это невозможное условие. EF_NODRAW отсеивается на сервере и энтить с таким флагом просто не доходит до клиента. Тем более применительно к игроку вообще странная проверка.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-09-2016 11:36
-
mittorn
Житель форума
Девойс

Дата регистрации: Nov 2009
Проживает: Томск
Сообщений: 398

Рейтинг



Да, это лишнее.
Проверю movetype - может он отправляется корректно.
Пока подозреваю, что какие-то нужные данные просто не попадают на клиент.

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

Старое сообщение 06-09-2016 12:29
- За что?
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


В XHL не прокатит т.к. у мёртвых игроков мувтайпы могут разными быть -- источник багов.

Цитата:
Дядя Миша писал:
Тем более применительно к игроку вообще странная проверка.

Кстати, ОЧЕНЬ хороший вариант посылки "мёртвости" на клиент, если это пропустить на сервере в АддТоФуллПак(). Но я бы, если б хотелось защититься от читерства, пересылал бы pev->health в виде 0/1.

Если речь идёт о поддержке стороннних модов, то тут я лично проверяю солидность.

Цитата:
Ku2zoff писал:
CopyToBodyQue

О, этот старинный хак!! ))))
Сколько лет не видел %)

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

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

Старое сообщение 06-09-2016 13:00
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
~ X ~ писал:
В XHL не прокатит т.к. у мёртвых игроков мувтайпы могут разными быть -- источник багов.

XHL - источник багов, это метко подмечено.

Цитата:
mittorn писал:
Проверю movetype - может он отправляется корректно.

Не может. Он всегда отправляется корректно. Если его кое-кто не отсортировал в delta.lst.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-09-2016 16:52
-
mittorn
Житель форума
Девойс

Дата регистрации: Nov 2009
Проживает: Томск
Сообщений: 398

Рейтинг



~ X ~ бодикью появился до изобретения темпенитей. В hl 0.52 он уже есть.

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

Старое сообщение 06-09-2016 17:09
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 09:02. Новая тема    Ответить
Страницы (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