Okay, I'm new to Modules I've never really experimented with them before. So I'm trying to make a Gui that spawns a car and I went off of an example I found for items and pets. I wanted to check if the player has the car before it spawns but when I press the button it gives me "attempt to index nil with 'CheckInTable'"
here's the module:
local ItemSaveManager = {}
local DataStore = game:GetService("DataStoreService")
local playerData = DataStore:GetDataStore("ItemSaveSystem")
local Players = game:GetService("Players")
local AUTOSAVE_INTERVAL = 120
local DataTable = {}
function ItemSaveManager:UpdateValue(player, subTable, value)
local playerUserId = "Player_" .. player.UserId
table.insert(DataTable[playerUserId][subTable], value)
end
function ItemSaveManager:RemoveValue(player, subTable, value)
local playerUserId = "Player_" .. player.UserId
table.remove(DataTable[playerUserId][subTable], value)
end
function ItemSaveManager:CheckInTable(player, subTable, value)
local playerUserId = "Player_" .. player.UserId
local sendBack = false
for _, v in pairs(DataTable[playerUserId][subTable]) do
if v == value then
sendBack = true
end
end
return sendBack
end
Players.PlayerAdded:connect(function(player)
local playerUserId = "Player_" .. player.UserId
local success, data = pcall(function()
return playerData:GetAsync(playerUserId)
end)
if success then
if data then
DataTable[playerUserId] = data
else
DataTable[playerUserId] = {}
DataTable[playerUserId]["Cars"] = {}
playerData:SetAsync(playerUserId, DataTable)
end
else
warn("Cannot acces data store for player:" .. player.UserId)
end
end)
local function savePlayerData(playerUserId)
if DataTable[playerUserId] then
local success, err = pcall(function()
playerData:SetAsync(playerUserId, DataTable[playerUserId])
end)
if not success then
warn("Cannot save data for player!")
end
end
end
local function saveOnExit(player)
local playerUserId = "Player_" .. player.UserId
savePlayerData(playerUserId)
print(player.name .. "s data saved")
end
local function autoSave()
while wait(AUTOSAVE_INTERVAL) do
for playerUserId, data in pairs(DataTable) do
savePlayerData(playerUserId)
end
print("Auto Saved")
end
end
spawn(autoSave)
game.Players.PlayerRemoving:Connect(saveOnExit)
return ItemSaveManager
and here's the script that gives the error:
local carsave = require(game.Workspace.CarSaves)
db = false
function anti()
if db == false then
db = true
if carsave.ItemSaveManager:CheckInTable(player, "Cars", "NYSPDC") then -- this is where it errors at
if check.Value == false then
print("AlreadyOwned")
print("NotSpawned")
print("SpawningCar")
clone.Parent = game.Workspace
clone.CFrame = player.Character.HumanoidRootPart.CF + Vector3.new(0,0,15)
clone.Name = player.Name.."'s Car"
check.Value = true
else
local car game.Workspace:FindFirstChild(player.Name.."'s car")
car:Destroy()
check.Value = false
print("CarRemoved")
end
