GUI Display for card game suddenly breaking

Hello! I’ve been designing some GUI components for a card game and i’ve run into a roadblock. I’ve made a function that displays a card’s data into three textlabels, for HP, ATK and Name respectively. This works fine for exactly 7 tries. After that it gives an error that hasn’t helped me much.

The functions that likely have some sort of problem are either DisplayCard() or the arguments passed to DisplayCard() on the LocalScript.

Any help is greatly appreciated!

Here are both the ModuleScript and LocalScript that are used.

--This is a ModuleScript
local iCards = {}
local tCards = {}
local deckCards = {}

local CardsModule = {
	 ["AllCards"] = {tCards}; ["Deck1"] = {deckCards}
}	


CardsModule.CreateCard = function(iID, iImgID, iName, iType, iCost, iRarity, iHP, iATK, iATRB1, iATRB2, iRace1, iRace2, iSkill)
	iCards.ID = iID; iCards.ImgID = iImgID; iCards.Name = iName; iCards.Type = iType; iCards.Cost = iCost; iCards.Rarity = iRarity; iCards.HP = iHP; iCards.ATK = iATK; iCards.Attribute1 = iATRB1; iCards.Attribute2 = iATRB2; iCards.Race1 = iRace1; iCards.Race2 = iRace2; iCards.Skill = iSkill
	table.insert(tCards, iCards)
	table.insert(deckCards, iCards)
	iCards = {}
end

CardsModule.Shuffle = function(t) -- t is the table to shuffle
	local j, temp
	for i = #t, 1, -1 do
		j = math.random(i)
		temp = t[i]
		t[i] = t[j]
		t[j] = temp
	end
	return t
end

CardsModule.DisplayCard = function(ID, Target, tabla) -- Target has to be a Frame 
	
	if	tonumber(ID) ~= nil and tonumber(ID) >=1  then
		
		Target.HP.Text = tabla[tonumber(ID)].HP

		if tabla[tonumber(ID)].ATK ~= nil then
			Target.ATK.Text = tabla[tonumber(ID)].ATK 
			else
			Target.ATK.Text = 0
			end

		Target.DisplayName.Text =  tabla[tonumber(ID)].Name

		if tabla[tonumber(ID)].ImgID ~= nil then
			Target.CardIMG.Image = tabla[tonumber(ID)].ImgID
			else
			Target.CardIMG.Image = "rbxassetid://15783857674"
			end

	end
end
	

-- Crear todas las Cartas

CardsModule.CreateCard(1, nil, "Hash", "Hero", nil, "Hero", 30, nil, nil, nil, "Cat", nil, nil)
CardsModule.CreateCard(2, nil, "Yner", "Hero", nil, "Hero", 30, nil, nil, nil, "Cat", nil, nil)
CardsModule.CreateCard(3, nil, "Aery", "Hero", nil, "Hero", 30, nil, nil, nil, "Cat", nil, nil)
CardsModule.CreateCard(4, nil, "Choice", "Hero", nil, "Hero", 25, nil, nil, nil, "Cat", nil, nil)
CardsModule.CreateCard(5, nil, "Lucifer", "Hero", nil, "Hero", 25, nil, nil, nil, "Cat", nil, nil)
CardsModule.CreateCard(6, nil, "Veyle", "Hero", nil, "Hero", 25, nil, nil, nil, "Cat", nil, nil)
CardsModule.CreateCard(7, nil, "Praesentia", "Hero", nil, "Hero", 25, nil, nil, nil, nil, nil, nil)
CardsModule.CreateCard(8, nil, "Ezom", "Hero", nil, "Hero", 20, nil, nil, nil, "Cat", "Nehri", nil)
CardsModule.CreateCard(9, nil, "Darkann", "Hero", nil, "Hero", 20, nil, nil, nil, "Cat", nil, nil)
CardsModule.CreateCard(10, nil, "Eyja", "Hero", nil, "Hero", 20, nil, nil, nil, "Cat", nil, nil)
CardsModule.CreateCard(11, nil, "Malice", "Hero", nil, "Hero", 20, nil, nil, nil, "Cat", nil, nil)
CardsModule.CreateCard(12, nil, "Puss", "Hero", nil, "Hero", 10, nil, nil, nil, "Cat", nil, nil)
CardsModule.CreateCard(13, "rbxassetid://15783958612", "Praesentia, The Luminary", "Summon", 9, "Astral", 7, 5, "Intangible", nil, nil, nil, nil)






return CardsModule

-- This is a LocalScript, running in a TextButton
local CardsModule = require(game.ReplicatedStorage.CardsModule)
local Hand = {}
local PlaceholderCard = script.Parent.Parent.Parent.Parent.PlaceholderCard

local offset = 0.08
local TotalOffset = offset

script.Parent.MouseButton1Click:Connect(function()
	local Deck = CardsModule.Shuffle(CardsModule.Deck1[1])
	table.insert(Hand, Deck[1])
	table.remove(Deck,1)
	
	
	local Card = PlaceholderCard:Clone()
	Card.Parent = game.Players.LocalPlayer.PlayerGui
	Card.Frame.Position = UDim2.new(PlaceholderCard.Frame.Position.X.Scale + TotalOffset, PlaceholderCard.Frame.Position.X.Offset, PlaceholderCard.Frame.Position.Y.Scale, PlaceholderCard.Frame.Position.Y.Offset)
	TotalOffset = TotalOffset + offset
	
	CardsModule.DisplayCard(table.maxn(Hand), Card.Frame, Deck)
end)


1 Like