Vote:new("shuffleteamsdamage")
:description("Randomly place players on each team, based on damage, with a map restart")
:vote(function()
return string.format("Shuffle teams by damage, with a map restart")
end)
:pass(function()
local axisdmg = 0
local alliesdmg = 0
local damages = {}
for j=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1 do
local team = tonumber(et.gentity_get(j, "sess.sessionTeam"))
if team == 1 or team == 2 then
if team == 1 then
local dmg = tonumber(et.gentity_get(j, "sess.damage_given"))
table.insert(damages, {j, dmg, 1})
axisdmg = axisdmg + dmg
elseif team == 2 then
local dmg = tonumber(et.gentity_get(j, "sess.damage_given"))
table.insert(damages, {j, dmg, 2})
alliesdmg = alliesdmg + dmg
end
end
end
table.sort(damages, function(a, b) return a[2] > b[2] end)
local weaker_team = {}
local stronger_team = {}
local wti = 1
local sti = 1
for k, v, t in ipairs(damages) do
if k >= 1 and ((k - 1) % 2) == 0 then
weaker_team[wti] = {v, t}
wti = wti + 1
else
stronger_team[sti] = {v, t}
sti = sti + 1
end
end
if axisdmg >= alliesdmg then
for k,v in ipairs(weaker_team) do
if v[1][3] == 1 then
et.trap_SendConsoleCommand(et.EXEC_APPEND, "ref putallies " .. v[1][1] .. "\n")
end
end
for k,v in ipairs(stronger_team) do
if v[1][3] == 2 then
et.trap_SendConsoleCommand(et.EXEC_APPEND, "ref putaxis " .. v[1][1] .. "\n")
end
end
elseif alliesdmg > axisdmg then
for k,v in ipairs(weaker_team) do
if v[1][3] == 2 then
et.trap_SendConsoleCommand(et.EXEC_APPEND, "ref putaxis " .. v[1][1] .. "\n")
end
end
for k,v in ipairs(stronger_team) do
if v[1][3] == 1 then
et.trap_SendConsoleCommand(et.EXEC_APPEND, "ref putallies " .. v[1][1] .. "\n")
end
end
end
et.trap_SendConsoleCommand(et.EXEC_APPEND, "map_restart\n")
end)