112 lines
		
	
	
		
			No EOL
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			No EOL
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| Globals = {}
 | |
| Functions = {}
 | |
| Locale = Locales[Config.Locale or "en"]
 | |
| 
 | |
| exports("locale", function() return Locale end)
 | |
| exports("config", function() return Config end)
 | |
| 
 | |
| ---@param text string
 | |
| ---@param debugtype? "warning"|"debug"
 | |
| function DebugPrint(text, debugtype, ...)
 | |
|   if not Config.Debug then return end
 | |
|     
 | |
|   local prefix = "^2[DEBUG]^7"
 | |
|   if debugtype == "warning" then prefix = "^3[WARNING]^7" end 
 | |
| 
 | |
|   local args = {...}
 | |
|   local output = ""
 | |
|   for i = 1, #args do
 | |
|     if type(args[i]) == "table" then
 | |
|       output = output .. json.encode(args[i])
 | |
|     elseif type(args[i]) ~= "string" then
 | |
|       output = output .. tostring(args[i])
 | |
|     else
 | |
|       output = output .. args[i]
 | |
|     end
 | |
| 
 | |
|     if i ~= #args then output = output .. " " end
 | |
|   end
 | |
|   
 | |
|   print(prefix, text, output)
 | |
| end
 | |
| 
 | |
| ---@param vehicle integer
 | |
| function JGDeleteVehicle(vehicle)
 | |
|   if not DoesEntityExist(vehicle) then return end
 | |
| 
 | |
|   if GetResourceState("AdvancedParking") == "started" then
 | |
|     exports["AdvancedParking"]:DeleteVehicle(vehicle, false)
 | |
|   else
 | |
|     DeleteEntity(vehicle)
 | |
|   end
 | |
| end
 | |
| 
 | |
| ---@param vehicle integer
 | |
| ---@param plate string
 | |
| function SetVehiclePlateText(vehicle, plate)
 | |
|   if GetResourceState("AdvancedParking") == "started" then
 | |
|     exports["AdvancedParking"]:UpdatePlate(vehicle, plate)
 | |
|   else
 | |
|     SetVehicleNumberPlateText(vehicle, plate)
 | |
|   end
 | |
| end
 | |
| 
 | |
| ---@param model string | number
 | |
| ---@return number hash
 | |
| function ConvertModelToHash(model)
 | |
|   return type(model) == "string" and joaat(model) or model --[[@as number]]
 | |
| end
 | |
| 
 | |
| ---@param plate string
 | |
| function IsValidGTAPlate(plate)
 | |
|   -- Check if the plate matches the pattern and is not longer than 8 characters
 | |
|   -- %w matches alphanumeric characters, %s matches space characters
 | |
|   -- The pattern checks for a string starting with 0 or more alphanumeric or space characters
 | |
|   if #plate <= 8 and plate:match("^[%w%s]*$") then return true end
 | |
|   return false
 | |
| end
 | |
| 
 | |
| ---@param table table
 | |
| function TableKeys(table)
 | |
|   local keys = {}
 | |
|   
 | |
|   for k, _ in pairs(table) do
 | |
|     keys[#keys+1] = k  
 | |
|   end
 | |
| 
 | |
|   return keys
 | |
| end
 | |
| 
 | |
| -- Round a number to so-many decimal of places,
 | |
| -- Which can be negative, e.g. -1 places rounds to 10's
 | |
| ---@param num integer
 | |
| ---@param dp? integer
 | |
| ---@return number
 | |
| function Round(num, dp)
 | |
|   dp = dp or 0
 | |
|   local mult = 10^(dp or 0)
 | |
|   return math.floor(num * mult + 0.5) / mult
 | |
| end
 | |
| 
 | |
| ---@param list table
 | |
| ---@param item string|number
 | |
| ---@return boolean
 | |
| function IsItemInList(list, item)
 | |
|   if #list == 0 then
 | |
|     return true
 | |
|   end
 | |
| 
 | |
|   for _, value in ipairs(list) do
 | |
|     if value == item then
 | |
|       return true
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   return false
 | |
| end
 | |
| 
 | |
| ---@param s string
 | |
| ---@return string
 | |
| function Trim(s)
 | |
|   return (s:gsub("^%s*(.-)%s*$", "%1"))
 | |
| end | 
