mirror of
https://github.com/qbcore-fivem/qb-core.git
synced 2026-08-29 01:01:24 +00:00
Merge branch 'main' into patch-1
This commit is contained in:
+2
-1
@@ -7,7 +7,8 @@ version '1.1.0'
|
||||
shared_scripts {
|
||||
'config.lua',
|
||||
'shared/locale.lua',
|
||||
'locale/en.lua', -- replace with desired language
|
||||
'locale/en.lua',
|
||||
'locale/*.lua',
|
||||
'shared/main.lua',
|
||||
'shared/items.lua',
|
||||
'shared/jobs.lua',
|
||||
|
||||
+9
-6
@@ -17,15 +17,18 @@ local Translations = {
|
||||
received_paycheck = '$%{value} لقد استملت راتبك الشهري',
|
||||
job_info = '%{value} | %{value2} | %{value3}',
|
||||
gang_info = '%{value} | %{value2}',
|
||||
on_duty = 'انت الان خارج الخدمة',
|
||||
off_duty = 'انت الان في الخدمة',
|
||||
on_duty = 'انت الان في الخدمة',
|
||||
off_duty = 'انت الان خارج الخدمة',
|
||||
checking_ban = 'نحن نتحقق اذا كنت محجوب من السيرفر. %s مرحبا',
|
||||
join_server = '{Server Name} قي %s مرحبا',
|
||||
checking_whitelisted = 'نتحقق ما اذا كان مسموح لك بالدخول %s مرحبا '
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'ar' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'bg' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'cn' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+94
-6
@@ -12,7 +12,11 @@ local Translations = {
|
||||
no_valid_license = 'Nebyla nalezena žádná platná Rockstar licence',
|
||||
not_whitelisted = 'Nejste na whitelistu'
|
||||
},
|
||||
success = {},
|
||||
success = {
|
||||
server_opened = 'Server byl otevřen',
|
||||
server_closed = 'Server byl uzavřen',
|
||||
teleported_waypoint = 'Teleportováno na Waypoint.',
|
||||
},
|
||||
info = {
|
||||
received_paycheck = 'Obdrželi jste výplatu v hodnotě $%{value}',
|
||||
job_info = 'Práce: %{value} | Pozice: %{value2} | Ve službě: %{value3}',
|
||||
@@ -22,10 +26,94 @@ local Translations = {
|
||||
checking_ban = 'Ahoj %s. Kontrolujeme zda nejste zabanováni.',
|
||||
join_server = 'Vítejte %s na {Server Name}.',
|
||||
checking_whitelisted = 'Ahoj %s. Kontrolujeme zda máte přístup.'
|
||||
}
|
||||
},
|
||||
command = {
|
||||
tp = {
|
||||
help = 'Teleport k hráči nebo na souřadnice (Pouze Admin)',
|
||||
params = {
|
||||
x = { name = 'id/x', help = 'ID hráče nebo X pozice'},
|
||||
y = { name = 'y', help = 'Y pozice'},
|
||||
z = { name = 'z', help = 'Z pozice'},
|
||||
},
|
||||
},
|
||||
tpm = { help = 'TP Na Marker (pouze Admin)' },
|
||||
togglepvp = { help = 'Přepnutí PVP na serveru (Pouze Admin)' },
|
||||
addpermission = {
|
||||
help = 'Udělení hráči oprávnění (God Pouze)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID hráče' },
|
||||
permission = { name = 'permission', help = 'Úroveň oprávnění' },
|
||||
},
|
||||
},
|
||||
removepermission = {
|
||||
help = 'Odeber hráči oprávnění (God Pouze)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID hráče' },
|
||||
permission = { name = 'permission', help = 'Úroveň oprávnění' },
|
||||
},
|
||||
},
|
||||
openserver = { help = 'Otevři server pro všechny (Pouze Admin)' },
|
||||
closeserver = {
|
||||
help = 'Uzavři server pro všechny bez práv (Pouze Admin)',
|
||||
params = {
|
||||
reason = { name = 'reason', help = 'Důdov pro uzavření (optimální)' },
|
||||
},
|
||||
},
|
||||
car = {
|
||||
help = 'Spawn Vozidla (Pouze Admin)',
|
||||
params = {
|
||||
model = { name = 'model', help = 'Jméno modelu vozidla' },
|
||||
},
|
||||
},
|
||||
dv = { help = 'Odstraň vozidlo (Pouze Admin)' },
|
||||
givemoney = {
|
||||
help = 'Dej hráči peníze (Pouze Admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID hráče' },
|
||||
moneytype = { name = 'moneytype', help = 'Typ (hotovost, banka, krypto)' },
|
||||
amount = { name = 'amount', help = 'Počet peněz' },
|
||||
},
|
||||
},
|
||||
setmoney = {
|
||||
help = 'Nastav hráči peníze (Pouze Admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID hráče' },
|
||||
moneytype = { name = 'moneytype', help = 'Typ (hotovost, banka, krypto)' },
|
||||
amount = { name = 'amount', help = 'Počet peněz' },
|
||||
},
|
||||
},
|
||||
job = { help = 'Zkontroluj si práci' },
|
||||
setjob = {
|
||||
help = 'Nastav hráči práci (Pouze Admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID hráče' },
|
||||
job = { name = 'job', help = 'Jméno práce' },
|
||||
grade = { name = 'grade', help = 'Jméno hodnosti' },
|
||||
},
|
||||
},
|
||||
gang = { help = 'Zkontroluj si gang' },
|
||||
setgang = {
|
||||
help = 'Nastav hráči gang (Pouze Admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID hráče' },
|
||||
gang = { name = 'gang', help = 'Jméno gangu' },
|
||||
grade = { name = 'grade', help = 'Pozice v gangu' },
|
||||
},
|
||||
},
|
||||
ooc = { help = 'OOC Chat' },
|
||||
me = {
|
||||
help = 'Ukaž zprávu',
|
||||
params = {
|
||||
message = { name = 'message', help = 'Zpráva k odeslání' }
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'cs' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'da' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+14
-11
@@ -25,15 +25,15 @@ local Translations = {
|
||||
},
|
||||
info = {
|
||||
received_paycheck = 'Du hast dein Gehalt in Höhe von $%{value} erhalten',
|
||||
job_info = 'Job: %{value} | Dienstgrad: %{value2} | im Dienst: %{value3}',
|
||||
job_info = 'Beruf: %{value} | Dienstgrad: %{value2} | im Dienst: %{value3}',
|
||||
gang_info = 'Gang: %{value} | Rang: %{value2}',
|
||||
on_duty = 'Du bist nun im Dienst!',
|
||||
off_duty = 'Du bist nun nicht mehr im Dienst!',
|
||||
checking_ban = 'Hallo %s. Wir checken, ob du gebannt wurdest.',
|
||||
join_server = 'Willkommen %s zu {Server Name}.',
|
||||
checking_whitelisted = 'Hallo %s. Wir checken deine Erlaubnis.',
|
||||
on_duty = 'Du befindest dich nun im Dienst!',
|
||||
off_duty = 'Du befindest dich nun nicht mehr im Dienst!',
|
||||
checking_ban = 'Hallo %s. Wir prüfen, ob du gebannt wurdest.',
|
||||
join_server = 'Willkommen %s bei {Server Name}.',
|
||||
checking_whitelisted = 'Hallo %s. Wir prüfen deine Erlaubnis.',
|
||||
exploit_banned = 'Du wurdest fürs Cheaten gebannt. Meld dich auf dem Discord: %{discord}',
|
||||
exploit_dropped = 'Du wurdest gekickt für das Ausnutzen von Fehlern',
|
||||
exploit_dropped = 'Du wurdest gekickt, für das Ausnutzen von Fehlern',
|
||||
},
|
||||
command = {
|
||||
tp = {
|
||||
@@ -118,7 +118,10 @@ local Translations = {
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'de' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'ee' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+1
-1
@@ -118,7 +118,7 @@ local Translations = {
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
Lang = Lang or Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
|
||||
+99
-8
@@ -8,15 +8,20 @@ local Translations = {
|
||||
company_too_poor = 'Tu empleador está en bancarrota',
|
||||
item_not_exist = 'El objeto no existe',
|
||||
too_heavy = 'No hay espacio en tu inventario',
|
||||
location_not_exist = 'La ubicación no existe',
|
||||
duplicate_license = 'Licencia de Rockstar duplicada',
|
||||
no_valid_license = 'No tienes una licencia de Rockstar válida',
|
||||
not_whitelisted = 'No tienes acceso a este servidor',
|
||||
server_already_open = 'El servidor ya está abierto',
|
||||
server_already_closed = 'El servidor ya está cerrado'
|
||||
server_already_closed = 'El servidor ya está cerrado',
|
||||
no_permission = 'No tienes permisos para esto..',
|
||||
no_waypoint = 'No hay waypoint establecido.',
|
||||
tp_error = 'Error mientras se teletransporta.',
|
||||
},
|
||||
success = {
|
||||
server_opened = 'El servidor ha sido abierto',
|
||||
server_closed = 'El servidor ha sido cerrado'
|
||||
server_closed = 'El servidor ha sido cerrado',
|
||||
teleported_waypoint = 'Teletransportado a punto de encuentro.',
|
||||
},
|
||||
info = {
|
||||
received_paycheck = 'Has recibido tu salario de $%{value}',
|
||||
@@ -26,11 +31,97 @@ local Translations = {
|
||||
off_duty = '¡Estás fuera de servicio!',
|
||||
checking_ban = 'Hola %s. Estamos revisando la lista de baneos.',
|
||||
join_server = 'Bienvenid@ a {Server Name}, %s.',
|
||||
checking_whitelisted = 'Hola %s. Estamos revisando si tienes acceso a nuestro servidor.'
|
||||
}
|
||||
checking_whitelisted = 'Hola %s. Estamos revisando si tienes acceso a nuestro servidor.',
|
||||
exploit_banned = 'Has sido expulsado por hacer trampas. Consulta nuestro Discord para más información: %{discord}',
|
||||
exploit_dropped = 'Has sido expulsado por hacer trampas',
|
||||
},
|
||||
command = {
|
||||
tp = {
|
||||
help = 'TP al jugador o a las coordenadas (sólo para admin)',
|
||||
params = {
|
||||
x = { name = 'id/x', help = 'ID de jugador o posición X'},
|
||||
y = { name = 'y', help = 'Y posición'},
|
||||
z = { name = 'z', help = 'Z posición'},
|
||||
},
|
||||
},
|
||||
tpm = { help = 'TP al marcador (sólo para admin)' },
|
||||
togglepvp = { help = 'Activar el PVP en el servidor (sólo para admin)' },
|
||||
addpermission = {
|
||||
help = 'Dar permisos al jugador (sólo modo Dios)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID del jugador' },
|
||||
permission = { name = 'permission', help = 'Nivel de permiso' },
|
||||
},
|
||||
},
|
||||
removepermission = {
|
||||
help = 'Eliminar los permisos de los jugadores (sólo modo Dios)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID del jugador' },
|
||||
permission = { name = 'permission', help = 'Nivel de permiso' },
|
||||
},
|
||||
},
|
||||
openserver = { help = 'Abrir el servidor para todo el mundo (sólo para admin)' },
|
||||
closeserver = {
|
||||
help = 'Cerrar el servidor para personas sin permisos (sólo para admin)',
|
||||
params = {
|
||||
reason = { name = 'reason', help = 'Motivo del cierre (opcional)' },
|
||||
},
|
||||
},
|
||||
car = {
|
||||
help = 'Crear Vehículo (sólo para admin)',
|
||||
params = {
|
||||
model = { name = 'model', help = 'Nombre del modelo del vehículo' },
|
||||
},
|
||||
},
|
||||
dv = { help = 'Borrar vehículo (sólo para admin)' },
|
||||
givemoney = {
|
||||
help = 'Dar dinero a un jugador (sólo para admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID del jugador' },
|
||||
moneytype = { name = 'moneytype', help = 'Tipo de dinero (efectivo, banco, cripto)' },
|
||||
amount = { name = 'amount', help = 'Cantidad de dinero' },
|
||||
},
|
||||
},
|
||||
setmoney = {
|
||||
help = 'Establecer la cantidad de dinero de los jugadores (sólo para admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID del jugador' },
|
||||
moneytype = { name = 'moneytype', help = 'Tipo de dinero (efectivo, banco, cripto)' },
|
||||
amount = { name = 'amount', help = 'Cantidad de dinero' },
|
||||
},
|
||||
},
|
||||
job = { help = 'Compruebe su trabajo' },
|
||||
setjob = {
|
||||
help = 'Establecer un trabajo de jugador (sólo para admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID del jugador' },
|
||||
job = { name = 'job', help = 'Nombre del trabajo' },
|
||||
grade = { name = 'grade', help = 'Grado de trabajo' },
|
||||
},
|
||||
},
|
||||
gang = { help = 'Comprueba tu banda' },
|
||||
setgang = {
|
||||
help = 'Establecer una banda de jugadores (sólo para admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID del jugador' },
|
||||
gang = { name = 'gang', help = 'Nombre de la banda' },
|
||||
grade = { name = 'grade', help = 'Grado de banda' },
|
||||
},
|
||||
},
|
||||
ooc = { help = 'Mensaje del chat OOC' },
|
||||
me = {
|
||||
help = 'Mostrar mensaje local',
|
||||
params = {
|
||||
message = { name = 'message', help = 'Mensaje a enviar' }
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'es' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+104
-8
@@ -8,11 +8,21 @@ local Translations = {
|
||||
company_too_poor = 'Teie tööandja on võlgades',
|
||||
item_not_exist = 'Asi ei eksisteeri',
|
||||
too_heavy = 'Inventuur on liiga täis',
|
||||
location_not_exist = 'Asukoht ei eksisteeri',
|
||||
duplicate_license = 'Leiti Rockstari litsentsi duplikaat',
|
||||
no_valid_license = 'Kehtivat Rockstari litsentsi ei leitud',
|
||||
not_whitelisted = 'Te ei ole selle serveri jaoks Allowlisted'
|
||||
not_whitelisted = 'Te ei ole selle serveri jaoks Allowlisted',
|
||||
server_already_open = 'Server on juba avatud',
|
||||
server_already_closed = 'Server on juba suletud',
|
||||
no_permission = 'Teil pole selleks õigusi..',
|
||||
no_waypoint = 'Ühtegi punkti ei ole märgitud.',
|
||||
tp_error = 'Teleportimise viga.',
|
||||
},
|
||||
success = {
|
||||
server_opened = 'Server on avatud',
|
||||
server_closed = 'Server on suletud',
|
||||
teleported_waypoint = 'Teleporteerusid punktile.',
|
||||
},
|
||||
success = {},
|
||||
info = {
|
||||
received_paycheck = 'Saite oma palga $%{value}',
|
||||
job_info = 'Töö: %{value} | Auaste: %{value2} | Tööpostil: %{value3}',
|
||||
@@ -21,11 +31,97 @@ local Translations = {
|
||||
off_duty = 'Sa kirjutasid ennast töölt vabaks!',
|
||||
checking_ban = 'Tere %s. Me kontrollime, kas olete keelustatud.',
|
||||
join_server = 'Tere tulemast %s serverisse {Server Name}.',
|
||||
checking_whitelisted = 'Tere %s. Kontrollime teie Allowlisti staatust.'
|
||||
}
|
||||
checking_whitelisted = 'Tere %s. Kontrollime teie Allowlisti staatust.',
|
||||
exploit_banned = 'Olete saanud petmise eest mängukeelu. Lisateabe saamiseks vaadake meie Discordi: %{discord}',
|
||||
exploit_dropped = 'Sind visati serverist välja petmise tõttu.',
|
||||
},
|
||||
command = {
|
||||
tp = {
|
||||
help = 'TP mängijale või koordinaatidele (ainult administraator)',
|
||||
params = {
|
||||
x = { name = 'id/x', help = 'ID mängija või X positsioon'},
|
||||
y = { name = 'y', help = 'Y positsioon'},
|
||||
z = { name = 'z', help = 'Z positsioon'},
|
||||
},
|
||||
},
|
||||
tpm = { help = 'TP Markerile (ainult administraator)' },
|
||||
togglepvp = { help = 'PVP serveris sisse- ja väljalülitamine (ainult administraator)' },
|
||||
addpermission = {
|
||||
help = 'Andke mängijale õigused (ainult jumal)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'mängija ID' },
|
||||
permission = { name = 'permission', help = 'Permission level' },
|
||||
},
|
||||
},
|
||||
removepermission = {
|
||||
help = 'Eemaldage mängija õigused (ainult jumal)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'mängija ID' },
|
||||
permission = { name = 'õigused', help = 'Õiguse tase' },
|
||||
},
|
||||
},
|
||||
openserver = { help = 'Ava server kõigile (ainult administraator)' },
|
||||
closeserver = {
|
||||
help = 'Sulgege server ilma õigusteta inimeste jaoks (ainult administraator)',
|
||||
params = {
|
||||
reason = { name = 'põhjus', help = 'Sulgemise põhjus (valikuline)' },
|
||||
},
|
||||
},
|
||||
car = {
|
||||
help = 'Sõiduki loomine (ainult administraator)',
|
||||
params = {
|
||||
model = { name = 'mudel', help = 'Sõiduki mudeli nimi' },
|
||||
},
|
||||
},
|
||||
dv = { help = 'Sõiduki kustutamine (ainult administraator)' },
|
||||
givemoney = {
|
||||
help = 'Mängija rahasumma määramine (ainult administraator)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'Mängija ID' },
|
||||
moneytype = { name = 'rahatüüp', help = 'Raha liik (sularaha, pank, krüpto)' },
|
||||
amount = { name = 'kogus', help = 'Rahasumma' },
|
||||
},
|
||||
},
|
||||
setmoney = {
|
||||
help = 'Mängija rahasumma määramine (ainult administraator)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'Mängija ID' },
|
||||
moneytype = { name = 'rahatüüp', help = 'Raha liik (sularaha, pank, krüpto)' },
|
||||
amount = { name = 'kogus', help = 'Rahasumma' },
|
||||
},
|
||||
},
|
||||
job = { help = 'Kontrollige oma töödkohta' },
|
||||
setjob = {
|
||||
help = 'Mängijale töökoha määramine (ainult administraator)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'Mängija ID' },
|
||||
job = { name = 'töö', help = 'Töökoha nimi' },
|
||||
grade = { name = 'tase', help = 'Tüükoha tase' },
|
||||
},
|
||||
},
|
||||
gang = { help = 'Kontrollige oma grupeeringut' },
|
||||
setgang = {
|
||||
help = 'Määra mängija grupeeringu (ainult administraator)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'Player ID' },
|
||||
gang = { name = 'tase', help = 'Grupeeringu nimi' },
|
||||
grade = { name = 'tase', help = 'Grupeeringu tase' },
|
||||
},
|
||||
},
|
||||
ooc = { help = 'OOC vestlussõnum' },
|
||||
me = {
|
||||
help = 'Kuva kohalikud sõnumid',
|
||||
params = {
|
||||
message = { name = 'sõnum', help = 'Sõnum saatmiseks' }
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'et' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'fa' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'fi' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -120,7 +120,10 @@ local Translations = {
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'fr' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'ge' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+8
-4
@@ -118,7 +118,11 @@ local Translations = {
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'he' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'hu' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'in' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -118,7 +118,10 @@ local Translations = {
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'is' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -123,7 +123,10 @@ error = {
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'it' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'lv' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'nl' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+127
@@ -0,0 +1,127 @@
|
||||
local Translations = {
|
||||
error = {
|
||||
not_online = 'Spiller ikke online',
|
||||
wrong_format = 'Ugyldig format',
|
||||
missing_args = 'Ikke alle argumenter er lagt inn (x, y, z)',
|
||||
missing_args2 = 'Alle argumenter må fylles ut!',
|
||||
no_access = 'Ingen tilgang til denne kommandoen',
|
||||
company_too_poor = 'Arbeidsgiveren din er blakk',
|
||||
item_not_exist = 'Gjenstand finnes ikke',
|
||||
too_heavy = 'Lommene er fulle',
|
||||
location_not_exist = 'Plassering finnes ikke',
|
||||
duplicate_license = 'Duplikat Rockstar-lisens funnet',
|
||||
no_valid_license = 'Ingen gyldig Rockstar-lisens funnet',
|
||||
not_whitelisted = 'Du har ikke tilgang til serveren',
|
||||
server_already_open = 'Serveren er allerede åpen',
|
||||
server_already_closed = 'Serveren er allerede stengt',
|
||||
no_permission = 'Du har ikke tillatelser for dette..',
|
||||
no_waypoint = 'Ingen veipunkt satt.',
|
||||
tp_error = 'Feil under teleportering.',
|
||||
},
|
||||
success = {
|
||||
server_opened = 'Serveren er åpnet',
|
||||
server_closed = 'Serveren er stengt',
|
||||
teleported_waypoint = 'Teleporter til veipunkt.',
|
||||
},
|
||||
info = {
|
||||
received_paycheck = 'Du mottok lønnsslippen din på kr %{value}',
|
||||
job_info = 'Jobb: %{value} | Grad: %{value2} | vakt: %{value3}',
|
||||
gang_info = 'Gjeng: %{value} | Grad: %{value2}',
|
||||
on_duty = 'Du er nå på vakt!',
|
||||
off_duty = 'Du er nå av vakt!',
|
||||
checking_ban = 'Hei %s. Vi sjekker om du er utestengt.',
|
||||
join_server = 'Velkommen %s til {Server Name}.',
|
||||
checking_whitelisted = 'Hei %s. Vi sjekker tilganger.',
|
||||
exploit_banned = 'Du har blitt utestengt for juks. Sjekk vår Discord for mer informasjon: %{discord}',
|
||||
exploit_dropped = 'Du har blitt sparket for utnyttelse',
|
||||
},
|
||||
command = {
|
||||
tp = {
|
||||
help = 'TP til spiller eller koordinater (kun admin)',
|
||||
params = {
|
||||
x = { name = 'id/x', help = 'ID for spiller eller X-posisjon'},
|
||||
y = { name = 'y', help = 'Y posisjon'},
|
||||
z = { name = 'z', help = 'Z posisjon'},
|
||||
},
|
||||
},
|
||||
tpm = { help = 'TP Til Marker (kun admin)' },
|
||||
togglepvp = { help = 'Slå PVP på serveren (kun admin)' },
|
||||
addpermission = {
|
||||
help = 'Gi spillertillatelser (Kun gud)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID på spiller' },
|
||||
permission = { name = 'permission', help = 'Tillatelsesnivå '},
|
||||
},
|
||||
},
|
||||
removepermission = {
|
||||
help = 'Fjern spillertillatelser (kun gud)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID på spiller' },
|
||||
permission = { name = 'permission', help = 'Tillatelsesnivå' },
|
||||
},
|
||||
},
|
||||
openserver = { help = 'Åpne serveren for alle (kun admin)' },
|
||||
closeserver = {
|
||||
help = 'Lukk serveren for personer uten tillatelser (kun admin)',
|
||||
params = {
|
||||
reason = { name = 'reason', help = 'Årsak til stenging (valgfritt)' },
|
||||
},
|
||||
},
|
||||
car = {
|
||||
help = 'Spawn Vehicle (kun admin)',
|
||||
params = {
|
||||
model = { name = 'model', help = 'Modellnavn på kjøretøyet' },
|
||||
},
|
||||
},
|
||||
dv = { help = 'Slett kjøretøy (kun admin)' },
|
||||
givemoney = {
|
||||
help = 'Gi en spiller penger (kun admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID på spiller' },
|
||||
moneytype = { name = 'moneytype', help = 'Penge type (cash, bank, crypto)' },
|
||||
amount = { name = 'amount', help = 'Penge beløp' },
|
||||
},
|
||||
},
|
||||
setmoney = {
|
||||
help = 'Angi spillerens pengebeløp (kun admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID på spiller' },
|
||||
moneytype = { name = 'moneytype', help = 'Penge type (cash, bank, crypto)' },
|
||||
amount = { name = 'amount', help = 'Penge beløp' },
|
||||
},
|
||||
},
|
||||
job = { help = 'Sjekk din jobb' },
|
||||
setjob = {
|
||||
help = 'Sett en spillerjobb (kun admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID på spiller' },
|
||||
job = { name = 'job', help = 'Jobb navn' },
|
||||
grade = { name = 'grade', help = 'Jobb grad' },
|
||||
},
|
||||
},
|
||||
gang = { help = 'Sjekk din gjeng' },
|
||||
setgang = {
|
||||
help = 'Sett en spillergjeng (kun admin)',
|
||||
params = {
|
||||
id = { name = 'id', help = 'ID på spiller' },
|
||||
gang = { name = 'gang', help = 'Gjeng navn' },
|
||||
grade = { name = 'grade', help = 'Gjeng grad' },
|
||||
},
|
||||
},
|
||||
ooc = { help = 'UAK Chat Melding' },
|
||||
me = {
|
||||
help = 'Vis lokal melding',
|
||||
params = {
|
||||
message = { name = 'message', help = 'Melding å sende' }
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if GetConvar('qb_locale', 'en') == 'no' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'pl' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'pt-br' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'pt' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -115,7 +115,10 @@ local Translations = {
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'ro' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'rs' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -118,7 +118,10 @@ local Translations = {
|
||||
},
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'ru' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'sl' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'sv' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'th' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'tr' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
||||
}
|
||||
}
|
||||
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true
|
||||
})
|
||||
if GetConvar('qb_locale', 'en') == 'vn' then
|
||||
Lang = Locale:new({
|
||||
phrases = Translations,
|
||||
warnOnMissing = true,
|
||||
fallbackLang = Lang,
|
||||
})
|
||||
end
|
||||
|
||||
+6
-6
@@ -297,8 +297,8 @@ function QBCore.Player.CreatePlayer(PlayerData, Offline)
|
||||
TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'AddMoney', 'lightgreen', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') added, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason)
|
||||
end
|
||||
TriggerClientEvent('hud:client:OnMoneyChange', self.PlayerData.source, moneytype, amount, false)
|
||||
TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, "add")
|
||||
TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, "add")
|
||||
TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, "add", reason)
|
||||
TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, "add", reason)
|
||||
end
|
||||
|
||||
return true
|
||||
@@ -330,8 +330,8 @@ function QBCore.Player.CreatePlayer(PlayerData, Offline)
|
||||
if moneytype == 'bank' then
|
||||
TriggerClientEvent('qb-phone:client:RemoveBankMoney', self.PlayerData.source, amount)
|
||||
end
|
||||
TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, "remove")
|
||||
TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, "remove")
|
||||
TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, "remove", reason)
|
||||
TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, "remove", reason)
|
||||
end
|
||||
|
||||
return true
|
||||
@@ -350,8 +350,8 @@ function QBCore.Player.CreatePlayer(PlayerData, Offline)
|
||||
self.Functions.UpdatePlayerData()
|
||||
TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'SetMoney', 'green', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') set, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason)
|
||||
TriggerClientEvent('hud:client:OnMoneyChange', self.PlayerData.source, moneytype, math.abs(difference), difference < 0)
|
||||
TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, "set")
|
||||
TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, "set")
|
||||
TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, "set", reason)
|
||||
TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, "set", reason)
|
||||
end
|
||||
|
||||
return true
|
||||
|
||||
+2
-1
@@ -380,7 +380,8 @@ QBShared.Items = {
|
||||
['dendrogyra_coral'] = {['name'] = 'dendrogyra_coral', ['label'] = 'Dendrogyra', ['weight'] = 1000, ['type'] = 'item', ['image'] = 'dendrogyra_coral.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Its also known as pillar coral'},
|
||||
['antipatharia_coral'] = {['name'] = 'antipatharia_coral', ['label'] = 'Antipatharia', ['weight'] = 1000, ['type'] = 'item', ['image'] = 'antipatharia_coral.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Its also known as black corals or thorn corals'},
|
||||
['diving_gear'] = {['name'] = 'diving_gear', ['label'] = 'Diving Gear', ['weight'] = 30000, ['type'] = 'item', ['image'] = 'diving_gear.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'An oxygen tank and a rebreather'},
|
||||
|
||||
['diving_fill'] = {['name'] = 'diving_fill', ['label'] = 'Diving Tube', ['weight'] = 3000, ['type'] = 'item', ['image'] = 'diving_tube.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['discription'] = 'An oxygen tube and a rebreather'},
|
||||
|
||||
-- Other Tools
|
||||
['casinochips'] = {['name'] = 'casinochips', ['label'] = 'Casino Chips', ['weight'] = 0, ['type'] = 'item', ['image'] = 'casinochips.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Chips For Casino Gambling'},
|
||||
['stickynote'] = {['name'] = 'stickynote', ['label'] = 'Sticky note', ['weight'] = 0, ['type'] = 'item', ['image'] = 'stickynote.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Sometimes handy to remember something :)'},
|
||||
|
||||
+10
-1
@@ -32,7 +32,13 @@ end
|
||||
--- @return Locale
|
||||
function Locale:new(opts)
|
||||
setmetatable(self, Locale)
|
||||
self.warnOnMissing = opts.warnOnMissing or true
|
||||
|
||||
self.fallback = opts.fallbackLang and Locale.new({}, {
|
||||
warnOnMissing = false,
|
||||
phrases = opts.fallbackLang.phrases,
|
||||
}) or false
|
||||
|
||||
self.warnOnMissing = type(opts.warnOnMissing) ~= 'boolean' and true or opts.warnOnMissing
|
||||
|
||||
self.phrases = {}
|
||||
self:extend(opts.phrases or {})
|
||||
@@ -98,6 +104,9 @@ function Locale:t(key, subs)
|
||||
if self.warnOnMissing then
|
||||
print(('^3Warning: Missing phrase for key: "%s"'):format(key))
|
||||
end
|
||||
if self.fallback then
|
||||
return self.fallback:t(key, subs)
|
||||
end
|
||||
result = key
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user