Merge pull request #1715 from esx-framework/feature/argument-isValid-on-register-command

add a new argument on the register command feature
This commit is contained in:
Kenshin13
2025-08-31 16:25:56 +02:00
committed by GitHub
20 changed files with 45 additions and 16 deletions
+1
View File
@@ -62,6 +62,7 @@ return {
["command_setgroup_group"] = "Název skupiny",
["commanderror_argumentmismatch"] = "Chybný počet hodnot (správně %s, potřebných %s)",
["commanderror_argumentmismatch_number"] = "Chybně zadaná hodnot #%s (správně, špatně)",
["commanderror_argumentmismatch_positive_number"] = "Chybně zadaná hodnota #%s (zadáno záporné/nula, požadováno kladné číslo)",
["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
["commanderror_invaliditem"] = "Špatný předmět",
["commanderror_invalidweapon"] = "Špatná zbraň",
+1
View File
@@ -67,6 +67,7 @@ return {
["commanderror_argumentmismatch"] = "Ungültiges Argument (gegeben %s, gewollt %s)",
["commanderror_argumentmismatch_number"] = "Ungültiges Argument #%s Datentyp (String gegeben, Nummer gefordert)",
["commanderror_argumentmismatch_string"] = "Ungültiges Argument #%s Datentyp (Nummer gegeben, String gefordert)",
["commanderror_argumentmismatch_positive_number"] = "Ungültiges Argument #%s Datentyp (negativ/null übergeben, positive Zahl gewünscht)",
["commanderror_invaliditem"] = "Ungültiger Gegenstand",
["commanderror_invalidweapon"] = "Ungültige Waffe",
["commanderror_console"] = "Befehl kann nicht von der Konsole aus ausgeführt werden!",
+1
View File
@@ -67,6 +67,7 @@ return {
["commanderror_argumentmismatch"] = "Μη έγκυρος αριθμός ορισμάτων (δόθηκαν %s, αναμενόμενα %s)",
["commanderror_argumentmismatch_number"] = "Μη έγκυρος τύπος δεδομένων για το όρισμα #%s (δόθηκε συμβολοσειρά, αναμενόμενος αριθμός)",
["commanderror_argumentmismatch_string"] = "Μη έγκυρος τύπος δεδομένων για το όρισμα #%s (δόθηκε αριθμός, αναμενόμενη συμβολοσειρά)",
["commanderror_argumentmismatch_positive_number"] = "Μη έγκυρος τύπος δεδομένων για το όρισμα #%s (δόθηκε αρνητικός/μηδέν, αναμενόμενος θετικός αριθμός)",
["commanderror_invaliditem"] = "Μη έγκυρο αντικείμενο",
["commanderror_invalidweapon"] = "Μη έγκυρο όπλο",
["commanderror_console"] = "Η εντολή δεν μπορεί να εκτελεστεί από την κονσόλα",
+1
View File
@@ -69,6 +69,7 @@ return {
["commanderror_argumentmismatch"] = "Invalid Argument Count (passed %s, wanted %s)",
["commanderror_argumentmismatch_number"] = "Invalid Argument #%s data type (passed string, wanted number)",
["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
["commanderror_argumentmismatch_positive_number"] = "Invalid Argument #%s data type (passed negative/zero, wanted positive number)",
["commanderror_invaliditem"] = "Invalid item",
["commanderror_invalidweapon"] = "Invalid weapon",
["commanderror_console"] = "Command Cannot be executed from console",
+1
View File
@@ -67,6 +67,7 @@ return {
["commanderror_argumentmismatch"] = "Número de argumentos inválido (pasados %s, esperados %s)",
["commanderror_argumentmismatch_number"] = "Tipo de datos del argumento #%s inválido (pasado string, esperado número)",
["commanderror_argumentmismatch_string"] = "Tipo de datos del argumento #%s inválido (pasado número, esperado string)",
["commanderror_argumentmismatch_positive_number"] = "Argumento inválido #%s tipo de datos (pasado negativo/cero, se requiere número positivo)",
["commanderror_invaliditem"] = "Objeto inválido",
["commanderror_invalidweapon"] = "Arma inválida",
["commanderror_console"] = "El comando no se puede ejecutar desde la consola",
+1
View File
@@ -58,6 +58,7 @@ return {
["commanderror_argumentmismatch"] = "Argumenttien määrä ei täsmää (hyväksytty %s, haluttu %s)",
["commanderror_argumentmismatch_number"] = "Argumentin #%s tyyppi ei täsmää (syötetty merkkijono, haluttu numero)",
["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
["commanderror_argumentmismatch_positive_number"] = "Virheellinen argumentti #%s tietotyyppi (annettu negatiivinen/nolla, haluttu positiivinen luku)",
["commanderror_invaliditem"] = "Virheellinen esineen nimi",
["commanderror_invalidweapon"] = "Virheellinen ase",
["commanderror_console"] = "Komentoa ei voi suorittaa konsolissa",
+1
View File
@@ -67,6 +67,7 @@ return {
["commanderror_argumentmismatch"] = "Le nombre d'arguments est invalide (Argument·s donné·s: %s, Argument·s demandé·s: %s)",
["commanderror_argumentmismatch_number"] = "Type de données de l'argument #%s invalide (Type donné: texte, Type demandé: nombre)",
["commanderror_argumentmismatch_string"] = "Type de données de l'argument #%s invalide (Type donné: nombre, Type demandé: texte)",
["commanderror_argumentmismatch_positive_number"] = "Argument invalide #%s type de données (passé négatif/zéro, nombre positif requis)",
["commanderror_invaliditem"] = "Le nom de l'objet est invalide",
["commanderror_invalidweapon"] = "Le nom de l'arme est invalide",
["commanderror_console"] = "Cette commande ne peut pas être éxécutée depuis la console",
+1
View File
@@ -67,6 +67,7 @@ return {
["commanderror_argumentmismatch"] = "כמות וסוגי הארגומנטים אינם תואמים (נשלח %s, נדרש %s)",
["commanderror_argumentmismatch_number"] = "טיפוס ארגומנט #%s לא תקין (נשלח מחרוזת, נדרש מספר)",
["commanderror_argumentmismatch_string"] = "טיפוס ארגומנט #%s לא תקין (נשלח מספר, נדרש מחרוזת)",
["commanderror_argumentmismatch_positive_number"] = "טיפוס ארגומנט #%s לא תקין (נשלח שלילי/אפס, נדרש מספר חיובי)",
["commanderror_invaliditem"] = "שם פריט לא חוקי",
["commanderror_invalidweapon"] = "נשק לא חוקי",
["commanderror_console"] = "לא ניתן להפעיל פקודה מהקונסול",
+1
View File
@@ -63,6 +63,7 @@ return {
["commanderror_argumentmismatch"] = "Érvénytelen argumentumszám (%s megadva, %s szükséges)",
["commanderror_argumentmismatch_number"] = "Érvénytelen argumentum #%s adat típus (szöveg megadva, szám szükséges)",
["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
["commanderror_argumentmismatch_positive_number"] = "Érvénytelen argumentum #%s adattípus (negatív/nulla átadva, pozitív szám szükséges)",
["commanderror_invaliditem"] = "Érvénytelen tárgy",
["commanderror_invalidweapon"] = "Érvénytelen fegyver",
["commanderror_console"] = "Parancs nem használható konzolból",
+1
View File
@@ -67,6 +67,7 @@ return {
["commanderror_argumentmismatch"] = "Jumlah Argument Salah (passed %s, wanted %s)",
["commanderror_argumentmismatch_number"] = "Argument #%s salah tipe data (passed string, wanted number)",
["commanderror_argumentmismatch_string"] = "Argument #%s salah tipe data (passed number, wanted string)",
["commanderror_argumentmismatch_positive_number"] = "Argument #%s salah tipe data (diberikan negatif/nol, diinginkan angka positif)",
["commanderror_invaliditem"] = "Barang salah",
["commanderror_invalidweapon"] = "Senjata salah",
["commanderror_console"] = "Perintah tidak dapat dieksekusi dari console",
+1
View File
@@ -67,6 +67,7 @@ return {
["commanderror_argumentmismatch"] = "Conta argomenti non valida (passati %s, richiesti %s)",
["commanderror_argumentmismatch_number"] = "Argomento #%s di tipologia errata (passato testo, richiesto numero)",
["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
["commanderror_argumentmismatch_positive_number"] = "Argomento #%s tipo di dato non valido (passato negativo/zero, richiesto numero positivo)",
["commanderror_invaliditem"] = "Oggetto non valido",
["commanderror_invalidweapon"] = "Arma non valida",
["commanderror_console"] = "Comando non eseguibile dalla console",
+1
View File
@@ -59,6 +59,7 @@ return {
["commanderror_argumentmismatch"] = "Ongeldig aantal argumenten (geslaagd %s, gezocht %s)",
["commanderror_argumentmismatch_number"] = "Ongeldig argument #%s gegevenstype (doorgegeven string, gewenst nummer)",
["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (doorgegeven string, gewenst nummer)",
["commanderror_argumentmismatch_positive_number"] = "Ongeldig Argument #%s gegevenstype (doorgegeven negatief/nul, gewenst positief getal)",
["commanderror_invaliditem"] = "Ongeldig item",
["commanderror_invalidweapon"] = "Ongeldig wapen",
["commanderror_console"] = "Command kan niet worden uitgevoerd vanaf console.",
+1
View File
@@ -57,6 +57,7 @@ return {
["commanderror_argumentmismatch"] = "nieprawiłowa ilość argumentów (przeszło %s, wymagane %s)",
["commanderror_argumentmismatch_number"] = "nieprawidłowy typ argumentu #%s (przeszedł tekst, wymagany numer)",
["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
["commanderror_argumentmismatch_positive_number"] = "Nieprawidłowy argument #%s typ danych (przekazano ujemny/zero, oczekiwano liczby dodatniej)",
["commanderror_invaliditem"] = "nieprawidłowa nazwa przedmiotu",
["commanderror_invalidweapon"] = "nieprawidłowa broń",
["commanderror_console"] = "podana komenda nie może zostać uruchomiona przez konsole",
+1
View File
@@ -63,6 +63,7 @@ return {
["commanderror_argumentmismatch"] = "Neveljavno stetje argumentov (podano %s, zeleno %s)",
["commanderror_argumentmismatch_number"] = "Neveljaven podatkovni tip argumenta #%s (posredovan niz, zeleno stevilo)",
["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
["commanderror_argumentmismatch_positive_number"] = "Neveljaven argument #%s tip podatkov (podano negativno/nič, zahtevano pozitivno število)",
["commanderror_invaliditem"] = "Neveljaven element",
["commanderror_invalidweapon"] = "Neveljavno orozje",
["commanderror_console"] = "Ukaza ni mogoce izvesti s konzole",
+1
View File
@@ -63,6 +63,7 @@ return {
["commanderror_argumentmismatch"] = "Nevazeci broj argumenata (položio %s, željeno %s)",
["commanderror_argumentmismatch_number"] = "Nevažeći argument #%s tip podataka (položeno, željeno)",
["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
["commanderror_argumentmismatch_positive_number"] = "Nevaljan argument #%s tip podataka (prosleđen negativan/nula, potreban pozitivan broj)",
["commanderror_invaliditem"] = "Nevažeći item",
["commanderror_invalidweapon"] = "Nevažeće oružje",
["commanderror_console"] = "Komanda se ne može izvršiti iz konzole",
+1
View File
@@ -67,6 +67,7 @@ return {
["commanderror_argumentmismatch"] = "Invalid Argument Count (passed %s, wanted %s)",
["commanderror_argumentmismatch_number"] = "Invalid Argument #%s data type (passed string, wanted number)",
["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
["commanderror_argumentmismatch_positive_number"] = "Ogiltigt argument #%s datatyp (skickade negativt/noll, ville ha positivt tal)",
["commanderror_invaliditem"] = "Ogiltigt föremål",
["commanderror_invalidweapon"] = "Ogiltigt vapen",
["commanderror_console"] = "Kommandot kan inte användas i konsolen",
+1
View File
@@ -67,6 +67,7 @@ return {
["commanderror_argumentmismatch"] = "Geçersiz Argüman Sayısı (Verilen %s, İstenen %s)",
["commanderror_argumentmismatch_number"] = "Geçersiz Argüman #%s Veri Tipi (Verilen Metin, İstenen Sayı)",
["commanderror_argumentmismatch_string"] = "Geçersiz Argüman #%s Veri Tipi (Verilen Sayı, İstenen Metin)",
["commanderror_argumentmismatch_positive_number"] = "Geçersiz Argüman #%s Veri Tipi (Verilen Negatif/Sıfır, İstenen Pozitif Sayı)",
["commanderror_invaliditem"] = "Geçersiz Eşya",
["commanderror_invalidweapon"] = "Geçersiz Silah",
["commanderror_console"] = "Komut Konsoldan Çalıştırılamaz",
+1
View File
@@ -67,6 +67,7 @@ return {
["commanderror_argumentmismatch"] = "参数数量错误 (需%s个, 输入%s个)",
["commanderror_argumentmismatch_number"] = "参数#%s类型不符 (需数字类型)",
["commanderror_argumentmismatch_string"] = "参数#%s类型不符 (需文本类型)",
["commanderror_argumentmismatch_positive_number"] = "参数#%s类型不符 (传入负数/零,需要正数)",
["commanderror_invaliditem"] = "错误: 无效物品标识",
["commanderror_invalidweapon"] = "错误: 无效武器标识",
["commanderror_console"] = "控制台无法执行此指令",
+23 -15
View File
@@ -64,16 +64,16 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
if not command.allowConsole and playerId == 0 then
print(("[^3WARNING^7] ^5%s^0"):format(TranslateCap("commanderror_console")))
else
local xPlayer, error = ESX.Players[playerId], nil
local xPlayer, err = ESX.Players[playerId], nil
if command.suggestion then
if command.suggestion.validate then
if #args ~= #command.suggestion.arguments then
error = TranslateCap("commanderror_argumentmismatch", #args, #command.suggestion.arguments)
err = TranslateCap("commanderror_argumentmismatch", #args, #command.suggestion.arguments)
end
end
if not error and command.suggestion.arguments then
if not err and command.suggestion.arguments then
local newArgs = {}
for k, v in ipairs(command.suggestion.arguments) do
@@ -84,7 +84,7 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
if newArg then
newArgs[v.name] = newArg
else
error = TranslateCap("commanderror_argumentmismatch_number", k)
err = TranslateCap("commanderror_argumentmismatch_number", k)
end
elseif v.type == "player" or v.type == "playerId" then
local targetPlayer = tonumber(args[k])
@@ -103,29 +103,29 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
newArgs[v.name] = targetPlayer
end
else
error = TranslateCap("commanderror_invalidplayerid")
err = TranslateCap("commanderror_invalidplayerid")
end
else
error = TranslateCap("commanderror_argumentmismatch_number", k)
err = TranslateCap("commanderror_argumentmismatch_number", k)
end
elseif v.type == "string" then
local newArg = tonumber(args[k])
if not newArg then
newArgs[v.name] = args[k]
else
error = TranslateCap("commanderror_argumentmismatch_string", k)
err = TranslateCap("commanderror_argumentmismatch_string", k)
end
elseif v.type == "item" then
if ESX.Items[args[k]] then
newArgs[v.name] = args[k]
else
error = TranslateCap("commanderror_invaliditem")
err = TranslateCap("commanderror_invaliditem")
end
elseif v.type == "weapon" then
if ESX.GetWeapon(args[k]) then
newArgs[v.name] = string.upper(args[k])
else
error = TranslateCap("commanderror_invalidweapon")
err = TranslateCap("commanderror_invalidweapon")
end
elseif v.type == "any" then
newArgs[v.name] = args[k]
@@ -140,19 +140,27 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
elseif v.type == "coordinate" then
local coord = tonumber(args[k]:match("(-?%d+%.?%d*)"))
if not coord then
error = TranslateCap("commanderror_argumentmismatch_number", k)
err = TranslateCap("commanderror_argumentmismatch_number", k)
else
newArgs[v.name] = coord
end
end
end
if ESX.IsFunctionReference(v.Validator?.validate) and not err then
local candidate = newArgs[v.name]
local ok, res = pcall(v.Validator.validate, candidate)
if not ok or res ~= true then
err = v.Validator.err or TranslateCap("commanderror_argumentmismatch")
end
end
--backwards compatibility
if v.validate ~= nil and not v.validate then
error = nil
err = nil
end
if error then
if err then
break
end
end
@@ -161,11 +169,11 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
end
end
if error then
if err then
if playerId == 0 then
print(("[^3WARNING^7] %s^7"):format(error))
print(("[^3WARNING^7] %s^7"):format(err))
else
xPlayer.showNotification(error)
xPlayer.showNotification(err)
end
else
cb(xPlayer or false, args, function(msg)
@@ -313,7 +313,10 @@ if not Config.CustomInventory then
arguments = {
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
{ name = "item", help = TranslateCap("command_giveitem_item"), type = "item" },
{ name = "count", help = TranslateCap("command_giveitem_count"), type = "number" },
{ name = "count", help = TranslateCap("command_giveitem_count"), type = "number", Validator = {
validate = function(x) return x > 0 end,
err = TranslateCap("commanderror_argumentmismatch_positive_number", "count")
}},
},
}
)