Как запретить нанесение урона по своим? К примеру: TEAM_SWAT не может нанести урон TEAM_POLICE
Sv часть.
hook.Add("OnGamemodeLoaded","NoTeamDamage",function()
local TeamGroup={
{TEAM_POLICE,TEAM_SWAT,TEAM_MAYOR},--Команда 1
}
hook.Add("PlayerShouldTakeDamage", "NoTeamDamage", function(pl, atk)
if not atk:IsPlayer() then return end
local plT=false
local atkT=false
for i = 1, #TeamGroup do
for s = 1, #TeamGroup[i] do
if TeamGroup[i][s] == pl:Team() then plT=true end
if TeamGroup[i][s] == atl:Team() then atkT=true end
if plT and atkT then return false end
end
end
end)
end)
1 лайк
почему-то пропал урон у полиции по всем
попробуй так
не работает
-- addons/anyname/lua/autorun/server/anti_friendly_fire.lua
hook.Add("PlayerShouldTakeDamage", "CP_AntiFriendlyFire", function(victim, attacker)
if victim:IsCP() and attacker:IsCP() then
return false
end
end)
Еще может быть интересно: Как сделать чтобы игроки не сталкивались друг с другом - #7 от пользователя GMD
1 лайк
Можно и так сделать.
TEST_TABLE = TEST_TABLE or {}
hook.Add("OnGamemodeLoaded","NoTeamDamage",function()
local TEAM_FRIEND = {}
TEAM_FRIEND[TEAM_POLICE] = true
TEAM_FRIEND[TEAM_SWAT] = true
TEAM_FRIEND[TEAM_MAYOR] = true
-- Перезаписываем в общедоступную таблицу
TEST_TABLE = TEAM_FRIEND
end)
hook.Add("PlayerShouldTakeDamage", "NoTeamDamage", function(client, attacker)
local isPlayer = attacker:IsPlayer()
if (!IsValid(client) or !isPlayer) then return false end -- Проверяем существует ли игрок и тот кто стреляет, чтобы исключить ошибки валидности
local attackerTeam = attacker:Team()
local clTeam = client:Team()
-- Делаем проверку что игрок и тот кто атакует из одной тбалицы TEST_TABLE
if (TEST_TABLE[attackerTeam] and TEST_TABLE[clTeam]) then return false end -- Делаем возврат, т.к игроки из дружественных профессий.
end)
я делал под большое количество команд. Но нел пишет что не работает :\