a lot of changes

This commit is contained in:
Andyyy7666
2023-07-09 21:19:35 +02:00
parent 24caa1a857
commit bf9604e851
8 changed files with 174 additions and 148 deletions

View File

@@ -17,3 +17,9 @@ function NDCore.GetPlayersFromCoords(distance, coords)
end end
return closePlayers return closePlayers
end end
for name, func in pairs(NDCore) do
if type(func) == "function" then
exports(name, func)
end
end

View File

@@ -1,3 +1,5 @@
NDCore = {}
CreateThread(function() CreateThread(function()
SetDiscordAppId(Config.discordAppId) SetDiscordAppId(Config.discordAppId)
SetDiscordRichPresenceAsset(Config.discordAsset) SetDiscordRichPresenceAsset(Config.discordAsset)

View File

@@ -8,18 +8,19 @@ fx_version "cerulean"
game "gta5" game "gta5"
lua54 "yes" lua54 "yes"
shared_scripts {
"init.lua"
}
client_scripts { client_scripts {
"client/main.lua",
"client/functions.lua", "client/functions.lua",
"client/events.lua", "client/events.lua",
"client/main.lua"
} }
server_scripts { server_scripts {
"@oxmysql/lib/MySQL.lua", "@oxmysql/lib/MySQL.lua",
"server/main.lua", "server/main.lua",
"server/functions.lua",
"server/player.lua" "server/player.lua"
} }
shared_scripts {
"init.lua"
}
dependency "oxmysql" dependency "oxmysql"

View File

@@ -8,9 +8,16 @@ Config = {
discordActionLink = GetConvar("discordActionLink", "https://discord.gg/Z9Mxu72zZ6"), discordActionLink = GetConvar("discordActionLink", "https://discord.gg/Z9Mxu72zZ6"),
discordActionText2 = GetConvar("core:discordActionText2", "STORE"), discordActionText2 = GetConvar("core:discordActionText2", "STORE"),
discordActionLink2 = GetConvar("core:discordActionLink2", "https://andyyy.tebex.io/category/fivem-scripts"), discordActionLink2 = GetConvar("core:discordActionLink2", "https://andyyy.tebex.io/category/fivem-scripts"),
} }
NDCore = { local nd_core = exports["ND_Core"]
config = Config
} NDCore = setmetatable({}, {
__index = function(self, index)
self[index] = function(...)
return nd_core[index](nil, ...)
end
return self[index]
end
})

20
server/functions.lua Normal file
View File

@@ -0,0 +1,20 @@
function NDCore.getPlayer(src)
return ActivePlayers[src]
end
function NDCore.getPlayers(metadata, data)
if not metadata or not data then return ActivePlayers end
local players = {}
for src, info in pairs(ActivePlayers) do
if info.metadata[metadata] == data then
players[src] = info
end
end
return players
end
for name, func in pairs(NDCore) do
if type(func) == "function" then
exports(name, func)
end
end

View File

@@ -1,20 +1,6 @@
NDCore = {}
ActivePlayers = {} ActivePlayers = {}
function NDCore.getPlayer(src)
return ActivePlayers[src]
end
function NDCore.getPlayers(metadata, data)
if not metadata or not data then return ActivePlayers end
local players = {}
for src, info in pairs(ActivePlayers) do
if info.metadata[metadata] == data then
players[src] = info
end
end
return players
end
AddEventHandler("playerDropped", function() AddEventHandler("playerDropped", function()
local src = source local src = source
local char = ActivePlayers[src] local char = ActivePlayers[src]

View File

@@ -1,12 +1,27 @@
local function charDelete(self) local function createCharacterTable(info)
local self = {
source = info.source,
name = info.name,
firstname = info.firstname,
lastname = info.lastname,
dob = info.dob,
gender = info.gender,
cash = info.cash,
bank = info.bank,
license = info.license,
metadata = info.metadata,
inventory = info.inventory
}
function self.delete()
local result = MySQL.query.await("DELETE FROM nd_characters WHERE charid = ?", {self.id}) local result = MySQL.query.await("DELETE FROM nd_characters WHERE charid = ?", {self.id})
if result and self.source then if result and self.source then
ActivePlayers[self.source] = nil ActivePlayers[self.source] = nil
end end
return result return result
end end
local function charDeductMoney(self, account, amount, reason) function self.deductMoney(account, amount, reason)
local amount = tonumber(amount) local amount = tonumber(amount)
if not amount or account ~= "bank" and account ~= "cash" then return end if not amount or account ~= "bank" and account ~= "cash" then return end
self[account] -= amount self[account] -= amount
@@ -15,9 +30,9 @@ local function charDeductMoney(self, account, amount, reason)
ActivePlayers[self.source] = self ActivePlayers[self.source] = self
end end
return true return true
end end
local function charAddMoney(self, account, amount, reason) function self.addMoney(account, amount, reason)
local amount = tonumber(amount) local amount = tonumber(amount)
if not amount or account ~= "bank" and account ~= "cash" then return end if not amount or account ~= "bank" and account ~= "cash" then return end
self[account] += amount self[account] += amount
@@ -26,39 +41,39 @@ local function charAddMoney(self, account, amount, reason)
ActivePlayers[self.source] = self ActivePlayers[self.source] = self
end end
return true return true
end end
local function charDepositMoney(self, amount) function self.depositMoney(amount)
local amount = tonumber(amount) local amount = tonumber(amount)
if not amount or self.cash < amount or amount <= 0 then return end if not amount or self.cash < amount or amount <= 0 then return end
return self:deductMoney("cash", amount, "Deposit") and self:AddMoney("bank", amount, "Deposit") return self:deductMoney("cash", amount, "Deposit") and self:AddMoney("bank", amount, "Deposit")
end end
local function charWithdrawMoney(self, amount) function self.withdrawMoney(amount)
local amount = tonumber(amount) local amount = tonumber(amount)
if not amount or self.bank < amount or amount <= 0 then return end if not amount or self.bank < amount or amount <= 0 then return end
return self:deductMoney("bank", amount, "Withdraw") and self:AddMoney("cash", amount, "Withdraw") return self:deductMoney("bank", amount, "Withdraw") and self:AddMoney("cash", amount, "Withdraw")
end end
local function charSetMetadata(self, key, value) function self.setMetadata(key, value)
self.metadata[key] = value self.metadata[key] = value
if self.source then if self.source then
ActivePlayers[self.source] = self ActivePlayers[self.source] = self
return ActivePlayers[self.source].metadata return ActivePlayers[self.source].metadata
end end
return self.metadata return self.metadata
end end
local function charUnload(self) function self.unload(self)
TriggerEvent("ND:characterUnloaded", self.source, self) TriggerEvent("ND:characterUnloaded", self.source, self)
local ped = GetPlayerPed(self.source) local ped = GetPlayerPed(self.source)
self:setMetadata("location", GetEntityCoords(ped)) self:setMetadata("location", GetEntityCoords(ped))
self:save() self:save()
if not self.source then return end if not self.source then return end
ActivePlayers[self.source] = nil ActivePlayers[self.source] = nil
end end
local function charSave(self) function self.save(self)
MySQL.update.await("UPDATE nd_characters SET name = ?, firstname = ?, lastname = ?, dob = ?, gender = ?, cash = ?, bank = ?, metadata = ?, inventory = ? WHERE charid = ?", { MySQL.update.await("UPDATE nd_characters SET name = ?, firstname = ?, lastname = ?, dob = ?, gender = ?, cash = ?, bank = ?, metadata = ?, inventory = ? WHERE charid = ?", {
self.name, self.name,
self.firstname, self.firstname,
@@ -71,9 +86,9 @@ local function charSave(self)
json.encode(self.inventory), json.encode(self.inventory),
self.id, self.id,
}) })
end end
local function charCreateLicense(self, licenseType, expire) function self.createLicense(licenseType, expire)
local expireIn = tonumber(expire) or 2592000 local expireIn = tonumber(expire) or 2592000
local time = os.time() local time = os.time()
local licenses = self.metadata.licenses local licenses = self.metadata.licenses
@@ -99,35 +114,24 @@ local function charCreateLicense(self, licenseType, expire)
if not self.source then return end if not self.source then return end
ActivePlayers[self.source] = self ActivePlayers[self.source] = self
end end
local function charSetCoords(self, coords) function self.setCoords(coords)
if not self.source or not coords then return end if not self.source or not coords then return end
local ped = GetPlayerPed(self.source) local ped = GetPlayerPed(self.source)
if not DoesEntityExist(ped) then return end if not DoesEntityExist(ped) then return end
SetEntityCoords(ped, coords.x, coords.y, coords.z) SetEntityCoords(ped, coords.x, coords.y, coords.z)
return true return true
end end
local function initPlayerTable(playerTable) return self
playerTable.delete = charDelete,
playerTable.deductMoney = charDeductMoney,
playerTable.addMoney = charAddMoney
playerTable.depositMoney = charDepositMoney,
playerTable.withdrawMoney = charWithdrawMoney,
playerTable.setMetadata = charSetMetadata,
playerTable.save = charSave,
playerTable.unload = charUnload,
playerTable.createLicense = charCreateLicense
playerTable.setCoords = charSetCoords
return playerTable
end end
function NDCore.newCharacter(src, info) function NDCore.newCharacter(src, info)
local license = GetPlayerIdentifierByType(src, "license") local license = GetPlayerIdentifierByType(src, "license")
if not license then return end if not license then return end
local charInfo = initPlayerTable({ local charInfo = createCharacterTable({
source = src, source = src,
name = GetPlayerName(src) or "", name = GetPlayerName(src) or "",
firstname = info.firstname or "", firstname = info.firstname or "",
@@ -151,7 +155,7 @@ function NDCore.newCharacter(src, info)
charInfo.cash, charInfo.cash,
charInfo.bank, charInfo.bank,
charInfo.metadata charInfo.metadata
) })
return charInfo return charInfo
end end
@@ -161,7 +165,7 @@ function NDCore.fetchCharacter(id)
if not result then return end if not result then return end
local info = result[1] local info = result[1]
return initPlayerTable({ return createCharacterTable({
id = id, id = id,
name = info.name, name = info.name,
firstname = info.firstname, firstname = info.firstname,
@@ -183,7 +187,7 @@ function NDCore.getPlayerCharacters(src)
for i=1, amount do for i=1, amount do
local info = result[i] local info = result[i]
characters[info.charid] = initPlayerTable({ characters[info.charid] = createCharacterTable({
id = info.charid, id = info.charid,
name = info.name, name = info.name,
firstname = info.firstname, firstname = info.firstname,
@@ -205,7 +209,7 @@ function NDCore.setActiveCharacter(src, id)
if char then char:unload() end if char then char:unload() end
local character = NDCore.fetchCharacter(id) local character = NDCore.fetchCharacter(id)
character.source = src, character.source = src
character.name = GetPlayerName(src) character.name = GetPlayerName(src)
ActivePlayers[src] = character ActivePlayers[src] = character