local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ToadClass = require(script.Parent.Toad)
local ToadManager = {}
local playerToads = {}
function ToadManager.GetToads(player)
return playerToads[player] or {}
end
function ToadManager.GiveToad(player, templateName)
local character = player.Character
if not character or not character.PrimaryPart then
warn("Нельзя выдать жабу — персонаж не готов:", player.Name)
return nil
end
local templatesFolder = ReplicatedStorage:FindFirstChild("ToadTemplates")
if not templatesFolder then
warn("Нет папки ReplicatedStorage.ToadTemplates")
return nil
end
local template = templatesFolder:FindFirstChild(templateName)
if not template then
warn("Не найден шаблон жабы:", templateName)
return nil
end
local model = template:Clone()
model.Parent = workspace
local spawnPos = character.PrimaryPart.Position + Vector3.new(math.random(-3,3), 0, math.random(-3,3))
model:PivotTo(CFrame.new(spawnPos))
if not playerToads[player] then
playerToads[player] = {}
end
local slotIndex = #playerToads[player] + 1
local toad = ToadClass.new(model, character, slotIndex)
table.insert(playerToads[player], toad)
return toad
end
function ToadManager.ClearToads(player)
local list = playerToads[player]
if not list then return end
for _, toad in ipairs(list) do
toad:Destroy()
end
playerToads[player] = nil
end
function ToadManager.UpdateAll()
for player, list in pairs(playerToads) do
for i = #list, 1, -1 do
local toad = list[i]
if not toad.model or not toad.model.Parent then
table.remove(list, i)
else
toad:Update()
end
end
end
end
return ToadManager