How to have multiple part collectors in tycoon

Hey guys was wondering in anyone could help me with something, its similar to deep space tycoon and in that game there is different planets with different collector parts which the drop parts (ores) touch then you get money, how do i make a few part collectors work?

(The part collector is the part where the ore touches then gets processed and turns into money on cash collector)

Please get back to me if you understand.

Thank You!!

3 Likes

Why can’t you just copy and paste the same script, into the new cash collector, That would work.

I do not understand you, im a newbie at scripting lol im only good at building, please could you explain further for me sir.

Do you even have a script made for the first cash collector?

yes i have a script for the first one.

Ok, just copy and paste that script into the new cash collector, and there you go.

1 Like

it does not work, have you used zed’s tycoon kit because that is what im using.

should just be able to copy the parts and set it as a new purchaseable item, worked for me before

just do this https://gyazo.com/6ef5b3f2f5cfa28439ee78fe6eaec507

1 Like

could you explain more sir. please

it does not work still the ores dont get processed

Listen, this isnt even scripting. This is just copy and pasting a part collector somewhere else

but its not working i did what you showed and it does not work.

ok new video
https://gyazo.com/bbb3f2d46333fe4792ef548fbc33ae09

1 Like

That Way Wont work Only one of them will work the other one not To let it work

is you have to Make 2 parts like in the video but name the other one Partcollector2 After that

go to the tycoon PurcheseHandler Open the script than you see

somewhere above in the script

for i,v in pairs(script.Parent.Essentials:GetChildren()) do
if v.Name == “PartCollector2” then
v.Touched:connect(function(Part)
if Part:FindFirstChild(‘Cash’) then
Money.Value = Money.Value + Part.Cash.Value
Debris:AddItem(Part,0.1)
end
end)
end
end

Copy that and paste it under that text that you get this

for i,v in pairs(script.Parent.Essentials:GetChildren()) do
if v.Name == “PartCollector2” then
v.Touched:connect(function(Part)
if Part:FindFirstChild(‘Cash’) then
Money.Value = Money.Value + Part.Cash.Value
Debris:AddItem(Part,0.1)
end
end)
end
end

for i,v in pairs(script.Parent.Essentials:GetChildren()) do
if v.Name == “PartCollector2” then
v.Touched:connect(function(Part)
if Part:FindFirstChild(‘Cash’) then
Money.Value = Money.Value + Part.Cash.Value
Debris:AddItem(Part,0.1)
end
end)
end
end

After you did that just rename the one of them to Partcollector2 after t wil work

if it dont work

Rename one of the partcollectors to PartCollector2

Than Copy paste this in PurchaseHandler

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:Play()
		delay(Sound.TimeLength, function()
			Sound:Destroy()
		end)
	end
end

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
Money.Value = Money.Value + Part.Cash.Value
Debris:AddItem(Part,0.1)
end
end)
end
end

for i,v in pairs(script.Parent.Essentials:GetChildren()) do
if v.Name == “PartCollector2” then
v.Touched:connect(function(Part)
if Part:FindFirstChild(‘Cash’) then
Money.Value = Money.Value + Part.Cash.Value
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("Really 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("Lime 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
			v.Head.CanCollide = false
			v.Head.Transparency = 1
			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)
							v.Head.Transparency = v.Head.Transparency - 0.05
						end
					end
					v.Head.CanCollide = true
					v.Head.Transparency = 0
				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'):UserOwnsGamePassAsync(player.UserId, 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
function Purchase(tbl)
local cost = tbl[1]
local item = tbl[2]
local stats = tbl[3]
stats.Value = stats.Value - cost
Objects[item.Object.Value].Parent = script.Parent.PurchasedObjects
if Settings[‘ButtonsFadeOut’] then
item.Head.CanCollide = false
coroutine.resume(coroutine.create(function()
for i=1,20 do
wait(Settings[‘FadeOutTime’]/20)
item.Head.Transparency = item.Head.Transparency + 0.05
end
end))
else
item.Head.CanCollide = false
item.Head.Transparency = 1
end
end

function Create(tab)
	local x = Instance.new('Model')
	Instance.new('NumberValue',x).Value = tab[1]
	x.Value.Name = "Cost"
	Instance.new('ObjectValue',x).Value = tab[2]
	x.Value.Name = "Button"
	local Obj = Instance.new('ObjectValue',x)
	Obj.Name = "Stats"
	Obj.Value = tab[3]
	x.Parent = script.Parent.BuyObject
end

--// This was very rushed and is inefficent; if you plan on making something like this don't use a child added listener.
script.Parent:WaitForChild('BuyObject').ChildAdded:connect(function(child)
	local tab = {}
	tab[1] = child.Cost.Value
	tab[2] = child.Button.Value
	tab[3] = child.Stats.Value
	Purchase(tab)
	wait(10)
	child:Destroy()
end)

if it dont work contact me than here hope it works