Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите со скриптом Roblox Studio [Lua]

xKeisasx Профи (672), открыт 4 недели назад
Скрипт про голосование за карту. Нужно добавить чтобы после смерти игрока скрипт не начинал идти заново. Помогите пожалуйста
cкрипт:

local rs = game.ReplicatedStorage

local maps = rs:WaitForChild("Maps")
local res = rs:WaitForChild("RemoteEvents")

local numMapsVoting = 3
local intermissionTime = 6
local voteTime = 11
local roundDuration = 21 -- Длительность раунда в секундах

local plrVotes = {}

function addVote(plr:Player, mapName:string)
plrVotes[plr] = mapName
res:WaitForChild("Voted"):FireAllClients(plrVotes)
end

function removePlayerVote(plr:Player)
plrVotes[plr] = nil
res:WaitForChild("Voted"):FireAllClients(plrVotes)
end

function loadMap(mapName:string)
local newMap = maps[mapName]:Clone()
newMap.Parent = workspace

local spawns = newMap:WaitForChild("Spawns"):GetChildren()

for i, plr in pairs(game.Players:GetPlayers()) do
if plr.Character then
plr.Character.HumanoidRootPart.CFrame = (spawns[i] and spawns[i].CFrame or spawns[i-#spawns]) + Vector3.new (0, 10, 0)
end
end

return newMap
end

function removeMap(map:Instance)
map:Destroy()

for _, plr in pairs(game.Players:GetPlayers()) do
plr:LoadCharacter()
end
end

function handleRound()
local plrsAlive = {}
for _, plr in pairs(game.Players:GetPlayers()) do
if plr.Character and plr.Character.Humanoid.Health > 0 then
table.insert(plrsAlive, plr)

plr.Character.Humanoid.Died:Connect(function()
table.remove(plrsAlive, table.find(plrsAlive, plr))
end)
end
end

for i = 1, roundDuration do
task.wait(1)
if #plrsAlive == 0 then
break
end
end

end

res:WaitForChild("Voted").OnServerEvent:Connect(addVote)

game.Players.PlayerRemoving:Connect(removePlayerVote)

while true do
task.wait(intermissionTime)

local mapsToVote = maps:GetChildren()

while #mapsToVote > numMapsVoting do
table.remove(mapsToVote, math.random(1, #mapsToVote))
end

plrVotes = {}

res:WaitForChild("VotingBegun"):FireAllClients(mapsToVote)

task.wait(voteTime)

local highestVotedFor = nil

local votes = {}
for i, map in pairs(mapsToVote) do
votes[ map.Name ] = 0

if i == 1 then
highestVotedFor = map.Name
end
end

for plr, vote in pairs(plrVotes) do
if votes[vote] then
votes[vote] += 1

if votes[highestVotedFor] < votes[vote] then
highestVotedFor = vote
end
end
end

res:WaitForChild("VotingEnded"):FireAllClients()

local newMap = loadMap(highestVotedFor)

handleRound()

removeMap(newMap)
end
2 ответа
Mansyr Hilmi Мастер (2373) 4 недели назад
читы - зло
xKeisasxПрофи (672) 4 недели назад
это не читы
Sergio 2.1 Оракул (67281) 4 недели назад
 local rs = game.ReplicatedStorage     
local maps = rs:WaitForChild("Maps")
local res = rs:WaitForChild("RemoteEvents")

local numMapsVoting = 3
local intermissionTime = 6
local voteTime = 11
local roundDuration = 21

local plrVotes = {}
local isRoundActive = false -- Добавляем флаг активности раунда

function addVote(plr:Player, mapName:string)
plrVotes[plr] = mapName
res:WaitForChild("Voted"):FireAllClients(plrVotes)
end

function removePlayerVote(plr:Player)
plrVotes[plr] = nil
res:WaitForChild("Voted"):FireAllClients(plrVotes)
end

function loadMap(mapName:string)
local newMap = maps[mapName]:Clone()
newMap.Parent = workspace

local spawns = newMap:WaitForChild("Spawns"):GetChildren()

for i, plr in pairs(game.Players:GetPlayers()) do
if plr.Character then
plr.Character.HumanoidRootPart.CFrame = (spawns[i] and spawns[i].CFrame or spawns[i-#spawns]) + Vector3.new(0, 10, 0)
end
end

return newMap
end

function removeMap(map:Instance)
map:Destroy()

for _, plr in pairs(game.Players:GetPlayers()) do
plr:LoadCharacter()
end
end

function handleRound()
local plrsAlive = {}
isRoundActive = true -- Устанавливаем флаг активного раунда

for _, plr in pairs(game.Players:GetPlayers()) do
if plr.Character and plr.Character.Humanoid.Health > 0 then
table.insert(plrsAlive, plr)

plr.Character.Humanoid.Died:Connect(function()
if isRoundActive then -- Проверяем, активен ли раунд
table.remove(plrsAlive, table.find(plrsAlive, plr))
end
end)
end
end

for i = 1, roundDuration do
task.wait(1)
if #plrsAlive == 0 then
break
end
end

isRoundActive = false -- Сбрасываем флаг активного раунда
end

res:WaitForChild("Voted").OnServerEvent:Connect(addVote)
game.Players.PlayerRemoving:Connect(removePlayerVote)

while true do
if not isRoundActive then -- Проверяем, не активен ли уже раунд
task.wait(intermissionTime)

local mapsToVote = maps:GetChildren()

while #mapsToVote > numMapsVoting do
table.remove(mapsToVote, math.random(1, #mapsToVote))
end

plrVotes = {}

res:WaitForChild("VotingBegun"):FireAllClients(mapsToVote)

task.wait(voteTime)

local highestV
xKeisasxПрофи (672) 4 недели назад
добавил в конце end end и заработало но после 11 секунд голосования ничего не происходит, никуда не тепает, проходит 6 секунд и голосование начинается заново
Похожие вопросы