Files
esx_core-esx-framework/server/main.lua
T
2021-05-13 05:01:49 +10:00

106 lines
3.4 KiB
Lua

ESX = exports['es_extended']:getSharedObject()
if ESX.GetConfig().Multichar then
local IdentifierTables = {}
function GetTables()
Citizen.CreateThread(function()
MySQL.ready(function ()
MySQL.Async.fetchAll('SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = @id AND TABLE_SCHEMA = @db', { ['@id'] = "owner", ["@db"] = Config.databaseName}, function(result)
if result then
--print(json.encode(result))
for k, v in pairs(result) do
table.insert( IdentifierTables, {table = v.TABLE_NAME, column = "owner"})
end
end
end)
MySQL.Async.fetchAll('SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = @id AND TABLE_SCHEMA = @db', { ['@id'] = "identifier", ["@db"] = Config.databaseName}, function(result)
if result then
--print(json.encode(result))
for k, v in pairs(result) do
table.insert( IdentifierTables, {table = v.TABLE_NAME, column = "identifier"})
end
end
end)
end)
Citizen.Wait(1000)
ESX.Jobs = exports['es_extended']:getSharedObject().Jobs
end)
end
GetTables()
RegisterServerEvent("kashactersS:SetupCharacters")
AddEventHandler('kashactersS:SetupCharacters', function()
local src = source
local Characters = GetPlayerCharacters(src)
TriggerClientEvent('kashactersC:SetupUI', src, Characters)
end)
RegisterServerEvent("kashactersS:CharacterChosen")
AddEventHandler('kashactersS:CharacterChosen', function(charid, ischar)
local src = source
local isNew = true
if ischar then isNew = false end
local spawn = {}
if type(charid) == "number" and string.len(charid) == 1 and type(ischar) == "boolean" then
TriggerEvent('esx:onPlayerJoined', src, charid, isNew)
else
-- Trigger Ban Event here to ban individuals trying to use SQL Injections
end
end)
RegisterServerEvent("kashactersS:DeleteCharacter")
AddEventHandler('kashactersS:DeleteCharacter', function(charid)
local src = source
if type(charid) == "number" and string.len(charid) == 1 then
DeleteCharacter(ESX.GetIdentifier(src), charid)
TriggerClientEvent("kashactersC:ReloadCharacters", src)
else
-- Trigger Ban Event here to ban individuals trying to use SQL Injections
end
end)
function GetPlayerCharacters(source)
local Chars = MySQLAsyncExecute("SELECT * FROM `users` WHERE `identifier` LIKE 'char%:"..ESX.GetIdentifier(source).."'")
for i = 1, #Chars, 1 do
local charJob = ESX.Jobs[Chars[i].job]
local charGrade = ESX.Jobs[Chars[i].job].grades[tostring(Chars[i].job_grade)]
local accounts = json.decode(Chars[i].accounts)
Chars[i].bank = accounts["bank"]
Chars[i].money = accounts["money"]
Chars[i].job = charJob.label
if charJob.label == "Unemployed" then
Chars[i].job_grade = ""
else
Chars[i].job_grade = charGrade.label
end
if Chars[i].sex == "m" then
Chars[i].sex = "Male"
else
Chars[i].sex = "Female"
end
end
return Chars
end
function DeleteCharacter(identifier, charid)
local identifier = 'char'..charid..':'..identifier
for _, itable in pairs(IdentifierTables) do
MySQLAsyncExecute("DELETE FROM `"..itable.table.."` WHERE `"..itable.column.."` = '"..identifier.."'")
end
end
function MySQLAsyncExecute(query)
local IsBusy = true
local result = nil
MySQL.Async.fetchAll(query, {}, function(data)
result = data
IsBusy = false
end)
while IsBusy do
Citizen.Wait(0)
end
return result
end
end