Hello there, I’m developing a database resource that saves locally into the host’s folder in text format.
I need help figuring out what is wrong in my code to get this error:
InvokeNative: execution failed: Argument at index 0 was null.
Error running system event handling function for resource database: citizen:/scripting/lua/scheduler.lua:41: Failed to execute thread: Execution of native 00000000ff7f66ab in script host failed.
At the moment I have my vehicle spawning menu which triggers the database resource to save (remove the price of the vehicle).
vehspawner/sv_vehicles.lua [serverside]
RegisterServerEvent('spawn:moneyCheck')
AddEventHandler('spawn:moneyCheck', function (price, model, x, y, z, heading, ped)
if not price then
price = 250
end
local paid = 0
caller =6753
TriggerEvent('SaveCoords', coords, source)
TriggerEvent('GetMoney', source, caller)
paid = 1
end)
RegisterServerEvent('MoneyGot')
AddEventHandler('MoneyGot', function (extractedMoney, caller1)
if caller1 == 6753 then
if extractedMoney >= tonumber(price) then
TriggerEvent('RemoveMoney', source, tonumber(price))
paid = 1
else
paid = 0
end
TriggerClientEvent('vehPaid', source, model, x, y, z, heading, ped, paid)
--allows the client to spawn
end
end)
database/sv_database.lua [serverside]
RegisterServerEvent('AddMoney')
AddEventHandler('AddMoney', function(player, money)
local SteamID = GetSteamId(player)
path = ('DATABASE/' .. SteamID .. '.txt')
local savedData = readFile(path)
for index, key in pairs(values) do
local data = stringsplit(savedData, ",")
end
local uMoney = tonumber(data[3])+tonumber(money)
writeFile(path, data[1]..","..data[2]..","..data[3]..","..uMoney)
end)
RegisterServerEvent('RemoveMoney')
AddEventHandler('RemoveMoney', function(player, money)
local SteamID = GetSteamId(player)
path = ('DATABASE/' .. SteamID .. '.txt')
local savedData = readFile(path)
for index, key in pairs(values) do
local data = stringsplit(savedData, ",")
end
local uMoney = tonumber(data[3])-tonumber(player, money)
writeFile(path, data[1]..","..data[2]..","..data[3]..","..uMoney)
end)
RegisterServerEvent('GetMoney')
AddEventHandler('GetMoney', function(player, caller)
local SteamID = GetSteamId(player)
path = ('DATABASE/' ..SteamID.. '.txt')
local savedData = readFile(path)
for index, key in pairs(values) do
local data = stringsplit(savedData, ",")
end
extractedMoney = tonumber(data[4])
TriggerEvent('MoneyGot', extractedMoney, caller)
end)
RegisterServerEvent('SetMoney')
AddEventHandler('SetMoney', function(player, money)
local SteamID = GetSteamId(player)
path = ('DATABASE/' .. SteamID .. '.txt')
local savedData = readFile(path)
for index, key in pairs(values) do
local data = stringsplit(savedData, ",")
end
writeFile(path, data[1]..","..data[2]..","..data[3]..","..money)
end)
RegisterServerEvent('SaveCoords')
AddEventHandler('SaveCoords', function(coords, player)
if coords == nil then
coords = GetEntityCoords(GetPlayerPed(-1))
else coords = tonumber(coords)
end
local SteamID = GetSteamId(player)
path = ('DATABASE/' .. SteamID .. '.txt')
local savedData = readFile(path)
for index, key in pairs(values) do
local data = stringsplit(savedData, ",")
end
writeFile(path, x..","..y..","..z..","..data[4])
end)
RegisterServerEvent('GetCoords')
AddEventHandler('GetCoords', function(player, caller)
local SteamID = GetSteamId(player)
path = ('DATABASE' .. SteamID .. '.txt')
local savedData = readFile(path)
for index, key in pairs(values) do
local data = stringsplit(savedData, ",")
end
extractedX = tonumber(data[1])
extractedY = tonumber(data[2])
extractedZ = tonumber(data[3])
end)
function GetSteamId(user)
local identifiers = GetPlayerIdentifiers(user)[1]
return identifiers
end
function fileExists(path)
local file = io.open(path, "rb")
if file then
file:close()
end
return file ~= nil
end
function writeFile(path, data)
local file = io.open(path, 'w+')
file:write(tostring(data))
file:flush()
file:close()
end
function readFile(path)
if fileExists(path) then
local file = io.open(path, 'w+')
local buffer = file:read("*a")
file:close()
return buffer
else
return false
end
end
function stringsplit(inputstr, sep)
if sep == nil then
sep = "%s"
end
local t={} ; i=1
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
t[i] = str
i = i + 1
end
return t
end
thank you for helping