Heya! i’m trying to make a system where you press a button. And depending on which one you press it will add a value to another value. But its using a module script. I keep getting these errors:
No Boost or info
and
ServerScriptService.Extra.PotionMerchant:10: attempt to index nil with Instance
SevrerStorage Module:
local MerchantHandler = {}
function MerchantHandler.GetItems(player)
local LeaderstatsFolder = player:WaitForChild("leaderstats")
local BoostsFolder = player:WaitForChild("Boosts")
local Items = {
["Potion1"] = {Potion = BoostsFolder["Gem Potion"].Value, Time = 30, Image = "rbxassetid://15434984615", Title = "Gem Potion", MaxPurchase = 1, Purchased = 0, Price = 12, Currency = LeaderstatsFolder:WaitForChild("Taps")},
["Potion2"] = {Potion = BoostsFolder["Super Lucky"].Value, Time = 60, Image = "rbxassetid://15434984615", Title = "Super Luck Potion", MaxPurchase = 2, Purchased = 0, Price = 24, Currency = LeaderstatsFolder:WaitForChild("Taps")},
["Potion3"] = {Potion = BoostsFolder["Extra Lucky"].Value, Time = 90, Image = "rbxassetid://15434984615", Title = "Luck Potion", MaxPurchase = 3, Purchased = 0, Price = 36, Currency = LeaderstatsFolder:WaitForChild("Taps")},
}
return Items
end
return MerchantHandler
ServerScript
local mod = require(game:GetService("ServerStorage").MerchantHandler)
local Remote = game:GetService("ReplicatedStorage"):FindFirstChild("Merchant").PotionPurchase
Remote.OnServerEvent:Connect(function(Player, purchaseThis)
local Items = mod.GetItems(Player)
local statsValue = Player:WaitForChild("Boosts"):FindFirstChild(purchaseThis)
local info = Items[purchaseThis]
if not statsValue or not info then warn("No Boost or info") end
local price = info[purchaseThis].Price
local currency = Player:WaitForChild("leaderstats"):FindFirstChild(info[purchaseThis].Currency.Value)
if currency >= price then
currency -= price
statsValue.Value += info[purchaseThis].Time
end
end)
ReplicatedStorage Module
local MerchantHandler = {}
local Player = game:GetService("Players").LocalPlayer
local LeaderstatsFolder = Player:WaitForChild("leaderstats")
local BoostsFolder = Player:WaitForChild("Boosts")
MerchantHandler.PotionPurchaseCooldown = 3600 -- (3600 = 1 Hour), (86400 = 1 Day)
MerchantHandler.Items = {
["Potion1"] = {Potion = BoostsFolder["Gem Potion"].Value, Time = 30, Image = "rbxassetid://15434984615", Title = "Gem Potion", MaxPurchase = 1, Purchased = 0, Price = 12, Currency = LeaderstatsFolder:WaitForChild("Taps")},
["Potion2"] = {Potion = BoostsFolder["Super Lucky"].Value, Time = 60, Image = "rbxassetid://15434984615", Title = "Super Luck Potion", MaxPurchase = 2, Purchased = 0, Price = 24, Currency = LeaderstatsFolder:WaitForChild("Taps")},
["Potion3"] = {Potion = BoostsFolder["Extra Lucky"].Value, Time = 90, Image = "rbxassetid://15434984615", Title = "Luck Potion", MaxPurchase = 3, Purchased = 0, Price = 36, Currency = LeaderstatsFolder:WaitForChild("Taps")},
}
function MerchantHandler.CreatePotionPurchaseFrame(name)
local Template = script.Parent:WaitForChild("Potion1"):Clone()
local gui = Player.PlayerGui:WaitForChild("Main"):WaitForChild("PotionMerchant")
Template.Name = MerchantHandler.Items[name].Title
Template.Icon.Image = MerchantHandler.Items[name].Image
Template.PotionName.Text = MerchantHandler.Items[name].Title
Template.Purchased.Text = MerchantHandler.Items[name].Purchased.."/"..MerchantHandler.Items[name].MaxPurchase
Template.PriceLabel.Text = MerchantHandler.Items[name].Price.." "..MerchantHandler.Items[name].Currency.Name
Template.Parent = gui:WaitForChild("Main"):WaitForChild("Container")
Template.BuyButton.Button.MouseButton1Click:Connect(function()
game.ReplicatedStorage:WaitForChild("Merchant").PotionPurchase:FireServer(Player, MerchantHandler.Items[name])
end)
end
return MerchantHandler
please help
Thanks!