Знакомый подсказал что видал на серверах функцию что зомби в каждом раунде который становился рандомно боссом.
Мне нужно что-то похожее, что-бы в начале каждого раунда от второй и заканчивая последней волной рандомный игрок автоматом становился боссом. Исключительно те кто за зомби
local totalWaves = 10
local currentWave = 0
local bossRole = "BossZombie"
local normalZombieRole = "Zombie"
local function SelectRandomZombieBoss()
local zombiePlayers = {}
for _, player in ipairs(player.GetAll()) do
if player:Team() == TEAM_ZOMBIE and player:GetRole() == normalZombieRole then
table.insert(zombiePlayers, player)
end
end
if #zombiePlayers > 0 then
local boss = zombiePlayers[math.random(#zombiePlayers)]
boss:SetRole(bossRole)
boss:SetHealth(boss:Health() * 2)
boss:SetDamage(boss:GetDamage() * 2)
print(boss:Nick() .. " стал боссом!")
end
end
hook.Add("RoundStart", "SelectZombieBossOnRoundStart", function()
currentWave = currentWave + 1
if currentWave > 1 and currentWave <= totalWaves then
SelectRandomZombieBoss()
end
end)
function PLAYER:SetRole(role)
self:SetNWString("role", role)
if role == bossRole then
self:SetModel("models/boss_zombie.mdl")
self:SetWalkSpeed(self:GetWalkSpeed() * 1.5)
self:SetRunSpeed(self:GetRunSpeed() * 1.5)
elseif role == normalZombieRole then
self:SetModel("models/normal_zombie.mdl")
self:SetWalkSpeed(self:GetWalkSpeed() / 1.5)
self:SetRunSpeed(self:GetRunSpeed() / 1.5)
end
end
function PLAYER:Team()
return self:GetNWInt("team")
end
function PLAYER:GetRole()
return self:GetNWString("role")
end
function PLAYER:GetDamage()
return self:GetNWInt("damage")
end
function PLAYER:SetDamage(damage)
self:SetNWInt("damage", damage)
end
hook.Add("PlayerSpawn", "SetInitialRole", function(ply)
if ply:Team() == TEAM_ZOMBIE then
ply:SetRole(normalZombieRole)
ply:SetDamage(10)
end
end)
totalWaves - общее количество волн
currentWave - текущая волна