Вопрос по COLLISION_GROUP_DEBRIS

iamdss

Участник
Сообщения
126
Реакции
12
Пишу плагин для защиты игрока (HL2DM), если он не активен более 5 секунд (пишет в чат, голосует и т.п.). Постановку на защиту выполняю следующим кодом:

C-подобный:
SetEntData(client, g_offsCollisionGroup, 1, 4, true);

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

C-подобный:
COLLISION_GROUP_DEBRIS,				// Collides with nothing but world and static stuff

Решено правильным подбором условий.

Разве выкинутые гравиганом предметы считаются за статику?


Добавлено через 13 минут
И сразу спрошу ещё вот о чём. Логика плагина вертится в таймере с интервалом 0,1 сек, там же я определяю, защищён игрок или нет, таким кодом:

C-подобный:
bool:IsProtected(client)
{
	if (IsClientInGame(client) && !IsFakeClient(client) && IsPlayerAlive(client))
	{
		new gValue = GetEntProp(client, Prop_Data, "m_takedamage", 1);
		return gValue == 0;
	} else return false;
}

Скажите, насколько ресурсоёмок данный код? И не будет ли более экономно взводить/сбрасывать флаг при постановке/снятии защиты, а определять уже по этому флагу? И может быть не стоит выделять память под переменную gValue?

Добавлено через 1 час 23 минуты
И ещё такой момент. Я перечитал темы

http://hlmod.ru/forum/plaginy-dlya-sourcemod/2831-team-only-noblock-v2-0-a.html
http://hlmod.ru/forum/zaprosy/17887-no-block-grenades.html

с описанием проблем с физикой. В общем, у меня такая же проблема. Спустя приблизительно 2 часа после старта плагина начинает ломаться физика, сперва гранаты летят под пол, а потом вообще всё исчезает. Не подскажите, что было причиной слома физики в этих плагинах?


Также решено рефакторингом.

В силе только вопрос о функции bool:IsProtected.
 
Последнее редактирование:
Сверху Снизу