This script is having a glitch? I designed it to load a tycoons data when is has data, It loads until it get's to a certain item? then it says: 08:16:19.311 - Workspace.Zednov's Tycoon Kit.Tycoons.Blue Food Tycoon.PurchaseHandler:273: attempt to index field '?' (a nil value)
Can you help me?
--[[
All configurations are located in the "Settings" Module script.
Please don't edit this script unless you know what you're doing.
--]]
local gp = game:GetService("GamePassService")
local id = 780368541
local Objects = {}
local TeamColor = script.Parent.TeamColor.Value
local Settings = require(script.Parent.Parent.Parent.Settings)
local Money = script.Parent.CurrencyToCollect
local Debris = game:GetService('Debris')
local Stealing = Settings.StealSettings
local CanSteal = true -- don't change or else you won't be able to steal currency
script.Parent.Essentials.Spawn.TeamColor = TeamColor
script.Parent.Essentials.Spawn.BrickColor = TeamColor
function Sound(part,id)
if part:FindFirstChild('Sound') then
return
else
local Sound = Instance.new('Sound',part)
Sound.SoundId = "rbxassetid://"..tostring(id)
Sound.Volume = 0.25
Sound:Play()
delay(Sound.TimeLength, function()
Sound:Destroy()
end)
end
end
--Parts that fall into the collector(s) get processed
for i,v in pairs(script.Parent.Essentials:GetChildren()) do
if v.Name == "PartCollector" then
v.Touched:connect(function(Part)
if Part:FindFirstChild('Cash') then
if script.Parent.QuickCash.Value == true then
local stats = game.ServerStorage.PlayerMoney:FindFirstChild(script.Parent.OwnerName.Value)
stats.Value = stats.Value + Part.Cash.Value
else
Money.Value = Money.Value + Part.Cash.Value
end
Debris:AddItem(Part,0.1)
end
end)
end
end
--Player Touched Collector processor
deb = false
script.Parent.Essentials.Giver.Touched:connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player ~= nil then
if script.Parent.Owner.Value == player then
if hit.Parent:FindFirstChild("Humanoid") then
if hit.Parent.Humanoid.Health > 0 then
if deb == false then
deb = true
script.Parent.Essentials.Giver.BrickColor = BrickColor.new("Bright red")
local Stats = game.ServerStorage.PlayerMoney:FindFirstChild(player.Name)
if Stats ~= nil then
Sound(script.Parent.Essentials, Settings.Sounds.Collect)
Stats.Value = Stats.Value + Money.Value
Money.Value = 0
wait(1)
script.Parent.Essentials.Giver.BrickColor = BrickColor.new("Sea green")
deb = false
end
end
end
end
elseif Stealing.Stealing then -- if player isn't owner and stealing is on
if CanSteal == true then
CanSteal = false
delay(Stealing.PlayerProtection, function()
CanSteal = true
end)
if hit.Parent:FindFirstChild("Humanoid") then
if hit.Parent.Humanoid.Health > 0 then
local Stats = game.ServerStorage.PlayerMoney:FindFirstChild(player.Name)
if Stats ~= nil then
local Difference = math.floor(Money.Value * Stealing.StealPrecent)
Sound(script.Parent.Essentials, Settings.Sounds.Collect)
Stats.Value = Stats.Value + Difference
Money.Value = Money.Value - Difference
end
end
end
else
Sound(script.Parent.Essentials, Settings.Sounds.Error)
end
end
end
end)
script.Parent:WaitForChild("Buttons")
for i,v in pairs(script.Parent.Buttons:GetChildren()) do
spawn(function()
if v:FindFirstChild("Head") then
local ThingMade = script.Parent.Purchases:WaitForChild(v.Object.Value)
if ThingMade ~= nil then
Objects[ThingMade.Name] = ThingMade:Clone()
ThingMade:Destroy()
else
--//Button doesn't have object, remove it
error('Object missing for button: '..v.Name..', button has been removed')
v.Head.CanCollide = false
v.Head.Transparency = 1
end
if v:FindFirstChild("Dependency") then --// if button needs something unlocked before it pops up
for i,c in pairs(v:GetChildren()) do
if c:FindFirstChild("NamingGui") then
c.NamingGui.Frame.Visible = false
end
if c:IsA("Part") then
c.CanCollide = false
c.Transparency = 1
end
end
coroutine.resume(coroutine.create(function()
if script.Parent.PurchasedObjects:WaitForChild(v.Dependency.Value) then
if Settings['ButtonsFadeIn'] then
for i=1,20 do
wait(Settings['FadeInTime']/20)
for i,c in pairs(v:GetChildren()) do
if c:IsA("Part") then
if c.Name ~= "Head" then
c.Transparency = c.Transparency - 0.05
end
end
end
end
end
for i,c in pairs(v:GetChildren()) do
if c:FindFirstChild("NamingGui") then
c.NamingGui.Frame.Visible = true
end
if c:IsA("Part") then
c.CanCollide = true
if c.Name == "Head" then
c.Transparency = 1
else
c.Transparency = 0
end
end
end
end
end))
end
v.Head.Touched:connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if v.Head.CanCollide == true then
if player ~= nil then
if script.Parent.Owner.Value == player then
if hit.Parent:FindFirstChild("Humanoid") then
if hit.Parent.Humanoid.Health > 0 then
local PlayerStats = game.ServerStorage.PlayerMoney:FindFirstChild(player.Name)
if PlayerStats ~= nil then
if (v:FindFirstChild('Gamepass')) and (v.Gamepass.Value >= 1) then
if game:GetService("MarketplaceService"):PlayerOwnsAsset(player,v.Gamepass.Value) then
Purchase({[1] = v.Price.Value,[2] = v,[3] = PlayerStats})
else
game:GetService('MarketplaceService'):PromptPurchase(player,v.Gamepass.Value)
end
elseif (v:FindFirstChild('DevProduct')) and (v.DevProduct.Value >= 1) then
game:GetService('MarketplaceService'):PromptProductPurchase(player,v.DevProduct.Value)
elseif PlayerStats.Value >= v.Price.Value then
Purchase({[1] = v.Price.Value,[2] = v,[3] = PlayerStats})
Sound(v, Settings.Sounds.Purchase)
else
Sound(v, Settings.Sounds.ErrorBuy)
end
end
end
end
end
end
end
end)
end
end)
end
--// Loads Players Tycoon Data
script.Parent.Entrance["Touch to claim!"].Head.Touched:connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player ~= nil then
local PlayerStats = game.ServerStorage.PlayerMoney:FindFirstChild(player.Name)
if PlayerStats ~= nil then
local ownstycoon = PlayerStats:FindFirstChild("OwnsTycoon")
if ownstycoon ~= nil then
if ownstycoon.Value == nil then
if script.Parent.Owner.Value == nil then
if hit.Parent:FindFirstChild("Humanoid") then
if hit.Parent.Humanoid.Health > 0 then
if not player.PlayerGui:FindFirstChild("Gui") then
--Gui Script
local gui = script.Gui:Clone()
gui.Parent = player.PlayerGui
gui.Frame.Load.MouseButton1Down:connect(function()
for i,v in pairs(player.TycoonData:GetChildren()) do
if player.TycoonData.Mine.Value == false then
gui.Frame.Load.Text = "No Data Found"
wait(1)
gui.Frame.Load.Text = "Load Tycoon"
else
local chills = player.TycoonData:GetChildren()
for i = 1,#chills do
wait(0.1)
if chills[i].Value == true then
local item = Objects[chills[i].Name]:Clone()
if item ~= nil then
item.Parent = script.Parent.PurchasedObjects
else
print(item.Name.." is Nil")
item:remove()
end
end
local buttons = script.Parent.Buttons:GetChildren()
for i = 1,#buttons do
wait()
if player.TycoonData:FindFirstChild(buttons[i].Object.Value) then
for i,v in pairs(buttons[i]:GetChildren()) do
if v:IsA("Part") then
v.Transparency = 1
v.CanCollide = false
end
if v:FindFirstChild("NamingGui") then
v.NamingGui.Frame.Visible = false
end
end
end
end
end
end
end
--Gui Script
end)
end
end
end
end
end
end
end
end

2 comments
Why did it mix my code up :O
What tycoon kit is this from