From 9a9fa03e8a994ed6ecd7dfc320d950e4d00589a1 Mon Sep 17 00:00:00 2001 From: Andyyy7666 <86536434+Andyyy7666@users.noreply.github.com> Date: Mon, 10 Jul 2023 02:37:54 +0200 Subject: [PATCH] Revert "a lot of changes" This reverts commit bf9604e851b58510d8755111264700b8999227d5. --- client/events.lua | 2 +- client/functions.lua | 6 -- client/main.lua | 2 - fxmanifest.lua | 9 +- init.lua | 15 +-- server/functions.lua | 20 ---- server/main.lua | 16 ++- server/player.lua | 248 +++++++++++++++++++++---------------------- 8 files changed, 146 insertions(+), 172 deletions(-) delete mode 100644 server/functions.lua diff --git a/client/events.lua b/client/events.lua index 8ae1397..791dc64 100644 --- a/client/events.lua +++ b/client/events.lua @@ -29,4 +29,4 @@ AddEventHandler("playerSpawned", function() print("^0ND Framework support discord: ^5https://discord.gg/Z9Mxu72zZ6") SetCanAttackFriendly(PlayerPedId(), true, false) NetworkSetFriendlyFireOption(true) -end) +end) \ No newline at end of file diff --git a/client/functions.lua b/client/functions.lua index 4b1e75f..3fa06a3 100644 --- a/client/functions.lua +++ b/client/functions.lua @@ -17,9 +17,3 @@ function NDCore.GetPlayersFromCoords(distance, coords) end return closePlayers end - -for name, func in pairs(NDCore) do - if type(func) == "function" then - exports(name, func) - end -end diff --git a/client/main.lua b/client/main.lua index 7038aa9..1cef364 100644 --- a/client/main.lua +++ b/client/main.lua @@ -1,5 +1,3 @@ -NDCore = {} - CreateThread(function() SetDiscordAppId(Config.discordAppId) SetDiscordRichPresenceAsset(Config.discordAsset) diff --git a/fxmanifest.lua b/fxmanifest.lua index 9ec131d..e084ad9 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -8,19 +8,18 @@ fx_version "cerulean" game "gta5" lua54 "yes" +shared_scripts { + "init.lua" +} client_scripts { - "client/main.lua", "client/functions.lua", "client/events.lua", + "client/main.lua" } server_scripts { "@oxmysql/lib/MySQL.lua", "server/main.lua", - "server/functions.lua", "server/player.lua" } -shared_scripts { - "init.lua" -} dependency "oxmysql" diff --git a/init.lua b/init.lua index b0540a3..b4ded23 100644 --- a/init.lua +++ b/init.lua @@ -8,16 +8,9 @@ Config = { discordActionLink = GetConvar("discordActionLink", "https://discord.gg/Z9Mxu72zZ6"), discordActionText2 = GetConvar("core:discordActionText2", "STORE"), discordActionLink2 = GetConvar("core:discordActionLink2", "https://andyyy.tebex.io/category/fivem-scripts"), + } -local nd_core = exports["ND_Core"] - -NDCore = setmetatable({}, { - __index = function(self, index) - self[index] = function(...) - return nd_core[index](nil, ...) - end - - return self[index] - end -}) +NDCore = { + config = Config +} diff --git a/server/functions.lua b/server/functions.lua deleted file mode 100644 index 8d09f33..0000000 --- a/server/functions.lua +++ /dev/null @@ -1,20 +0,0 @@ -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 diff --git a/server/main.lua b/server/main.lua index a06c33b..0b66541 100644 --- a/server/main.lua +++ b/server/main.lua @@ -1,6 +1,20 @@ -NDCore = {} 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() local src = source local char = ActivePlayers[src] diff --git a/server/player.lua b/server/player.lua index 6efda90..5f79381 100644 --- a/server/player.lua +++ b/server/player.lua @@ -1,137 +1,133 @@ -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}) - if result and self.source then - ActivePlayers[self.source] = nil - end - return result - end - - function self.deductMoney(account, amount, reason) - local amount = tonumber(amount) - if not amount or account ~= "bank" and account ~= "cash" then return end - self[account] -= amount - if self.source then - TriggerEvent("ND:moneyChange", self.source, account, amount, "remove", reason) - ActivePlayers[self.source] = self - end - return true - end - - function self.addMoney(account, amount, reason) - local amount = tonumber(amount) - if not amount or account ~= "bank" and account ~= "cash" then return end - self[account] += amount - if self.source then - TriggerEvent("ND:moneyChange", self.source, account, amount, "add", reason) - ActivePlayers[self.source] = self - end - return true - end - - function self.depositMoney(amount) - local amount = tonumber(amount) - 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") - end - - function self.withdrawMoney(amount) - local amount = tonumber(amount) - 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") - end - - function self.setMetadata(key, value) - self.metadata[key] = value - if self.source then - ActivePlayers[self.source] = self - return ActivePlayers[self.source].metadata - end - return self.metadata - end - - function self.unload(self) - TriggerEvent("ND:characterUnloaded", self.source, self) - local ped = GetPlayerPed(self.source) - self:setMetadata("location", GetEntityCoords(ped)) - self:save() - if not self.source then return end +local function charDelete(self) + local result = MySQL.query.await("DELETE FROM nd_characters WHERE charid = ?", {self.id}) + if result and self.source then ActivePlayers[self.source] = nil end - - function self.save(self) - MySQL.update.await("UPDATE nd_characters SET name = ?, firstname = ?, lastname = ?, dob = ?, gender = ?, cash = ?, bank = ?, metadata = ?, inventory = ? WHERE charid = ?", { - self.name, - self.firstname, - self.lastname, - self.dob, - self.gender, - self.cash, - self.bank, - json.encode(self.metadata), - json.encode(self.inventory), - self.id, - }) - end - - function self.createLicense(licenseType, expire) - local expireIn = tonumber(expire) or 2592000 - local time = os.time() - local licenses = self.metadata.licenses - local identifier = {} - - for i=1, 16 do - identifier[i] = math.random(0, 1) == 1 and string.char(math.random(65, 90)) or math.random(0, 9) - end - - local license = { - type = licenseType, - status = "valid", - issued = time, - expires = time+expireIn, - identifier = table.concat(identifier) - } - - if licenses then - self.metadata.licenses[#licenses+1] = license - return - end - self.metadata.licenses = {license} - - if not self.source then return end + return result +end + +local function charDeductMoney(self, account, amount, reason) + local amount = tonumber(amount) + if not amount or account ~= "bank" and account ~= "cash" then return end + self[account] -= amount + if self.source then + TriggerEvent("ND:moneyChange", self.source, account, amount, "remove", reason) ActivePlayers[self.source] = self end - - function self.setCoords(coords) - if not self.source or not coords then return end - local ped = GetPlayerPed(self.source) - if not DoesEntityExist(ped) then return end - SetEntityCoords(ped, coords.x, coords.y, coords.z) - return true + return true +end + +local function charAddMoney(self, account, amount, reason) + local amount = tonumber(amount) + if not amount or account ~= "bank" and account ~= "cash" then return end + self[account] += amount + if self.source then + TriggerEvent("ND:moneyChange", self.source, account, amount, "add", reason) + ActivePlayers[self.source] = self + end + return true +end + +local function charDepositMoney(self, amount) + local amount = tonumber(amount) + 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") +end + +local function charWithdrawMoney(self, amount) + local amount = tonumber(amount) + 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") +end + +local function charSetMetadata(self, key, value) + self.metadata[key] = value + if self.source then + ActivePlayers[self.source] = self + return ActivePlayers[self.source].metadata + end + return self.metadata +end + +local function charUnload(self) + TriggerEvent("ND:characterUnloaded", self.source, self) + local ped = GetPlayerPed(self.source) + self:setMetadata("location", GetEntityCoords(ped)) + self:save() + if not self.source then return end + ActivePlayers[self.source] = nil +end + +local function charSave(self) + MySQL.update.await("UPDATE nd_characters SET name = ?, firstname = ?, lastname = ?, dob = ?, gender = ?, cash = ?, bank = ?, metadata = ?, inventory = ? WHERE charid = ?", { + self.name, + self.firstname, + self.lastname, + self.dob, + self.gender, + self.cash, + self.bank, + json.encode(self.metadata), + json.encode(self.inventory), + self.id, + }) +end + +local function charCreateLicense(self, licenseType, expire) + local expireIn = tonumber(expire) or 2592000 + local time = os.time() + local licenses = self.metadata.licenses + local identifier = {} + + for i=1, 16 do + identifier[i] = math.random(0, 1) == 1 and string.char(math.random(65, 90)) or math.random(0, 9) end - return self + local license = { + type = licenseType, + status = "valid", + issued = time, + expires = time+expireIn, + identifier = table.concat(identifier) + } + + if licenses then + self.metadata.licenses[#licenses+1] = license + return + end + self.metadata.licenses = {license} + + if not self.source then return end + ActivePlayers[self.source] = self +end + +local function charSetCoords(self, coords) + if not self.source or not coords then return end + local ped = GetPlayerPed(self.source) + if not DoesEntityExist(ped) then return end + SetEntityCoords(ped, coords.x, coords.y, coords.z) + return true +end + +local function initPlayerTable(playerTable) + 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 function NDCore.newCharacter(src, info) local license = GetPlayerIdentifierByType(src, "license") if not license then return end - local charInfo = createCharacterTable({ + local charInfo = initPlayerTable({ source = src, name = GetPlayerName(src) or "", firstname = info.firstname or "", @@ -155,7 +151,7 @@ function NDCore.newCharacter(src, info) charInfo.cash, charInfo.bank, charInfo.metadata - }) + ) return charInfo end @@ -165,7 +161,7 @@ function NDCore.fetchCharacter(id) if not result then return end local info = result[1] - return createCharacterTable({ + return initPlayerTable({ id = id, name = info.name, firstname = info.firstname, @@ -187,7 +183,7 @@ function NDCore.getPlayerCharacters(src) for i=1, amount do local info = result[i] - characters[info.charid] = createCharacterTable({ + characters[info.charid] = initPlayerTable({ id = info.charid, name = info.name, firstname = info.firstname, @@ -209,7 +205,7 @@ function NDCore.setActiveCharacter(src, id) if char then char:unload() end local character = NDCore.fetchCharacter(id) - character.source = src + character.source = src, character.name = GetPlayerName(src) ActivePlayers[src] = character