Files
2026-03-30 10:39:52 +03:00

172 lines
5.6 KiB
Lua

COD.DelayGamemodeNumber = 999999999
function COD:JoinAllToTeam()
for _, ply in ipairs(player.GetAll()) do
ply:SetTeam(1)
ply:KillSilent()
ply:Spawn()
end
end
function COD:ShowTimer(num)
net.Start("COD.TimerShow")
net.WriteFloat(num)
net.Broadcast()
end
function COD:RandomInfection()
local tabp = player.GetAll()
local ply = table.Random(tabp)
for _, plys in ipairs(tabp) do
if plys != ply then
COD:GiveMessageCenter(plys, 9)
plys:ChangeScore(50)
end
end
if IsValid(ply) then
local pos = ply:GetPos()
local ang = ply:EyeAngles()
ply:SetTeam(2)
ply:KillSilent()
ply:Spawn()
COD:GiveMessageCenter(ply, 7)
timer.Simple(0.02, function()
if !IsValid(ply) then return end
ply:SetPos(pos)
ply:SetEyeAngles(ang)
end)
end
end
hook.Add("PlayerDeath", "TDMPlayer_Infection", function(ply, inf, att)
if COD.GameStarted and COD.DataTable["Gamemode"] == 4 then
COD.DataTable["Team1_Kills"] = 0
COD.DataTable["Team2_Kills"] = 0
if ply:Team() == 1 then
COD.TimeBeforeEnd = COD.TimeBeforeEnd+30
BroadcastLua([[
COD.TimeMatch = ]]..COD.TimeBeforeEnd..[[
]])
for _, plys in ipairs(team.GetPlayers(1)) do
COD:GiveMessageCenter(plys, 9)
plys:ChangeScore(50)
end
end
timer.Simple(0.1, function()
if !IsValid(ply) or ply:Team() == 2 then return end
ply:SetTeam(2)
if #team.GetPlayers(1) == 1 then
COD:GiveMessageCenter(player.GetAll(), 8)
end
end)
end
end)
hook.Add("PlayerSpawn", "TDMPlayer_Infection", function(ply)
if COD.GameStarted and COD.DataTable["Gamemode"] == 4 then
timer.Simple(0.01, function()
if !IsValid(ply) then return end
ply:SetNWFloat('Perk1', 4)
ply:SetNWFloat('Perk2', 0)
ply:SetNWFloat('Perk1_Choose', 0)
ply:SetNWFloat('Perk2_Choose', 0)
ply:SetNWFloat('KillStreak1', 0)
ply:SetNWFloat('KillStreak2', 0)
ply:SetNWFloat('KillStreak3', 0)
ply:SetPos(table.Random(COD.DataTable["simple_Spawns"]))
if ply:Team() == 2 then
ply:SetModel("models/humangrunt/cod4/captain_macmillan_pm.mdl")
ply:SetupHands()
ply:StripWeapons()
ply:Give('tdm_infection_knife')
ply:SetNWFloat('FragGrenades', 0)
ply:SetNWFloat('FlashGrenades', 0)
end
end)
end
end)
hook.Add("COD.ChangeState", "TDMPlayer_Infection", function(start)
if start and COD.DataTable["Gamemode"] == 4 then
COD.TimeBefore1PerkUnlock = math.huge
COD.TimeBefore2PerkUnlock = math.huge
COD.DisableSpawn = false
COD.DelayGamemodeNumber = CurTime()+COD.DataTable["Delay_Before_Start"]+21
COD.DisableEndGameByNoTeam = true
COD:JoinAllToTeam()
timer.Simple(COD.DataTable["Delay_Before_Start"]+10, function()
if COD.DataTable["Gamemode"] == 4 and COD.GameStarted then
COD:ShowTimer(10)
end
end)
timer.Simple(COD.DataTable["Delay_Before_Start"]+20, function()
if COD.DataTable["Gamemode"] == 4 and COD.GameStarted then
COD:RandomInfection()
end
end)
else
COD.DisableSpawn = false
end
end)
hook.Add("Think", "TDMPlayer_Infection", function()
if COD.GameStarted and COD.DataTable["Gamemode"] == 4 then
local team1, team1alive = team.GetPlayers(1), false
local team2alive = false
local loseteam = 0
for k, p in ipairs(team1) do
if p:Alive() then
team1alive = true
break
end
end
if #team.GetPlayers(2) != 0 then
team2alive = true
end
if team1alive and team2alive then
COD.DelayGamemodeNumber = CurTime()+2
loseteam = 0
elseif team1alive and not team2alive then
loseteam = 1
elseif team2alive and not team1alive then
loseteam = 2
COD.TimeBeforeEnd = 0
elseif not team1alive and not team2alive then
loseteam = 3
end
if COD.TimeBeforeStart < CurTime()+1 and team1alive then
loseteam = 1
COD.DelayGamemodeNumber = 0
end
if loseteam == 1 and COD.DelayGamemodeNumber < CurTime() then
COD.DataTable["Team1_Kills"] = 1
COD.DataTable["Team2_Kills"] = 0
BroadcastLua([[
COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[
COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[
]])
elseif loseteam == 2 and COD.DelayGamemodeNumber < CurTime() then
COD.DataTable["Team2_Kills"] = 1
COD.DataTable["Team1_Kills"] = 0
BroadcastLua([[
COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[
COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[
]])
elseif loseteam == 3 and COD.DelayGamemodeNumber < CurTime() then
COD.DataTable["Team1_Kills"] = 0
COD.DataTable["Team2_Kills"] = 0
BroadcastLua([[
COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[
COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[
]])
end
end
end)