Yeah I did that too. I change the ID and amount to the same as before .
whats in the local script for the button
MPS = game:GetService("MarketplaceService")
id = 1563193650
local player = game.Players.LocalPlayer
-- create a remote function
local cashUpdater = game.ReplicatedStorage:WaitForChild("CashUpdater")
script.Parent.MouseButton1Click:connect(function()
MPS:PromptProductPurchase(player, id)
-- fire the remote function after the purchase
cashUpdater:FireServer(100000)
end)
-- on the server-side, create the server script that listens for the remote function and updates the player's cash
local cashUpdater = game.ReplicatedStorage:WaitForChild("CashUpdater")
cashUpdater.OnServerEvent:Connect(function(player, amount)
-- update the player's cash
player.leaderstat.Cash.Value = player.leaderstat.Cash.Value + amount
end)
change that to
local MPS = game:GetService("MarketplaceService")
id = your id
local player = game.Players.LocalPlayer
script.Parent.MouseButton1Click:Connect(function()
MPS:PromptProductPurchase(player, id)
end)
Same results, Still does not give me any cash after the purchase.
can u send me the output when u click it because it works on my end
and send me the script you use to add the leaderstats
The output only sent me this
14:47:57.667 OnServerEvent is not a valid member of RemoteFunction “ReplicatedStorage.CashUpdater”
and this is the leaderstats full script (inside tycoon)
local Settings = require(script.Parent.Settings)
script.Parent = game.ServerScriptService
stands = {}
CTF_mode = false
function onHumanoidDied(humanoid, player)
local stats = player:findFirstChild("leaderstat")
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("leaderstat")
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 = "leaderstat"
local captures = Instance.new("IntValue")
captures.Name = "Captures"
captures.Value = 0
captures.Parent = stats
-- VERY UGLY HACK
-- Will this leak threads?
-- Is the problem even what I think it is (player arrived before character)?
while true do
if newPlayer.Character ~= nil then break end
wait(5)
end
stats.Parent = newPlayer
else
local stats = Instance.new("Folder")
stats.Name = "leaderstat"
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
-- VERY UGLY HACK
-- Will this leak threads?
-- Is the problem even what I think it is (player arrived before character)?
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("leaderstat")
if ls == nil then return end
local caps = ls:findFirstChild("Captures")
if caps == nil then return end
caps.Value = caps.Value + 1
end
findAllFlagStands(game.Workspace)
hookUpListeners()
if (#stands > 0) then CTF_mode = true end
game.Players.ChildAdded:connect(onPlayerEntered)
Try changing it to cash = Instance.new("IntValue")
and cash.Name = "Cash"
idk if that will break anything
I Believe it would break the script considering past experience when I was making the Cash GUI. A lot of things in the tycoon depended on the currencyName.
However, I found that this script that the AI chat has provided me is somewhat close to working.
MPS = game:GetService("MarketplaceService")
id = 1563194652
local player = game.Players.LocalPlayer
script.Parent.MouseButton1Click:connect(function()
MPS:PromptProductPurchase(player, id)
-- give cash to the local player after the purchase
-- replace "100" with the amount you want to give
player.leaderstat.Cash.Value = player.leaderstat.Cash.Value .. "+25000"
end)
It add a value in the Cash (Not the kind I want).
But it actives when i just click on the button, not after the purchase and the value isnt matching with the cash.
that only changes the cash on the client, not the server
Hmmm…
If the cash that you buy, have to be used in the tycon, try this instead of the leaderstats:
local plrMoney = game.ServerStorage.PlayerMoney:FindFirstChild(player.Name)
plr.Value = plr.Value + <Amount to give>
Does this work?
MUST BE IN SERVER SCRIPT, NOT LOCAL!
Whole script:
local marketplace = game:GetService("MarketplaceService")
local id = 0 --Enter ID
script.Parent.MouseButton1Click:Connect(function(player)
marketplace:PromptProductPurchase(player,id)
Player = player
end)
marketplace.ProcessReceipt = function(receiptInfo)
if receiptInfo.ProductId == id then
local plrMoney = game.ServerStorage.PlayerMoney:FindFirstChild(Player.Name)
plrMoney.Value = plrMoney.Value + <Amount to give>
end
end
SERVER SCRIPT!