I'm making a game and one of the aspects in it is you can buy a house for 1000 "Cash" and I have a cash debug in the game to give me cash. If i set my Cash to above 1500 (starting cash) it always sets it to 500 instead of (for example) 501
EDIT I think the cash is not server side, I'll test this theory
local houseprice = 1000 -- The price of the house script.Parent.Touched:connect(function(part) if part.Parent:FindFirstChild("Humanoid") then if game.Players:FindFirstChild(part.Parent.Name).leaderstats["Cash"].Value >= houseprice then-- Cash is my currency. Change it to your currency name. if not game.Workspace:FindFirstChild(part.Parent.Name.."'s House") then -- Finds if the player has an existing house. if script.Parent.Parent.Parent.Owner.Value == "" then -- Make sure this house has no owner. game.Players:FindFirstChild(part.Parent.Name).leaderstats["Cash"].Value = game.Players:FindFirstChild(part.Parent.Name).leaderstats["Cash"].Value - houseprice * 1 -- Deducts the cost of the house to the player's cash script.Parent.Parent.Parent.Owner.Value = part.Parent.Name -- We change the "Owner" stringvalue to the name of the player who bought the house. script.Parent.Parent.Name = part.Parent.Name.."'s House" -- Change the "Buy this house!" to the name of the owner script.Parent.Parent.Parent.Name = part.Parent.Name.."'s House" -- Change the house name to the owner's name to make it easy to find when the player left end end end end end)
Instead of doing
game.Players:FindFirstChild(part.Parent.Name).leaderstats["Cash"].Value = game.Players:FindFirstChild(part.Parent.Name).leaderstats["Cash"].Value - houseprice * 1
You should use the new Luau syntax -=
which sets that object to itself minus the argument afterwards, as so:
local A = 5 local B = 2 A -= B print(A)--3 A = A - B print(A) -- 3 as well, assuming you only have one or the other
Your code would be:
game.Players:FindFirstChild(part.Parent.Name).leaderstats["Cash"].Value -= houseprice * 1