You can write your topic however you want, but you need to answer these questions:
- What do you want to achieve? Keep it simple and clear!
I want to know how to fix this error, it’s so annoying and it’s breaking my game.
- What is the issue? Include screenshots / videos if possible!
why is the server not detecting the remote function?
- What solutions have you tried so far? Did you look for solutions on the Developer Hub?
I tried adding a wait, but it doesn’t work, I checked the name and everything.
After that, you should include more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!
local mps = game:GetService("MarketplaceService")
local DataStore = game:GetService("DataStoreService")
local PlayerData = DataStore:GetDataStore("Data_1")
local function LoadData(plr,Money,Coins,ItemEquipped)
local Data = PlayerData:GetAsync(plr.UserId)
if Data then
Money.Value = 0
Coins.Value = Data.Stats.Coins
ItemEquipped.Value = tostring(Data.Stats.Item)
for _,ItemStored in pairs(Data.Items)do
if not plr.Items:FindFirstChild(ItemStored) then
local Item = Instance.new("BoolValue")
Item.Name = ItemStored
Item.Parent = plr.Items
end
end
end
local Item = game.ServerStorage.Items:WaitForChild(ItemEquipped.Value)
Item:Clone().Parent = plr.Backpack
Item:Clone().Parent = plr.StarterGear
end
local function SaveData(plr)
local Data = {
Stats = {
Money = plr.leaderstats.Money.Value ;
Coins = plr.leaderstats.Coins.Value ;
Item = plr.ItemEquipped.Value ;
};
Items = {};
Pets = {};
}
for _,Item in pairs(plr.Items:GetChildren())do
table.insert(Data.Items,Item.Name)
end
PlayerData:SetAsync(plr.UserId,Data)
end
game.Players.PlayerAdded:Connect(function(plr)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = plr
local Money = Instance.new("NumberValue")
Money.Name = "Money"
Money.Value = 0
local WorldBoost = Instance.new("NumberValue")
WorldBoost.Name = "WorldBoost"
WorldBoost.Value = 1
WorldBoost.Parent = plr
local Coins = Instance.new("NumberValue")
Coins.Name = "Coins"
Coins.Value = 0
Coins.Parent = leaderstats
local Items = Instance.new("Folder")
Items.Name = "Items"
Items.Parent = plr
local StarterItem = Instance.new("BoolValue")
StarterItem.Name = "Bronze Coin"
StarterItem.Parent = Items
local Cooldown = Instance.new("BoolValue")
Cooldown.Name = "Cooldown"
Cooldown.Value = false
Cooldown.Parent = plr
local ItemEquipped = Instance.new("StringValue")
ItemEquipped.Name = "ItemEquipped"
ItemEquipped.Value = "Bronze Coin"
ItemEquipped.Parent = plr
LoadData(plr,Money,Coins,ItemEquipped)
end)
game.Players.PlayerRemoving:Connect(function(plr)
SaveData(plr)
end)
wait(5)
game.ReplicatedStorage.RemoteEvents.Give.OnServerEvent:Connect(function(plr,tool)
if plr.Cooldown.Value == false then
if plr.Items:FindFirstChild(tool.Name) then
plr.Cooldown.Value = true
local MoneyBoost = 0
local CoinsBoost = 0
local CoinMultiplier = 1
local MoneyMultiplier = 1
if mps:UserOwnsGamePassAsync(plr.UserId,6411826) then MoneyMultiplier = 2 end
if mps:UserOwnsGamePassAsync(plr.UserId,6411823) then CoinMultiplier = 2 end
plr.leaderstats.Money.Value = plr.leaderstats.Money.Value + tool.Configure.Money.Value + MoneyBoost * MoneyMultiplier
plr.leaderstats.Coins.Value = plr.leaderstats.Coins.Value + tool.Configure.Coins.Value + CoinsBoost * CoinMultiplier
game.ReplicatedStorage.RemoteEvents.PopUp:FireClient(plr,"Money",tool.Configure.Money.Value + MoneyBoost * MoneyMultiplier)
wait(1)
plr.Cooldown.Value = false
end
end
end)
game.ReplicatedStorage.RemoteEvents.Buy.OnServerEvent:Connect(function(plr,tool)
if tool:FindFirstChild("Configure") then
local Configure = tool:FindFirstChild("Configure")
if not plr.Items:FindFirstChild(Configure.Item.Value) then
if plr.leaderstats.Coins.Value >= Configure.Price.Value then
plr.leaderstats.Coins.Value = plr.leaderstats.Coins.Value - Configure.Price.Value
local Item = Instance.new("BoolValue")
Item.Name = Configure.Item.Value
Item.Parent = plr.Items
end
end
end
end)
game.ReplicatedStorage.RemoteEvents.EquipItem.OnServerEvent:Connect(function(plr,Item)
if Item:FindFirstChild("Configure") then
local Configure = Item:FindFirstChild("Configure")
if plr.Items:FindFirstChild(Configure.Item.Value) then
local Price = Configure.Price
if plr.leaderstats.Coins.Value >= Price.Value then
local Item = game.ServerStorage.Items:FindFirstChild(Configure.Item.Value)
Item:Clone().Parent = plr.Backpack
plr.ItemEquipped.Value = Configure.Item.Value
end
end
end
end)
game.ReplicatedStorage.RemoteEvents.DeleteItem.OnServerEvent:Connect(function(plr,Item)
for i, v in pairs(plr.Backpack:GetChildren()) do
v:Destroy()
end
local char = plr.Character or plr.CharacterAdded:Wait()
for i, v in pairs(char:GetChildren()) do
if v:IsA("Tool") then
v:Destroy()
end
end
end)
game.ReplicatedStorage.RemoteFunction.CheckIfBought = function(tool, plr) -- Problem
if tool:FindFirstChild("Configure") then
local Configure = tool:FindFirstChild("Configure")
if not plr.Items:FindFirstChild(Configure.Item.Value) then
return false
else
return true
end
end
end
game.ReplicatedStorage.RemoteFunction.CanBuy = function(tool, plr) -- this might also be a problem
if tool:FindFirstChild("Configure") then
local Configure = tool:FindFirstChild("Configure")
if not plr.Items:FindFirstChild(Configure.Item.Value) then
if plr.leaderstats.Coins.Value >= Configure.Price.Value then
return true
else
return false
end
else
return "player already has item"
end
end
end
mps.ProcessReceipt = function(Info)
local plr = game.Players:GetPlayerByUserId(Info.PlayerId)
if Info.ProductId == 539034514 then
plr.leaderstats.Coins.Value = plr.leaderstats.Coins.Value + 1000
game.ReplicatedStorage.RemoteEvents.PopUp:FireClient(plr,"Coins",1000)
elseif Info.ProductId == 539034640 then
plr.leaderstats.Coins.Value = plr.leaderstats.Coins.Value + 10000
game.ReplicatedStorage.RemoteEvents.PopUp:FireClient(plr,"Coins",10000)
elseif Info.ProductId == 539034838 then
plr.leaderstats.Coins.Value = plr.leaderstats.Coins.Value + 100000
game.ReplicatedStorage.RemoteEvents.PopUp:FireClient(plr,"Coins",100000)
elseif Info.ProductId == 539034991 then
plr.leaderstats.Coins.Value = plr.leaderstats.Coins.Value + 1000000
game.ReplicatedStorage.RemoteEvents.PopUp:FireClient(plr,"Coins",1000000)
end
return Enum.ProductPurchaseDecision.PurchaseGranted
end
Please do not ask people to write entire scripts or design entire systems for you. If you can’t answer the three questions above, you should probably pick a different category.