function DataHandler(p,o,key) delay(0,function () local types = { IntValue = "Number"; NumberValue = "Number"; ObjectValue = "Instance"; BoolValue = "Boolean"; StringValue="String"; } local t = types[o.ClassName] if (not t) then return end key = (type(key) == "string" and key or o.Name) -- If it's a string, keep it the same, ELSE change it to the object's name. Allows 'key' to be an optional argument. key = (#key > 0 and key or key.Name == o.Name and o.ClassName or o.Name) -- If length of string is greater than 0, keep it the same if (not p.DataReady) then -- ELSE if it is equal to the object's name then that means that the p:WaitForDataReady() -- object's name is blank, therefore make 'key' the ClassName. end -- ELSE make it the name of the object. local Save,Load = p[("Save%s"):format(t)],p[("Load%s"):format(t)] -- Steal the load and save functions from the player o.Value = Load(p,key) -- The same as p:LoadTYPE(key). Since it's no longer a method, the player must be the first argument local lastV = o.Value o.Changed:connect(function(v) lastV = v Delay(1,function() -- Give a 1 second buffer to see if the value changes anymore. If so, stop the operation. If it goes 1 second without changing, it will automatically save. if (lastV ~= v) then return end -- This way you don't save a value 20 times in 1 second if it changes constantly. Lower data processing = less lag Save(p,key,v) end) end) end) end function onEnter(player) d = Instance.new("BoolValue",player) d.Name = "Dead" d.Value = true a = Instance.new("BoolValue",player) a.Name = "Viewing" a.Value = true z = Instance.new("BoolValue",player) z.Name = "AllowWelcome" z.Value = true za = Instance.new("BoolValue",player) za.Name = "Pipebomb" za.Value = false DataHandler(player,za,"Pipebomb") z = Instance.new("BoolValue",player) z.Name = "Sniper" if game:GetService("BadgeService"):UserHasBadge(player.userId,78341161) then z.Value = true else z.Value = false end z = Instance.new("BoolValue",player) z.Parent = player z.Value = true z.Name = "AllowWelcome" i = Instance.new("IntValue",player) i.Parent = player i.Name = "leaderstats" i.Value = 0 p = Instance.new("IntValue",player) p.Parent = i p.Name = "" o = Instance.new("StringValue",player) o.Parent = player o.Value = "Red" o.Name = "ChatColor" DataHandler(player,o,"ChatColor") t = Instance.new("IntValue",player) t.Parent = i t.Name = "" r = Instance.new("IntValue",player) r.Parent = i r.Name = "" deaths = Instance.new("NumberValue",player) deaths.Parent = player deaths.Name = "Deaths" DataHandler(player,deaths,"Deaths") kills = Instance.new("NumberValue",player) kills.Parent = player kills.Name = "Kills" DataHandler(player,kills,"kills") derp = Instance.new("BoolValue",player) derp.Parent = player derp.Name = "Bucket" DataHandler(player,derp,"Bucket") s = script.Spawn:Clone() s.name.Value = player.Name s.Disabled = false s.Parent = workspace s.Name = player.Name.."'s SpawnOperator" end function onLeave(player) if player == game.Workspace.PurchasedKiller.Value then game.Workspace.PurchasedKiller.Value = nil game.Workspace.EnableKillerPurchase.Value = true end end local online = game:findFirstChild("NetworkServer") wait(1) if not online then wait(2) onEnter(game.Players.Player) else game.Players.PlayerAdded:connect(onEnter) game.Players.PlayerRemoving:connect(onLeave) end
There is no child of Players named Player. If this is in offline mode, most likely the player will be named Player1.