From aec6a68c6b892c82ff5441c6ce41d4fd58e11798 Mon Sep 17 00:00:00 2001 From: Falco Peijnenburg Date: Sun, 22 Sep 2024 19:26:35 +0200 Subject: [PATCH] Also load from the old table --- gamemode/modules/base/cl_jobmodels.lua | 36 ++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/gamemode/modules/base/cl_jobmodels.lua b/gamemode/modules/base/cl_jobmodels.lua index 6c07293e8..bbca1449c 100644 --- a/gamemode/modules/base/cl_jobmodels.lua +++ b/gamemode/modules/base/cl_jobmodels.lua @@ -59,16 +59,42 @@ local function jobHasModel(job, model) return istable(job.model) and table.HasValue(job.model, model) or job.model == model end -timer.Simple(0, function() - -- run after the jobs have loaded - local models = sql.Query(string.format([[SELECT jobcmd, model FROM darkrp_playermodels WHERE server = %s;]], sql.SQLStr(game.GetIPAddress()))) - - for _, v in ipairs(models or {}) do +local function setPreferredModels(models) + for _, v in ipairs(models) do local job = DarkRP.getJobByCommand(v.jobcmd) if job == nil or not jobHasModel(job, v.model) then continue end preferredModels[v.jobcmd] = v.model end +end + +-- The old table, darkp_playermodels, acts as a global mapping of preferred +-- models for jobs. +local function setModelsFromOldTable() + local oldTableExists = tobool(sql.QueryValue([[SELECT 1 FROM sqlite_master WHERE type='table' AND name='darkp_playermodels']])) + if not oldTableExists then return end + + local models = sql.Query([[SELECT jobcmd, model FROM darkp_playermodels;]]) + + if not models then return end + setPreferredModels(models) +end + +-- The newer table is server specific. +local function setModelsFromNewTable() + local models = sql.Query(string.format([[SELECT jobcmd, model FROM darkrp_playermodels WHERE server = %s;]], sql.SQLStr(game.GetIPAddress()))) + + if not models then return end + setPreferredModels(models) +end + +timer.Simple(0, function() + -- Run after the jobs have loaded, to make sure the jobs can be looked up. + + -- Set models from the old table, before overriding them with data from the + -- new table. That way, server specific preferences always have precedence. + setModelsFromOldTable() + setModelsFromNewTable() sendModels() end)