This repository has been archived on 2026-03-25. You can view files and clone it, but cannot push or open issues or pull requests.
ResourceGeneratorPlugin/template/server/server.lua

125 lines
4.0 KiB
Lua

local CLASS = "CHANGEME"--This is the name that the logging framework will use to display your logs in the correct manner
--BEGIN CONFIG
--GLOBAL CONSTANTS
local LOG_LEVEL = 4
local RESOURCE_CODE = GetResourceMetadata(GetCurrentResourceName(), "resource_code", 0)
local USE_MYSQL = tonumber(GetResourceMetadata(GetCurrentResourceName(), "USE_MYSQL", 0))
--Global Constants
--Global Variables
--LOCAL VARIABLES
local config = {}
--END CONFIG
-----------------------------------------------------------------------------------------------
-------------------
--YOUR CODE HERE---
--HAPPY CODING!----
-------------------
------------------------------------------------------------------------------------------------
--Config Syncing Function DO NOT TOUCH unless you know what you are doing.
Citizen.CreateThread(function()
local cfgCounter = 0
local RunOnce = true
local RunConfig = true
while RunConfig do
local cfgToLoad = {}
local initconfig = json.decode(LoadResourceFile(GetCurrentResourceName(), "initconfig.json"))
if USE_MYSQL == 1 and RunOnce then
local ready = exports.GCONFIG:IsReady()
if ready then
if cfgCounter <= 3 then
local qResults = exports.GCONFIG:GetConfig(RESOURCE_CODE)
if qResults ~= -1 then
cfgToLoad = exports.GCONFIG:GetConfigWithUNI(RESOURCE_CODE)
RunOnce = false
cfgCounter = 0
else
local initconfig = json.decode(LoadResourceFile(GetCurrentResourceName(), "initConfig.json"))
TriggerEvent("GCONFIG:CreateInitialConfig", RESOURCE_CODE, initconfig)
--INCREMENT COUNTER
cfgCounter = cfgCounter + 1
Log("Config re-running in 1sec to procure updated MySQL values...", 4)
end
elseif cfgCounter > 3 then
Log("Config retry reached max limit, loading config defaults. Check GCONFIG", 1)
RunOnce = false
cfgToLoad = initconfig
else
Log("I have no clue how you have arrived here, something is very wrong...", 1)
end
end
else
Log("RunOnce check aborted as UseMySQL is not TRUE.", 4)
RunOnce = false
cfgToLoad = initconfig
end
if not RunOnce and RunConfig then
UpdateConfigs(cfgToLoad)
RunConfig = false
end
Wait(1000)
end
end)
function UpdateConfigs(cfgJson) --for loop that reads all variables from config file.
Log("Updating Config", 4)
config = cfgJson
for i, qResult in pairs(config) do
Log("QRESULT.CONFIGNAME "..qResult.ConfigName, 4)
if qResult.ConfigName == "LOG_LEVEL" then
LOG_LEVEL = qResult.ConfigValue
elseif qResult.ConfigName == "CHANGEME" then
CHANGE_ME = qResult.ConfigValue
end
end
Wait(1000)
TriggerClientEvent(RESOURCE_CODE..":ConfigUpdate_cl", -1, config)
end
RegisterNetEvent(RESOURCE_CODE..":ConfigUpdate_sv")
AddEventHandler(RESOURCE_CODE..":ConfigUpdate_sv", function(cfgJson)
UpdateConfigs(cfgJson)
Wait(0)
TriggerClientEvent(RESOURCE_CODE..":ConfigUpdate_cl", -1, cfgJson)
end)
RegisterCommand(string.lower(RESOURCE_CODE).."gconfig", function(source, args)
TriggerEvent("GCONFIG:UpdateMe", RESOURCE_CODE, true)
end)
--SLF Server Logging Function DO NOT TOUCH unless you know what you are doing.
function Log(message, logLevel)
local line = debug.getinfo(2, "l").currentline
local name = debug.getinfo(2, "n").name
if name == "fn" then
name = "Thread"
end
local value = "{"..CLASS.."."..name.."("..line..")} "..message
if tonumber(LOG_LEVEL) >= logLevel then
exports.SLF:LogToServer(RESOURCE_CODE, logLevel, value)
end
end
function DisLog(message)
local line = debug.getinfo(2, "l").currentline
local name = debug.getinfo(2, "n").name
if name == "fn" then
name = "Thread"
end
local value = "{"..CLASS.."."..name.."("..line..")} "..message
exports.SLF:LogServerToDiscord(RESOURCE_CODE, message)
end
function GetSID(UUID)
Log("Requesting SID for UUID: "..UUID, 4)
local SID = exports.SPH:GetSID(UUID)
Log("Retreived SID: "..SID.." for UUID: "..UUID, 4)
return SID
end