diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index 189eac9c4..492a4d7c8 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -1311,9 +1311,23 @@ void CCharacter::Snap(int SnappingClient) return; CCharacter* SnapChar = GameServer()->GetPlayerChar(SnappingClient); - if(!SnapChar - || (!SnapChar->GetPlayer()->m_ShowOthers && SnapChar->Team() != Team() && Team() != TEAM_SUPER) - || (GetPlayer()->m_Invisible && GetPlayer()->GetCID() != SnappingClient)) return; + if + ( + SnapChar && + !SnapChar->m_Super && + ( + !SnapChar->GetPlayer()->m_ShowOthers && + GameServer()->m_apPlayers[SnappingClient]->GetTeam() != -1 && + SnapChar->Team() != Team() && + Team() != TEAM_SUPER + ) || + ( + GetPlayer()->m_Invisible && + GetPlayer()->GetCID() != SnappingClient && + GameServer()->m_apPlayers[SnappingClient]->m_Authed < GetPlayer()->m_Authed + ) + ) + return; CNetObj_Character *Character = static_cast(Server()->SnapNewItem(NETOBJTYPE_CHARACTER, m_pPlayer->GetCID(), sizeof(CNetObj_Character))); // write down the m_Core