I get the error attempt to call local "xpLvlTable" (a table value) and I have a metatable inside the table that is activated with __call when the table is called
'Script'
-- Variables local xp_lvlDataStore = game:GetService('DataStoreService'):GetDataStore('xp/lvlStore') local repStorage = game:GetService('ReplicatedStorage') local xpChanger = repStorage:WaitForChild('Xp_LvlChanged') local xpToAdd = 5 local part = script.Parent local maxLvl = 350 -- Events pcall(part.ClickDetector.MouseClick:Connect(function(plr) local key = 'Player-'..plr.UserId local xpLvlTable = xp_lvlDataStore:GetAsync(key) -- Fire to player xpChanger:FireClient(plr,xpToAdd) -- Sends added xp then saves xpLvlTable(xpToAdd) end))
It errors on line 16
'Table'
-- sets the xp to 0 if plr is new local xpLvlTable = {0,0} local LvlHandler = { -- Fired when xpLvlTable is called __call = function(xpLvlTable,xpToAdd) -- Gets current lvl and xp local curLvl = xpLvlTable[2] local newXp = xpLvlTable[1] + xpToAdd -- Checks if you lvled up if curLvl == 0 and newXp >= 10 then print('FIRST LVL UP') local newXp = newXp - 10 -- Checks if can lvl up again for i = curLvl,350 do if i == 350 then table.remove(xpLvlTable,1) table.insert(xpLvlTable,1,0) table.remove(xpLvlTable,2) table.insert(xpLvlTable,2,350) elseif newXp - (10*i) < 0 then -- Sets xp + lvl in the table then saves table.remove(xpLvlTable,1) table.insert(xpLvlTable,1,newXp) table.remove(xpLvlTable,2) table.insert(xpLvlTable,2,i) xp_lvl_DataStore:SetAsync(key,xpLvlTable) break else newXp = newXp - (10*i) end end elseif curLvl == 350 then print('MAX LVL') -- Sets xp + lvl in xpLvlTable then saves table.remove(xpLvlTable,1) table.insert(xpLvlTable,1,0) xp_lvl_DataStore:SetAsync(key,xpLvlTable) elseif newXp >= 10*curLvl then print('LVL UP') -- Gets current lvl and xp local curLvl = xpLvlTable[2] local newXp = xpLvlTable[1] + xpToAdd -- Checks if you lvled up local newXp = newXp - 10*curLvl -- Checks if can lvl up again for i = curLvl,350 do if i == 350 then table.remove(xpLvlTable,1) table.insert(xpLvlTable,1,0) table.remove(xpLvlTable,2) table.insert(xpLvlTable,2,350) elseif newXp - (10*i) < 0 then -- Sets xp + lvl in the xpLvlTable then saves table.remove(xpLvlTable,1) table.insert(xpLvlTable,1,newXp) table.remove(xpLvlTable,2) table.insert(xpLvlTable,2,i) xp_lvl_DataStore:SetAsync(key,xpLvlTable) break else newXp = newXp - (10*i) end end else print('NO LVL') -- Sets xp then saves table.remove(xpLvlTable,1) table.insert(xpLvlTable,1,newXp) xp_lvl_DataStore:SetAsync(key,xpLvlTable) end end } setmetatable(xpLvlTable,LvlHandler) xp_lvl_DataStore:SetAsync(key,(xpLvlTable)) return xp_lvl_DataStore:GetAsync(key) end end