Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions [SQL]/legacy.sql
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,7 @@ CREATE TABLE `users` (
`dateofbirth` varchar(10) DEFAULT NULL,
`sex` varchar(1) DEFAULT NULL,
`height` int(11) DEFAULT NULL,
`nationality` varchar(52) DEFAULT NULL,
`skin` longtext DEFAULT NULL,
`status` longtext DEFAULT NULL,
`is_dead` tinyint(1) DEFAULT 0,
Expand Down
16 changes: 15 additions & 1 deletion [core]/es_extended/server/classes/player.lua
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@
---@field set fun(k: string, v: any) # Set custom variable.
---@field get fun(k: string): any # Get custom variable.
---@field updatePlayerData fun(key: string, value: any) # Update player data
---@field getNationality fun(): string # Get player's nationality
---@field setNationality fun(nationality: string) # Set player's nationality
--- Metadata Functions
---@field getMeta fun(index?: string, subIndex?: string|table): any # Get metadata value(s).
---@field setMeta fun(index: string, value: any, subValue?: any) # Set metadata value(s).
Expand Down Expand Up @@ -135,6 +137,7 @@
---@field lastPlaytime number # Last recorded playtime in seconds.
---@field paycheckEnabled boolean # Whether paycheck is enabled.
---@field admin boolean # Whether the player is an admin.
---@field nationality string # Player's nationality

---@param playerId number
---@param identifier string
Expand All @@ -148,8 +151,9 @@
---@param name string
---@param coords vector4|{x: number, y: number, z: number, heading: number}
---@param metadata table
---@param nationality string
---@return xPlayer
function CreateExtendedPlayer(playerId, identifier, ssn, group, accounts, inventory, weight, job, loadout, name, coords, metadata)
function CreateExtendedPlayer(playerId, identifier, ssn, group, accounts, inventory, weight, job, loadout, name, coords, metadata, nationality)
---@diagnostic disable-next-line: missing-fields
local self = {} ---@type xPlayer

Expand All @@ -165,6 +169,7 @@ function CreateExtendedPlayer(playerId, identifier, ssn, group, accounts, invent
self.playerId = playerId
self.source = playerId
self.variables = {}
self.nationality = nationality
self.weight = weight
self.maxWeight = Config.MaxWeight
self.metadata = metadata
Expand Down Expand Up @@ -305,6 +310,15 @@ function CreateExtendedPlayer(playerId, identifier, ssn, group, accounts, invent
self.triggerEvent("esx:updatePlayerData", key, value)
end

function self.setNationality(nationality)
self.nationality = nationality
self.updatePlayerData("nationality", nationality)
end

function self.getNationality()
return self.nationality
end

function self.getAccounts(minimal)
if not minimal then
return self.accounts
Expand Down
13 changes: 9 additions & 4 deletions [core]/es_extended/server/main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ local newPlayer = "INSERT INTO `users` SET `accounts` = ?, `identifier` = ?, `ss
local loadPlayer = "SELECT `accounts`, `ssn`, `job`, `job_grade`, `group`, `position`, `inventory`, `skin`, `loadout`, `metadata`"

if Config.Multichar then
newPlayer = newPlayer .. ", `firstname` = ?, `lastname` = ?, `dateofbirth` = ?, `sex` = ?, `height` = ?"
newPlayer = newPlayer .. ", `firstname` = ?, `lastname` = ?, `dateofbirth` = ?, `sex` = ?, `height` = ?, `nationality` = ?"
end

if Config.StartingInventoryItems then
newPlayer = newPlayer .. ", `inventory` = ?"
end

if Config.Multichar or Config.Identity then
loadPlayer = loadPlayer .. ", `firstname`, `lastname`, `dateofbirth`, `sex`, `height`"
loadPlayer = loadPlayer .. ", `firstname`, `lastname`, `dateofbirth`, `sex`, `height`, `nationality`"
end

loadPlayer = loadPlayer .. " FROM `users` WHERE identifier = ?"
Expand All @@ -32,7 +32,7 @@ local function createESXPlayer(identifier, playerId, data)
defaultGroup = "admin"
end
local parameters = Config.Multichar and
{ json.encode(accounts), identifier, Core.generateSSN(), defaultGroup, data.firstname, data.lastname, data.dateofbirth, data.sex, data.height }
{ json.encode(accounts), identifier, Core.generateSSN(), defaultGroup, data.firstname, data.lastname, data.dateofbirth, data.sex, data.height, data.nationality }
or { json.encode(accounts), identifier, Core.generateSSN(), defaultGroup }

if Config.StartingInventoryItems then
Expand Down Expand Up @@ -195,6 +195,7 @@ function loadESXPlayer(identifier, playerId, isNew)
lastName = "Doe",
dateofbirth = "01/01/2000",
height = 120,
nationality = "United States",
dead = false,
}

Expand Down Expand Up @@ -313,7 +314,7 @@ function loadESXPlayer(identifier, playerId, isNew)
userData.metadata = (result.metadata and result.metadata ~= "") and json.decode(result.metadata) or {}

-- xPlayer Creation
local xPlayer = CreateExtendedPlayer(playerId, identifier, userData.ssn, userData.group, userData.accounts, userData.inventory, userData.weight, userData.job, userData.loadout, GetPlayerName(playerId), userData.coords, userData.metadata)
local xPlayer = CreateExtendedPlayer(playerId, identifier, userData.ssn, userData.group, userData.accounts, userData.inventory, userData.weight, userData.job, userData.loadout, GetPlayerName(playerId), userData.coords, userData.metadata, userData.nationality)

GlobalState["playerCount"] = GlobalState["playerCount"] + 1
ESX.Players[playerId] = xPlayer
Expand Down Expand Up @@ -343,6 +344,10 @@ function loadESXPlayer(identifier, playerId, isNew)
userData.height = result.height
xPlayer.set("height", result.height)
end
if result.nationality then
userData.nationality = result.nationality
xPlayer.setNationality(result.nationality)
end
end

TriggerEvent("esx:playerLoaded", playerId, xPlayer, isNew)
Expand Down
35 changes: 35 additions & 0 deletions [core]/es_extended/server/migration/v1.13.5/nationality/main.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
local esxVersion = "v1.13.5"

Core.Migrations = Core.Migrations or {}
Core.Migrations[esxVersion] = Core.Migrations[esxVersion] or {}

if GetResourceKvpInt(("esx_migration:%s"):format(esxVersion)) == 1 then
return
end

---@return boolean restartRequired
Core.Migrations[esxVersion].nationality = function()
print("^4[esx_migration:v1.13.5:nationality]^7 Adding nationality column to users table.")

local col = MySQL.scalar.await([[
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'users'
AND COLUMN_NAME = 'nationality'
]])

if col == 0 then
print("^4[esx_migration:v1.13.5:nationality]^7 Column not found, altering users table.")
MySQL.update.await([[
ALTER TABLE `users`
ADD COLUMN `nationality` VARCHAR(52) DEFAULT NULL AFTER `height`
]])
else
print("^4[esx_migration:v1.13.5:nationality]^7 Column already exists, migration not needed.")
return false
end

print("^4[esx_migration:v1.13.5:nationality]^7 Migration complete.")
return true
end
2 changes: 2 additions & 0 deletions [core]/esx_identity/client/main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ ESX.SecureNetEvent("esx_identity:setPlayerData", function(data)
ESX.SetPlayerData("dateofbirth", data.dateOfBirth)
ESX.SetPlayerData("sex", data.sex)
ESX.SetPlayerData("height", data.height)
ESX.SetPlayerData("nationality", data.nationality)
end)
end)

Expand All @@ -27,6 +28,7 @@ end)

RegisterNUICallback("ready", function(_, cb)
ready = true
cb({ config = Config })
cb(1)
end)

Expand Down
Loading
Loading