Реакция пули на игрока.

(admiral)

Участник
Сообщения
69
Реакции
8
Проблема такая. На картах ze включен ноублок, все ходят толпой. Когда нужно сломать какой-то предмет, особенно в узком пространстве, некоторые встают спереди, некоторые сзади. В итоге пули тех, кто сзади, просто "застревают" в передних игроках, и сломать предмет становится очень сложно. Каким образом можно заставить пулю пролетать через тела людей?
 

horr0rjkee

Участник
Сообщения
5
Реакции
0
Re: Реакция пули на игрока. Помогите.

Скорее всего на движке сурса/об это невозможно.
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
horr0rjkee, ну почему же, вон например в тф2 есть даже снайперка с возможностью прохождения пуль и даже значки убийства двух одной пулей. В Nuclear Dawn пули тоже вроде проходят сквозь игроков, хотя не уверен. По идее это возможно через m_CollisionGroup, хотя не уверен, каике параметры нужны и как это будет работать
 

vanbka9

Участник
Сообщения
14
Реакции
13
Проблема решена ;)
PHP:
public OnPluginStart()
{
	HookEvent("player_hurt", player_hurt, EventHookMode_Pre);
}

public Action:player_hurt(Handle:event, const String:name[], bool:silent)
{
	decl attacker;
	if ((attacker = GetClientOfUserId(GetEventInt(event, "attacker"))) < 1)
		return Plugin_Continue;
	decl victim;
	victim = GetClientOfUserId(GetEventInt(event, "userid"));
	new victim_team = GetClientTeam(victim);
	new attacker_team = GetClientTeam(attacker);
	if (victim_team == attacker_team)
		SetEntProp(victim, Prop_Send, "m_nSolidType", 5);
	else
		SetEntProp(victim, Prop_Send, "m_nSolidType", 2);
	
	return Plugin_Continue;
}
________________________________
Забыл пояснить.
После установки ["m_nSolidType", 5] игроку событие "player_hurt" для него больше вызываться не будет. Нужно как то возвращать ему ["m_nSolidType", 2]. Возможно таймером.
Разве пули не тормозятся через solid_vphysics?
Первая пуля попавшая в игрока застревает, последующие нет, т.к. ["m_nSolidType", 5]
 
Последнее редактирование:

(admiral)

Участник
Сообщения
69
Реакции
8
Честно, я не понял решения. Разве пули не тормозятся через solid_vphysics? Я немного потестил, и урон уменьшается, когда пуля проходит через тело союзника. Значит, по идее, пули продолжают реагировать на союзников(. Правда, не проверял с двумя союзниками, где урона, по идее, вообще не должно быть.
 

(admiral)

Участник
Сообщения
69
Реакции
8
Нашел решение проблемы. Требуется расширение CollisionHook 0.2 - https://forums.alliedmods.net/showthread.php?t=197815.
Сам код:
C-подобный:
public Action:CH_PassFilter( ent1, ent2, &bool:result ) 
{ 
    if (1 <= ent1 <= MaxClients && 1 <= ent2 <= MaxClients && IsClientInGame(ent2) &&  IsPlayerAlive(ent2) && ZR_IsClientHuman(ent1) == ZR_IsClientHuman(ent2)) 
    { 
        result = false; 
        return Plugin_Handled; 
    } 
     
    return Plugin_Continue; 
}
Побочные эффекты: ноублок (люди проходят через людей и зомби проходят через зомби, но зомби через людей и наоборот не проходят.
 
Последнее редактирование:
Сверху Снизу