mirror of
https://github.com/qbcore-fivem/qb-core.git
synced 2026-08-29 01:01:24 +00:00
Merge branch 'qbcore-framework:main' into main
This commit is contained in:
+1
-1
@@ -2,7 +2,7 @@ fx_version 'cerulean'
|
||||
game 'gta5'
|
||||
|
||||
description 'QB-Core'
|
||||
version '1.1.0'
|
||||
version '1.2.1'
|
||||
|
||||
shared_scripts {
|
||||
'config.lua',
|
||||
|
||||
@@ -17,6 +17,8 @@ local Translations = {
|
||||
no_permission = 'You don\'t have permissions for this..',
|
||||
no_waypoint = 'No Waypoint Set.',
|
||||
tp_error = 'Error While Teleporting.',
|
||||
connecting_database_error = 'A database error occurred while connecting to the server. (Is the SQL server on?)',
|
||||
connecting_database_timeout = 'Connection to database timed out. (Is the SQL server on?)',
|
||||
},
|
||||
success = {
|
||||
server_opened = 'The server has been opened',
|
||||
|
||||
+105
-5
@@ -7,18 +7,118 @@ local Translations = {
|
||||
no_access = 'Não tens acesso a este comando',
|
||||
company_too_poor = 'A tua empresa está falida',
|
||||
item_not_exist = 'O item não existe',
|
||||
too_heavy = 'Inventário cheio'
|
||||
too_heavy = 'Inventário cheio',
|
||||
location_not_exist = 'Localização não existe',
|
||||
duplicate_license = 'Licença Rockstar duplicada',
|
||||
no_valid_license = 'Licença Rockstar não encontrada',
|
||||
not_whitelisted = 'Não estás na whitelist deste servidor',
|
||||
server_already_open = 'O Servidor já se encontra aberto',
|
||||
server_already_closed = 'O Servidor já se encontra fechado',
|
||||
no_permission = 'Não tem permissões para isto',
|
||||
no_waypoint = 'Não colocou nenhum waypoint',
|
||||
tp_error = 'Erro ao teleportar',
|
||||
connecting_database_error = 'Um erro na base de dados ocorreu enquanto se conecatava ao servidor. (SQL Server Ligado?)',
|
||||
connecting_database_timeout = 'Falhou a ligação à base de dados. (SQL server Ligado?)',
|
||||
},
|
||||
success = {
|
||||
server_opened = 'O Servidor abriu',
|
||||
server_closed = 'O Servidor fechou',
|
||||
teleported_waypoint = 'Teleportado para o waypoint.',
|
||||
},
|
||||
success = {},
|
||||
info = {
|
||||
received_paycheck = 'Recebeste o pagamento de %{value}€',
|
||||
job_info = 'Emprego: %{value} | Grau: %{value2} | Serviço: %{value3}',
|
||||
gang_info = 'Gang: %{value} | Grau: %{value2}',
|
||||
on_duty = 'Agora estás de serviço!',
|
||||
off_duty = 'Agora estás fora de serviço!'
|
||||
}
|
||||
off_duty = 'Agora estás fora de serviço!',
|
||||
checking_ban = 'Olá %s. Estamos a verificar se estás banido.',
|
||||
join_server = 'Bem vindo %s ao {Server Name}.',
|
||||
checking_whitelisted = 'Bem vindo %s. Estamos a verificiar se estás na whitelist.',
|
||||
exploit_banned = 'Foste banidos por cheats. Para mais informações visita o nosso discord: %{discord}',
|
||||
exploit_dropped = 'Foste kickado por cheats!',
|
||||
},
|
||||
command = {
|
||||
tp = {
|
||||
help = 'TP para jogador ou coordenadas (Apenas Admin)',
|
||||
params = {
|
||||
x = { name = 'id/x', help = 'ID do jogador ou posição X'},
|
||||
y = { name = 'y', help = 'Posição Y'},
|
||||
z = { name = 'z', help = 'Posição Z'},
|
||||
},
|
||||
},
|
||||
tpm = { help = 'TP para Marcador (Apenas Admin)' },
|
||||
togglepvp = { help = 'Ligar /Desligar PVP no servidor (Apenas Admin)' },
|
||||
addpermission = {
|
||||
help = 'Dar Permissões a jogador (Apenas God)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID do jogador' },
|
||||
permission = { name = 'permission', help = 'Nivel de permissão' },
|
||||
},
|
||||
},
|
||||
removepermission = {
|
||||
help = 'Remover permissão de jogador (Apenas God)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID do jogador' },
|
||||
permission = { name = 'permission', help = 'Nivel de permissão' },
|
||||
},
|
||||
},
|
||||
openserver = { help = 'Abrir o Servidor para todos (Apenas Admin)' },
|
||||
closeserver = {
|
||||
help = 'Fechar o servidor para todos excepto Admins (Apenas Admin)',
|
||||
params = {
|
||||
reason = { name = 'reason', help = 'Razão para fechar(opcional)' },
|
||||
},
|
||||
},
|
||||
car = {
|
||||
help = 'Spawnar Veículo (Apenas Admin)',
|
||||
params = {
|
||||
model = { name = 'model', help = 'Modelo do veículo' },
|
||||
},
|
||||
},
|
||||
dv = { help = 'Apagar Veículo (Apenas Admin)' },
|
||||
givemoney = {
|
||||
help = 'Dar dinheiro a jogador (Apenas Admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID do jogador' },
|
||||
moneytype = { name = 'moneytype', help = 'Tipo (cash, bank, crypto)' },
|
||||
amount = { name = 'amount', help = 'Quantidade de dinheiro' },
|
||||
},
|
||||
},
|
||||
setmoney = {
|
||||
help = 'Definir a quantia de dinheiro do jogador (Apenas Admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID do jogador' },
|
||||
moneytype = { name = 'moneytype', help = 'Tipo(cash, bank, crypto)' },
|
||||
amount = { name = 'amount', help = 'Quantidade de dinheiro' },
|
||||
},
|
||||
},
|
||||
job = { help = 'Ver o teu trabalho' },
|
||||
setjob = {
|
||||
help = 'Definir o trabalho de 1 jogador (Apenas Admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID do jogador' },
|
||||
job = { name = 'job', help = 'Nome do trabalho' },
|
||||
grade = { name = 'grade', help = 'Nivel do trabalho' },
|
||||
},
|
||||
},
|
||||
gang = { help = 'Ver o teu Gang' },
|
||||
setgang = {
|
||||
help = 'Definir o Gang de um jogador (Apenas Admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID do jogador' },
|
||||
gang = { name = 'gang', help = 'Nome do Gang' },
|
||||
grade = { name = 'grade', help = 'Nível/ Posição no Gang' },
|
||||
},
|
||||
},
|
||||
ooc = { help = 'Mensagem Chat em OOC' },
|
||||
me = {
|
||||
help = 'Mostrar Mensagem local',
|
||||
params = {
|
||||
message = { name = 'message', help = 'Menssagem a enviar' }
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if GetConvar('qb_locale', 'en') == 'pt' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
|
||||
+54
-24
@@ -34,8 +34,6 @@ local function onPlayerConnecting(name, _, deferrals)
|
||||
end
|
||||
end
|
||||
|
||||
deferrals.update(string.format(Lang:t('info.checking_ban'), name))
|
||||
|
||||
for _, v in pairs(identifiers) do
|
||||
if string.find(v, 'license') then
|
||||
license = v
|
||||
@@ -43,30 +41,62 @@ local function onPlayerConnecting(name, _, deferrals)
|
||||
end
|
||||
end
|
||||
|
||||
-- Mandatory wait
|
||||
Wait(2500)
|
||||
|
||||
deferrals.update(string.format(Lang:t('info.checking_whitelisted'), name))
|
||||
|
||||
local isBanned, Reason = QBCore.Functions.IsPlayerBanned(src)
|
||||
local isLicenseAlreadyInUse = QBCore.Functions.IsLicenseInUse(license)
|
||||
local isWhitelist, whitelisted = QBCore.Config.Server.Whitelist, QBCore.Functions.IsWhitelisted(src)
|
||||
|
||||
Wait(2500)
|
||||
|
||||
deferrals.update(string.format(Lang:t('info.join_server'), name))
|
||||
|
||||
if not license then
|
||||
deferrals.done(Lang:t('error.no_valid_license'))
|
||||
elseif isBanned then
|
||||
deferrals.done(Reason)
|
||||
elseif isLicenseAlreadyInUse and QBCore.Config.Server.CheckDuplicateLicense then
|
||||
deferrals.done(Lang:t('error.duplicate_license'))
|
||||
elseif isWhitelist and not whitelisted then
|
||||
deferrals.done(Lang:t('error.not_whitelisted'))
|
||||
if GetConvarInt("sv_fxdkMode", false) then
|
||||
license = 'license:AAAAAAAAAAAAAAAA' -- Dummy License
|
||||
end
|
||||
|
||||
deferrals.done()
|
||||
if not license then
|
||||
deferrals.done(Lang:t('error.no_valid_license'))
|
||||
elseif QBCore.Config.Server.CheckDuplicateLicense and QBCore.Functions.IsLicenseInUse(license) then
|
||||
deferrals.done(Lang:t('error.duplicate_license'))
|
||||
end
|
||||
|
||||
local databaseTime = os.clock()
|
||||
local databasePromise = promise.new()
|
||||
|
||||
-- conduct database-dependant checks
|
||||
CreateThread(function()
|
||||
deferrals.update(string.format(Lang:t('info.checking_ban'), name))
|
||||
local databaseSuccess, databaseError = pcall(function()
|
||||
local isBanned, Reason = QBCore.Functions.IsPlayerBanned(src)
|
||||
if isBanned then
|
||||
deferrals.done(Reason)
|
||||
end
|
||||
end)
|
||||
|
||||
if QBCore.Config.Server.Whitelist then
|
||||
deferrals.update(string.format(Lang:t('info.checking_whitelisted'), name))
|
||||
databaseSuccess, databaseError = pcall(function()
|
||||
if not QBCore.Functions.IsWhitelisted(src) then
|
||||
deferrals.done(Lang:t('error.not_whitelisted'))
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
if not databaseSuccess then
|
||||
databasePromise:reject(databaseError)
|
||||
end
|
||||
databasePromise:resolve()
|
||||
end)
|
||||
|
||||
-- wait for database to finish
|
||||
databasePromise:next(function()
|
||||
deferrals.update(string.format(Lang:t('info.join_server'), name))
|
||||
deferrals.done()
|
||||
end, function (databaseError)
|
||||
deferrals.done(Lang:t('error.connecting_database_error'))
|
||||
print('^1' .. databaseError)
|
||||
end)
|
||||
|
||||
-- if conducting checks for too long then raise error
|
||||
while databasePromise.state == 0 do
|
||||
if os.clock() - databaseTime > 30 then
|
||||
deferrals.done(Lang:t('error.connecting_database_timeout'))
|
||||
error(Lang:t('error.connecting_database_timeout'))
|
||||
break
|
||||
end
|
||||
Wait(1000)
|
||||
end
|
||||
|
||||
-- Add any additional defferals you may need!
|
||||
end
|
||||
|
||||
+7
-3
@@ -1,6 +1,9 @@
|
||||
QBShared = QBShared or {}
|
||||
QBShared.ForceJobDefaultDutyAtLogin = true -- true: Force duty state to jobdefaultDuty | false: set duty state from database last saved
|
||||
QBShared.Jobs = {
|
||||
QBShared.QBJobsStatus = false -- true: integrate qb-jobs into the whole of qb-core | false: treat qb-jobs as an add-on resource.
|
||||
QBShared.Jobs = {} -- All of below has been migrated into qb-jobs
|
||||
if not QBShared.QBJobsStatus then
|
||||
QBShared.Jobs = {
|
||||
['unemployed'] = {
|
||||
label = 'Civilian',
|
||||
defaultDuty = true,
|
||||
@@ -125,7 +128,7 @@ QBShared.Jobs = {
|
||||
},
|
||||
},
|
||||
},
|
||||
['bus'] = {
|
||||
['bus'] = {
|
||||
label = 'Bus',
|
||||
defaultDuty = true,
|
||||
offDutyPay = false,
|
||||
@@ -281,4 +284,5 @@ QBShared.Jobs = {
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
+4
-4
@@ -30,10 +30,10 @@ end
|
||||
--- Constructor function for a new Locale class instance
|
||||
--- @param opts table<string, any> - Constructor opts param
|
||||
--- @return Locale
|
||||
function Locale:new(opts)
|
||||
setmetatable(self, Locale)
|
||||
function Locale.new(_, opts)
|
||||
local self = setmetatable({}, Locale)
|
||||
|
||||
self.fallback = opts.fallbackLang and Locale.new({}, {
|
||||
self.fallback = opts.fallbackLang and Locale:new({
|
||||
warnOnMissing = false,
|
||||
phrases = opts.fallbackLang.phrases,
|
||||
}) or false
|
||||
@@ -142,4 +142,4 @@ function Locale:delete(phraseTarget, prefix)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
+1
-12
@@ -10,33 +10,25 @@ QBShared.Locations = {
|
||||
['pizzaria'] = vector4(790.4561, -758.4601, 26.7424, 270.2329),
|
||||
['catcafe'] = vector4(-580.8388, -1072.7872, 22.3296, 359.0078),
|
||||
['carmeet'] = vector4(958.8237, -1699.6659, 29.5574, 71.2731),
|
||||
['davispd'] = vector4(382.5791, -1591.1827, 29.2828, 145.0991),
|
||||
['popsdiner'] = vector4(1595.9753, 6448.6421, 25.3170, 28.3026),
|
||||
['davisfirestation'] = vector4(216.7576, -1638.3801, 29.5151, 137.8174),
|
||||
['harmony'] = vector4(1183.0693, 2648.5313, 37.8363, 194.0603),
|
||||
['haters'] = vector4(-1117.1525, -1439.4297, 5.1075, 103.4411),
|
||||
['hayes'] = vector4(-1435.7040, -445.7360, 35.5964, 220.1762),
|
||||
['pdm'] = vector4(-48.2113, -1105.4769, 27.2634, 339.5899),
|
||||
['bennys'] = vector4(-47.5289, -1042.6086, 28.3532, 247.9748),
|
||||
['impound'] = vector4(-190.5874, -1156.1343, 23.0482, 158.9385),
|
||||
['lamesaauto'] = vector4(720.4776, -1092.1934, 22.2866, 310.1469),
|
||||
['lamesapd'] = vector4(824.3735, -1290.0670, 28.2364, 266.1293),
|
||||
['lostmc'] = vector4(982.6339, -104.7095, 74.8488, 30.8738),
|
||||
['pillbox'] = vector4(298.1153, -584.2825, 43.2609, 252.7553),
|
||||
['mrpd'] = vector4(432.0686, -981.6853, 30.7119, 267.3501),
|
||||
['mirrorparkhouse1'] = vector4(945.9535, -652.9119, 58.0228, 90.5541),
|
||||
['pacificbank'] = vector4(229.9529, 214.3890, 105.5561, 294.6791),
|
||||
['paletoliquor'] = vector4(-154.2287, 6328.8682, 31.5665, 133.1992),
|
||||
['paletopd'] = vector4(-436.0935, 6015.2026, 31.4892, 132.9752),
|
||||
['paletogasstation'] = vector4(120.2420, 6625.4722, 31.9580, 36.5687),
|
||||
['pinkcage'] = vector4(323.9055, -203.2524, 54.0866, 186.8505),
|
||||
['ponsonbys1'] = vector4(-165.2497, -304.3988, 38.07126, 0.0),
|
||||
['ponsonbys2'] = vector4(-1448.1, -236.8420, 48.15098, 0.0),
|
||||
['ponsonbys3'] = vector4(-709.8120, -150.6267, 35.75312, 0.0),
|
||||
['prison'] = vector4(1847.1284, 2586.0696, 45.6726, 91.7828),
|
||||
['rangerstation'] = vector4(387.3204, 790.1508, 187.6927, 4.7656),
|
||||
['recordastudio'] = vector4(473.3006, -109.4360, 62.7418, 350.8488),
|
||||
['sandypd'] = vector4(1839.7510, 3667.9907, 33.8787, 29.1744),
|
||||
['suburban1'] = vector4(124.9756, -217.6290, 55.81879, 0.0),
|
||||
['suburban2'] = vector4(617.4776, 2757.4810, 43.34935, 0.0),
|
||||
['suburban3'] = vector4(-1195.8690, -773.5746, 18.58485, 0.0),
|
||||
@@ -51,8 +43,5 @@ QBShared.Locations = {
|
||||
-- Unclejust
|
||||
['digitalden'] = vector4(-656.28, -849.92, 24.51, 167.42),
|
||||
['ifruitstore1'] = vector4(-646.78, -288.17, 35.49, 297.73),
|
||||
['ifruitstore2'] = vector4(-778.7451, -598.2717, 30.2772, 181.0197),
|
||||
['taxijob'] = vector4(908.7, -166.45, 74.13, 54.88),
|
||||
['vineyard'] = vector4(-1892.29, 2038.47, 140.86, 339.23),
|
||||
['weazelnews'] = vector4(-604.82, -933.22, 23.86, 292.3),
|
||||
['ifruitstore2'] = vector4(-778.7451, -598.2717, 30.2772, 181.0197)
|
||||
}
|
||||
+5220
-4413
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user