Solved!
I decided to create my own solution and it seems to work well so I’ll just leave this here for anyone else who could use this as a resource in developing a similar system!
The solution I landed on was to make a nested table system.
Similar to this:
local Items = {
[ItemName] = {Price = 10, ItemInstance = ServerStorage.Item} -- Where ItemInstance is a reference to wherever you put your item instance to be cloned.
}
GiveItem.OnServerEvent:Connect(function(Player, ItemName, Amount)
-- Place functionality here
end)
Now, instead of the client handling having to pay, the server does that automatically! All the client has to do is call the server for an item and then the server handles the payment automatically along with giving the item!
And if the client were to ever call for an item to be spawned for free then we can simply change the price to 0 OR if the client has an admin command menu (Like if they are a special administrator) then we can simply give the client money equivalent to the price of the amount of items they’re spawning while they call the GiveItem command to make it seem as if it didn’t cost them anything!