Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Tycoon "PartStorage" deletes on server initation?

Asked by 2 years ago

I am developing a basic tycoon game, which requires the existence of a "PartStorage" for the parts to be stored in until collection. This worked perfectly find for the first few days of development, however once I copied and created 4 tycoons (instead of just having the one I was working on) the partstorage began not working, instead deleting itself. Anyone who knows something about tycoon scripts, any help would be appreciated.

local Tycoons = {}
local Teams = game:GetService('Teams')
local Settings = require(script.Parent.Settings)
local BC = BrickColor
local Storage = Instance.new('Folder', game.ServerStorage)
Storage.Name = "PlayerMoney"
Instance.new('Model', workspace).Name = "PartStorage" 

function returnColorTaken(color)
    for i,v in pairs(Teams:GetChildren()) do
        if v:IsA('Team') then
            if v.TeamColor == color then
                return true
            end
        end
    end
    return false
end
--run this first so if there is a 'white' team it is switched over
if not Settings['AutoAssignTeams'] then
    local teamHire = Instance.new('Team', Teams)
    teamHire.TeamColor = BC.new('White')
    teamHire.Name = "For Hire"
end

for i,v in pairs(script.Parent:WaitForChild('Tycoons'):GetChildren()) do
    Tycoons[v.Name] = v:Clone() -- Store the tycoons then make teams depending on the tycoon names
    if returnColorTaken(v.TeamColor) then
        --//Handle duplicate team colors
        local newColor;
        repeat
            wait()
            newColor = BC.Random()
        until returnColorTaken(newColor) == false
        v.TeamColor.Value = newColor
    end
    --Now that there are for sure no duplicates, make your teams
    local NewTeam = Instance.new('Team',Teams)
    NewTeam.Name = v.Name
    NewTeam.TeamColor = v.TeamColor.Value
    if not Settings['AutoAssignTeams'] then
        NewTeam.AutoAssignable = false
    end
    v.PurchaseHandler.Disabled = false
end

function getPlrTycoon(player)
    for i,v in pairs(script.Parent.Tycoons:GetChildren()) do
        if v:IsA("Model") then
            if v.Owner.Value == player then
                return v
            end
        end
    end
    return nil
end

Answer this question