HALF-LIFE 2 FOREVER - Forums
Вернуться   HALF-LIFE 2 FOREVER - Forums > Общий > Техническая поддержка
Перезагрузить страницу Исправление лестниц
Важная информация
Ответ
 
Опции темы Опции просмотра
  (#1) Старый
Azazel Azazel вне форума
Администратор
 
Имя: Виктор (Victor)
Сообщений: 13
Регистрация: 22.11.2018
Родина:
Адрес: Vitebsk
Возраст: 19
STEAM: STEAM_0:0:124323502
Профиль STEAM
18 Исправление лестниц - 11.06.2019, 12:42

Собственно сама проблема:
https://www.youtube.com/watch?v=86KY_s1q7xc
Игрок забирается на лестницу и не слезая с неё, переходит за другую команду. После этого игрок отключается от сервера. Самое интересное, что все делают так, как учащиеся, которые списывая у кого-либо допускают ошибки. Я при тестах обнаружил, что достаточно просто отключится или оборвать соединение, чтобы произошёл тайм-аут.
Valenok уже как минимум 3 раза ломал лестницы, а именно: 1 раз и ещё 1 раз после перезагрузки карты, потом через несколько дней ещё раз, за что был забанен уже на 2 недели.
Поковырявшись в Source SDK 2013, нашёл решение:
в файле hl2_player.h (примерно 280 строка) после
Код:
// HUD HINTS
void DisplayLadderHudHint();
добавить следующее
Код:
void CHL2_Player::Event_Dying(const CTakeDamageInfo& info);
в файле hl2_player.cpp (примерно 3550 строка) перед
Код:
//-----------------------------------------------------------------------------
// Purpose: Helper to remove from ladder
//-----------------------------------------------------------------------------
void CHL2_Player::ExitLadder()
{
	if ( MOVETYPE_LADDER != GetMoveType() )
		return;
добавить следующее
Код:
void CHL2_Player::Event_Dying(const CTakeDamageInfo& info)
{
	LadderMove_t* move = GetLadderMove();
	if (move != NULL)
	{
		CBaseEntity* spot = (CBaseEntity*)(move->m_hReservedSpot.Get());
		if (spot)
		{
			UTIL_Remove(spot);
			move->m_hReservedSpot = NULL;
		}
	}
	BaseClass::Event_Dying(info);
}
Небольшие пояснения:
Когда игрок забирается на лестницу, вокруг него создаётся некая невидимая
физическая "коробка", похожая на коробку от холодильника , которая не позволяет noclip-ться с другими игроками и позволяет "застревать", когда игрок добрался до конца лестницы. За это отвечает класс CReservePlayerSpot. А удаляется это "коробка" только в двух местах: когда она создалась неправильно или когда игрок закончил передвигаться по лестнице. Теперь же, эта коробка будет удаляться при смерти игрока, если это возможно.

Последний раз редактировалось Azazel; 11.06.2019 в 23:27..
Ответить с цитированием
Ответ


Здесь присутствуют: 3 (пользователей: 0 , гостей: 3)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

HALF-LIFE 2 FOREVER

® 2015-2019 HALF-LIFE 2 FOREVER

Работает на vBulletin® Версия 3.9.1-dev
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
vBulletin Skin developed by: vBStyles.com