mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-30 17:58:54 +00:00
Merge branch 'dev' into skin-fixs
This commit is contained in:
+42
-18
@@ -1,51 +1,75 @@
|
||||
local Jobs = {}
|
||||
local LastTime = nil
|
||||
---@class CronJob
|
||||
---@field h number
|
||||
---@field m number
|
||||
---@field cb function|table
|
||||
|
||||
---@type CronJob[]
|
||||
local cronJobs = {}
|
||||
---@type number|false
|
||||
local lastTimestamp = false
|
||||
|
||||
---@param h number
|
||||
---@param m number
|
||||
---@param cb function|table
|
||||
function RunAt(h, m, cb)
|
||||
Jobs[#Jobs + 1] = {
|
||||
cronJobs[#cronJobs + 1] = {
|
||||
h = h,
|
||||
m = m,
|
||||
cb = cb,
|
||||
}
|
||||
end
|
||||
|
||||
---@return number
|
||||
function GetUnixTimestamp()
|
||||
return os.time()
|
||||
end
|
||||
|
||||
function OnTime(time)
|
||||
for i = 1, #Jobs, 1 do
|
||||
---@param timestamp number
|
||||
function OnTime(timestamp)
|
||||
for i = 1, #cronJobs, 1 do
|
||||
local scheduledTimestamp = os.time({
|
||||
hour = Jobs[i].h,
|
||||
min = Jobs[i].m,
|
||||
hour = cronJobs[i].h,
|
||||
min = cronJobs[i].m,
|
||||
sec = 0, -- Assuming tasks run at the start of the minute
|
||||
day = os.date("%d", time),
|
||||
month = os.date("%m", time),
|
||||
year = os.date("%Y", time),
|
||||
day = os.date("%d", timestamp),
|
||||
month = os.date("%m", timestamp),
|
||||
year = os.date("%Y", timestamp),
|
||||
})
|
||||
|
||||
if time >= scheduledTimestamp and (not LastTime or LastTime < scheduledTimestamp) then
|
||||
if timestamp >= scheduledTimestamp and (not lastTimestamp or lastTimestamp < scheduledTimestamp) then
|
||||
local d = os.date('*t', scheduledTimestamp).wday
|
||||
Jobs[i].cb(d, Jobs[i].h, Jobs[i].m)
|
||||
cronJobs[i].cb(d, cronJobs[i].h, cronJobs[i].m)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---@return nil
|
||||
function Tick()
|
||||
local time = GetUnixTimestamp()
|
||||
local timestamp = GetUnixTimestamp()
|
||||
|
||||
if not LastTime or os.date("%M", time) ~= os.date("%M", LastTime) then
|
||||
OnTime(time)
|
||||
LastTime = time
|
||||
if not lastTimestamp or os.date("%M", timestamp) ~= os.date("%M", lastTimestamp) then
|
||||
OnTime(timestamp)
|
||||
lastTimestamp = timestamp
|
||||
end
|
||||
|
||||
SetTimeout(60000, Tick)
|
||||
end
|
||||
|
||||
LastTime = GetUnixTimestamp()
|
||||
|
||||
lastTimestamp = GetUnixTimestamp()
|
||||
Tick()
|
||||
|
||||
---@param h number
|
||||
---@param m number
|
||||
---@param cb function|table
|
||||
AddEventHandler("cron:runAt", function(h, m, cb)
|
||||
local invokingResource = GetInvokingResource() or "Unknown"
|
||||
local typeH = type(h)
|
||||
local typeM = type(m)
|
||||
local typeCb = type(cb)
|
||||
|
||||
assert(typeH == "number", ("Expected number for h, got %s. Invoking Resource: '%s'"):format(typeH, invokingResource))
|
||||
assert(typeM == "number", ("Expected number for m, got %s. Invoking Resource: '%s'"):format(typeM, invokingResource))
|
||||
assert(typeCb == "function" or (typeCb == "table" and type(getmetatable(cb)?.__call) == "function"), ("Expected function for cb, got %s. Invoking Resource: '%s'"):format(typeCb, invokingResource))
|
||||
|
||||
RunAt(h, m, cb)
|
||||
end)
|
||||
|
||||
@@ -389,7 +389,12 @@ function ESX.UI.Menu.Close(menuType, namespace, name, cancel)
|
||||
if not cancel then
|
||||
ESX.UI.Menu.Opened[i].close()
|
||||
else
|
||||
ESX.UI.Menu.Opened[i].cancel()
|
||||
local menu = ESX.UI.Menu.Opened[i]
|
||||
ESX.UI.Menu.RegisteredTypes[menu.type].close(menu.namespace, menu.name)
|
||||
|
||||
if type(menu.cancel) ~= "nil" then
|
||||
menu.cancel(menu.data, menu)
|
||||
end
|
||||
end
|
||||
ESX.UI.Menu.Opened[i] = nil
|
||||
end
|
||||
@@ -405,7 +410,12 @@ function ESX.UI.Menu.CloseAll(cancel)
|
||||
if not cancel then
|
||||
ESX.UI.Menu.Opened[i].close()
|
||||
else
|
||||
ESX.UI.Menu.Opened[i].cancel()
|
||||
local menu = ESX.UI.Menu.Opened[i]
|
||||
ESX.UI.Menu.RegisteredTypes[menu.type].close(menu.namespace, menu.name)
|
||||
|
||||
if type(menu.cancel) ~= "nil" then
|
||||
menu.cancel(menu.data, menu)
|
||||
end
|
||||
end
|
||||
ESX.UI.Menu.Opened[i] = nil
|
||||
end
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
local class = {}
|
||||
class.__index = class
|
||||
|
||||
function class:new(...)
|
||||
local instance = setmetatable({}, self)
|
||||
if instance.constructor then
|
||||
local ret = instance:constructor(...)
|
||||
if type(ret) == 'table' then
|
||||
return ret
|
||||
end
|
||||
end
|
||||
return instance
|
||||
end
|
||||
|
||||
function Class(body, heritage)
|
||||
local prototype = body or {}
|
||||
prototype.__index = prototype
|
||||
return setmetatable(prototype, heritage or class)
|
||||
end
|
||||
|
||||
return Class
|
||||
@@ -0,0 +1,44 @@
|
||||
Point = ESX.Class()
|
||||
|
||||
function Point:constructor(properties)
|
||||
self.coords = properties.coords
|
||||
self.hidden = properties.hidden or false
|
||||
self.inside = properties.inside or function() end
|
||||
self.enter = properties.enter or function() end
|
||||
self.leave = properties.leave or function() end
|
||||
self.handle = ESX.CreatePointInternal(properties.coords, properties.distance, properties.hidden, function()
|
||||
self.nearby = true
|
||||
if self.enter then
|
||||
self:enter()
|
||||
end
|
||||
if self.inside then
|
||||
CreateThread(function()
|
||||
while self.nearby do
|
||||
local coords = GetEntityCoords(ESX.PlayerData.ped)
|
||||
self.currDistance = #(coords - self.coords)
|
||||
self:inside()
|
||||
Wait(0)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end, function()
|
||||
self.nearby = false
|
||||
if self.leave then
|
||||
self:leave()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function Point:delete()
|
||||
ESX.RemovePointInternal(self.handle)
|
||||
end
|
||||
|
||||
function Point:toggle(hidden)
|
||||
if hidden == nil then
|
||||
hidden = not self.hidden
|
||||
end
|
||||
self.hidden = hidden
|
||||
ESX.HidePointInternal(self.handle, hidden)
|
||||
end
|
||||
|
||||
return Point
|
||||
@@ -14,7 +14,7 @@ local function ApplyMetadata(metadata)
|
||||
end
|
||||
end
|
||||
|
||||
ESX.SecureNetEvent("esx:playerLoaded", function(xPlayer, _, skin)
|
||||
RegisterNetEvent("esx:playerLoaded", function(xPlayer, _, skin)
|
||||
ESX.PlayerData = xPlayer
|
||||
|
||||
if not Config.Multichar then
|
||||
@@ -54,7 +54,7 @@ ESX.SecureNetEvent("esx:playerLoaded", function(xPlayer, _, skin)
|
||||
end
|
||||
|
||||
Actions:Init()
|
||||
|
||||
StartPointsLoop()
|
||||
StartServerSyncLoops()
|
||||
end)
|
||||
|
||||
|
||||
@@ -45,9 +45,9 @@ function Actions:TrackPed()
|
||||
|
||||
if playerPed ~= newPed then
|
||||
ESX.PlayerData.ped = newPed
|
||||
ESX.SetPlayerData("ped", playerPed)
|
||||
ESX.SetPlayerData("ped", newPed)
|
||||
|
||||
TriggerEvent("esx:playerPedChanged", playerPed)
|
||||
TriggerEvent("esx:playerPedChanged", newPed)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -152,7 +152,6 @@ function Actions:PedLoop()
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
function Actions:Init()
|
||||
self:SlowLoop()
|
||||
self:PedLoop()
|
||||
|
||||
@@ -10,7 +10,8 @@ end
|
||||
|
||||
function Adjustments:DisableAimAssist()
|
||||
if Config.DisableAimAssist then
|
||||
SetPlayerLockon(ESX.playerId, false)
|
||||
SetPlayerTargetingMode(3)
|
||||
SetPlayerLockonRangeOverride(ESX.playerId, 0.0)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -7,33 +7,44 @@ Callbacks.storage = {}
|
||||
Callbacks.id = 0
|
||||
|
||||
function Callbacks:Trigger(event, cb, invoker, ...)
|
||||
self.requests[self.id] = cb
|
||||
|
||||
self.requests[self.id] = {
|
||||
await = type(cb) == "boolean",
|
||||
cb = cb or promise:new()
|
||||
}
|
||||
local table = self.requests[self.id]
|
||||
|
||||
TriggerServerEvent("esx:triggerServerCallback", event, self.id, invoker, ...)
|
||||
|
||||
self.id += 1
|
||||
|
||||
return table.cb
|
||||
end
|
||||
|
||||
function Callbacks:Execute(cb, ...)
|
||||
function Callbacks:Execute(cb, id, ...)
|
||||
local success, errorString = pcall(cb, ...)
|
||||
|
||||
if not success then
|
||||
print(("[^1ERROR^7] Failed to execute Callback with RequestId: ^5%s^7"):format(self.currentId))
|
||||
print(("[^1ERROR^7] Failed to execute Callback with RequestId: ^5%s^7"):format(id))
|
||||
error(errorString)
|
||||
return
|
||||
end
|
||||
self.currentId = nil
|
||||
end
|
||||
|
||||
function Callbacks:ServerRecieve(requestId, invoker, ...)
|
||||
self.currentId = requestId
|
||||
if not self.requests[self.currentId] then
|
||||
return error(("Server Callback with requestId ^5%s^1 Was Called by ^5%s^1 but does not exist."):format(self.currentId, invoker))
|
||||
if not self.requests[requestId] then
|
||||
return error(("Server Callback with requestId ^5%s^1 Was Called by ^5%s^1 but does not exist."):format(requestId, invoker))
|
||||
end
|
||||
|
||||
local callback = self.requests[self.currentId]
|
||||
local callback = self.requests[requestId]
|
||||
|
||||
Callbacks:Execute(callback, ...)
|
||||
self.requests[requestId] = nil
|
||||
|
||||
if callback.await then
|
||||
callback.cb:resolve({...})
|
||||
else
|
||||
self:Execute(callback.cb, requestId, ...)
|
||||
end
|
||||
end
|
||||
|
||||
function Callbacks:Register(name, cb)
|
||||
@@ -41,7 +52,6 @@ function Callbacks:Register(name, cb)
|
||||
end
|
||||
|
||||
function Callbacks:ClientRecieve(eventName, requestId, invoker, ...)
|
||||
self.currentId = requestId
|
||||
|
||||
if not self.storage[eventName] then
|
||||
return error(("Client Callback with requestId ^5%s^1 Was Called by ^5%s^1 but does not exist."):format(eventName, invoker))
|
||||
@@ -52,7 +62,7 @@ function Callbacks:ClientRecieve(eventName, requestId, invoker, ...)
|
||||
end
|
||||
local callback = self.storage[eventName]
|
||||
|
||||
Callbacks:Execute(callback, returnCb, ...)
|
||||
self:Execute(callback, requestId, returnCb, ...)
|
||||
end
|
||||
|
||||
---@param eventName string
|
||||
@@ -66,6 +76,28 @@ ESX.TriggerServerCallback = function(eventName, callback, ...)
|
||||
Callbacks:Trigger(eventName, callback, invoker, ...)
|
||||
end
|
||||
|
||||
---@param eventName string
|
||||
---@param ... any
|
||||
---@return any
|
||||
ESX.AwaitServerCallback = function(eventName, ...)
|
||||
local invokingResource = GetInvokingResource()
|
||||
local invoker = (invokingResource and invokingResource ~= "unknown") and invokingResource or "es_extended"
|
||||
|
||||
local p = Callbacks:Trigger(eventName, false, invoker, ...)
|
||||
if not p then return end
|
||||
|
||||
-- if the server callback takes longer than 15 seconds to respond, reject the promise
|
||||
SetTimeout(15000, function()
|
||||
if p.state == "pending" then
|
||||
p:reject("Server Callback Timed Out")
|
||||
end
|
||||
end)
|
||||
|
||||
Citizen.Await(p)
|
||||
|
||||
return table.unpack(p.value)
|
||||
end
|
||||
|
||||
ESX.SecureNetEvent("esx:serverCallback", function(...)
|
||||
Callbacks:ServerRecieve(...)
|
||||
end)
|
||||
|
||||
@@ -9,7 +9,7 @@ local function checkPhone()
|
||||
npwd:setPhoneDisabled((phoneItem and phoneItem.count or 0) <= 0)
|
||||
end
|
||||
|
||||
ESX.SecureNetEvent("esx:playerLoaded", checkPhone)
|
||||
RegisterNetEvent("esx:playerLoaded", checkPhone)
|
||||
|
||||
AddEventHandler("onClientResourceStart", function(resource)
|
||||
if resource ~= "npwd" then
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
local points = {}
|
||||
|
||||
function ESX.CreatePointInternal(coords, distance, hidden, enter, leave)
|
||||
local point = {
|
||||
coords = coords,
|
||||
distance = distance,
|
||||
hidden = hidden,
|
||||
enter = enter,
|
||||
leave = leave,
|
||||
resource = GetInvokingResource()
|
||||
}
|
||||
local handle = ESX.Table.SizeOf(points) + 1
|
||||
points[handle] = point
|
||||
return handle
|
||||
end
|
||||
|
||||
function ESX.RemovePointInternal(handle)
|
||||
points[handle] = nil
|
||||
end
|
||||
|
||||
function ESX.HidePointInternal(handle, hidden)
|
||||
if points[handle] then
|
||||
points[handle].hidden = hidden
|
||||
end
|
||||
end
|
||||
|
||||
function StartPointsLoop()
|
||||
CreateThread(function()
|
||||
while true do
|
||||
local coords = GetEntityCoords(ESX.PlayerData.ped)
|
||||
for i, point in pairs(points) do
|
||||
local distance = #(coords - point.coords)
|
||||
|
||||
if not point.hidden and distance <= point.distance then
|
||||
if not point.nearby then
|
||||
points[i].nearby = true
|
||||
points[i].enter()
|
||||
end
|
||||
point.currentDistance = distance
|
||||
elseif point.nearby then
|
||||
points[i].nearby = false
|
||||
points[i].leave()
|
||||
end
|
||||
end
|
||||
Wait(500)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
AddEventHandler('onResourceStop', function(resource)
|
||||
for i, point in pairs(points) do
|
||||
if point.resource == resource then
|
||||
points[i] = nil
|
||||
end
|
||||
end
|
||||
end)
|
||||
@@ -45,6 +45,7 @@ client_scripts {
|
||||
'client/modules/wrapper.lua',
|
||||
'client/modules/callback.lua',
|
||||
'client/modules/adjustments.lua',
|
||||
'client/modules/points.lua',
|
||||
|
||||
'client/main.lua',
|
||||
|
||||
@@ -73,6 +74,7 @@ files {
|
||||
|
||||
'html/fonts/pdown.ttf',
|
||||
'html/fonts/bankgothic.ttf',
|
||||
"client/imports/*.lua",
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
@@ -12,7 +12,7 @@ if not IsDuplicityVersion() then -- Only register this event for the client
|
||||
end
|
||||
end)
|
||||
|
||||
ESX.SecureNetEvent("esx:playerLoaded", function(xPlayer)
|
||||
RegisterNetEvent("esx:playerLoaded", function(xPlayer)
|
||||
ESX.PlayerData = xPlayer
|
||||
ESX.PlayerLoaded = true
|
||||
end)
|
||||
@@ -21,4 +21,23 @@ if not IsDuplicityVersion() then -- Only register this event for the client
|
||||
ESX.PlayerLoaded = false
|
||||
ESX.PlayerData = {}
|
||||
end)
|
||||
|
||||
local external = {{"Class", "class.lua"}, {"Point", "point.lua"}}
|
||||
for i=1, #external do
|
||||
local module = external[i]
|
||||
local path = string.format("client/imports/%s", module[2])
|
||||
|
||||
local file = LoadResourceFile("es_extended", path)
|
||||
if file then
|
||||
local fn, err = load(file, ('@@es_extended/%s'):format(path))
|
||||
|
||||
if not fn or err then
|
||||
return error(('\n^1Error importing module (%s)'):format(external[i]))
|
||||
end
|
||||
|
||||
ESX[module[1]] = fn()
|
||||
else
|
||||
return error(('\n^1Error loading module (%s)'):format(external[i]))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -368,4 +368,36 @@ Locales["cs"] = {
|
||||
["tint_lspd"] = "blue skin",
|
||||
["tint_orange"] = "orange skin",
|
||||
["tint_platinum"] = "platinum skin",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_gray"] = "klasická šedá",
|
||||
["tint_classic_two_tone"] = "klasická dvoutónová",
|
||||
["tint_classic_white"] = "klasická bílá",
|
||||
["tint_classic_beige"] = "klasická béžová",
|
||||
["tint_classic_green"] = "klasická zelená",
|
||||
["tint_classic_blue"] = "klasická modrá",
|
||||
["tint_classic_earth"] = "klasická hnědá",
|
||||
["tint_classic_brown_black"] = "klasická hnědá-černá",
|
||||
["tint_contrast_red"] = "kontrastní červená",
|
||||
["tint_contrast_blue"] = "kontrastní modrá",
|
||||
["tint_contrast_yellow"] = "kontrastní žlutá",
|
||||
["tint_contrast_orange"] = "kontrastní oranžová",
|
||||
["tint_bold_pink"] = "odvážná růžová",
|
||||
["tint_bold_purple_yellow"] = "odvážná fialovo-žlutá",
|
||||
["tint_bold_orange"] = "odvážná oranžová",
|
||||
["tint_bold_green_purple"] = "odvážná zeleno-fialová",
|
||||
["tint_bold_red_feat"] = "odvážná červená feat",
|
||||
["tint_bold_green_feat"] = "odvážná zelená feat",
|
||||
["tint_bold_cyan_feat"] = "odvážná azurová feat",
|
||||
["tint_bold_yellow_feat"] = "odvážná žlutá feat",
|
||||
["tint_bold_red_white"] = "odvážná červená bílá",
|
||||
["tint_bold_blue_white"] = "odvážná modrá bílá",
|
||||
["tint_metallic_gold"] = "metalická zlatá",
|
||||
["tint_metallic_platinum"] = "metalická platina",
|
||||
["tint_metallic_gray_lilac"] = "metalická šedá lila",
|
||||
["tint_metallic_purple_lime"] = "metalická fialová limetka",
|
||||
["tint_metallic_red"] = "metalická červená",
|
||||
["tint_metallic_green"] = "metalická zelená",
|
||||
["tint_metallic_blue"] = "metalická modrá",
|
||||
["tint_metallic_white_aqua"] = "metalická bílá aqua",
|
||||
["tint_metallic_red_yellow"] = "metalická červená žlutá",
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ Locales["de"] = {
|
||||
["received_weapon_ammo"] = "Du bekommst ~o~%sx %s für deine %s von %s",
|
||||
["received_weapon_withammo"] = "Du bekommst %s mit ~o~%sx %s von %s",
|
||||
["received_weapon_hasalready"] = "%s hat versucht dir eine %s zu geben, jedoch hast du diese Waffe bereits!",
|
||||
["received_weapon_noweapon"] = "%s hat versucht dir Munition für eine %s zu geben, jedoch hast du diese Waffe bereits!",
|
||||
["received_weapon_noweapon"] = "%s hat versucht dir Munition für eine %s zu geben, jedoch hast du diese Waffe nicht!",
|
||||
["gave_account_money"] = "Du gibst %s€ (%s) an %s",
|
||||
["received_account_money"] = "Du bekommst %s€ (%s) von %s",
|
||||
["amount_invalid"] = "Ungültige Anzahl",
|
||||
@@ -378,4 +378,37 @@ Locales["de"] = {
|
||||
["tint_lspd"] = "Blau",
|
||||
["tint_orange"] = "Orange",
|
||||
["tint_platinum"] = "Platin",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "klassisches Schwarz",
|
||||
["tint_classic_gray"] = "klassisches Grau",
|
||||
["tint_classic_two_tone"] = "klassisches Zwei-Ton",
|
||||
["tint_classic_white"] = "klassisches Weiß",
|
||||
["tint_classic_beige"] = "klassisches Beige",
|
||||
["tint_classic_green"] = "klassisches Grün",
|
||||
["tint_classic_blue"] = "klassisches Blau",
|
||||
["tint_classic_earth"] = "klassisches Erdfarben",
|
||||
["tint_classic_brown_black"] = "klassisches Braun-Schwarz",
|
||||
["tint_contrast_red"] = "Kontrast Rot",
|
||||
["tint_contrast_blue"] = "Kontrast Blau",
|
||||
["tint_contrast_yellow"] = "Kontrast Gelb",
|
||||
["tint_contrast_orange"] = "Kontrast Orange",
|
||||
["tint_bold_pink"] = "fette Pink",
|
||||
["tint_bold_purple_yellow"] = "fette Lila-Gelb",
|
||||
["tint_bold_orange"] = "fette Orange",
|
||||
["tint_bold_green_purple"] = "fette Grün-Lila",
|
||||
["tint_bold_red_feat"] = "fette Rot feat",
|
||||
["tint_bold_green_feat"] = "fette Grün feat",
|
||||
["tint_bold_cyan_feat"] = "fette Cyan feat",
|
||||
["tint_bold_yellow_feat"] = "fette Gelb feat",
|
||||
["tint_bold_red_white"] = "fette Rot Weiß",
|
||||
["tint_bold_blue_white"] = "fette Blau Weiß",
|
||||
["tint_metallic_gold"] = "metallisches Gold",
|
||||
["tint_metallic_platinum"] = "metallisches Platin",
|
||||
["tint_metallic_gray_lilac"] = "metallisches Grau-Lila",
|
||||
["tint_metallic_purple_lime"] = "metallisches Lila-Limette",
|
||||
["tint_metallic_red"] = "metallisches Rot",
|
||||
["tint_metallic_green"] = "metallisches Grün",
|
||||
["tint_metallic_blue"] = "metallisches Blau",
|
||||
["tint_metallic_white_aqua"] = "metallisches Weiß-Aqua",
|
||||
["tint_metallic_red_yellow"] = "metallisches Rot-Gelb",
|
||||
}
|
||||
|
||||
@@ -378,4 +378,37 @@ Locales["el"] = {
|
||||
["tint_lspd"] = "μπλε δέρμα",
|
||||
["tint_orange"] = "πορτοκαλί δέρμα",
|
||||
["tint_platinum"] = "πλατίνενο δέρμα",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "κλασικό μαύρο",
|
||||
["tint_classic_gray"] = "κλασικό γκρι",
|
||||
["tint_classic_two_tone"] = "κλασικό δίχρωμο",
|
||||
["tint_classic_white"] = "κλασικό λευκό",
|
||||
["tint_classic_beige"] = "κλασικό μπεζ",
|
||||
["tint_classic_green"] = "κλασικό πράσινο",
|
||||
["tint_classic_blue"] = "κλασικό μπλε",
|
||||
["tint_classic_earth"] = "κλασική γή",
|
||||
["tint_classic_brown_black"] = "κλασικό καφέ-μαύρο",
|
||||
["tint_contrast_red"] = "αντίθεση κόκκινο",
|
||||
["tint_contrast_blue"] = "αντίθεση μπλε",
|
||||
["tint_contrast_yellow"] = "αντίθεση κίτρινο",
|
||||
["tint_contrast_orange"] = "αντίθεση πορτοκαλί",
|
||||
["tint_bold_pink"] = "τολμηρό ροζ",
|
||||
["tint_bold_purple_yellow"] = "τολμηρό μοβ-κίτρινο",
|
||||
["tint_bold_orange"] = "τολμηρό πορτοκαλί",
|
||||
["tint_bold_green_purple"] = "τολμηρό πράσινο-μοβ",
|
||||
["tint_bold_red_feat"] = "τολμηρό κόκκινο feat",
|
||||
["tint_bold_green_feat"] = "τολμηρό πράσινο feat",
|
||||
["tint_bold_cyan_feat"] = "τολμηρό κυανό feat",
|
||||
["tint_bold_yellow_feat"] = "τολμηρό κίτρινο feat",
|
||||
["tint_bold_red_white"] = "τολμηρό κόκκινο λευκό",
|
||||
["tint_bold_blue_white"] = "τολμηρό μπλε λευκό",
|
||||
["tint_metallic_gold"] = "μεταλλικό χρυσό",
|
||||
["tint_metallic_platinum"] = "μεταλλικό πλατίνα",
|
||||
["tint_metallic_gray_lilac"] = "μεταλλικό γκρι λιλά",
|
||||
["tint_metallic_purple_lime"] = "μεταλλικό μοβ-λάιμ",
|
||||
["tint_metallic_red"] = "μεταλλικό κόκκινο",
|
||||
["tint_metallic_green"] = "μεταλλικό πράσινο",
|
||||
["tint_metallic_blue"] = "μεταλλικό μπλε",
|
||||
["tint_metallic_white_aqua"] = "μεταλλικό λευκό aqua",
|
||||
["tint_metallic_red_yellow"] = "μεταλλικό κόκκινο-κίτρινο",
|
||||
}
|
||||
|
||||
@@ -378,4 +378,37 @@ Locales["en"] = {
|
||||
["tint_lspd"] = "blue skin",
|
||||
["tint_orange"] = "orange skin",
|
||||
["tint_platinum"] = "platinum skin",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "classic black",
|
||||
["tint_classic_gray"] = "classic gray",
|
||||
["tint_classic_two_tone"] = "classic two-tone",
|
||||
["tint_classic_white"] = "classic white",
|
||||
["tint_classic_beige"] = "classic beige",
|
||||
["tint_classic_green"] = "classic green",
|
||||
["tint_classic_blue"] = "classic blue",
|
||||
["tint_classic_earth"] = "classic earth",
|
||||
["tint_classic_brown_black"] = "classic brown-black",
|
||||
["tint_contrast_red"] = "contrast red",
|
||||
["tint_contrast_blue"] = "contrast blue",
|
||||
["tint_contrast_yellow"] = "contrast yellow",
|
||||
["tint_contrast_orange"] = "contrast orange",
|
||||
["tint_bold_pink"] = "bold pink",
|
||||
["tint_bold_purple_yellow"] = "bold purple-yellow",
|
||||
["tint_bold_orange"] = "bold orange",
|
||||
["tint_bold_green_purple"] = "bold green-purple",
|
||||
["tint_bold_red_feat"] = "bold red feat",
|
||||
["tint_bold_green_feat"] = "bold green feat",
|
||||
["tint_bold_cyan_feat"] = "bold cyan feat",
|
||||
["tint_bold_yellow_feat"] = "bold yellow feat",
|
||||
["tint_bold_red_white"] = "bold red-white",
|
||||
["tint_bold_blue_white"] = "bold blue-white",
|
||||
["tint_metallic_gold"] = "metallic gold",
|
||||
["tint_metallic_platinum"] = "metallic platinum",
|
||||
["tint_metallic_gray_lilac"] = "metallic gray-lilac",
|
||||
["tint_metallic_purple_lime"] = "metallic purple-lime",
|
||||
["tint_metallic_red"] = "metallic red",
|
||||
["tint_metallic_green"] = "metallic green",
|
||||
["tint_metallic_blue"] = "metallic blue",
|
||||
["tint_metallic_white_aqua"] = "metallic white-aqua",
|
||||
["tint_metallic_red_yellow"] = "metallic red-yellow",
|
||||
}
|
||||
|
||||
@@ -363,8 +363,37 @@ Locales["es"] = {
|
||||
["tint_lspd"] = "Skin Azul",
|
||||
["tint_orange"] = "Skin Naranja",
|
||||
["tint_platinum"] = "Skin Plata",
|
||||
|
||||
-- Duty related
|
||||
["stopped_duty"] = "Has salido de servicio.",
|
||||
["started_duty"] = "Has entrado de servicio.",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "negro clásico",
|
||||
["tint_classic_gray"] = "gris clásico",
|
||||
["tint_classic_two_tone"] = "dos tonos clásicos",
|
||||
["tint_classic_white"] = "blanco clásico",
|
||||
["tint_classic_beige"] = "beige clásico",
|
||||
["tint_classic_green"] = "verde clásico",
|
||||
["tint_classic_blue"] = "azul clásico",
|
||||
["tint_classic_earth"] = "tierra clásica",
|
||||
["tint_classic_brown_black"] = "marrón negro clásico",
|
||||
["tint_contrast_red"] = "rojo de contraste",
|
||||
["tint_contrast_blue"] = "azul de contraste",
|
||||
["tint_contrast_yellow"] = "amarillo de contraste",
|
||||
["tint_contrast_orange"] = "naranja de contraste",
|
||||
["tint_bold_pink"] = "rosa atrevida",
|
||||
["tint_bold_purple_yellow"] = "púrpura amarilla atrevida",
|
||||
["tint_bold_orange"] = "naranja atrevido",
|
||||
["tint_bold_green_purple"] = "verde púrpura atrevido",
|
||||
["tint_bold_red_feat"] = "rojo atrevido feat",
|
||||
["tint_bold_green_feat"] = "verde atrevido feat",
|
||||
["tint_bold_cyan_feat"] = "cian atrevido feat",
|
||||
["tint_bold_yellow_feat"] = "amarillo atrevido feat",
|
||||
["tint_bold_red_white"] = "rojo blanco atrevido",
|
||||
["tint_bold_blue_white"] = "azul blanco atrevido",
|
||||
["tint_metallic_gold"] = "oro metálico",
|
||||
["tint_metallic_platinum"] = "platino metálico",
|
||||
["tint_metallic_gray_lilac"] = "gris lila metálico",
|
||||
["tint_metallic_purple_lime"] = "púrpura lima metálico",
|
||||
["tint_metallic_red"] = "rojo metálico",
|
||||
["tint_metallic_green"] = "verde metálico",
|
||||
["tint_metallic_blue"] = "azul metálico",
|
||||
["tint_metallic_white_aqua"] = "blanco aqua metálico",
|
||||
["tint_metallic_red_yellow"] = "rojo amarillo metálico",
|
||||
}
|
||||
|
||||
@@ -237,4 +237,37 @@ Locales["fi"] = {
|
||||
["tint_lspd"] = "Sininen ulkokuori",
|
||||
["tint_orange"] = "Oranssi ulkokuori",
|
||||
["tint_platinum"] = "Platina ulkokuori",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "klassinen musta",
|
||||
["tint_classic_gray"] = "klassinen harmaa",
|
||||
["tint_classic_two_tone"] = "klassinen kaksivärinen",
|
||||
["tint_classic_white"] = "klassinen valkoinen",
|
||||
["tint_classic_beige"] = "klassinen beessi",
|
||||
["tint_classic_green"] = "klassinen vihreä",
|
||||
["tint_classic_blue"] = "klassinen sininen",
|
||||
["tint_classic_earth"] = "klassinen maa",
|
||||
["tint_classic_brown_black"] = "klassinen ruskea-musta",
|
||||
["tint_contrast_red"] = "kontrastinen punainen",
|
||||
["tint_contrast_blue"] = "kontrastinen sininen",
|
||||
["tint_contrast_yellow"] = "kontrastinen keltainen",
|
||||
["tint_contrast_orange"] = "kontrastinen oranssi",
|
||||
["tint_bold_pink"] = "rohkea vaaleanpunainen",
|
||||
["tint_bold_purple_yellow"] = "rohkea violetti-keltainen",
|
||||
["tint_bold_orange"] = "rohkea oranssi",
|
||||
["tint_bold_green_purple"] = "rohkea vihreä-violetti",
|
||||
["tint_bold_red_feat"] = "rohkea punainen feat",
|
||||
["tint_bold_green_feat"] = "rohkea vihreä feat",
|
||||
["tint_bold_cyan_feat"] = "rohkea syaani feat",
|
||||
["tint_bold_yellow_feat"] = "rohkea keltainen feat",
|
||||
["tint_bold_red_white"] = "rohkea punainen valkoinen",
|
||||
["tint_bold_blue_white"] = "rohkea sininen valkoinen",
|
||||
["tint_metallic_gold"] = "metallinen kulta",
|
||||
["tint_metallic_platinum"] = "metallinen platina",
|
||||
["tint_metallic_gray_lilac"] = "metallinen harmaa lila",
|
||||
["tint_metallic_purple_lime"] = "metallinen violetti limetti",
|
||||
["tint_metallic_red"] = "metallinen punainen",
|
||||
["tint_metallic_green"] = "metallinen vihreä",
|
||||
["tint_metallic_blue"] = "metallinen sininen",
|
||||
["tint_metallic_white_aqua"] = "metallinen valkoinen aqua",
|
||||
["tint_metallic_red_yellow"] = "metallinen punainen keltainen",
|
||||
}
|
||||
|
||||
@@ -378,4 +378,37 @@ Locales["fr"] = {
|
||||
["tint_lspd"] = "skin bleu",
|
||||
["tint_orange"] = "skin orange",
|
||||
["tint_platinum"] = "skin platine",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "noir classique",
|
||||
["tint_classic_gray"] = "gris classique",
|
||||
["tint_classic_two_tone"] = "deux tons classiques",
|
||||
["tint_classic_white"] = "blanc classique",
|
||||
["tint_classic_beige"] = "beige classique",
|
||||
["tint_classic_green"] = "vert classique",
|
||||
["tint_classic_blue"] = "bleu classique",
|
||||
["tint_classic_earth"] = "terre classique",
|
||||
["tint_classic_brown_black"] = "marron noir classique",
|
||||
["tint_contrast_red"] = "rouge contrasté",
|
||||
["tint_contrast_blue"] = "bleu contrasté",
|
||||
["tint_contrast_yellow"] = "jaune contrasté",
|
||||
["tint_contrast_orange"] = "orange contrasté",
|
||||
["tint_bold_pink"] = "rose audacieux",
|
||||
["tint_bold_purple_yellow"] = "violet jaune audacieux",
|
||||
["tint_bold_orange"] = "orange audacieux",
|
||||
["tint_bold_green_purple"] = "vert violet audacieux",
|
||||
["tint_bold_red_feat"] = "rouge audacieux feat",
|
||||
["tint_bold_green_feat"] = "vert audacieux feat",
|
||||
["tint_bold_cyan_feat"] = "cyan audacieux feat",
|
||||
["tint_bold_yellow_feat"] = "jaune audacieux feat",
|
||||
["tint_bold_red_white"] = "rouge blanc audacieux",
|
||||
["tint_bold_blue_white"] = "bleu blanc audacieux",
|
||||
["tint_metallic_gold"] = "or métallique",
|
||||
["tint_metallic_platinum"] = "platine métallique",
|
||||
["tint_metallic_gray_lilac"] = "gris lilas métallique",
|
||||
["tint_metallic_purple_lime"] = "violet lime métallique",
|
||||
["tint_metallic_red"] = "rouge métallique",
|
||||
["tint_metallic_green"] = "vert métallique",
|
||||
["tint_metallic_blue"] = "bleu métallique",
|
||||
["tint_metallic_white_aqua"] = "blanc aqua métallique",
|
||||
["tint_metallic_red_yellow"] = "rouge jaune métallique",
|
||||
}
|
||||
|
||||
@@ -372,4 +372,37 @@ Locales["he"] = {
|
||||
["tint_lspd"] = "צבע כחול",
|
||||
["tint_orange"] = "צבע כתום",
|
||||
["tint_platinum"] = "צבע פלטינה",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "שחור קלאסי",
|
||||
["tint_classic_gray"] = "אפור קלאסי",
|
||||
["tint_classic_two_tone"] = "קלאסי דו-גוני",
|
||||
["tint_classic_white"] = "לבן קלאסי",
|
||||
["tint_classic_beige"] = "בז' קלאסי",
|
||||
["tint_classic_green"] = "ירוק קלאסי",
|
||||
["tint_classic_blue"] = "כחול קלאסי",
|
||||
["tint_classic_earth"] = "אדמה קלאסית",
|
||||
["tint_classic_brown_black"] = "חום שחור קלאסי",
|
||||
["tint_contrast_red"] = "אדום קונטרסט",
|
||||
["tint_contrast_blue"] = "כחול קונטרסט",
|
||||
["tint_contrast_yellow"] = "צהוב קונטרסט",
|
||||
["tint_contrast_orange"] = "כתום קונטרסט",
|
||||
["tint_bold_pink"] = "ורוד נועז",
|
||||
["tint_bold_purple_yellow"] = "סגול צהוב נועז",
|
||||
["tint_bold_orange"] = "כתום נועז",
|
||||
["tint_bold_green_purple"] = "ירוק סגול נועז",
|
||||
["tint_bold_red_feat"] = "אדום נועז feat",
|
||||
["tint_bold_green_feat"] = "ירוק נועז feat",
|
||||
["tint_bold_cyan_feat"] = "סיאן נועז feat",
|
||||
["tint_bold_yellow_feat"] = "צהוב נועז feat",
|
||||
["tint_bold_red_white"] = "אדום לבן נועז",
|
||||
["tint_bold_blue_white"] = "כחול לבן נועז",
|
||||
["tint_metallic_gold"] = "זהב מתכתי",
|
||||
["tint_metallic_platinum"] = "פלטינה מתכתית",
|
||||
["tint_metallic_gray_lilac"] = "אפור לילך מתכתי",
|
||||
["tint_metallic_purple_lime"] = "סגול ליים מתכתי",
|
||||
["tint_metallic_red"] = "אדום מתכתי",
|
||||
["tint_metallic_green"] = "ירוק מתכתי",
|
||||
["tint_metallic_blue"] = "כחול מתכתי",
|
||||
["tint_metallic_white_aqua"] = "לבן aqua מתכתי",
|
||||
["tint_metallic_red_yellow"] = "אדום צהוב מתכתי",
|
||||
}
|
||||
|
||||
@@ -374,8 +374,37 @@ Locales["hu"] = {
|
||||
["tint_lspd"] = "blue skin",
|
||||
["tint_orange"] = "orange skin",
|
||||
["tint_platinum"] = "platinum skin",
|
||||
|
||||
-- Duty related
|
||||
["stopped_duty"] = "Leadtad a szolgálatot.",
|
||||
["started_duty"] = "Szolgálatba álltál.",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "klasszikus fekete",
|
||||
["tint_classic_gray"] = "klasszikus szürke",
|
||||
["tint_classic_two_tone"] = "klasszikus két szín",
|
||||
["tint_classic_white"] = "klasszikus fehér",
|
||||
["tint_classic_beige"] = "klasszikus bézs",
|
||||
["tint_classic_green"] = "klasszikus zöld",
|
||||
["tint_classic_blue"] = "klasszikus kék",
|
||||
["tint_classic_earth"] = "klasszikus föld",
|
||||
["tint_classic_brown_black"] = "klasszikus barna-fekete",
|
||||
["tint_contrast_red"] = "kontraszt piros",
|
||||
["tint_contrast_blue"] = "kontraszt kék",
|
||||
["tint_contrast_yellow"] = "kontraszt sárga",
|
||||
["tint_contrast_orange"] = "kontraszt narancs",
|
||||
["tint_bold_pink"] = "merész rózsaszín",
|
||||
["tint_bold_purple_yellow"] = "merész lila-sárga",
|
||||
["tint_bold_orange"] = "merész narancs",
|
||||
["tint_bold_green_purple"] = "merész zöld-lila",
|
||||
["tint_bold_red_feat"] = "merész piros feat",
|
||||
["tint_bold_green_feat"] = "merész zöld feat",
|
||||
["tint_bold_cyan_feat"] = "merész cián feat",
|
||||
["tint_bold_yellow_feat"] = "merész sárga feat",
|
||||
["tint_bold_red_white"] = "merész piros fehér",
|
||||
["tint_bold_blue_white"] = "merész kék fehér",
|
||||
["tint_metallic_gold"] = "metál arany",
|
||||
["tint_metallic_platinum"] = "metál platina",
|
||||
["tint_metallic_gray_lilac"] = "metál szürke lila",
|
||||
["tint_metallic_purple_lime"] = "metál lila lime",
|
||||
["tint_metallic_red"] = "metál piros",
|
||||
["tint_metallic_green"] = "metál zöld",
|
||||
["tint_metallic_blue"] = "metál kék",
|
||||
["tint_metallic_white_aqua"] = "metál fehér aqua",
|
||||
["tint_metallic_red_yellow"] = "metál piros sárga",
|
||||
}
|
||||
|
||||
@@ -378,4 +378,37 @@ Locales["id"] = {
|
||||
["tint_lspd"] = "blue skin",
|
||||
["tint_orange"] = "orange skin",
|
||||
["tint_platinum"] = "platinum skin",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "hitam klasik",
|
||||
["tint_classic_gray"] = "abu-abu klasik",
|
||||
["tint_classic_two_tone"] = "dua warna klasik",
|
||||
["tint_classic_white"] = "putih klasik",
|
||||
["tint_classic_beige"] = "beige klasik",
|
||||
["tint_classic_green"] = "hijau klasik",
|
||||
["tint_classic_blue"] = "biru klasik",
|
||||
["tint_classic_earth"] = "tanah klasik",
|
||||
["tint_classic_brown_black"] = "coklat hitam klasik",
|
||||
["tint_contrast_red"] = "merah kontras",
|
||||
["tint_contrast_blue"] = "biru kontras",
|
||||
["tint_contrast_yellow"] = "kuning kontras",
|
||||
["tint_contrast_orange"] = "oren kontras",
|
||||
["tint_bold_pink"] = "pink berani",
|
||||
["tint_bold_purple_yellow"] = "ungu kuning berani",
|
||||
["tint_bold_orange"] = "oren berani",
|
||||
["tint_bold_green_purple"] = "hijau ungu berani",
|
||||
["tint_bold_red_feat"] = "merah berani feat",
|
||||
["tint_bold_green_feat"] = "hijau berani feat",
|
||||
["tint_bold_cyan_feat"] = "sian berani feat",
|
||||
["tint_bold_yellow_feat"] = "kuning berani feat",
|
||||
["tint_bold_red_white"] = "merah putih berani",
|
||||
["tint_bold_blue_white"] = "biru putih berani",
|
||||
["tint_metallic_gold"] = "emas metalik",
|
||||
["tint_metallic_platinum"] = "platina metalik",
|
||||
["tint_metallic_gray_lilac"] = "abu-abu lilac metalik",
|
||||
["tint_metallic_purple_lime"] = "ungu jeruk nipis metalik",
|
||||
["tint_metallic_red"] = "merah metalik",
|
||||
["tint_metallic_green"] = "hijau metalik",
|
||||
["tint_metallic_blue"] = "biru metalik",
|
||||
["tint_metallic_white_aqua"] = "putih aqua metalik",
|
||||
["tint_metallic_red_yellow"] = "merah kuning metalik",
|
||||
}
|
||||
|
||||
@@ -378,4 +378,37 @@ Locales["it"] = {
|
||||
["tint_lspd"] = "color blu",
|
||||
["tint_orange"] = "color arancio",
|
||||
["tint_platinum"] = "color platino",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "nero classico",
|
||||
["tint_classic_gray"] = "grigio classico",
|
||||
["tint_classic_two_tone"] = "due toni classico",
|
||||
["tint_classic_white"] = "bianco classico",
|
||||
["tint_classic_beige"] = "beige classico",
|
||||
["tint_classic_green"] = "verde classico",
|
||||
["tint_classic_blue"] = "blu classico",
|
||||
["tint_classic_earth"] = "terra classica",
|
||||
["tint_classic_brown_black"] = "marrone nero classico",
|
||||
["tint_contrast_red"] = "rosso contrastante",
|
||||
["tint_contrast_blue"] = "blu contrastante",
|
||||
["tint_contrast_yellow"] = "giallo contrastante",
|
||||
["tint_contrast_orange"] = "arancione contrastante",
|
||||
["tint_bold_pink"] = "rosa audace",
|
||||
["tint_bold_purple_yellow"] = "viola giallo audace",
|
||||
["tint_bold_orange"] = "arancione audace",
|
||||
["tint_bold_green_purple"] = "verde viola audace",
|
||||
["tint_bold_red_feat"] = "rosso audace feat",
|
||||
["tint_bold_green_feat"] = "verde audace feat",
|
||||
["tint_bold_cyan_feat"] = "cyan audace feat",
|
||||
["tint_bold_yellow_feat"] = "giallo audace feat",
|
||||
["tint_bold_red_white"] = "rosso bianco audace",
|
||||
["tint_bold_blue_white"] = "blu bianco audace",
|
||||
["tint_metallic_gold"] = "oro metallico",
|
||||
["tint_metallic_platinum"] = "platino metallico",
|
||||
["tint_metallic_gray_lilac"] = "grigio lilla metallico",
|
||||
["tint_metallic_purple_lime"] = "viola lime metallico",
|
||||
["tint_metallic_red"] = "rosso metallico",
|
||||
["tint_metallic_green"] = "verde metallico",
|
||||
["tint_metallic_blue"] = "blu metallico",
|
||||
["tint_metallic_white_aqua"] = "bianco aqua metallico",
|
||||
["tint_metallic_red_yellow"] = "rosso giallo metallico",
|
||||
}
|
||||
|
||||
@@ -369,4 +369,37 @@ Locales["nl"] = {
|
||||
["tint_lspd"] = "blauwe skin",
|
||||
["tint_orange"] = "oranje skin",
|
||||
["tint_platinum"] = "platina skin",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "klassiek zwart",
|
||||
["tint_classic_gray"] = "klassiek grijs",
|
||||
["tint_classic_two_tone"] = "klassiek twee-tonig",
|
||||
["tint_classic_white"] = "klassiek wit",
|
||||
["tint_classic_beige"] = "klassiek beige",
|
||||
["tint_classic_green"] = "klassiek groen",
|
||||
["tint_classic_blue"] = "klassiek blauw",
|
||||
["tint_classic_earth"] = "klassieke aarde",
|
||||
["tint_classic_brown_black"] = "klassiek bruin zwart",
|
||||
["tint_contrast_red"] = "contrast rood",
|
||||
["tint_contrast_blue"] = "contrast blauw",
|
||||
["tint_contrast_yellow"] = "contrast geel",
|
||||
["tint_contrast_orange"] = "contrast oranje",
|
||||
["tint_bold_pink"] = "gedurfde roze",
|
||||
["tint_bold_purple_yellow"] = "gedurfde paarse geel",
|
||||
["tint_bold_orange"] = "gedurfde oranje",
|
||||
["tint_bold_green_purple"] = "gedurfde groene paarse",
|
||||
["tint_bold_red_feat"] = "gedurfde rode feat",
|
||||
["tint_bold_green_feat"] = "gedurfde groene feat",
|
||||
["tint_bold_cyan_feat"] = "gedurfde cyaan feat",
|
||||
["tint_bold_yellow_feat"] = "gedurfde gele feat",
|
||||
["tint_bold_red_white"] = "gedurfde rode witte",
|
||||
["tint_bold_blue_white"] = "gedurfde blauwe witte",
|
||||
["tint_metallic_gold"] = "metallisch goud",
|
||||
["tint_metallic_platinum"] = "metallisch platina",
|
||||
["tint_metallic_gray_lilac"] = "metallisch grijs lila",
|
||||
["tint_metallic_purple_lime"] = "metallisch paarse limo",
|
||||
["tint_metallic_red"] = "metallisch rood",
|
||||
["tint_metallic_green"] = "metallisch groen",
|
||||
["tint_metallic_blue"] = "metallisch blauw",
|
||||
["tint_metallic_white_aqua"] = "metallisch wit aqua",
|
||||
["tint_metallic_red_yellow"] = "metallisch rood geel",
|
||||
}
|
||||
|
||||
@@ -236,4 +236,37 @@ Locales["pl"] = {
|
||||
["tint_lspd"] = "niebieski skin",
|
||||
["tint_orange"] = "pomarańczowy skin",
|
||||
["tint_platinum"] = "platynowy skin",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "klasyczna czerń",
|
||||
["tint_classic_gray"] = "klasyczny szary",
|
||||
["tint_classic_two_tone"] = "klasyczny dwutonowy",
|
||||
["tint_classic_white"] = "klasyczna biel",
|
||||
["tint_classic_beige"] = "klasyczny beż",
|
||||
["tint_classic_green"] = "klasyczna zieleń",
|
||||
["tint_classic_blue"] = "klasyczny niebieski",
|
||||
["tint_classic_earth"] = "klasyczna ziemia",
|
||||
["tint_classic_brown_black"] = "klasyczny brązowo-czarny",
|
||||
["tint_contrast_red"] = "kontrastowy czerwony",
|
||||
["tint_contrast_blue"] = "kontrastowy niebieski",
|
||||
["tint_contrast_yellow"] = "kontrastowy żółty",
|
||||
["tint_contrast_orange"] = "kontrastowy pomarańczowy",
|
||||
["tint_bold_pink"] = "odważny różowy",
|
||||
["tint_bold_purple_yellow"] = "odważny fioletowo-żółty",
|
||||
["tint_bold_orange"] = "odważny pomarańczowy",
|
||||
["tint_bold_green_purple"] = "odważny zielono-fioletowy",
|
||||
["tint_bold_red_feat"] = "odważny czerwony feat",
|
||||
["tint_bold_green_feat"] = "odważny zielony feat",
|
||||
["tint_bold_cyan_feat"] = "odważny cyjan feat",
|
||||
["tint_bold_yellow_feat"] = "odważny żółty feat",
|
||||
["tint_bold_red_white"] = "odważny czerwony biały",
|
||||
["tint_bold_blue_white"] = "odważny niebieski biały",
|
||||
["tint_metallic_gold"] = "złoto metaliczne",
|
||||
["tint_metallic_platinum"] = "platyna metaliczna",
|
||||
["tint_metallic_gray_lilac"] = "szaro-liliowe metaliczne",
|
||||
["tint_metallic_purple_lime"] = "fioletowo-limonkowe metaliczne",
|
||||
["tint_metallic_red"] = "czerwony metaliczny",
|
||||
["tint_metallic_green"] = "zielony metaliczny",
|
||||
["tint_metallic_blue"] = "niebieski metaliczny",
|
||||
["tint_metallic_white_aqua"] = "białe aqua metaliczne",
|
||||
["tint_metallic_red_yellow"] = "czerwono-żółte metaliczne",
|
||||
}
|
||||
|
||||
@@ -374,4 +374,37 @@ Locales["sl"] = {
|
||||
["tint_lspd"] = "blue skin",
|
||||
["tint_orange"] = "orange skin",
|
||||
["tint_platinum"] = "platinum skin",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "klasična črna",
|
||||
["tint_classic_gray"] = "klasična siva",
|
||||
["tint_classic_two_tone"] = "klasična dvo-tonska",
|
||||
["tint_classic_white"] = "klasična bela",
|
||||
["tint_classic_beige"] = "klasična bež",
|
||||
["tint_classic_green"] = "klasična zelena",
|
||||
["tint_classic_blue"] = "klasična modra",
|
||||
["tint_classic_earth"] = "klasična zemlja",
|
||||
["tint_classic_brown_black"] = "klasična rjava-črna",
|
||||
["tint_contrast_red"] = "kontrastna rdeča",
|
||||
["tint_contrast_blue"] = "kontrastna modra",
|
||||
["tint_contrast_yellow"] = "kontrastna rumena",
|
||||
["tint_contrast_orange"] = "kontrastna oranžna",
|
||||
["tint_bold_pink"] = "drzna roza",
|
||||
["tint_bold_purple_yellow"] = "drzna vijolično-rumena",
|
||||
["tint_bold_orange"] = "drzna oranžna",
|
||||
["tint_bold_green_purple"] = "drzna zelena-vijolična",
|
||||
["tint_bold_red_feat"] = "drzna rdeča feat",
|
||||
["tint_bold_green_feat"] = "drzna zelena feat",
|
||||
["tint_bold_cyan_feat"] = "drzna cian feat",
|
||||
["tint_bold_yellow_feat"] = "drzna rumena feat",
|
||||
["tint_bold_red_white"] = "drzna rdeča bela",
|
||||
["tint_bold_blue_white"] = "drzna modra bela",
|
||||
["tint_metallic_gold"] = "metalik zlato",
|
||||
["tint_metallic_platinum"] = "metalik platina",
|
||||
["tint_metallic_gray_lilac"] = "metalik siv lila",
|
||||
["tint_metallic_purple_lime"] = "metalik vijolična limona",
|
||||
["tint_metallic_red"] = "metalik rdeča",
|
||||
["tint_metallic_green"] = "metalik zelena",
|
||||
["tint_metallic_blue"] = "metalik modra",
|
||||
["tint_metallic_white_aqua"] = "metalik bela aqua",
|
||||
["tint_metallic_red_yellow"] = "metalik rdeče rumeno",
|
||||
}
|
||||
|
||||
@@ -374,4 +374,37 @@ Locales["sr"] = {
|
||||
["tint_lspd"] = "blue skin",
|
||||
["tint_orange"] = "orange skin",
|
||||
["tint_platinum"] = "platinum skin",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "klasična crna",
|
||||
["tint_classic_gray"] = "klasična siva",
|
||||
["tint_classic_two_tone"] = "klasična dvo-tonska",
|
||||
["tint_classic_white"] = "klasična bela",
|
||||
["tint_classic_beige"] = "klasična bež",
|
||||
["tint_classic_green"] = "klasična zelena",
|
||||
["tint_classic_blue"] = "klasična plava",
|
||||
["tint_classic_earth"] = "klasična zemlja",
|
||||
["tint_classic_brown_black"] = "klasična braon-crna",
|
||||
["tint_contrast_red"] = "kontrastna crvena",
|
||||
["tint_contrast_blue"] = "kontrastna plava",
|
||||
["tint_contrast_yellow"] = "kontrastna žuta",
|
||||
["tint_contrast_orange"] = "kontrastna narandžasta",
|
||||
["tint_bold_pink"] = "drska roze",
|
||||
["tint_bold_purple_yellow"] = "drska ljubičasto-žuta",
|
||||
["tint_bold_orange"] = "drska narandžasta",
|
||||
["tint_bold_green_purple"] = "drska zelena-ljubičasta",
|
||||
["tint_bold_red_feat"] = "drska crvena feat",
|
||||
["tint_bold_green_feat"] = "drska zelena feat",
|
||||
["tint_bold_cyan_feat"] = "drska cijan feat",
|
||||
["tint_bold_yellow_feat"] = "drska žuta feat",
|
||||
["tint_bold_red_white"] = "drska crvena bela",
|
||||
["tint_bold_blue_white"] = "drska plava bela",
|
||||
["tint_metallic_gold"] = "metalik zlatna",
|
||||
["tint_metallic_platinum"] = "metalik platina",
|
||||
["tint_metallic_gray_lilac"] = "metalik siva lila",
|
||||
["tint_metallic_purple_lime"] = "metalik ljubičasta limeta",
|
||||
["tint_metallic_red"] = "metalik crvena",
|
||||
["tint_metallic_green"] = "metalik zelena",
|
||||
["tint_metallic_blue"] = "metalik plava",
|
||||
["tint_metallic_white_aqua"] = "metalik bela aqua",
|
||||
["tint_metallic_red_yellow"] = "metalik crvena-žuta",
|
||||
}
|
||||
|
||||
@@ -378,4 +378,37 @@ Locales["sv"] = {
|
||||
["tint_lspd"] = "blue skin",
|
||||
["tint_orange"] = "orange skin",
|
||||
["tint_platinum"] = "platinum skin",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "klassisk svart",
|
||||
["tint_classic_gray"] = "klassisk grå",
|
||||
["tint_classic_two_tone"] = "klassisk tvåfärgad",
|
||||
["tint_classic_white"] = "klassisk vit",
|
||||
["tint_classic_beige"] = "klassisk beige",
|
||||
["tint_classic_green"] = "klassisk grön",
|
||||
["tint_classic_blue"] = "klassisk blå",
|
||||
["tint_classic_earth"] = "klassisk jord",
|
||||
["tint_classic_brown_black"] = "klassisk brun svart",
|
||||
["tint_contrast_red"] = "kontrast röd",
|
||||
["tint_contrast_blue"] = "kontrast blå",
|
||||
["tint_contrast_yellow"] = "kontrast gul",
|
||||
["tint_contrast_orange"] = "kontrast orange",
|
||||
["tint_bold_pink"] = "djärv rosa",
|
||||
["tint_bold_purple_yellow"] = "djärv lila gul",
|
||||
["tint_bold_orange"] = "djärv orange",
|
||||
["tint_bold_green_purple"] = "djärv grön lila",
|
||||
["tint_bold_red_feat"] = "djärv röd feat",
|
||||
["tint_bold_green_feat"] = "djärv grön feat",
|
||||
["tint_bold_cyan_feat"] = "djärv cyan feat",
|
||||
["tint_bold_yellow_feat"] = "djärv gul feat",
|
||||
["tint_bold_red_white"] = "djärv röd vit",
|
||||
["tint_bold_blue_white"] = "djärv blå vit",
|
||||
["tint_metallic_gold"] = "metalliskt guld",
|
||||
["tint_metallic_platinum"] = "metalliskt platina",
|
||||
["tint_metallic_gray_lilac"] = "metalliskt grå lila",
|
||||
["tint_metallic_purple_lime"] = "metalliskt lila lime",
|
||||
["tint_metallic_red"] = "metalliskt röd",
|
||||
["tint_metallic_green"] = "metalliskt grön",
|
||||
["tint_metallic_blue"] = "metalliskt blå",
|
||||
["tint_metallic_white_aqua"] = "metalliskt vitt aqua",
|
||||
["tint_metallic_red_yellow"] = "metalliskt röd gul",
|
||||
}
|
||||
|
||||
@@ -374,4 +374,37 @@ Locales["zh-cn"] = {
|
||||
["tint_lspd"] = "洛圣都警局色调",
|
||||
["tint_orange"] = "橙色调",
|
||||
["tint_platinum"] = "铂金色调",
|
||||
-- MK2 Weapon Tints
|
||||
["tint_classic_black"] = "经典黑色",
|
||||
["tint_classic_gray"] = "经典灰色",
|
||||
["tint_classic_two_tone"] = "经典双色",
|
||||
["tint_classic_white"] = "经典白色",
|
||||
["tint_classic_beige"] = "经典米色",
|
||||
["tint_classic_green"] = "经典绿色",
|
||||
["tint_classic_blue"] = "经典蓝色",
|
||||
["tint_classic_earth"] = "经典大地色",
|
||||
["tint_classic_brown_black"] = "经典棕黑色",
|
||||
["tint_contrast_red"] = "对比红色",
|
||||
["tint_contrast_blue"] = "对比蓝色",
|
||||
["tint_contrast_yellow"] = "对比黄色",
|
||||
["tint_contrast_orange"] = "对比橙色",
|
||||
["tint_bold_pink"] = "大胆粉色",
|
||||
["tint_bold_purple_yellow"] = "大胆紫黄色",
|
||||
["tint_bold_orange"] = "大胆橙色",
|
||||
["tint_bold_green_purple"] = "大胆绿色紫色",
|
||||
["tint_bold_red_feat"] = "大胆红色feat",
|
||||
["tint_bold_green_feat"] = "大胆绿色feat",
|
||||
["tint_bold_cyan_feat"] = "大胆青色feat",
|
||||
["tint_bold_yellow_feat"] = "大胆黄色feat",
|
||||
["tint_bold_red_white"] = "大胆红白色",
|
||||
["tint_bold_blue_white"] = "大胆蓝白色",
|
||||
["tint_metallic_gold"] = "金属金色",
|
||||
["tint_metallic_platinum"] = "金属铂金",
|
||||
["tint_metallic_gray_lilac"] = "金属灰紫色",
|
||||
["tint_metallic_purple_lime"] = "金属紫色青柠",
|
||||
["tint_metallic_red"] = "金属红色",
|
||||
["tint_metallic_green"] = "金属绿色",
|
||||
["tint_metallic_blue"] = "金属蓝色",
|
||||
["tint_metallic_white_aqua"] = "金属白色水蓝",
|
||||
["tint_metallic_red_yellow"] = "金属红黄色",
|
||||
}
|
||||
|
||||
@@ -130,6 +130,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
|
||||
---@return number
|
||||
function self.getPlayTime()
|
||||
-- luacheck: ignore
|
||||
return self.lastPlaytime + GetPlayerTimeOnline(self.source)
|
||||
end
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ if not Config.Multichar then
|
||||
Wait(0) -- Required
|
||||
local identifier = ESX.GetIdentifier(playerId)
|
||||
|
||||
|
||||
-- luacheck: ignore
|
||||
if not SetEntityOrphanMode then
|
||||
return deferrals.done(("[ESX] ESX Requires a minimum Artifact version of 10188, Please update your server."))
|
||||
end
|
||||
@@ -462,6 +462,7 @@ if not Config.CustomInventory then
|
||||
if not targetXPlayer.hasWeapon(itemName) then
|
||||
sourceXPlayer.showNotification(TranslateCap("gave_weapon_noweapon", targetXPlayer.name))
|
||||
targetXPlayer.showNotification(TranslateCap("received_weapon_noweapon", sourceXPlayer.name, weapon.label))
|
||||
return
|
||||
end
|
||||
|
||||
local _, weaponObject = ESX.GetWeapon(itemName)
|
||||
@@ -502,7 +503,8 @@ if not Config.CustomInventory then
|
||||
if itemCount == nil or itemCount < 1 then
|
||||
return xPlayer.showNotification(TranslateCap("imp_invalid_amount"))
|
||||
end
|
||||
local account = xPlayer.getAccount(itemName)
|
||||
|
||||
local account = xPlayer.getAccount(itemName)
|
||||
|
||||
if itemCount > account.money or account.money < 1 then
|
||||
return xPlayer.showNotification(TranslateCap("imp_invalid_amount"))
|
||||
@@ -694,7 +696,7 @@ AddEventHandler("onResourceStart", function(key)
|
||||
StopResource(key)
|
||||
error(("WE STOPPED A RESOURCE THAT WILL BREAK ^1ESX^1, PLEASE REMOVE ^5%s^1"):format(key))
|
||||
end
|
||||
|
||||
-- luacheck: ignore
|
||||
if not SetEntityOrphanMode then
|
||||
CreateThread(function()
|
||||
while true do
|
||||
|
||||
@@ -95,10 +95,17 @@ ESX.RegisterCommand(
|
||||
})
|
||||
end
|
||||
|
||||
local xRoutingBucket = GetPlayerRoutingBucket(xPlayer.source)
|
||||
|
||||
ESX.OneSync.SpawnVehicle(args.car, playerCoords, playerHeading, upgrades, function(networkId)
|
||||
if networkId then
|
||||
local vehicle = NetworkGetEntityFromNetworkId(networkId)
|
||||
for _ = 1, 20 do
|
||||
|
||||
if xRoutingBucket ~= 0 then
|
||||
SetEntityRoutingBucket(vehicle, xRoutingBucket)
|
||||
end
|
||||
|
||||
for _ = 1, 100 do
|
||||
Wait(0)
|
||||
SetPedIntoVehicle(playerPed, vehicle, -1)
|
||||
|
||||
@@ -106,6 +113,7 @@ ESX.RegisterCommand(
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if GetVehiclePedIsIn(playerPed, false) ~= vehicle then
|
||||
showError("[^1ERROR^7] The player could not be seated in the vehicle")
|
||||
end
|
||||
|
||||
@@ -101,7 +101,7 @@ function ESX.OneSync.SpawnVehicle(model, coords, heading, properties, cb)
|
||||
return error(("Could not spawn vehicle - ^5%s^7!"):format(model))
|
||||
end
|
||||
end
|
||||
|
||||
-- luacheck: ignore
|
||||
SetEntityOrphanMode(createdVehicle, 2)
|
||||
local networkId = NetworkGetNetworkIdFromEntity(createdVehicle)
|
||||
Entity(createdVehicle).state:set("VehicleProperties", vehicleProperties, true)
|
||||
|
||||
@@ -8,6 +8,41 @@ Config.DefaultWeaponTints = {
|
||||
[6] = TranslateCap("tint_orange"),
|
||||
[7] = TranslateCap("tint_platinum"),
|
||||
}
|
||||
Config.MK2WeaponTints = {
|
||||
[0] = TranslateCap('tint_classic_black'),
|
||||
[1] = TranslateCap('tint_classic_gray'),
|
||||
[2] = TranslateCap('tint_classic_two_tone'),
|
||||
[3] = TranslateCap('tint_classic_white'),
|
||||
[4] = TranslateCap('tint_classic_beige'),
|
||||
[5] = TranslateCap('tint_classic_green'),
|
||||
[6] = TranslateCap('tint_classic_blue'),
|
||||
[7] = TranslateCap('tint_classic_earth'),
|
||||
[8] = TranslateCap('tint_classic_brown_black'),
|
||||
[9] = TranslateCap('tint_contrast_red'),
|
||||
[10] = TranslateCap('tint_contrast_blue'),
|
||||
[11] = TranslateCap('tint_contrast_yellow'),
|
||||
[12] = TranslateCap('tint_contrast_orange'),
|
||||
[13] = TranslateCap('tint_bold_pink'),
|
||||
[14] = TranslateCap('tint_bold_purple_yellow'),
|
||||
[15] = TranslateCap('tint_bold_orange'),
|
||||
[16] = TranslateCap('tint_bold_green_purple'),
|
||||
[17] = TranslateCap('tint_bold_red_feat'),
|
||||
[18] = TranslateCap('tint_bold_green_feat'),
|
||||
[19] = TranslateCap('tint_bold_cyan_feat'),
|
||||
[20] = TranslateCap('tint_bold_yellow_feat'),
|
||||
[21] = TranslateCap('tint_bold_red_white'),
|
||||
[22] = TranslateCap('tint_bold_blue_white'),
|
||||
[23] = TranslateCap('tint_metallic_gold'),
|
||||
[24] = TranslateCap('tint_metallic_platinum'),
|
||||
[25] = TranslateCap('tint_metallic_gray_lilac'),
|
||||
[26] = TranslateCap('tint_metallic_purple_lime'),
|
||||
[27] = TranslateCap('tint_metallic_red'),
|
||||
[28] = TranslateCap('tint_metallic_green'),
|
||||
[29] = TranslateCap('tint_metallic_blue'),
|
||||
[30] = TranslateCap('tint_metallic_white_aqua'),
|
||||
[31] = TranslateCap('tint_metallic_orange_yellow'),
|
||||
[32] = TranslateCap('tint_metallic_red_yellow')
|
||||
}
|
||||
|
||||
Config.Weapons = {
|
||||
-- Melee
|
||||
@@ -111,7 +146,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_REVOLVER_MK2",
|
||||
label = TranslateCap("weapon_revolver_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_PISTOL` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_REVOLVER_MK2_CLIP_01` },
|
||||
{ name = "ammo_tracer", label = TranslateCap("component_ammo_tracer"), hash = `COMPONENT_REVOLVER_MK2_CLIP_TRACER` },
|
||||
@@ -153,7 +188,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_PISTOL_MK2",
|
||||
label = TranslateCap("weapon_pistol_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_PISTOL` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_PISTOL_MK2_CLIP_01` },
|
||||
{ name = "clip_extended", label = TranslateCap("component_clip_extended"), hash = `COMPONENT_PISTOL_MK2_CLIP_02` },
|
||||
@@ -217,7 +252,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_SNSPISTOL_MK2",
|
||||
label = TranslateCap("weapon_snspistol_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_PISTOL` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_01` },
|
||||
{ name = "clip_extended", label = TranslateCap("component_clip_extended"), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_02` },
|
||||
@@ -333,7 +368,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_PUMPSHOTGUN_MK2",
|
||||
label = TranslateCap("weapon_pumpshotgun_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_shells"), hash = `AMMO_SHOTGUN` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "shells_default", label = TranslateCap("component_shells_default"), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_01` },
|
||||
{ name = "shells_incendiary", label = TranslateCap("component_shells_incendiary"), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_INCENDIARY` },
|
||||
@@ -400,7 +435,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_COMBATMG_MK2",
|
||||
label = TranslateCap("weapon_combatmg_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_MG` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_COMBATMG_MK2_CLIP_01` },
|
||||
{ name = "clip_extended", label = TranslateCap("component_clip_extended"), hash = `COMPONENT_COMBATMG_MK2_CLIP_02` },
|
||||
@@ -525,7 +560,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_SMG_MK2",
|
||||
label = TranslateCap("weapon_smg_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_SMG` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_SMG_MK2_CLIP_01` },
|
||||
{ name = "clip_extended", label = TranslateCap("component_clip_extended"), hash = `COMPONENT_SMG_MK2_CLIP_02` },
|
||||
@@ -596,7 +631,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_ASSAULTRIFLE_MK2",
|
||||
label = TranslateCap("weapon_assaultrifle_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_RIFLE` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_01` },
|
||||
{ name = "clip_extended", label = TranslateCap("component_clip_extended"), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_02` },
|
||||
@@ -651,7 +686,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_BULLPUPRIFLE_MK2",
|
||||
label = TranslateCap("weapon_bullpuprifle_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_RIFLE` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_01` },
|
||||
{ name = "clip_extended", label = TranslateCap("component_clip_extended"), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_02` },
|
||||
@@ -707,7 +742,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_CARBINERIFLE_MK2",
|
||||
label = TranslateCap("weapon_carbinerifle_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_RIFLE` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_01` },
|
||||
{ name = "clip_extended", label = TranslateCap("component_clip_extended"), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_02` },
|
||||
@@ -788,7 +823,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_SPECIALCARBINE_MK2",
|
||||
label = TranslateCap("weapon_specialcarbine_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_RIFLE` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_01` },
|
||||
{ name = "clip_extended", label = TranslateCap("component_clip_extended"), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_02` },
|
||||
@@ -854,7 +889,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_HEAVYSNIPER_MK2",
|
||||
label = TranslateCap("weapon_heavysniper_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_SNIPER` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_01` },
|
||||
{ name = "clip_extended", label = TranslateCap("component_clip_extended"), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_02` },
|
||||
@@ -903,7 +938,7 @@ Config.Weapons = {
|
||||
name = "WEAPON_MARKSMANRIFLE_MK2",
|
||||
label = TranslateCap("weapon_marksmanrifle_mk2"),
|
||||
ammo = { label = TranslateCap("ammo_rounds"), hash = `AMMO_SNIPER` },
|
||||
tints = Config.DefaultWeaponTints,
|
||||
tints = Config.MK2WeaponTints,
|
||||
components = {
|
||||
{ name = "clip_default", label = TranslateCap("component_clip_default"), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_01` },
|
||||
{ name = "clip_extended", label = TranslateCap("component_clip_extended"), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_02` },
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
@import"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap";body{font-family:sans-serif;overflow:hidden;background-color:transparent}.none{display:none}.dialog{width:477px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#080808;border-radius:8px;border:none;color:#fff;font-family:Poppins,sans-serif}.dialog__header{background-color:#040404;border-top-left-radius:8px;border-top-right-radius:8px;padding:20px;text-align:center}.dialog__header h1{font-weight:700;margin-bottom:0;font-size:30px}.dialog__header span{color:#fd9800}.dialog__body{padding-block:20px;padding-inline:65px}.dialog__body-hint{text-align:center;margin-bottom:20px}.dialog__body-form{display:flex;flex-direction:column;gap:35px;font-weight:600;font-size:15px}.dialog__form-submit{border:none;background-color:#fd9800;color:#fff;font-size:18px;font-weight:700;border-radius:4px;padding-block:5px}.dialog__form-submit i{margin-right:5px}.dialog__form-group{display:flex;align-items:center;justify-content:space-between;gap:30px;background-color:#040404;position:relative}.dialog__form-group--radio{gap:0}.dialog__form-group label{text-align:center;flex-grow:1;flex-shrink:1;padding-inline:20px}.dialog__form-group input{background-color:transparent;border:none;height:30px;width:180px;flex-shrink:0;color:#fff}.dialog__form-group input:focus{background-color:#0f0f0fe6;border:none;border-radius:5px;color:#fff;outline:none;box-shadow:none}.dialog__form-validation{position:relative}.dialog__form-validation i{position:absolute;right:10px;top:50%;transform:translateY(-50%)}.dialog__form-radio{display:flex;align-items:center}.dialog__form-radio input{display:none}.dialog__form-radio label{display:flex;align-items:center;gap:10px;cursor:pointer}.dialog__form-radio input+label{height:30px;display:flex;align-items:center}.dialog__form-radio input:checked+label{color:#30a1fd;height:30px}.dialog__form-radio input:not(:checked)+label{color:#242424;height:30px}.dialog__form-message{position:absolute;top:35px;right:0;font-size:9px}.dialog__form-message--error{color:#733838}#male:checked+label{color:#30a1fd}#female:checked+label{color:#ff69b4}::placeholder{color:#242424;font-weight:600}
|
||||
@@ -24,10 +24,10 @@ client_scripts {
|
||||
}
|
||||
|
||||
files ({
|
||||
'dist/assets/**',
|
||||
'dist/**',
|
||||
'web/dist/assets/**',
|
||||
'web/dist/**',
|
||||
})
|
||||
|
||||
ui_page 'dist/index.html'
|
||||
ui_page 'web/dist/index.html'
|
||||
|
||||
dependency 'es_extended'
|
||||
|
||||
@@ -243,6 +243,8 @@ end
|
||||
|
||||
ESX.RegisterServerCallback("esx_identity:registerIdentity", function(source, cb, data)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
data.dateofbirth = formatDate(data.dateofbirth)
|
||||
|
||||
if not checkNameFormat(data.firstname) then
|
||||
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_firstname_format"), "error")
|
||||
return cb(false)
|
||||
@@ -272,7 +274,7 @@ end
|
||||
playerIdentity[xPlayer.identifier] = {
|
||||
firstName = formatName(data.firstname),
|
||||
lastName = formatName(data.lastname),
|
||||
dateOfBirth = formatDate(data.dateofbirth),
|
||||
dateOfBirth = data.dateofbirth,
|
||||
sex = data.sex,
|
||||
height = data.height,
|
||||
}
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
@import"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap";body{font-family:sans-serif;overflow:hidden;background-color:transparent}.none{display:none}.dialog{width:477px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#080808;border-radius:8px;border:none;color:#fff;font-family:Poppins,sans-serif}.dialog__header{background-color:#040404;border-top-left-radius:8px;border-top-right-radius:8px;padding:20px;text-align:center}.dialog__header h1{font-weight:700;margin-bottom:0;font-size:30px}.dialog__header span{color:#fd9800}.dialog__body{padding-block:20px;padding-inline:65px}.dialog__body-hint{text-align:center;margin-bottom:20px}.dialog__body-form{display:flex;flex-direction:column;gap:35px;font-weight:600;font-size:15px}.dialog__form-submit{border:none;background-color:#fd9800;color:#fff;font-size:18px;font-weight:700;border-radius:4px;padding-block:5px}.dialog__form-submit i{margin-right:5px}.dialog__form-group{display:flex;align-items:center;justify-content:space-between;gap:30px;background-color:#040404;position:relative}.dialog__form-group--radio{gap:0}.dialog__form-group label{flex-grow:1;flex-shrink:1;padding-inline:20px}.dialog__form-group input{background-color:transparent;border:none;height:30px;width:180px;flex-shrink:0;color:#fff}.dialog__form-group input:focus{background-color:#0f0f0fe6;border:none;border-radius:5px;color:#fff;outline:none;box-shadow:none}.dialog__form-validation{position:relative}.dialog__form-validation i{position:absolute;right:10px;top:50%;transform:translateY(-50%)}.dialog__form-radio{display:flex;align-items:center}.dialog__form-radio input{display:none}.dialog__form-radio label{display:flex;align-items:center;gap:10px;cursor:pointer}.dialog__form-radio input+label{height:30px;display:flex;align-items:center}.dialog__form-radio input:checked+label{color:#30a1fd;height:30px}.dialog__form-radio input:not(:checked)+label{color:#242424;height:30px}.dialog__form-message{position:absolute;top:35px;right:0;font-size:9px}.dialog__form-message--error{color:#733838}#male:checked+label{color:#30a1fd}#female:checked+label{color:#ff69b4}::placeholder{color:#242424;font-weight:600}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}
|
||||
+2
-2
@@ -11,8 +11,8 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css"
|
||||
integrity="sha512-Kc323vGBEqzTmouAECnVceyQqyqdsSiqLQISBL29aUW4U/M7pSPA/gEUZQqv1cwx4OnYxTxve5UMg5GT6L4JJg=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
<script type="module" crossorigin src="./assets/index-CaT4lk_v.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./assets/index-B6T-7u2-.css">
|
||||
<script type="module" crossorigin src="./assets/index-BR-kw549.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./assets/index-CBKwBtku.css">
|
||||
</head>
|
||||
|
||||
<body class="none">
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -1,6 +1,6 @@
|
||||
<script setup>
|
||||
import { onMounted } from 'vue';
|
||||
import HelloWorld from './components/HelloWorld.vue'
|
||||
import Identity from './components/Identity.vue'
|
||||
|
||||
onMounted(() => {
|
||||
fetch("http://esx_identity/ready", {
|
||||
@@ -18,7 +18,7 @@ onMounted(() => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<HelloWorld/>
|
||||
<Identity/>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
Before Width: | Height: | Size: 496 B After Width: | Height: | Size: 496 B |
+6
-8
@@ -10,7 +10,7 @@ const onSubmit = (values) => {
|
||||
body: JSON.stringify({
|
||||
firstname: values.firstname,
|
||||
lastname: values.lastname,
|
||||
dateofbirth: values.dob,
|
||||
dateofbirth: moment(values.dob).format("DD/MM/YYYY"),
|
||||
sex: values.gender,
|
||||
height: values.height,
|
||||
}),
|
||||
@@ -20,10 +20,10 @@ const onSubmit = (values) => {
|
||||
const schema = yup.object({
|
||||
firstname: yup.string().required('Firstname is required').min(3, 'Firstname must be at least 3 characters'),
|
||||
lastname: yup.string().required('Lastname is required').min(3, 'Lastname must be at least 3 characters'),
|
||||
dob: yup.date().required('Date of Birth is required').transform((value, originalValue) => {
|
||||
const parsedDate = moment(originalValue, 'DD/MM/YYYY', true);
|
||||
return parsedDate.isValid() ? parsedDate.toDate() : new Date('');
|
||||
}).typeError('Date must be in mm/dd/yyyy format'),
|
||||
dob: yup.date()
|
||||
.required('Date of Birth is required')
|
||||
.min(new Date("1900-01-01"), "Date is too early")
|
||||
.max(moment().subtract(1, 'years').toDate(), "You need to be atleast 1 year old"),
|
||||
gender: yup.string().required('Gender is required'),
|
||||
height: yup.number().required('Height is required').min(120, 'Minimum height is 120cm').max(220, 'Maximum height is 220cm').typeError('Amount must be a number'),
|
||||
})
|
||||
@@ -42,7 +42,6 @@ const schema = yup.object({
|
||||
<label for="firstname">Firstname</label>
|
||||
<div class="dialog__form-validation">
|
||||
<Field id="firstname" type="text" name="firstname" placeholder="Firstname" validateOnInput />
|
||||
<!-- <i class="fas fa-check-circle" style="color: #478444;"></i> -->
|
||||
</div>
|
||||
<ErrorMessage name="firstname" class="dialog__form-message dialog__form-message--error" />
|
||||
</div>
|
||||
@@ -50,13 +49,12 @@ const schema = yup.object({
|
||||
<label for="lastname">Lastname</label>
|
||||
<div class="dialog__form-validation">
|
||||
<Field id="lastname" type="text" name="lastname" placeholder="Lastname" validateOnInput />
|
||||
<!-- <i class="fas fa-times-circle" style="color: #733838;"></i> -->
|
||||
</div>
|
||||
<ErrorMessage name="lastname" class="dialog__form-message dialog__form-message--error" />
|
||||
</div>
|
||||
<div class="dialog__form-group">
|
||||
<label for="dob">Date of birth</label>
|
||||
<Field id="dob" type="text" name="dob" placeholder="mm/dd/yyyy" validateOnInput />
|
||||
<Field id="dob" type="date" name="dob" placeholder="dd/mm/yyyy" validateOnInput />
|
||||
<ErrorMessage name="dob" class="dialog__form-message dialog__form-message--error" />
|
||||
</div>
|
||||
<div class="dialog__form-group">
|
||||
@@ -96,7 +96,6 @@ body {
|
||||
}
|
||||
|
||||
.dialog__form-group label {
|
||||
text-align: center;
|
||||
flex-grow: 1; /* Label will expand to fill available space */
|
||||
flex-shrink: 1; /* Allows the label to shrink if necessary */
|
||||
padding-inline: 20px; /* Horizontal padding */
|
||||
@@ -187,4 +186,10 @@ body {
|
||||
::placeholder {
|
||||
color: #242424;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
input[type="date"]::-webkit-inner-spin-button,
|
||||
input[type="date"]::-webkit-calendar-picker-indicator {
|
||||
display: none;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
@@ -9,8 +9,9 @@
|
||||
min-width: 350px;
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
background: rgba(33, 33, 33, 0);
|
||||
background: rgba(15, 15, 15, 0.0);
|
||||
text-align: center;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.head {
|
||||
@@ -18,9 +19,9 @@
|
||||
overflow: hidden;
|
||||
padding-bottom: 3px;
|
||||
text-align: center;
|
||||
margin-bottom: 5px;
|
||||
white-space: nowrap;
|
||||
background: rgba(10, 10, 10, 0.9);
|
||||
background: rgba(10, 10, 10, 1);
|
||||
border-bottom: 2px solid #fb9b04;
|
||||
}
|
||||
|
||||
.menu .head {
|
||||
@@ -47,16 +48,14 @@
|
||||
font-size: 13px;
|
||||
height: 16px;
|
||||
text-indent: 5px;
|
||||
margin-top: 5px;
|
||||
background: rgba(40, 40, 40, 0.8);
|
||||
color: rgb(202, 202, 202);
|
||||
border-radius: 5px;
|
||||
margin-bottom: 6px;
|
||||
background: rgba(30, 30, 30, 0.9);
|
||||
color: rgb(243, 243, 243);
|
||||
}
|
||||
|
||||
|
||||
.menu .menu-items .menu-item.selected {
|
||||
border: 1px solid rgba(55, 55, 55, 0.9);
|
||||
background: rgba(20, 20, 20, 0.9);
|
||||
border: 1px solid #fb9c04ec;
|
||||
background: rgba(15, 15, 15, 0.9);
|
||||
color: rgba(243, 243, 243);
|
||||
letter-spacing: 0.2px;
|
||||
font-weight: 500;
|
||||
@@ -68,7 +67,7 @@
|
||||
}
|
||||
|
||||
.menu.align-top-left {
|
||||
left: 3rem;
|
||||
left: 4rem;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
@@ -99,7 +98,7 @@
|
||||
}
|
||||
|
||||
.menu.align-bottom-left {
|
||||
left: 3rem;
|
||||
left: 4rem;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ ESX.SecureNetEvent("esx_multicharacter:SetupUI", function(data, slots)
|
||||
Multicharacter:SetupUI(data, slots)
|
||||
end)
|
||||
|
||||
ESX.SecureNetEvent('esx:playerLoaded', function(playerData, isNew, skin)
|
||||
RegisterNetEvent('esx:playerLoaded', function(playerData, isNew, skin)
|
||||
Multicharacter:PlayerLoaded(playerData, isNew, skin)
|
||||
end)
|
||||
|
||||
|
||||
@@ -25,7 +25,8 @@ function Server:OnConnecting(source, deferrals)
|
||||
deferrals.defer()
|
||||
Wait(0) -- Required
|
||||
local identifier = self:GetIdentifier(source)
|
||||
|
||||
|
||||
-- luacheck: ignore
|
||||
if not SetEntityOrphanMode then
|
||||
return deferrals.done(("[ESX] ESX Requires a minimum Artifact version of 10188, Please update your server."))
|
||||
end
|
||||
|
||||
@@ -32,8 +32,8 @@ body {
|
||||
min-width: 20rem;
|
||||
width: fit-content;
|
||||
height: 3.5rem;
|
||||
background: rgba(5, 5, 5, 0.9);
|
||||
border-radius: 0.5rem;
|
||||
background: rgba(15, 15, 15, 0.9);
|
||||
border-radius: 0.4rem;
|
||||
margin-top: 0.5rem;
|
||||
animation: anim 300ms ease-in-out;
|
||||
align-items: center;
|
||||
@@ -47,24 +47,27 @@ body {
|
||||
|
||||
#root .icon {
|
||||
float: left;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#root .text {
|
||||
display: inline-block;
|
||||
color: #fff;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
|
||||
#root .error {
|
||||
border-bottom: 3px solid #c0392b;
|
||||
color: #c0392b;
|
||||
border: 2px solid #c0392b;
|
||||
}
|
||||
|
||||
#root .success {
|
||||
border-bottom: 3px solid #2ecc71;
|
||||
color: #2ecc71;
|
||||
border: 2px solid #2ecc71;
|
||||
}
|
||||
|
||||
#root .info {
|
||||
border-bottom: 3px solid #2980b9;
|
||||
color: #fb9b04;
|
||||
border: 2px solid #fb9b04;
|
||||
}
|
||||
|
||||
.material-symbols-outlined {
|
||||
|
||||
@@ -15,15 +15,15 @@ const types = {
|
||||
|
||||
// the color codes example `i ~r~love~s~ donuts`
|
||||
const codes = {
|
||||
"~r~": "red",
|
||||
"~r~": "#c0392b",
|
||||
"~b~": "#378cbf",
|
||||
"~g~": "green",
|
||||
"~g~": "#2ecc71",
|
||||
"~y~": "yellow",
|
||||
"~p~": "purple",
|
||||
"~c~": "grey",
|
||||
"~m~": "#212121",
|
||||
"~u~": "black",
|
||||
"~o~": "orange",
|
||||
"~o~": "#fb9b04",
|
||||
};
|
||||
|
||||
w.addEventListener("message", (event) => {
|
||||
@@ -57,8 +57,9 @@ notification = (data) => {
|
||||
}
|
||||
}
|
||||
|
||||
const id = Math.floor(Math.random() * Math.random());
|
||||
const notification = $(`
|
||||
<div class="notify ${data.type}">
|
||||
<div id="${id}" class="notify ${data.type} fadeIn">
|
||||
<div class="innerText">
|
||||
<span class="material-symbols-outlined icon">${types[data.type] ? types[data.type]["icon"] : types["info"]["icon"]}</span>
|
||||
<p class="text">${data["message"]}</p>
|
||||
@@ -67,8 +68,16 @@ notification = (data) => {
|
||||
`).appendTo(`#root`);
|
||||
|
||||
setTimeout(() => {
|
||||
notification.fadeOut(700);
|
||||
}, data.length);
|
||||
document.getElementById(id).classList.remove("fadeIn");
|
||||
}, 300);
|
||||
|
||||
setTimeout(() => {
|
||||
document.getElementById(id).classList.add("fadeOut");
|
||||
|
||||
setTimeout(() => {
|
||||
document.getElementById(id).remove();
|
||||
}, 400);
|
||||
},data.length);
|
||||
|
||||
return notification;
|
||||
};
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
min-width: 15%;
|
||||
width: fit-content;
|
||||
height: 45px;
|
||||
background-color: rgba(5, 5, 5, 0.8);
|
||||
background-color: rgba(15, 15, 15, 0.9);
|
||||
border-radius: 5px;
|
||||
animation: growDown 300ms ease-in-out;
|
||||
padding-right: 10px;
|
||||
@@ -41,8 +41,8 @@
|
||||
right: 0;
|
||||
height: 2px;
|
||||
width: 100%;
|
||||
border-radius: 20px;
|
||||
background: linear-gradient(to right, #0052d4, #4364f7, #6fb1fc); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
|
||||
border-radius: 15px;
|
||||
background: linear-gradient(to right, #b84f05, #de7301, #fb9b04); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
|
||||
}
|
||||
|
||||
.icon {
|
||||
@@ -61,7 +61,7 @@
|
||||
p {
|
||||
flex: auto;
|
||||
word-wrap: break-word;
|
||||
margin-left: 30px;
|
||||
margin-left: 35px;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
float: left;
|
||||
margin-left: 5px;
|
||||
font-size: 20px;
|
||||
color: #fb9b04;
|
||||
}
|
||||
|
||||
@keyframes growDown {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
const codes = {
|
||||
"~r~": "red",
|
||||
"~r~": "#c0392b",
|
||||
"~b~": "#378cbf",
|
||||
"~g~": "green",
|
||||
"~g~": "#2ecc71",
|
||||
"~y~": "yellow",
|
||||
"~p~": "purple",
|
||||
"~c~": "grey",
|
||||
"~m~": "#212121",
|
||||
"~u~": "black",
|
||||
"~o~": "orange",
|
||||
"~o~": "#fb9b04",
|
||||
};
|
||||
|
||||
const elems = {
|
||||
|
||||
@@ -70,7 +70,7 @@ AddEventHandler("esx_skin:playerRegistered", function()
|
||||
end)
|
||||
end)
|
||||
|
||||
ESX.SecureNetEvent("esx:playerLoaded", function(_, _, skin)
|
||||
RegisterNetEvent("esx:playerLoaded", function(_, _, skin)
|
||||
ESX.PlayerLoaded = true
|
||||
TriggerServerEvent("esx_skin:setWeight", skin)
|
||||
end)
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
RegisterNetEvent("esx_skin:save", function(skin)
|
||||
if not skin or type(skin) ~= "table" then
|
||||
return
|
||||
end
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
|
||||
if not ESX.GetConfig().CustomInventory then
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
:root {
|
||||
--color: white;
|
||||
--bgColor: #212121;
|
||||
--bgColor: rgba(15, 15, 15, 0.9);
|
||||
}
|
||||
|
||||
* {
|
||||
@@ -24,22 +24,32 @@ body {
|
||||
min-width: 15%;
|
||||
width: fit-content;
|
||||
height: 50px;
|
||||
background: rgba(5, 5, 5, 0.9);
|
||||
background: rgba(15, 15, 15, 0.9);
|
||||
border-radius: 0.5rem;
|
||||
animation: growDown 300ms ease-in-out;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.fadeIn {
|
||||
animation: growUp 300ms ease-in-out;
|
||||
}
|
||||
|
||||
.fadeOut {
|
||||
animation: growDown 300ms ease-in-out;
|
||||
}
|
||||
|
||||
.error {
|
||||
border-left: 5px solid #c0392b;
|
||||
border-left: 3px solid #c0392b;
|
||||
border-right: 3px solid #c0392b;
|
||||
}
|
||||
|
||||
.success {
|
||||
border-left: 5px solid #2ecc71;
|
||||
border-left: 3px solid #2ecc71;
|
||||
border-right: 3px solid #2ecc71;
|
||||
}
|
||||
|
||||
.info {
|
||||
border-left: 5px solid #2980b9;
|
||||
border-left: 3px solid #fb9b04;
|
||||
border-right: 3px solid #fb9b04;
|
||||
}
|
||||
|
||||
.innerText {
|
||||
@@ -62,9 +72,21 @@ body {
|
||||
|
||||
@keyframes growDown {
|
||||
0% {
|
||||
transform: scaleY(1);
|
||||
}
|
||||
50% {
|
||||
transform: scaleY(1.1);
|
||||
}
|
||||
100% {
|
||||
transform: scaleY(0);
|
||||
}
|
||||
80% {
|
||||
}
|
||||
|
||||
@keyframes growUp {
|
||||
0% {
|
||||
transform: scaleY(0);
|
||||
}
|
||||
50% {
|
||||
transform: scaleY(1.1);
|
||||
}
|
||||
100% {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
const w = window;
|
||||
const doc = document;
|
||||
let lastType = "";
|
||||
let lastType = {};
|
||||
|
||||
// Gets the current icon it needs to use.
|
||||
const types = {
|
||||
@@ -20,21 +20,21 @@ const types = {
|
||||
|
||||
// the color codes example `i ~r~love~s~ donuts`
|
||||
const codes = {
|
||||
"~r~": "red",
|
||||
"~r~": "#c0392b",
|
||||
"~b~": "#378cbf",
|
||||
"~g~": "green",
|
||||
"~g~": "#2ecc71",
|
||||
"~y~": "yellow",
|
||||
"~p~": "purple",
|
||||
"~c~": "grey",
|
||||
"~m~": "#212121",
|
||||
"~u~": "black",
|
||||
"~o~": "orange",
|
||||
"~o~": "#fb9b04",
|
||||
};
|
||||
|
||||
w.addEventListener("message", (event) => {
|
||||
if (event.data.action === "show") {
|
||||
if (lastType) {
|
||||
doc.getElementById(lastType).style.display = "none";
|
||||
if (lastType.id !== undefined) {
|
||||
doc.getElementById(lastType["id"]).style.display = "none";
|
||||
notification({
|
||||
type: event.data.type,
|
||||
message: event.data.message,
|
||||
@@ -47,7 +47,12 @@ w.addEventListener("message", (event) => {
|
||||
}
|
||||
} else if (event.data.action === "hide") {
|
||||
if (lastType !== "") {
|
||||
doc.getElementById(lastType).style.display = "none";
|
||||
doc.getElementById(lastType["id"]).classList.add("fadeOut");
|
||||
setTimeout(() => {
|
||||
doc.getElementById(lastType["id"]).classList.remove("fadeOut");
|
||||
doc.getElementById(lastType["id"]).style.display = "none";
|
||||
doc.getElementById(lastType["message"]).innerHTML = "";
|
||||
}, 300);
|
||||
} else {
|
||||
console.log("There isn't a textUI displaying!?");
|
||||
}
|
||||
@@ -78,6 +83,10 @@ notification = (data) => {
|
||||
}
|
||||
|
||||
doc.getElementById(types[data.type]["id"]).style.display = "block";
|
||||
lastType = types[data.type]["id"];
|
||||
doc.getElementById(types[data.type]["message"]).innerHTML = data["message"];
|
||||
doc.getElementById(types[data.type]["id"]).classList.add("fadeIn");
|
||||
setTimeout(() => {
|
||||
doc.getElementById(types[data.type]["id"]).classList.remove("fadeIn");
|
||||
lastType = types[data.type];
|
||||
doc.getElementById(types[data.type]["message"]).innerHTML = data["message"];
|
||||
}, 300);
|
||||
};
|
||||
|
||||
@@ -104,7 +104,7 @@ function SkinChanger:ValidClothes(key)
|
||||
["blemishes_2"] = true, ["blemishes_3"] = true, ["blush_1"] = true, ["blush_2"] = true, ["blush_3"] = true, ["complexion_1"] = true, ["complexion_2"] = true,
|
||||
["sun_1"] = true, ["sun_2"] = true, ["moles_1"] = true, ["moles_2"] = true, ["chest_1"] = true, ["chest_2"] = true, ["chest_3"] = true, ["bodyb_1"] = true,
|
||||
["bodyb_2"] = true, ["bodyb_3"] = true, ["bodyb_4"] = true}
|
||||
return keys[key] ~= nil
|
||||
return keys[key] == nil
|
||||
end
|
||||
|
||||
local function Normalise(weight, divison)
|
||||
@@ -140,7 +140,7 @@ function SkinChanger:SetFace()
|
||||
end
|
||||
|
||||
function SkinChanger:SetHeadOverlay()
|
||||
local features = {{"age_1", "age_2"}, {"blemishes_1", "blemishes_2"}, {"beard_1", "beard_2"}, {"eyebrows_1", "eyebrows_2"}, {"makeup_1", "makeup_2"}, {"lipstick_1", "lipstick_2"}, {"blush_1", "blush_2"}, {"complexion_1", "complexion_2"}, {"sun_1", "sun_2"}, {"moles_1", "moles_2"}, {"chest_1", "chest_2"}}
|
||||
local features = {{"blemishes_1", "blemishes_2"}, {"beard_1", "beard_2"}, {"eyebrows_1", "eyebrows_2"}, {"age_1", "age_2"}, {"makeup_1", "makeup_2"}, {"blush_1", "blush_2"}, {"complexion_1", "complexion_2"}, {"sun_1", "sun_2"}, {"lipstick_1", "lipstick_2"}, {"moles_1", "moles_2"}, {"chest_1", "chest_2"}}
|
||||
for i = 1, #features, 1 do
|
||||
local feature = features[i]
|
||||
SetPedHeadOverlay(self.playerPed, i - 1, self.character[feature[1]], Normalise(self.character[feature[2]], 10))
|
||||
@@ -148,10 +148,9 @@ function SkinChanger:SetHeadOverlay()
|
||||
end
|
||||
|
||||
function SkinChanger:SetHeadOverlayColour()
|
||||
local features = {{"beard_3", "beard_4"}, {"eyebrows_3", "eyebrows_4"}, {"makeup_3", "makeup_4"}, {"lipstick_3", "lipstick_4"}, {"blush_3", 0}, {"chest_3", 0}}
|
||||
for i = 1, #features, 1 do
|
||||
local feature = features[i]
|
||||
SetPedHeadOverlayColor(self.playerPed, i - 1, 1, self.character[feature[1]], self.character[feature[2]])
|
||||
local features = {[1] = {"beard_3", "beard_4"}, [2] = {"eyebrows_3", "eyebrows_4"}, [4] = {"makeup_3", "makeup_4"}, [5] = {"blush_3", 0}, [8] = {"lipstick_3", "lipstick_4"}, [10] = {"chest_3", 0}}
|
||||
for i, feature in pairs(features) do
|
||||
SetPedHeadOverlayColor(self.playerPed, i, 1, self.character[feature[1]], self.character[feature[2]])
|
||||
end
|
||||
if self.character["bodyb_1"] == -1 then
|
||||
SetPedHeadOverlay(self.playerPed, 11, 255, (self.character["bodyb_2"] / 10) + 0.0) -- Body Blemishes + opacity
|
||||
|
||||
Reference in New Issue
Block a user