При хостинг поддержке Интернет-сообщества VBIOS CS-Mapping.com.ua
Вернуться   CS-Mapping.com.ua > Forum > Картостроение > Модострой
Ник
Пароль
Регистрация Правила форума FAQ Пользователи Администрация Календарь Поиск За 24 часа Пометить все разделы прочитанными

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.11.2017, 10:46  #21
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,085


По умолчанию

[ Цитата ] Так вот - если в функции воллджампа делаю проверку на стамину - эррорит.
Естественно. То что в pmove это всё промежуточные переменные, они же не сохраняются никуда. Надо в fuser1 какой-нибудь. Только записывать на сервере, а не в pmove.
Дядя Миша вне форума Ответить с цитированием
Старый 11.11.2017, 12:28  #22
SNMetamorph
SNMetamorph
Рядовой
Регистрация: 09.11.2017
Сообщения: 16


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: Естественно. То что в pmove это всё промежуточные переменные, они же не сохраняются никуда. Надо в fuser1 какой-нибудь. Только записывать на сервере, а не в pmove.
То есть, нужно стамину хранить/изменять где-то исключительно на сервере? А как тогда клиенту получать о ней инфу? Отправлять с сервера флаг, обозначающий разрешение воллджампа, и если он активирован вызывать PM_WallJump?
SNMetamorph вне форума Ответить с цитированием
Старый 11.11.2017, 13:15  #23
a1batross
a1batross
Старшина
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 19
Сообщения: 405


По умолчанию

2 SNMetamorph:
Я же написал об этом. В сервере есть UpdateClientData. Вот записанный там fuser1 и появится в pmove этого игрока. Как и другие user-ы.
a1batross вне форума Ответить с цитированием
Старый 11.11.2017, 13:59  #24
SNMetamorph
SNMetamorph
Рядовой
Регистрация: 09.11.2017
Сообщения: 16


По умолчанию

[ Цитата ] Сообщение от a1batross: 2 SNMetamorph:
Я же написал об этом. В сервере есть UpdateClientData. Вот записанный там fuser1 и появится в pmove этого игрока. Как и другие user-ы.
Ага, сейчас с этим вроде б разобрался, спасибо. Но как мне изменить концепцию стамины? Хранить и изменять значения стамины на стороне сервера, отправлять клиенту через UpdateClientData, а в PM использовать полученные значения исключительно для проверок? Так?
SNMetamorph вне форума Ответить с цитированием
Старый 11.11.2017, 14:48  #25
a1batross
a1batross
Старшина
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 19
Сообщения: 405


По умолчанию

2 SNMetamorph:
Да. Да, значение стамины можешб прямо как поле в класс CBasePlayer-а. Потом когда будешь заполнять клиентдату, просто запиши это значение. Оно и на серверном pmove, и на клиентском будет. Исключительно для чтения.
a1batross вне форума Ответить с цитированием
Старый 14.11.2017, 15:24  #26
SNMetamorph
SNMetamorph
Рядовой
Регистрация: 09.11.2017
Сообщения: 16


По умолчанию

[ Цитата ] Сообщение от a1batross: 2 SNMetamorph:
Да. Да, значение стамины можешб прямо как поле в класс CBasePlayer-а. Потом когда будешь заполнять клиентдату, просто запиши это значение. Оно и на серверном pmove, и на клиентском будет. Исключительно для чтения.
Ну так это выходит и не никакого предиктинга, между тем как я отправлю значение стамины через UpdateClientData и оно изменится в структуре pmove пройдёт n-ное количество миллисекунд. Неужели нет никаких методов реализовать все так, как реализовано дефолтное движение, прыжки, и т.д.?
SNMetamorph вне форума Ответить с цитированием
Старый 14.11.2017, 16:13  #27
a1batross
a1batross
Старшина
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 19
Сообщения: 405


По умолчанию

2 SNMetamorph:
верно.

Если ты хочешь, чтобы сразу, то и вовсе не используй fuser-ы. Мне показалось, что они тебе зачем-то нужны. Делай статическую переменную и пиши в неё.
a1batross вне форума Ответить с цитированием
Старый 14.11.2017, 16:18  #28
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,085


По умолчанию

[ Цитата ] оно изменится в структуре pmove пройдёт n-ное количество миллисекунд
Помоему ты неправильно понимаешь смысл предиктинга.
Дядя Миша вне форума Ответить с цитированием
Старый 14.11.2017, 16:23  #29
SNMetamorph
SNMetamorph
Рядовой
Регистрация: 09.11.2017
Сообщения: 16


По умолчанию

[ Цитата ] Сообщение от a1batross: 2 SNMetamorph:
верно.

Если ты хочешь, чтобы сразу, то и вовсе не используй fuser-ы. Мне показалось, что они тебе зачем-то нужны. Делай статическую переменную и пиши в неё.
Ну тогда выйдет то, что было в самом начале - хоть и переменная стамины находится у обоих сторон, при малейшем пинге начнет дико предктэррорить.

SNMetamorph, подумав, добавил 14.11.2017 в 16:41
[ Цитата ] Сообщение от Дядя Миша: Помоему ты неправильно понимаешь смысл предиктинга.
Так и есть, я не уверен в достоверности своих знаний.
Поле в серверной pmove структуре сразу же меняется, если я меняю его через UpdatePlayerData?
А вообще вот то что я знаю о предиктинге - с каждым новым фреймом клиентсайдная pmove сравнивается с серверной, и если есть некие расхождения случается предиктэррор и некоторым/всем полям клиентской структуры присваиваются значения полей серверной? Так?

Последний раз редактировалось SNMetamorph, 14.11.2017 в 16:42.
SNMetamorph вне форума Ответить с цитированием
Старый 14.11.2017, 18:35  #30
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,085


По умолчанию

[ Цитата ] с каждым новым фреймом клиентсайдная pmove сравнивается с серверной
Наоборот. В отсутствие свежей порцыы данных с сервера, уже накопленные клиентские данные используются для локального перемещения игрока в ожидании пока придёт обновление. Когда приходит обновление, мы сравниваем то, что мы напредиктили с тем, что пришло с сервера. И есть есть расхождение - возникает ошибка предиктинга.
Проблема в том, что далеко не все вещи можно предиктить в голдсорсе.
Дядя Миша вне форума Ответить с цитированием
Старый 14.11.2017, 18:52  #31
ZombieSource
ZombieSource
Sehr geile Sprayers!
Регистрация: 13.06.2010
Адрес: LightenWoods
Сообщения: 424


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: Проблема в том, что далеко не все вещи можно предиктить в голдсорсе.

Суть задумки такова. У игрока есть стамина, как это обычно бывает.
За стамину игрок может делать всякие трюки типа Walljump, кувырок и тд.
Насколько я понял, сам walljump без использования стамины вышло сделать нормально с предиктингом. С подключением стамины всё портится. Так вот это всё вообще реально запредиктить? И как лучше реализовать стамину чтоб нормально предиктилось?
ZombieSource вне форума Ответить с цитированием
Старый 14.11.2017, 19:19  #32
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,085


По умолчанию

А зачем предиктить стамину? Ну расходуется она и расходуется.
Дядя Миша вне форума Ответить с цитированием
Старый 14.11.2017, 19:26  #33
ZombieSource
ZombieSource
Sehr geile Sprayers!
Регистрация: 13.06.2010
Адрес: LightenWoods
Сообщения: 424


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: А зачем предиктить стамину? Ну расходуется она и расходуется.
Не. Предиктить надо воллджампы, чтоб не зависимо от пинга спокойно летать по карте. Но делая чтоб воллджампы расходовали стамину, предиктинг перестаёт работать.
Вот он писал про это
[ Цитата ] Сообщение от SNMetamorph: Так вот - если в функции воллджампа делаю проверку на стамину - эррорит. Если не делаю - все окей, даже с пингом 300-400.
Выше посоветовали для стамины использовать какие-то fuser, потом выяснилось что их вовсе не надо использовать

Последний раз редактировалось ZombieSource, 14.11.2017 в 19:36.
ZombieSource вне форума Ответить с цитированием
Старый 14.11.2017, 20:15  #34
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,085


По умолчанию

Расход стамины надо отлавливать с CBasePlayer, а коду предикта просто сообщать, есть она еще или закончилась. Не надо расходовать стамину в коде предикта.
Дядя Миша вне форума Ответить с цитированием
Старый 14.11.2017, 21:44  #35
a1batross
a1batross
Старшина
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 19
Сообщения: 405


По умолчанию

2 ZombieSource:
просто если он хочет знать значение стамины на предикте(например, чтобы не лезть по стенкам, когда её нет, верно?), то ясен пень ему нужно знать сколько её на клиенте. Но при этом совершенно не обязательно следить за её значением.

Это как health, в общем-то.
a1batross вне форума Ответить с цитированием
Старый вчера, 14:13  #36
SNMetamorph
SNMetamorph
Рядовой
Регистрация: 09.11.2017
Сообщения: 16


По умолчанию

Опять какая-то ерунда. Сую флаги в iuser4, клиентсайд pm_ код вообще не видит их из функции PM_PlayerMove.

Передаю клиенту вот так:
Код:
void UpdateClientData()
{
...
	cd->fuser1 = pev->fuser1 = pl->m_flStamina;
	cd->iuser4 = pev->iuser4 = pl->m_iStuntFlags;
...
}

Проверяю так:
Код:
void PM_PlayerMove() 
{
	if (pmove->iuser4 & FL_GOWALLJUMP)
	#ifdef CLIENT_DLL
	pmove->Con_Printf("CL: Flag registered.\n");
	#else
	pmove->Con_Printf("SV: Flag registered.\n");
	#endif
}

Строки в консоли появляются только от имени SV. Что не так?
SNMetamorph вне форума Ответить с цитированием
Старый вчера, 14:44  #37
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,085


По умолчанию

2 SNMetamorph: так ты их на клиенте еще должен обратно скопировать в TexferPredictionData или что-то вроде этого.
И добавить в delta.lst чтобы они передавались по сети.
Дядя Миша вне форума Ответить с цитированием
Старый вчера, 15:24  #38
SNMetamorph
SNMetamorph
Рядовой
Регистрация: 09.11.2017
Сообщения: 16


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: 2 SNMetamorph: так ты их на клиенте еще должен обратно скопировать в TexferPredictionData или что-то вроде этого.
И добавить в delta.lst чтобы они передавались по сети.
Во! Добавил в delta.lst и сразу всё заработало как надо. А этот файл парсится каким-то интерпретатором и потом исполняется как обычный код, или просто он читается и из массива с текстом вытаскиваются определенные значения (через sscanf, например) и пишутся в определенные места?
SNMetamorph вне форума Ответить с цитированием
Старый вчера, 15:47  #39
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,085


По умолчанию

2 SNMetamorph: ну где ты там увидел код? Обычные настройки, пусть и оформленные слегка непривычно. Изначально да, там предполагался интерпретатор с кастомными каллбэками, но затухла эта идея.
Дядя Миша вне форума Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 00:40.


Designed by FT-502, TRUP@C. Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2017 by CS-Mapping.com.ua Community