Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

how to script buying cash for tycoons?

me and my friend are making a tycoon and we hat to add the ability to buy cash but we cant figer out how to link the cash we can get it so when we buy it the leaderbord value changes but not the actule curency so like if you buy 1k cash it will say you have it but when you try buy somting in they tycoon it dosnt let you and plays the not enough money sound
we are using (Twin's Tycoon Kit)

Linked leaderbord ``

local Settings = require(script.Parent.Settings)
script.Parent = game.ServerScriptService
stands = {}
CTF_mode = false

-- Don't touch this script unless you know what your doing
--This is for the leaderboard, and for you to keep track of people KOS, WOS, CASH, etc.

function onHumanoidDied(humanoid, player)
	local stats = player:findFirstChild("leaderstats")
	if stats ~= nil then
		local deaths = stats:findFirstChild(Settings.LeaderboardSettings.DeathsName)
		if deaths then
			deaths.Value = deaths.Value + 1
		end
		-- do short dance to try and find the killer
		if Settings.LeaderboardSettings.KOs then
			local killer = getKillerOfHumanoidIfStillInGame(humanoid)
			handleKillCount(humanoid, player)
		end
	end
end

function onPlayerRespawn(property, player)
	-- need to connect to new humanoid
	
	if property == "Character" and player.Character ~= nil then
		local humanoid = player.Character.Humanoid
		local p = player
		local h = humanoid
		if Settings.LeaderboardSettings.WOs then
			humanoid.Died:connect(function() onHumanoidDied(h, p) end )
		end
	end
end

function getKillerOfHumanoidIfStillInGame(humanoid)
	-- returns the player object that killed this humanoid
	-- returns nil if the killer is no longer in the game

	-- check for kill tag on humanoid - may be more than one - todo: deal with this
	local tag = humanoid:findFirstChild("creator")

	-- find player with name on tag
	if tag ~= nil then
		
		local killer = tag.Value
		if killer.Parent ~= nil then -- killer still in game
			return killer
		end
	end

	return nil
end

function handleKillCount(humanoid, player)
	local killer = getKillerOfHumanoidIfStillInGame(humanoid)
	if killer ~= nil then
		local stats = killer:findFirstChild("leaderstats")
		if stats ~= nil then
			local kills = stats:findFirstChild(Settings.LeaderboardSettings.KillsNames)
			if kills then
				if killer ~= player then
					kills.Value = kills.Value + 1	
				else
					kills.Value = kills.Value - 1
				end
			else
				return
			end
		end
	end
end






function findAllFlagStands(root)
	local c = root:children()
	for i=1,#c do
		if (c[i].className == "Model" or c[i].className == "Part") then
			findAllFlagStands(c[i])
		end
		if (c[i].className == "FlagStand") then
			table.insert(stands, c[i])
		end
	end
end

function hookUpListeners()
	for i=1,#stands do
		stands[i].FlagCaptured:connect(onCaptureScored)
	end
end

function onPlayerEntered(newPlayer)

	if CTF_mode == true then

		local stats = Instance.new("IntValue")
		stats.Name = "leaderstats"

		local captures = Instance.new("IntValue")
		captures.Name = "Captures"
		captures.Value = 0


		captures.Parent = stats


		while true do
			if newPlayer.Character ~= nil then break end
			wait(5)
		end

		stats.Parent = newPlayer

	else

		local stats = Instance.new("IntValue")
		stats.Name = "leaderstats"
		local kills = false
		if Settings.LeaderboardSettings.KOs then
			kills = Instance.new("IntValue")
			kills.Name = Settings.LeaderboardSettings.KillsName
			kills.Value = 0
		end
		local deaths = false
		if Settings.LeaderboardSettings.WOs then
			deaths = Instance.new("IntValue")
			deaths.Name = Settings.LeaderboardSettings.DeathsName
			deaths.Value = 0
		end
		
		local cash = false
		if Settings.LeaderboardSettings.ShowCurrency then
			cash = Instance.new("StringValue")
			cash.Name = Settings.CurrencyName
			cash.Value = 0
		end
		
		local PlayerStats = game.ServerStorage.PlayerMoney:FindFirstChild(newPlayer.Name)
		if PlayerStats ~= nil then
			if cash then
				local Short = Settings.LeaderboardSettings.ShowShortCurrency
				PlayerStats.Changed:connect(function()
					if (Short) then
						cash.Value = Settings:ConvertShort(PlayerStats.Value)
					else
						cash.Value = Settings:ConvertComma(PlayerStats.Value)
					end
				end)
			end
		end
		if kills then
		kills.Parent = stats
		end
		if deaths then
		deaths.Parent = stats
		end
		if cash then
		cash.Parent = stats
		end


		while true do
			if newPlayer.Character ~= nil then break end
			wait(5)
		end

		local humanoid = newPlayer.Character.Humanoid

		humanoid.Died:connect(function() onHumanoidDied(humanoid, newPlayer) end )

		-- start to listen for new humanoid
		newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end )


		stats.Parent = newPlayer

	end

end


function onCaptureScored(player)

		local ls = player:findFirstChild("leaderstats")
		if ls == nil then return end
		local caps = ls:findFirstChild("Captures")
		if caps == nil then return end
		caps.Value = caps.Value + 1

end


findAllFl**agStands(game.Workspace)
hookUpListeners()
if (#stands > 0) then CTF_mode = true end
game.Players.ChildAdded:connect(onPlayerEntered)

``

Scrpit

``

local MPS = game:GetService("MarketplaceService")

MPS.ProcessReceipt = function(receiptInfo)
	if receiptInfo.ProductId == 1160336765 then -- replace with your ID here
		local player = game.Players:GetPlayerByUserId(receiptInfo.PlayerId)
		player.LinkedLeaderboard.Cash.Value = player.leaderstats.Cash.Value + 1000
		return Enum.ProductPurchaseDecision.PurchaseGranted

	elseif receiptInfo.ProductId == 1160336765 then -- replace with your ID here
		local player = game.Players:GetPlayerByUserId(receiptInfo.PlayerId)
		player.leaderstats.Cash.Value = player.leaderstats.Cash.Value + 5000
		return Enum.ProductPurchaseDecision.PurchaseGranted
	end
end

`` LocalScript in (StarterGui (ScreeGui(Frame(Textbutton

MPS = game:GetService("MarketplaceService")
	id = 1160336765 -- replace with your ID
	local player = game.Players.LocalPlayer

	script.Parent.MouseButton1Click:connect(function()
		MPS:PromptProductPurchase(player, id)
	end)

also the linked leaderbourd is in the tycoon kit modle so i put my script in there to i would provid pics and clips but i cant provid it on this sight would apreciat any help (very new to porgraming /scripting) also sorry for speling and gramer mistakes im dislexic

1 comment

0

Pretty sure that 'Twin's tycoon kit' uses some sort of status that stores the currency and auto converts currency value to leaderstats. (But obviously it doesn't automaticly convert back) This will prevent some hacks but also cost trouble. Try finding where the kit stores the money. Try checking scripts in buttons.

2 answers

I'm not sure how exactly Twin's tycoon kit works, but you'd have to see where that they're storing the cash. Try having a look in the scripts for the buy buttons/money collector

Try using

players.LocalPlayer.leaderstats.Cash.Value = players.LocalPlayer.leaderstats.Cash.Value + 5000 

instead of what you used

local player = game.Players:GetPlayerByUserId(receiptInfo.PlayerId)player.leaderstats.Cash.Value = player.leaderstats.Cash.Value + 5000

Not sure if this works but maybe try it and also try printing the player and see what is the output

This discussion is preserved as it was. New answers, comments, and votes are closed.