mirror of
https://github.com/ND-Framework/ND_Core.git
synced 2026-08-17 05:56:01 +01:00
feat: NDCore 1 backwards compatibility
This commit is contained in:
260
compatibility/backwards/server.lua
Normal file
260
compatibility/backwards/server.lua
Normal file
@@ -0,0 +1,260 @@
|
||||
exports("GetCoreObject", function()
|
||||
return NDCore
|
||||
end)
|
||||
|
||||
NDCore.Functions = {}
|
||||
NDCore.Functions.GetPlayer = NDCore.getPlayer
|
||||
NDCore.Functions.GetPlayers = NDCore.getPlayers
|
||||
NDCore.Functions.GetUserDiscordInfo = NDCore.getDiscordInfo
|
||||
NDCore.Functions.SetActiveCharacter = NDCore.setActiveCharacter
|
||||
NDCore.Functions.GetPlayerCharacters = NDCore.fetchAllCharacters
|
||||
NDCore.Functions.GetPlayerByCharacterId = NDCore.fetchCharacter
|
||||
|
||||
function NDCore.Functions.GetPlayerIdentifierFromType(identifierType, src)
|
||||
return GetPlayerIdentifierByType(src, identifierType)
|
||||
end
|
||||
|
||||
function NDCore.Functions.GetNearbyPedToPlayer(src)
|
||||
local pedCoords = GetEntityCoords(GetPlayerPed(src))
|
||||
for targetId, targetInfo in pairs(NDCore.players) do
|
||||
local targetCoords = GetEntityCoords(GetPlayerPed(targetId))
|
||||
if #(pedCoords - targetCoords) < 2.0 and targetId ~= src then
|
||||
return targetId, targetInfo
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function NDCore.Functions.UpdateMoney(src)
|
||||
local player = NDCore.getPlayer(src)
|
||||
player.triggerEvent("ND:updateMoney", player.cash, player.bank)
|
||||
end
|
||||
|
||||
function NDCore.Functions.TransferBank(amount, source, target, descriptionSender, descriptionReceiver)
|
||||
local amount = tonumber(amount)
|
||||
local src = tonumber(source)
|
||||
local target = tonumber(target)
|
||||
local player = NDCore.getPlayer(src)
|
||||
if not player then return end
|
||||
|
||||
if src == target then
|
||||
return false, "Can't transfer money to same account"
|
||||
elseif GetPlayerPing(target) == 0 then
|
||||
return false, "Account not found"
|
||||
elseif amount <= 0 then
|
||||
return false, "Invalid amount"
|
||||
elseif player.bank < amount then
|
||||
return false, "Insufficient funds"
|
||||
end
|
||||
|
||||
local targetPlayer = NDCore.getPlayer(target)
|
||||
if not targetPlayer then return end
|
||||
return player.deductMoney("bank", amount, descriptionSender or "Transfer") and targetPlayer.addMoney("bank", amount, descriptionReceiver or "Transfer")
|
||||
end
|
||||
|
||||
function NDCore.Functions.GiveCash(amount, source, target)
|
||||
local amount = tonumber(amount)
|
||||
local src = tonumber(source)
|
||||
local target = tonumber(target)
|
||||
local player = NDCore.getPlayer(src)
|
||||
if not player then return end
|
||||
|
||||
if src == target then
|
||||
return false, "Can't give to self"
|
||||
elseif GetPlayerPing(target) == 0 then
|
||||
return false, "Target not found"
|
||||
elseif amount <= 0 then
|
||||
return false, "Invalid amount"
|
||||
elseif player.bank < amount then
|
||||
return false, "Not enough money"
|
||||
end
|
||||
|
||||
local targetPlayer = NDCore.getPlayer(target)
|
||||
if not targetPlayer then return endn end
|
||||
return player.deductMoney("cash", amount) and targetPlayer.addMoney("cash", amount)
|
||||
end
|
||||
|
||||
function NDCore.Functions.GiveCashToNearbyPlayer(source, amount)
|
||||
local targetId = NDCore.Functions.GetNearbyPedToPlayer(source)
|
||||
if not targetId then return end
|
||||
return NDCore.Functions.GiveCash(amount, source, targetId)
|
||||
end
|
||||
|
||||
function NDCore.Functions.WithdrawMoney(amount, source)
|
||||
local player = NDCore.getPlayer(source)
|
||||
return player and player.withdrawMoney(amount)
|
||||
end
|
||||
|
||||
function NDCore.Functions.DepositMoney(amount, source)
|
||||
local player = NDCore.getPlayer(source)
|
||||
return player and player.depositMoney(amount)
|
||||
end
|
||||
|
||||
function NDCore.Functions.DeductMoney(amount, source, account, description)
|
||||
local player = NDCore.getPlayer(source)
|
||||
return player and player.deductMoney(amount, account, description)
|
||||
end
|
||||
|
||||
function NDCore.Functions.AddMoney(amount, source, account, description)
|
||||
local player = NDCore.getPlayer(source)
|
||||
return player and player.addMoney(amount, account, description)
|
||||
end
|
||||
|
||||
function NDCore.Functions.CreateCharacter(src, firstName, lastName, dob, gender, cb)
|
||||
local player = NDCore.newCharacter(src, {
|
||||
firstname = firstName,
|
||||
lastname = lastName,
|
||||
dob = dob,
|
||||
gender = gender,
|
||||
})
|
||||
|
||||
if cb then cb(player.id) end
|
||||
player.triggerEvent("ND:returnCharacters", NDCore.fetchAllCharacters(src))
|
||||
return player.id
|
||||
end
|
||||
|
||||
function NDCore.Functions.UpdateCharacter(characterId, firstName, lastName, dob, gender)
|
||||
local player = NDCore.fetchCharacter(characterId)
|
||||
player.setData({
|
||||
source = src,
|
||||
firstname = firstName,
|
||||
lastname = lastName,
|
||||
dob = dob,
|
||||
gender = gender
|
||||
})
|
||||
return player
|
||||
end
|
||||
|
||||
function NDCore.Functions.DeleteCharacter(characterId)
|
||||
local player = NDCore.fetchCharacter(characterId)
|
||||
return player and player.delete()
|
||||
end
|
||||
|
||||
function NDCore.Functions.SetPlayerData(characterId, key, value)
|
||||
local player = NDCore.fetchCharacter(characterId)
|
||||
if not player then return end
|
||||
|
||||
if player[key] then
|
||||
return player.setData(key, value)
|
||||
end
|
||||
return player.setMetadata(key, value)
|
||||
end
|
||||
|
||||
function NDCore.Functions.CreatePlayerLicense(characterId, licenseType, expire)
|
||||
local player = NDCore.fetchCharacter(characterId)
|
||||
return self.createLicense(licenseType, expire)
|
||||
end
|
||||
|
||||
-- find a players license by it's identifier.
|
||||
function NDCore.Functions.FindLicenseByIdentifier(licences, identifier)
|
||||
for key, license in pairs(licences) do
|
||||
if license.identifier == identifier then
|
||||
return license, key
|
||||
end
|
||||
end
|
||||
return {}
|
||||
end
|
||||
|
||||
-- Edit a license by the license identifier.
|
||||
function NDCore.Functions.EditPlayerLicense(characterId, identifier, newData)
|
||||
local player = NDCore.fetchCharacter(characterId)
|
||||
if not player then return end
|
||||
|
||||
local licenses = player.metadata.licenses
|
||||
if licenses then
|
||||
local license, key = NDCore.Functions.FindLicenseByIdentifier(licenses, identifier)
|
||||
for k, v in pairs(newData) do
|
||||
license[k] = v
|
||||
end
|
||||
licenses[key] = license
|
||||
player.setMetadata("licenses", licenses)
|
||||
end
|
||||
return licenses or {}
|
||||
end
|
||||
|
||||
-- Set the players job and job rank.
|
||||
function NDCore.Functions.SetPlayerJob(characterId, job, rank)
|
||||
local player = NDCore.fetchCharacter(characterId)
|
||||
if not player then return end
|
||||
if player.source then
|
||||
local oldJob = player.getJob(job)
|
||||
TriggerEvent("ND:jobChanged", player.source, {name = job, rank = rank or 1}, {name = player.job, rank = oldJob and oldJob.rank or 1})
|
||||
TriggerClientEvent("ND:jobChanged", player.source, {name = job, rank = rank or 1}, {name = player.job, rank = oldJob and oldJob.rank or 1})
|
||||
end
|
||||
return player.setJob(job, rank)
|
||||
end
|
||||
|
||||
-- Set a player to a group.
|
||||
function NDCore.Functions.SetPlayerToGroup(characterId, group, rank)
|
||||
local player = NDCore.fetchCharacter(characterId)
|
||||
return player and player.addGroup(group, rank)
|
||||
end
|
||||
|
||||
-- Remove a player from a group.
|
||||
function NDCore.Functions.RemovePlayerFromGroup(characterId, group)
|
||||
local player = NDCore.fetchCharacter(characterId)
|
||||
return player and player.removeGroup(group)
|
||||
end
|
||||
|
||||
-- Update the characters last location into the database.
|
||||
function NDCore.Functions.UpdateLastLocation(characterId, location)
|
||||
local player = NDCore.fetchCharacter(characterId)
|
||||
return player and player.setMetadata("location", {
|
||||
x = location.x,
|
||||
y = location.y,
|
||||
x = location.z,
|
||||
w = location.h or location.heading or location.w or 0.0
|
||||
})
|
||||
end
|
||||
|
||||
-- Getting all the characters the player has and returning them to the client.
|
||||
RegisterNetEvent("ND:GetCharacters", function()
|
||||
local src = source
|
||||
TriggerClientEvent("ND:returnCharacters", src, NDCore.fetchAllCharacters(src))
|
||||
end)
|
||||
|
||||
-- Creating a new character.
|
||||
RegisterNetEvent("ND:newCharacter", function(newCharacter)
|
||||
local src = source
|
||||
NDCore.newCharacter(src, {
|
||||
firstname = newCharacter.firstName,
|
||||
lastname = newCharacter.lastName,
|
||||
dob = newCharacter.dob,
|
||||
gender = newCharacter.gender,
|
||||
cash = newCharacter.cash,
|
||||
bank = newCharacter.bank,
|
||||
})
|
||||
end)
|
||||
|
||||
-- Update the character info when edited.
|
||||
RegisterNetEvent("ND:editCharacter", function(newCharacter)
|
||||
local src = source
|
||||
local player = NDCore.fetchCharacter(newCharacter.id, src)
|
||||
return player and player.setData({
|
||||
source = src,
|
||||
firstname = newCharacter.firstName,
|
||||
lastname = newCharacter.lastName,
|
||||
dob = newCharacter.dob,
|
||||
gender = newCharacter.gender
|
||||
})
|
||||
end)
|
||||
|
||||
-- Delete character from database.
|
||||
RegisterNetEvent("ND:deleteCharacter", function(characterId)
|
||||
local src = source
|
||||
local player = NDCore.fetchCharacter(characterId, src)
|
||||
if not player or player.source ~= source then return end
|
||||
return player.delete()
|
||||
end)
|
||||
|
||||
-- add a player to the table.
|
||||
RegisterNetEvent("ND:setCharacterOnline", function(id)
|
||||
local src = source
|
||||
NDCore.setActiveCharacter(src, tonumber(id))
|
||||
end)
|
||||
|
||||
-- Update the characters clothes.
|
||||
RegisterNetEvent("ND:updateClothes", function(clothing)
|
||||
local src = source
|
||||
local player = NDCore.getPlayer(src)
|
||||
player.setMetadata("clothing", clothing)
|
||||
end)
|
||||
Reference in New Issue
Block a user