Ways to get items from tables?

my code:

--!nocheck

local Inventory = {}

local RS = game:GetService("ReplicatedStorage")
local DataModule = require(RS.Modules.Main:WaitForChild("PlayerData"))

--sets item quantity to locked or to not exceed a value.
function Inventory.setQuantityLocked(p: Player, itemName: string, maxValue)
	local data: {} = DataModule.GetData(p) -- get player data
	local inventory: {} = data["Inventory"]
	local TargetItem = inventory[tostring(itemName)]

	if not TargetItem then
		return
	end

	if TargetItem["Quantity"] then
		--math.min restricts the amount of objects
		TargetItem["Quantity"] = math.min(TargetItem["Quantity"], maxValue)
	else
		TargetItem["Quantity"] = maxValue
	end
end

function Inventory.addItem(p: Player, itemName: string, amount: number)
	local data: {} = DataModule.GetData(p)
	if not data or typeof(itemName) ~= "string" then
		return
	end

	local inventory: {} = data["Inventory"]
	if not inventory then
		return
	end

	local TargetItem: table = inventory[itemName]

	if TargetItem then
		--[[
			TargetItem["Quantity"] = (TargetItem["Quantity"] or 0) + amount
		]]

		TargetItem["Quantity"] = (TargetItem["Quantity"] or 0) + amount
		print(TargetItem)
	else
		inventory[itemName] = {
			["Quantity"] = amount,
		}
	end
end

function Inventory.removeItemAmount(p: Player, itemName: string, amount: number)
	local data: {} = DataModule.GetData(p)
	local inventory: {} = data["Inventory"]
	local TargetItem = inventory[tostring(itemName)]

	--Not a string
	if not data or typeof(itemName) ~= "string" then
		return
	end

	if not TargetItem or TargetItem["Quantity"] < amount then
		return
	end

	TargetItem["Quantity"] -= amount
	print(TargetItem)

	if TargetItem["Quantity"] <= 0 then
		inventory[itemName] = nil
		print(itemName .. " has been removed.")
	end
end

-- Completley deletes an item from the
function Inventory.AnnihilateItem(p: Player, itemName: string)
	local data: {} = DataModule.GetData(p)
	local inventory: {} = data["Inventory"]
	local TargetItem = inventory[tostring(itemName)]

	if not data or not TargetItem then
		return
	end

	TargetItem = nil
	print("Removed item", TargetItem)

	return
end

function Inventory.getInventory(p)
	local data: {} = DataModule.GetData(p)
	local inventory: {} = data["Inventory"]

	return inventory
end

return Inventory

Hi, Iā€™m a relativley experienced creator on the roblox platform and i have a question about scripting. I am trying to find ways to get items/boost items from just from the table name and and values.

Any ways to do this or should i try a different approach?

1 Like