mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-28 17:01:14 +00:00
Merge branch 'main' into locale-convar
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
AddEventHandler('esx:getSharedObject', function(cb)
|
||||
cb(ESX)
|
||||
local Invoke = GetInvokingResource()
|
||||
print(('[^3WARNING^7] ^5%s^7 used ^5esx:getSharedObject^7, this method is deprecated and should not be used! Refer to ^5https://docs.esx-framework.org/tutorials/sharedevent^7 for more info!'):format(Invoke))
|
||||
cb(ESX)
|
||||
end)
|
||||
|
||||
exports('getSharedObject', function()
|
||||
|
||||
@@ -87,7 +87,7 @@ function ESX.ShowNotification(message, type, length)
|
||||
if GetResourceState("esx_notify") ~= "missing" then
|
||||
exports["esx_notify"]:Notify(type, length, message)
|
||||
else
|
||||
print("[ERROR] Missing esx_notify")
|
||||
print("[^1ERROR^7] ^5ESX Notify^7 is Missing!")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -96,7 +96,7 @@ function ESX.TextUI(message, type)
|
||||
if GetResourceState("esx_textui") ~= "missing" then
|
||||
exports["esx_textui"]:TextUI(message, type)
|
||||
else
|
||||
print("[ERROR] Missing ESX TextUI!")
|
||||
print("[^1ERROR^7] ^5ESX TextUI^7 is Missing!")
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -105,7 +105,7 @@ function ESX.HideUI()
|
||||
if GetResourceState("esx_textui") ~= "missing" then
|
||||
exports["esx_textui"]:HideUI()
|
||||
else
|
||||
print("[ERROR] Missing ESX TextUI!")
|
||||
print("[^1ERROR^7] ^5ESX TextUI^7 is Missing!")
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -174,19 +174,19 @@ if GetResourceState("esx_context") ~= "missing" then
|
||||
end
|
||||
else
|
||||
function ESX.OpenContext()
|
||||
print("[ERROR] Tried to open context menu, but esx_context is missing!")
|
||||
print("[^1ERROR^7] Tried to ^5open^7 context menu, but ^5esx_context^7 is missing!")
|
||||
end
|
||||
|
||||
function ESX.PreviewContext()
|
||||
print("[ERROR] Tried to preview context menu, but esx_context is missing!")
|
||||
print("[^1ERROR^7] Tried to ^5preview^7 context menu, but ^5esx_context^7 is missing!")
|
||||
end
|
||||
|
||||
function ESX.CloseContext()
|
||||
print("[ERROR] Tried to close context menu, but esx_context is missing!")
|
||||
print("[^1ERROR^7] Tried to ^5close^7 context menu, but ^5esx_context^7 is missing!")
|
||||
end
|
||||
|
||||
function ESX.RefreshContext()
|
||||
print("[ERROR] Tried to close context menu, but esx_context is missing!")
|
||||
print("[^1ERROR^7] Tried to ^5Refresh^7 context menu, but ^5esx_context^7 is missing!")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -201,9 +201,10 @@ ESX.RegisterInput = function(command_name, label, input_group, key, on_press, on
|
||||
end
|
||||
|
||||
function ESX.TriggerServerCallback(name, cb, ...)
|
||||
local Invoke = GetInvokingResource() or "unknown"
|
||||
Core.ServerCallbacks[Core.CurrentRequestId] = cb
|
||||
|
||||
TriggerServerEvent('esx:triggerServerCallback', name, Core.CurrentRequestId, ...)
|
||||
TriggerServerEvent('esx:triggerServerCallback', name, Core.CurrentRequestId,Invoke, ...)
|
||||
Core.CurrentRequestId = Core.CurrentRequestId < 65535 and Core.CurrentRequestId + 1 or 0
|
||||
end
|
||||
|
||||
|
||||
@@ -264,17 +264,17 @@ if not Config.OxInventory then
|
||||
|
||||
RegisterNetEvent('esx:addWeapon')
|
||||
AddEventHandler('esx:addWeapon', function(weapon, ammo)
|
||||
print("[WARNING] event 'esx:addWeapon' is deprecated. Please use xPlayer.addWeapon Instead!")
|
||||
print("[^1ERROR^7] event ^5'esx:addWeapon'^7 Has Been Removed. Please use ^5xPlayer.addWeapon^7 Instead!")
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx:addWeaponComponent')
|
||||
AddEventHandler('esx:addWeaponComponent', function(weapon, weaponComponent)
|
||||
print("[WARNING] event 'esx:addWeaponComponent' is deprecated. Please use xPlayer.addWeaponComponent Instead!")
|
||||
print("[^1ERROR^7] event ^5'esx:addWeaponComponent'^7 Has Been Removed. Please use ^5xPlayer.addWeaponComponent^7 Instead!")
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx:setWeaponAmmo')
|
||||
AddEventHandler('esx:setWeaponAmmo', function(weapon, weaponAmmo)
|
||||
print("[WARNING] event 'esx:setWeaponAmmo' is deprecated. Please use xPlayer.addWeaponComponent Instead!")
|
||||
print("[^1ERROR^7] event ^5'esx:setWeaponAmmo'^7 Has Been Removed. Please use ^5xPlayer.addWeaponAmmo^7 Instead!")
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx:setWeaponTint')
|
||||
@@ -741,3 +741,20 @@ AddEventHandler("esx:freezePlayer", function(input)
|
||||
SetPlayerInvincible(player, false)
|
||||
end
|
||||
end)
|
||||
|
||||
local DoNotUse = {
|
||||
'essentialmode',
|
||||
'es_admin2',
|
||||
'basic-gamemode',
|
||||
'mapmanager',
|
||||
'fivem-map-skater',
|
||||
'fivem-map-hipster',
|
||||
'qb-core',
|
||||
'default_spawnpoint',
|
||||
}
|
||||
|
||||
for i=1, #DoNotUse do
|
||||
if GetResourceState(DoNotUse[i]) == 'started' or GetResourceState(DoNotUse[i]) == 'starting' then
|
||||
print("[^1ERROR^7] YOU ARE USING A RESOURCE THAT WILL BREAK ^1ESX^7, PLEASE REMOVE ^5"..DoNotUse[i].."^7")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
Config.DiscordLogs = {
|
||||
Webhooks = {
|
||||
default = '',
|
||||
test = '',
|
||||
Chat = '',
|
||||
UserActions = '',
|
||||
Resources = ''
|
||||
},
|
||||
|
||||
Colors = { -- https://www.spycolor.com/
|
||||
default = 14423100,
|
||||
blue = 255,
|
||||
red = 16711680,
|
||||
green = 65280,
|
||||
white = 16777215,
|
||||
black = 0,
|
||||
orange = 16744192,
|
||||
yellow = 16776960,
|
||||
pink = 16761035,
|
||||
lightgreen = 65309
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ Config.EnablePVP = true -- Allow Player to player combat
|
||||
Config.Multichar = true -- Enable support for esx_multicharacter
|
||||
Config.Identity = true -- Select a characters identity data before they have loaded in (this happens by default with multichar)
|
||||
Config.DistanceGive = 4.0 -- Max distance when giving items, weapons etc.
|
||||
Config.DisableHealthRegen = false -- Player will no longer regenerate health
|
||||
Config.DisableHealthRegeneration = false -- Player will no longer regenerate health
|
||||
Config.DisableVehicleRewards = false -- Disables Player Recieving weapons from vehicles
|
||||
Config.DisableNPCDrops = false -- stops NPCs from dropping weapons on death
|
||||
Config.DisableWeaponWheel = false -- Disables default weapon wheel
|
||||
|
||||
@@ -961,35 +961,20 @@ Config.Weapons = {
|
||||
-- Tools
|
||||
{name = 'WEAPON_FIREEXTINGUISHER', label = _U('weapon_fireextinguisher'), components = {}, ammo = {label = _U('ammo_charge'), hash = `AMMO_FIREEXTINGUISHER`}},
|
||||
{name = 'WEAPON_DIGISCANNER', label = _U('weapon_digiscanner'), components = {}},
|
||||
{name = 'GADGET_PARACHUTE', label = _U('gadget_parachute'), components = {}}
|
||||
{name = 'GADGET_PARACHUTE', label = _U('gadget_parachute'), components = {}},
|
||||
{name = 'WEAPON_TACTICALRIFLE',label = _U('weapon_tactilerifle'),ammo = {label = _U('ammo_rounds'), hash = `AMMO_RIFLE`},tints = Config.DefaultWeaponTints,
|
||||
components = {
|
||||
{name = 'clip_default', label = _U('component_clip_default'), hash = `COMPONENT_TACTICALRIFLE_CLIP_01`},
|
||||
{name = 'clip_extended', label = _U('component_clip_extended'), hash = `COMPONENT_TACTICALRIFLE_CLIP_02`},
|
||||
{name = 'flashlight', label = _U('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH_REH`},
|
||||
{name = 'grip', label = _U('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`},
|
||||
{name = 'suppressor', label = _U('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}
|
||||
}
|
||||
},
|
||||
{name = 'WEAPON_PRECISIONRIFLE', label = _U('weapon_precisionrifle'), ammo = {label = _U('ammo_rounds'), hash = `AMMO_SNIPER`}, tints = Config.DefaultWeaponTints,
|
||||
components = {
|
||||
{name = 'clip_default', label = _U('component_clip_default'), hash = `COMPONENT_PRECISIONRIFLE_CLIP_01`},
|
||||
}
|
||||
},
|
||||
{name = 'WEAPON_METALDETECTOR', label = _U('weapon_metaldetector'), components = {}}
|
||||
}
|
||||
|
||||
local GameBuild = tonumber(GetConvar("sv_enforceGameBuild", 1604))
|
||||
|
||||
-- The Criminal Enterprises DLC Weapons
|
||||
if GameBuild >= 2699 then
|
||||
local Length = #Config.Weapons
|
||||
Config.Weapons[Length + 1] = {
|
||||
name = 'WEAPON_TACTICALRIFLE',
|
||||
label = _U('weapon_tactilerifle'),
|
||||
ammo = {label = _U('ammo_rounds'), hash = `AMMO_RIFLE`},
|
||||
tints = Config.DefaultWeaponTints,
|
||||
components = {
|
||||
{name = 'clip_default', label = _U('component_clip_default'), hash = `COMPONENT_TACTICALRIFLE_CLIP_01`},
|
||||
{name = 'clip_extended', label = _U('component_clip_extended'), hash = `COMPONENT_TACTICALRIFLE_CLIP_02`},
|
||||
{name = 'flashlight', label = _U('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH_REH`},
|
||||
{name = 'grip', label = _U('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`},
|
||||
{name = 'suppressor', label = _U('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}
|
||||
}
|
||||
}
|
||||
Config.Weapons[Length + 2] = {
|
||||
name = 'WEAPON_PRECISIONRIFLE',
|
||||
label = _U('weapon_precisionrifle'),
|
||||
ammo = {label = _U('ammo_rounds'), hash = `AMMO_SNIPER`},
|
||||
tints = Config.DefaultWeaponTints,
|
||||
components = {
|
||||
{name = 'clip_default', label = _U('component_clip_default'), hash = `COMPONENT_PRECISIONRIFLE_CLIP_01`},
|
||||
}
|
||||
}
|
||||
Config.Weapons[Length+ 3] = {name = 'WEAPON_METALDETECTOR', label = _U('weapon_metaldetector'), components = {}}
|
||||
end
|
||||
@@ -17,7 +17,7 @@ shared_scripts {
|
||||
|
||||
server_scripts {
|
||||
'@oxmysql/lib/MySQL.lua',
|
||||
|
||||
'config.logs.lua',
|
||||
'server/common.lua',
|
||||
'server/classes/player.lua',
|
||||
'server/classes/overrides/*.lua',
|
||||
|
||||
@@ -100,6 +100,9 @@ Locales['br'] = {
|
||||
['commanderror_invalidcommand'] = '/%s is not an valid command!',
|
||||
['commanderror_invalidplayerid'] = 'there is no player online matching that server id',
|
||||
['commandgeneric_playerid'] = 'o ID do jogador',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ' ',
|
||||
|
||||
@@ -100,6 +100,9 @@ Locales['cs'] = {
|
||||
['commanderror_invalidcommand'] = '/%s is not an valid command!',
|
||||
['commanderror_invalidplayerid'] = 'there is no player online matching that server id',
|
||||
['commandgeneric_playerid'] = 'player id',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ' ',
|
||||
|
||||
@@ -18,10 +18,10 @@ Locales['de'] = {
|
||||
['gave_weapon_hasalready'] = '%s hat bereits eine(n) %s',
|
||||
['gave_weapon_noweapon'] = '%s hat diese Waffe nicht',
|
||||
['received_weapon'] = 'du erhälst %s von %s',
|
||||
['received_weapon_ammo'] = 'du erhälst ~o~%sx %s für dein %s von %s',
|
||||
['received_weapon_withammo'] = 'du erhälst %s mit ~o~%sx %s von %s',
|
||||
['received_weapon_ammo'] = 'du erhälst %sx %s für dein %s von %s',
|
||||
['received_weapon_withammo'] = 'du erhälst %s mit %sx %s von %s',
|
||||
['received_weapon_hasalready'] = '%s hat versucht dir eine(n) %s zu geben, aber du hast bereits eine(n)',
|
||||
['received_weapon_noweapon'] = '%s ahat versucht dir Munition für eine(n) %s, aber du besitzt diese Waffe nicht',
|
||||
['received_weapon_noweapon'] = '%s hat versucht dir Munition für eine(n) %s, aber du besitzt diese Waffe nicht',
|
||||
['gave_account_money'] = 'du gibst $%s (%s) an %s',
|
||||
['received_account_money'] = 'du empfängst $%s (%s) von %s',
|
||||
['amount_invalid'] = 'ungültiger Betrag',
|
||||
@@ -32,7 +32,7 @@ Locales['de'] = {
|
||||
['threw_standard'] = 'du wirfst %sx %s',
|
||||
['threw_account'] = 'du wirfst $%s %s weg',
|
||||
['threw_weapon'] = 'du wirfst %s weg',
|
||||
['threw_weapon_ammo'] = 'du wirfst %s mit ~o~%sx %s weg',
|
||||
['threw_weapon_ammo'] = 'du wirfst %s mit %sx %s weg',
|
||||
['threw_weapon_already'] = 'Du hast bereits diese Waffe',
|
||||
['threw_cannot_pickup'] = 'Du kannst das nicht aufheben, da dein Inventar voll ist',
|
||||
['threw_pickup_prompt'] = 'drücke E um aufzuheben',
|
||||
@@ -47,17 +47,17 @@ Locales['de'] = {
|
||||
['received_paycheck'] = 'erhaltener Gehaltsscheck',
|
||||
['bank'] = 'bank',
|
||||
['account_bank'] = 'bank',
|
||||
['account_black_money'] = 'dirty Money',
|
||||
['account_money'] = 'cash',
|
||||
['account_black_money'] = 'schwarzgeld',
|
||||
['account_money'] = 'geld',
|
||||
|
||||
['act_imp'] = 'Aktion nicht möglich',
|
||||
['in_vehicle'] = 'du kannst keine Items in einem Fahrzeug weitergeben',
|
||||
|
||||
-- Commands
|
||||
['command_car'] = 'fahrzeug spawnen',
|
||||
['command_car_car'] = 'vehicle spawn name or hash',
|
||||
['command_car_car'] = 'fahrzeug spawn name oder hash',
|
||||
['command_cardel'] = 'fahrzeuge in der nähe löschen',
|
||||
['command_cardel_radius'] = 'optional, jedes fahrzeug innerhalb des angegebenen radius löschens',
|
||||
['command_cardel_radius'] = 'optional, jedes fahrzeug innerhalb des angegebenen radius löschen',
|
||||
['command_clear'] = 'chat leeren',
|
||||
['command_clearall'] = 'chat leeren für alle spieler',
|
||||
['command_clearinventory'] = 'spieler inventar leeren',
|
||||
@@ -88,8 +88,8 @@ Locales['de'] = {
|
||||
['command_setcoords_z'] = 'z axis',
|
||||
['command_setjob'] = 'job für einen spieler setzen',
|
||||
['command_setjob_job'] = 'job name',
|
||||
['command_setjob_grade'] = 'job grade',
|
||||
['command_setjob_invalid'] = 'der job, grade oder beides ist ungültig',
|
||||
['command_setjob_grade'] = 'job rang',
|
||||
['command_setjob_invalid'] = 'der job, rang oder beides ist ungültig',
|
||||
['command_setgroup'] = 'setze spieler gruppe',
|
||||
['command_setgroup_group'] = 'gruppen name',
|
||||
['commanderror_argumentmismatch'] = 'argumentanzahl stimmt nicht überein (übergeben %s, gesucht %s)',
|
||||
@@ -98,8 +98,11 @@ Locales['de'] = {
|
||||
['commanderror_invalidweapon'] = 'ungültige waffe',
|
||||
['commanderror_console'] = 'der command kann nicht von der konsole ausgeführt werden',
|
||||
['commanderror_invalidcommand'] = '/%s ist kein verfügbarer command!',
|
||||
['commanderror_invalidplayerid'] = 'kein spieler online mit dieser id',
|
||||
['commanderror_invalidplayerid'] = 'kein spieler ist online mit dieser id',
|
||||
['commandgeneric_playerid'] = 'spieler id',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ' ',
|
||||
|
||||
@@ -105,6 +105,9 @@ Locales['en'] = {
|
||||
['commanderror_invalidcommand'] = 'Invalid Command - /%s',
|
||||
['commanderror_invalidplayerid'] = 'Specified Player is not online',
|
||||
['commandgeneric_playerid'] = 'Player`s Server Id',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ',',
|
||||
|
||||
@@ -105,6 +105,9 @@ Locales['es'] = {
|
||||
['commanderror_invalidcommand'] = '/%s ¡No es un comando válido!',
|
||||
['commanderror_invalidplayerid'] = 'No hay ningún jugador en línea que coincida con la ID del servidor',
|
||||
['commandgeneric_playerid'] = 'ID del jugador',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ',',
|
||||
|
||||
@@ -100,6 +100,9 @@ Locales['fi'] = {
|
||||
['commanderror_invalidcommand'] = '/%s is not an valid command!',
|
||||
['commanderror_invalidplayerid'] = 'there is no player online matching that server id',
|
||||
['commandgeneric_playerid'] = 'player id',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ' ',
|
||||
|
||||
@@ -100,6 +100,9 @@ Locales['fr'] = {
|
||||
['commanderror_invalidcommand'] = '/%s n\'est pas une commande valide!',
|
||||
['commanderror_invalidplayerid'] = 'il n\'ya aucun joueur avec cet ID en jeu',
|
||||
['commandgeneric_playerid'] = 'id joueur',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ' ',
|
||||
|
||||
@@ -105,6 +105,9 @@ Locales["hu"] = {
|
||||
["commanderror_invalidcommand"] = "Érvénytelen parancs - /%s",
|
||||
["commanderror_invalidplayerid"] = "Megadott játékos nem online.",
|
||||
["commandgeneric_playerid"] = "Játékos Szerver Id",
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
["locale_digit_grouping_symbol"] = ",",
|
||||
|
||||
@@ -48,7 +48,7 @@ Locales['nl'] = {
|
||||
['bank'] = 'Doolhofbank',
|
||||
['account_bank'] = 'Bank',
|
||||
['account_black_money'] = 'Zwart geld',
|
||||
['account_money'] = 'Cash',
|
||||
['account_money'] = 'Geld',
|
||||
|
||||
['act_imp'] = 'Kan actie niet uitvoeren',
|
||||
['in_vehicle'] = 'Kan actie niet uitvoeren, speler zit in voertuig',
|
||||
@@ -105,6 +105,9 @@ Locales['nl'] = {
|
||||
['commanderror_invalidcommand'] = 'Ongeldige opdracht - /%s',
|
||||
['commanderror_invalidplayerid'] = 'Opgegeven speler is niet online',
|
||||
['commandgeneric_playerid'] = 'Server-ID van de speler',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ',',
|
||||
|
||||
@@ -99,6 +99,9 @@ Locales['pl'] = {
|
||||
['commanderror_invalidcommand'] = '/%s nie jest poprawną komendą!',
|
||||
['commanderror_invalidplayerid'] = 'brak dostepnego gracza pasującego do podanego id serwerowego',
|
||||
['commandgeneric_playerid'] = 'id gracza',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ',',
|
||||
|
||||
@@ -100,6 +100,9 @@ Locales['sc'] = {
|
||||
['commanderror_invalidcommand'] = '/%s 不是有效的命令!',
|
||||
['commanderror_invalidplayerid'] = '没有在线玩家匹配到该服务id',
|
||||
['commandgeneric_playerid'] = '玩家id',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ',',
|
||||
|
||||
@@ -100,6 +100,9 @@ Locales['sv'] = {
|
||||
['commanderror_invalidcommand'] = 'Ogiltigt kommando - /%s',
|
||||
['commanderror_invalidplayerid'] = 'Angiven spelare är inte online',
|
||||
['commandgeneric_playerid'] = 'Spelarens server-id',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ' ',
|
||||
|
||||
@@ -100,6 +100,9 @@ Locales['tc'] = {
|
||||
['commanderror_invalidcommand'] = '/%s 不是有效的指令!',
|
||||
['commanderror_invalidplayerid'] = '無效的玩家ID',
|
||||
['commandgeneric_playerid'] = '玩家id',
|
||||
['command_giveammo_noweapon_found'] = '%s does not have that weapon',
|
||||
['command_giveammo_weapon'] = 'Weapon name',
|
||||
['command_giveammo_ammo'] = 'Ammo Quantity',
|
||||
|
||||
-- Locale settings
|
||||
['locale_digit_grouping_symbol'] = ',',
|
||||
|
||||
@@ -174,7 +174,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
function self.setAccountMoney(accountName, money, reason)
|
||||
reason = reason or 'unknown'
|
||||
if not tonumber(money) then
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number!'):format(accountName, self.playerId))
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7'):format(accountName, self.playerId, money))
|
||||
return
|
||||
end
|
||||
if money >= 0 then
|
||||
@@ -190,14 +190,14 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
print(('[^1ERROR^7] Tried To Set Invalid Account ^5%s^0 For Player ^5%s^0!'):format(accountName, self.playerId))
|
||||
end
|
||||
else
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number!'):format(accountName, self.playerId))
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7'):format(accountName, self.playerId, money))
|
||||
end
|
||||
end
|
||||
|
||||
function self.addAccountMoney(accountName, money, reason)
|
||||
reason = reason or 'Unknown'
|
||||
if not tonumber(money) then
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number!'):format(accountName, self.playerId))
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7'):format(accountName, self.playerId, money))
|
||||
return
|
||||
end
|
||||
if money > 0 then
|
||||
@@ -212,14 +212,14 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
print(('[^1ERROR^7] Tried To Set Add To Invalid Account ^5%s^0 For Player ^5%s^0!'):format(accountName, self.playerId))
|
||||
end
|
||||
else
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number!'):format(accountName, self.playerId))
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7'):format(accountName, self.playerId, money))
|
||||
end
|
||||
end
|
||||
|
||||
function self.removeAccountMoney(accountName, money, reason)
|
||||
reason = reason or 'Unknown'
|
||||
if not tonumber(money) then
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number!'):format(accountName, self.playerId))
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7'):format(accountName, self.playerId, money))
|
||||
return
|
||||
end
|
||||
if money > 0 then
|
||||
@@ -235,7 +235,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
print(('[^1ERROR^7] Tried To Set Add To Invalid Account ^5%s^0 For Player ^5%s^0!'):format(accountName, self.playerId))
|
||||
end
|
||||
else
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number!'):format(accountName, self.playerId))
|
||||
print(('[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7'):format(accountName, self.playerId, money))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -356,7 +356,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
TriggerEvent('esx:setJob', self.source, self.job, lastJob)
|
||||
self.triggerEvent('esx:setJob', self.job)
|
||||
else
|
||||
print(('[es_extended] [^3WARNING^7] Ignoring invalid .setJob() usage for "%s"'):format(self.identifier))
|
||||
print(('[es_extended] [^3WARNING^7] Ignoring invalid ^5.setJob()^7 usage for ID: ^5%s^7, Job: ^5%s^7'):format(self.source, job))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -386,8 +386,8 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
if component then
|
||||
if not self.hasWeaponComponent(weaponName, weaponComponent) then
|
||||
self.loadout[loadoutNum].components[#self.loadout[loadoutNum].components + 1] = weaponComponent
|
||||
local componentHash = ESX.GetWeaponComponent(weapon, weaponComponent).hash
|
||||
GiveWeaponComponentToPed(GetPlayerPed(self.source), joaat(weapon), componentHash)
|
||||
local componentHash = ESX.GetWeaponComponent(weaponName, weaponComponent).hash
|
||||
GiveWeaponComponentToPed(GetPlayerPed(self.source), joaat(weaponName), componentHash)
|
||||
self.triggerEvent('esx:addInventoryItem', component.label, false, true)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -12,6 +12,11 @@ ESX.RegisterCommand('setjob', 'admin', function(xPlayer, args, showError)
|
||||
else
|
||||
showError(_U('command_setjob_invalid'))
|
||||
end
|
||||
ESX.DiscordLogFields("UserActions", "/setjob Triggered", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "Job", value = args.job, inline = true},
|
||||
{name = "Grade", value = args.grade, inline = true}
|
||||
})
|
||||
end, true, {help = _U('command_setjob'), validate = true, arguments = {
|
||||
{name = 'playerId', help = _U('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'job', help = _U('command_setjob_job'), type = 'string'},
|
||||
@@ -20,7 +25,12 @@ end, true, {help = _U('command_setjob'), validate = true, arguments = {
|
||||
|
||||
ESX.RegisterCommand('car', 'admin', function(xPlayer, args, showError)
|
||||
local GameBuild = tonumber(GetConvar("sv_enforceGameBuild", 1604))
|
||||
if not args.car then args.car = GameBuild >= 2699 and "DRAUGUR" or "Prototipo" end
|
||||
if not args.car then args.car = GameBuild >= 2699 and "draugur" or "prototipo" end
|
||||
ESX.DiscordLogFields("UserActions", "/car Triggered", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Vehicle", value = args.car, inline = true}
|
||||
})
|
||||
xPlayer.triggerEvent('esx:spawnVehicle', args.car)
|
||||
end, false, {help = _U('command_car'), validate = false, arguments = {
|
||||
{name = 'car',validate = false, help = _U('command_car_car'), type = 'string'}
|
||||
@@ -83,6 +93,18 @@ if not Config.OxInventory then
|
||||
{name = 'ammo', help = _U('command_giveweapon_ammo'), type = 'number'}
|
||||
}})
|
||||
|
||||
ESX.RegisterCommand('giveammo', 'admin', function(xPlayer, args, showError)
|
||||
if args.playerId.hasWeapon(args.weapon) then
|
||||
args.playerId.addWeaponAmmo(args.weapon, args.ammo)
|
||||
else
|
||||
showError(_U("command_giveammo_noweapon_found"))
|
||||
end
|
||||
end, true, {help = _U('command_giveweapon'), validate = false, arguments = {
|
||||
{name = 'playerId', help = _U('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'weapon', help = _U('command_giveammo_weapon'), type = 'weapon'},
|
||||
{name = 'ammo', help = _U('command_giveammo_ammo'), type = 'number'}
|
||||
}})
|
||||
|
||||
ESX.RegisterCommand('giveweaponcomponent', 'admin', function(xPlayer, args, showError)
|
||||
if args.playerId.hasWeapon(args.weaponName) then
|
||||
local component = ESX.GetWeaponComponent(args.weaponName, args.componentName)
|
||||
@@ -142,7 +164,7 @@ end
|
||||
|
||||
ESX.RegisterCommand('setgroup', 'admin', function(xPlayer, args, showError)
|
||||
if not args.playerId then args.playerId = xPlayer.source end
|
||||
if args.group == "superadmin" then args.group = "admin" print("[^3WARNING^7] Superadmin detected, setting group to admin") end
|
||||
if args.group == "superadmin" then args.group = "admin" print("[^3WARNING^7] ^5Superadmin^7 detected, setting group to ^5admin^7") end
|
||||
args.playerId.setGroup(args.group)
|
||||
end, true, {help = _U('command_setgroup'), validate = true, arguments = {
|
||||
{name = 'playerId', help = _U('commandgeneric_playerid'), type = 'player'},
|
||||
@@ -151,7 +173,7 @@ end, true, {help = _U('command_setgroup'), validate = true, arguments = {
|
||||
|
||||
ESX.RegisterCommand('save', 'admin', function(xPlayer, args, showError)
|
||||
Core.SavePlayer(args.playerId)
|
||||
print("[^2Info^0] Saved Player!")
|
||||
print("[^2Info^0] Saved Player - ^5".. args.playerId.source .. "^0")
|
||||
end, true, {help = _U('command_save'), validate = true, arguments = {
|
||||
{name = 'playerId', help = _U('commandgeneric_playerid'), type = 'player'}
|
||||
}})
|
||||
|
||||
@@ -13,6 +13,8 @@ Core.PickupId = 0
|
||||
Core.PlayerFunctionOverrides = {}
|
||||
|
||||
AddEventHandler('esx:getSharedObject', function(cb)
|
||||
local Invoke = GetInvokingResource()
|
||||
print(('[^3WARNING^7] ^5%s^7 used ^5esx:getSharedObject^7, this method is deprecated and should not be used! Refer to ^5https://docs.esx-framework.org/tutorials/sharedevent^7 for more info!'):format(Invoke))
|
||||
cb(ESX)
|
||||
end)
|
||||
|
||||
@@ -72,14 +74,14 @@ MySQL.ready(function()
|
||||
if Jobs[v.job_name] then
|
||||
Jobs[v.job_name].grades[tostring(v.grade)] = v
|
||||
else
|
||||
print(('[^3WARNING^7] Ignoring job grades for ^5"%s"^0 due to missing job'):format(v.job_name))
|
||||
print(('[^3WARNING^7] Ignoring job grades for ^5%s^0 due to missing job'):format(v.job_name))
|
||||
end
|
||||
end
|
||||
|
||||
for _, v in pairs(Jobs) do
|
||||
if ESX.Table.SizeOf(v.grades) == 0 then
|
||||
Jobs[v.name] = nil
|
||||
print(('[^3WARNING^7] Ignoring job ^5"%s"^0 due to no job grades found'):format(v.name))
|
||||
print(('[^3WARNING^7] Ignoring job ^5%s^0 due to no job grades found'):format(v.name))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -91,7 +93,7 @@ MySQL.ready(function()
|
||||
ESX.Jobs = Jobs
|
||||
end
|
||||
|
||||
print('[^2INFO^7] ESX ^5Legacy^0 initialized')
|
||||
print('[^2INFO^7] ESX ^5Legacy 1.8.5^0 initialized!')
|
||||
StartDBSync()
|
||||
StartPayCheck()
|
||||
end)
|
||||
@@ -104,10 +106,10 @@ AddEventHandler('esx:clientLog', function(msg)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx:triggerServerCallback')
|
||||
AddEventHandler('esx:triggerServerCallback', function(name, requestId, ...)
|
||||
local playerId = source
|
||||
AddEventHandler('esx:triggerServerCallback', function(name, requestId,Invoke, ...)
|
||||
local source = source
|
||||
|
||||
ESX.TriggerServerCallback(name, requestId, playerId, function(...)
|
||||
TriggerClientEvent('esx:serverCallback', playerId, requestId, ...)
|
||||
ESX.TriggerServerCallback(name, requestId, source,Invoke, function(...)
|
||||
TriggerClientEvent('esx:serverCallback', source, requestId, ...)
|
||||
end, ...)
|
||||
end)
|
||||
|
||||
@@ -167,11 +167,11 @@ function ESX.RegisterServerCallback(name, cb)
|
||||
Core.ServerCallbacks[name] = cb
|
||||
end
|
||||
|
||||
function ESX.TriggerServerCallback(name, requestId, source, cb, ...)
|
||||
function ESX.TriggerServerCallback(name, requestId, source,Invoke, cb, ...)
|
||||
if Core.ServerCallbacks[name] then
|
||||
Core.ServerCallbacks[name](source, cb, ...)
|
||||
else
|
||||
print(('[^3WARNING^7] Server callback ^5"%s"^0 does not exist. ^1Please Check The Server File for Errors!'):format(name))
|
||||
print(('[^1ERROR^7] Server callback ^5"%s"^0 does not exist. Please Check ^5%s^7 for Errors!'):format(name, Invoke))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -209,7 +209,7 @@ function Core.SavePlayers(cb)
|
||||
if type(cb) == 'function' then
|
||||
cb()
|
||||
else
|
||||
print(('[^2INFO^7] Saved %s %s over %s ms'):format(count, count > 1 and 'players' or 'player', (os.time() - time) / 1000000))
|
||||
print(('[^2INFO^7] Saved ^5%s^7 %s over ^5%s^7 ms'):format(count, count > 1 and 'players' or 'player', ESX.Math.Round((os.time() - time) / 1000000, 2)))
|
||||
end
|
||||
end
|
||||
end)
|
||||
@@ -265,6 +265,54 @@ function ESX.GetIdentifier(playerId)
|
||||
end
|
||||
end
|
||||
|
||||
function ESX.DiscordLog(name, title, color, message)
|
||||
|
||||
local webHook = Config.DiscordLogs.Webhooks[name] or Config.DiscordLogs.Webhooks.default
|
||||
local embedData = {{
|
||||
['title'] = title,
|
||||
['color'] = Config.DiscordLogs.Colors[color] or Config.DiscordLogs.Colors.default,
|
||||
['footer'] = {
|
||||
['text'] = "| ESX Logs | " .. os.date(),
|
||||
['icon_url'] = "https://cdn.discordapp.com/attachments/944789399852417096/1020099828266586193/blanc-800x800.png"
|
||||
},
|
||||
['description'] = message,
|
||||
['author'] = {
|
||||
['name'] = "ESX Framework",
|
||||
['icon_url'] = "https://cdn.discordapp.com/emojis/939245183621558362.webp?size=128&quality=lossless"
|
||||
}
|
||||
}}
|
||||
PerformHttpRequest(webHook, nil, 'POST', json.encode({
|
||||
username = 'Logs',
|
||||
embeds = embedData
|
||||
}), {
|
||||
['Content-Type'] = 'application/json'
|
||||
})
|
||||
end
|
||||
|
||||
function ESX.DiscordLogFields(name, title, color, fields)
|
||||
local webHook = Config.DiscordLogs.Webhooks[name] or Config.DiscordLogs.Webhooks.default
|
||||
local embedData = {{
|
||||
['title'] = title,
|
||||
['color'] = Config.DiscordLogs.Colors[color] or Config.DiscordLogs.Colors.default,
|
||||
['footer'] = {
|
||||
['text'] = "| ESX Logs | " .. os.date(),
|
||||
['icon_url'] = "https://cdn.discordapp.com/attachments/944789399852417096/1020099828266586193/blanc-800x800.png"
|
||||
},
|
||||
['fields'] = fields,
|
||||
['description'] = "",
|
||||
['author'] = {
|
||||
['name'] = "ESX Framework",
|
||||
['icon_url'] = "https://cdn.discordapp.com/emojis/939245183621558362.webp?size=128&quality=lossless"
|
||||
}
|
||||
}}
|
||||
PerformHttpRequest(webHook, nil, 'POST', json.encode({
|
||||
username = 'Logs',
|
||||
embeds = embedData
|
||||
}), {
|
||||
['Content-Type'] = 'application/json'
|
||||
})
|
||||
end
|
||||
|
||||
function ESX.RefreshJobs()
|
||||
local Jobs = {}
|
||||
local jobs = MySQL.query.await('SELECT * FROM jobs')
|
||||
@@ -344,7 +392,7 @@ function ESX.GetItemLabel(item)
|
||||
if ESX.Items[item] then
|
||||
return ESX.Items[item].label
|
||||
else
|
||||
print('[^3WARNING^7] Attemting to get invalid Item -> ' .. item)
|
||||
print('[^3WARNING^7] Attemting to get invalid Item -> ^5' .. item .. "^7")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ function createESXPlayer(identifier, playerId, data)
|
||||
end
|
||||
|
||||
if Core.IsPlayerAdmin(playerId) then
|
||||
print(('^2[INFO] ^0 Player ^5%s ^0Has been granted admin permissions via ^5Ace Perms.^7'):format(playerId))
|
||||
print(('[^2INFO^0] Player ^5%s^0 Has been granted admin permissions via ^5Ace Perms^7.'):format(playerId))
|
||||
defaultGroup = "admin"
|
||||
else
|
||||
defaultGroup = "user"
|
||||
@@ -145,7 +145,7 @@ function loadESXPlayer(identifier, playerId, isNew)
|
||||
if ESX.DoesJobExist(job, grade) then
|
||||
jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade]
|
||||
else
|
||||
print(('[^3WARNING^7] Ignoring invalid job for %s [job: %s, grade: %s]'):format(identifier, job, grade))
|
||||
print(('[^3WARNING^7] Ignoring invalid job for ^5%s^7 [job: ^5%s^7, grade: ^5%s^7]'):format(identifier, job, grade))
|
||||
job, grade = 'unemployed', '0'
|
||||
jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade]
|
||||
end
|
||||
@@ -180,7 +180,7 @@ function loadESXPlayer(identifier, playerId, isNew)
|
||||
if item then
|
||||
foundItems[name] = count
|
||||
else
|
||||
print(('[^3WARNING^7] Ignoring invalid item "%s" for "%s"'):format(name, identifier))
|
||||
print(('[^3WARNING^7] Ignoring invalid item ^5"%s"^7 for ^5"%s^7"'):format(name, identifier))
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -211,7 +211,7 @@ function loadESXPlayer(identifier, playerId, isNew)
|
||||
if result.group then
|
||||
if result.group == "superadmin" then
|
||||
userData.group = "admin"
|
||||
print("[^3WARNING^7] Superadmin detected, setting group to admin")
|
||||
print("[^3WARNING^7] ^5Superadmin^7 detected, setting group to ^5admin^7")
|
||||
else
|
||||
userData.group = result.group
|
||||
end
|
||||
@@ -319,7 +319,7 @@ function loadESXPlayer(identifier, playerId, isNew)
|
||||
end
|
||||
|
||||
xPlayer.triggerEvent('esx:registerSuggestions', Core.RegisteredCommands)
|
||||
print(('[^2INFO^0] Player ^5"%s" ^0has connected to the server. ID: ^5%s^7'):format(xPlayer.getName(), playerId))
|
||||
print(('[^2INFO^0] Player ^5"%s"^0 has connected to the server. ID: ^5%s^7'):format(xPlayer.getName(), playerId))
|
||||
end
|
||||
|
||||
AddEventHandler('chatMessage', function(playerId, author, message)
|
||||
@@ -386,7 +386,7 @@ if not Config.OxInventory then
|
||||
local targetXPlayer = ESX.GetPlayerFromId(target)
|
||||
local distance = #(GetEntityCoords(GetPlayerPed(playerId)) - GetEntityCoords(GetPlayerPed(target)))
|
||||
if not sourceXPlayer or not targetXPlayer or distance > Config.DistanceGive then
|
||||
print("[WARNING] Player Detected Cheating: " .. GetPlayerName(playerId))
|
||||
print("[^3WARNING^7] Player Detected Cheating: ^5" .. GetPlayerName(playerId) .. "^7")
|
||||
return
|
||||
end
|
||||
|
||||
@@ -595,6 +595,10 @@ ESX.RegisterServerCallback('esx:isUserAdmin', function(source, cb)
|
||||
cb(Core.IsPlayerAdmin(source))
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx:getGameBuild', function(source, cb)
|
||||
cb(tonumber(GetConvar("sv_enforceGameBuild", 1604)))
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx:getOtherPlayerData', function(source, cb, target)
|
||||
local xPlayer = ESX.GetPlayerFromId(target)
|
||||
|
||||
|
||||
@@ -65,17 +65,17 @@ end
|
||||
function ESX.OneSync.SpawnVehicle(model, coords, heading, autoMobile, Properties, cb)
|
||||
model = type(model) == 'string' and joaat(model) or model
|
||||
Properties = Properties or {}
|
||||
local vector = type(coords) == "vector3" and coords or vec(coords.x, coords.y, coords.z)
|
||||
local coords = type(coords) == "vector3" and coords or vector3(coords.x, coords.y, coords.z)
|
||||
if type(autoMobile) ~= 'boolean' then
|
||||
return
|
||||
end
|
||||
CreateThread(function()
|
||||
local Entity = autoMobile and Citizen.InvokeNative(`CREATE_AUTOMOBILE`, model, coords.x, coords.y, coords.z, heading) or CreateVehicle(model, coords, heading, true, true)
|
||||
while not DoesEntityExist(Entity) do
|
||||
local SpawnedEntity = autoMobile and Citizen.InvokeNative(`CREATE_AUTOMOBILE`, model, coords.x, coords.y, coords.z, heading) or CreateVehicle(model, coords, heading, true, true)
|
||||
while not DoesEntityExist(SpawnedEntity) do
|
||||
Wait(0)
|
||||
end
|
||||
Entity(Entity).state:set('VehicleProperties', Properties, true)
|
||||
local netID = NetworkGetNetworkIdFromEntity(Entity)
|
||||
Entity(SpawnedEntity).state:set('VehicleProperties', Properties, true)
|
||||
local netID = NetworkGetNetworkIdFromEntity(SpawnedEntity)
|
||||
cb(netID)
|
||||
end)
|
||||
end
|
||||
@@ -86,7 +86,7 @@ end
|
||||
---@param cb function
|
||||
function ESX.OneSync.SpawnObject(model, coords, heading, cb)
|
||||
if type(model) == 'string' then model = joaat(model) end
|
||||
local vector = type(coords) == "vector3" and coords or vec(coords.x, coords.y, coords.z)
|
||||
local coords = type(coords) == "vector3" and coords or vector3(coords.x, coords.y, coords.z)
|
||||
CreateThread(function()
|
||||
local entity = CreateObject(model, coords, true, true)
|
||||
while not DoesEntityExist(entity) do Wait(50) end
|
||||
|
||||
@@ -30,10 +30,10 @@ Locales['de'] = {
|
||||
['no_identifier'] = 'Es gab einen Fehler beim Laden deines Charackters!\nFehler Code: identifier-missing\n\nDie Ursache des Fehlers ist nicht bekannt, dein Identifier konnte nicht gefunden werden. Bitte versuche es später erneut oder kontaktiere einen Admin.',
|
||||
['missing_identity'] = 'Es gab einen Fehler beim Laden deines Charackters!\nError code: identity-missing\n\nEs scheint, keine Identität zu geben. Bitte versuche, erneut zu verbinden.',
|
||||
['deleted_identity'] = 'Dein Charakter wurde gelöscht. Bitte logge neu ein, um einen neuen zu erstellen.',
|
||||
['invalid_firstname_format'] = 'Ungültiges Format (Vorname): Überprüf deine Eingabe',
|
||||
['invalid_lastname_format'] = 'Ungültiges Format (Nachname): Überprüf deine Eingabe',
|
||||
['invalid_dob_format'] = 'Ungültiges Format (Geburtsdatum): Überprüf deine Eingabe',
|
||||
['invalid_sex_format'] = 'Ungültiges Format (Geschlecht): Überprüf deine Eingabe',
|
||||
['invalid_height_format'] = 'Ungültiges Format (Größe): Überprüf deine Eingabe.'
|
||||
['invalid_firstname_format'] = 'Ungültiges Format (Vorname): Bitte überprüfe deine Eingabe',
|
||||
['invalid_lastname_format'] = 'Ungültiges Format (Nachname): Bitte überprüfe deine Eingabe',
|
||||
['invalid_dob_format'] = 'Ungültiges Format (Geburtsdatum): Bitte überprüfe deine Eingabe',
|
||||
['invalid_sex_format'] = 'Ungültiges Format (Geschlecht): Bitte überprüfe deine Eingabe',
|
||||
['invalid_height_format'] = 'Ungültiges Format (Größe): Bitte überprüfe deine Eingabe.'
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
Locales["nl"] = {
|
||||
["male"] = "Man",
|
||||
["female"] = "Vrouw",
|
||||
["delete_label"] = "Verwijder %s %s?",
|
||||
["select_char"] = "Kies Karakter",
|
||||
["create_char"] = "Creeër nieuw karakter",
|
||||
["char_play"] = "Speel dit karakter",
|
||||
["char_disabled"] = "Dit karakter is niet beschikbaar",
|
||||
["char_delete"] = "Verwijder dit karakter",
|
||||
["cancel"] = "Annuleer",
|
||||
["confirm"] = "Bevestig",
|
||||
["command_setslots"] = "Zet multicharacter aantal slots van een speler",
|
||||
["command_remslots"] = "Verwijder multicharacter aantal slots van een speler",
|
||||
["command_enablechar"] = "Zet een karakter van speler aan",
|
||||
["command_disablechar"] = "Zet een karakter van speler uit",
|
||||
["command_charslot"] = "Slot nummer van het karakter",
|
||||
["command_identifier"] = "Speler identifier",
|
||||
["command_slots"] = "# aantal slots",
|
||||
["slotsadd"] = "Je hebt %s aantal slots bij %s toegevoegd",
|
||||
["slotsedit"] = "Je hebt %s aantal slots bij %s aangepast",
|
||||
["slotsrem"] = "Je hebt slots bij %s verwijderd",
|
||||
["charenabled"] = "Je hebt karakter #%s van %s aangezet",
|
||||
["chardisabled"] = "Je hebt karakter #%s van %s uitgezet",
|
||||
["charnotfound"] = "Karakter #%s van %s bestaat niet",
|
||||
}
|
||||
@@ -117,7 +117,7 @@ elseif ESX.GetConfig().Multichar == true then
|
||||
|
||||
MySQL.transaction(queries, function(result)
|
||||
if result then
|
||||
print(('[^2INFO^7] Player [%s] %s has deleted a character (%s)'):format(GetPlayerName(source), source, identifier))
|
||||
print(('[^2INFO^7] Player ^5%s %s^7 has deleted a character ^5(%s)^7'):format(GetPlayerName(source), source, identifier))
|
||||
Wait(50)
|
||||
SetupCharacters(source)
|
||||
else
|
||||
@@ -154,9 +154,9 @@ elseif ESX.GetConfig().Multichar == true then
|
||||
end
|
||||
|
||||
if MySQL.transaction.await(queries) then
|
||||
print(('[^2INFO^7] Updated ^5%s^7 columns to use VARCHAR(%s)'):format(count, length))
|
||||
print(('[^2INFO^7] Updated ^5%s^7 columns to use ^5VARCHAR(%s)^7'):format(count, length))
|
||||
else
|
||||
print(('[^2INFO^7] Unable to update ^5%s^7 columns to use VARCHAR(%s)'):format(count, length))
|
||||
print(('[^2INFO^7] Unable to update ^5%s^7 columns to use ^5VARCHAR(%s)^7'):format(count, length))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -18,10 +18,10 @@ $(function () {
|
||||
if (e.data.type === "Progressbar") {
|
||||
var message = e.data.message
|
||||
const replaceColors = (str, obj) => {
|
||||
let strToReplace = str
|
||||
let strToReplace = str;
|
||||
|
||||
for (let id in obj) {
|
||||
strToReplace = strToReplace.replace(new RegExp(id, 'g'), obj[id])
|
||||
strToReplace = strToReplace.replace(new RegExp(id, "g"), obj[id]);
|
||||
}
|
||||
|
||||
return strToReplace
|
||||
@@ -34,10 +34,10 @@ $(function () {
|
||||
|
||||
let newStr = replaceColors(message, objArr);
|
||||
|
||||
message = newStr;
|
||||
message = newStr
|
||||
}
|
||||
}
|
||||
$(".text").text(message)
|
||||
$(".text").html(`<p class="text">${message}</p>`)
|
||||
doc.getElementById("notifyInfo").style.display = "block";
|
||||
const start = new Date();
|
||||
const maxTime = e.data.length;
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
Locales['nl'] = {
|
||||
['skin_menu'] = 'Kleding Menu',
|
||||
['use_rotate_view'] = 'gebruik ~INPUT_FRONTEND_LS~ en ~INPUT_CHARACTER_WHEEL~ om de camera te draaien.',
|
||||
['skin'] = 'verander outfit',
|
||||
['saveskin'] = 'sla outfit op in je kledingkast.',
|
||||
}
|
||||
@@ -30,7 +30,7 @@ AddEventHandler('esx_skin:responseSaveSkin', function(skin)
|
||||
file:flush()
|
||||
file:close()
|
||||
else
|
||||
print(('esx_skin: %s attempted saving skin to file'):format(xPlayer.getIdentifier()))
|
||||
print(('[^2INFO^7] ^5%s^7 attempted saving skin to file'):format(xPlayer.getIdentifier()))
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
@@ -1,76 +1,104 @@
|
||||
Locales['de'] = {
|
||||
['sex'] = 'geschlecht',
|
||||
['face'] = 'gesicht',
|
||||
['skin'] = 'skin',
|
||||
['wrinkles'] = 'falten',
|
||||
['wrinkle_thickness'] = 'faltendicke',
|
||||
['beard_type'] = 'bart Typ',
|
||||
['beard_size'] = 'bartdichte',
|
||||
['beard_color_1'] = 'bartfarbe 1',
|
||||
['beard_color_2'] = 'bartfarbe 2',
|
||||
['hair_1'] = 'haare 1',
|
||||
['hair_2'] = 'haare 2',
|
||||
['hair_color_1'] = 'haarfarbe 1',
|
||||
['hair_color_2'] = 'haarfarbe 2',
|
||||
['eye_color'] = 'eye color',
|
||||
['eyebrow_type'] = 'augenbrauen Typ',
|
||||
['eyebrow_size'] = 'augenbrauen Größe',
|
||||
['eyebrow_color_1'] = 'augenbrauenfarbe 1',
|
||||
['eyebrow_color_2'] = 'augenbrauenfarbe 2',
|
||||
['makeup_type'] = 'makeup Typ',
|
||||
['makeup_thickness'] = 'makeup dicke',
|
||||
['makeup_color_1'] = 'makeupfarbe 1',
|
||||
['makeup_color_2'] = 'makeupfarbe 2',
|
||||
['lipstick_type'] = 'lippenstift Typ',
|
||||
['lipstick_thickness'] = 'lippenstift dicke',
|
||||
['lipstick_color_1'] = 'lippenstiffarbe 1',
|
||||
['lipstick_color_2'] = 'lippenstiftfarbe 2',
|
||||
['ear_accessories'] = 'ohr Accessories',
|
||||
['ear_accessories_color'] = 'ohr Accessories Farbe',
|
||||
['tshirt_1'] = 't-Shirt 1',
|
||||
['tshirt_2'] = 't-Shirt 2',
|
||||
['torso_1'] = 'torso 1',
|
||||
['torso_2'] = 'torso 2',
|
||||
['decals_1'] = 'tattoos 1',
|
||||
['decals_2'] = 'tattoos 2',
|
||||
['arms'] = 'arme',
|
||||
['arms_2'] = 'arme 2',
|
||||
['pants_1'] = 'hosen 1',
|
||||
['pants_2'] = 'hosen 2',
|
||||
['shoes_1'] = 'schuhe 1',
|
||||
['shoes_2'] = 'schuhe 2',
|
||||
['mask_1'] = 'maske 1',
|
||||
['mask_2'] = 'maske 2',
|
||||
['bproof_1'] = 'schusssichere Weste 1',
|
||||
['bproof_2'] = 'schusssichere Weste 2',
|
||||
['chain_1'] = 'kette 1',
|
||||
['chain_2'] = 'kette 2',
|
||||
['helmet_1'] = 'helm 1',
|
||||
['helmet_2'] = 'helm 2',
|
||||
['watches_1'] = 'watches 1',
|
||||
['watches_2'] = 'watches 2',
|
||||
['bracelets_1'] = 'bracelets 1',
|
||||
['bracelets_2'] = 'bracelets 2',
|
||||
['glasses_1'] = 'brille 1',
|
||||
['glasses_2'] = 'brille 2',
|
||||
['bag'] = 'rucksack',
|
||||
['bag_color'] = 'rucksackfarbe',
|
||||
['blemishes'] = 'blemishes',
|
||||
['blemishes_size']= 'blemishes thickness',
|
||||
['ageing'] = 'ageing',
|
||||
['ageing_1'] = 'ageing thickness',
|
||||
['blush'] = 'blush',
|
||||
['blush_1'] = 'blush thickness',
|
||||
['blush_color'] = 'blush color',
|
||||
['complexion'] = 'complexion',
|
||||
['complexion_1'] = 'complexion thickness',
|
||||
['sun'] = 'sun',
|
||||
['sun_1'] = 'sun thickness',
|
||||
['freckles'] = 'freckles',
|
||||
['freckles_1'] = 'freckles thickness',
|
||||
['chest_hair'] = 'chest hair',
|
||||
['chest_hair_1'] = 'chest hair thickness',
|
||||
['chest_color'] = 'chest hair color',
|
||||
['bodyb'] = 'body blemishes',
|
||||
['bodyb_size'] = 'body blemishes thickness',
|
||||
['sex'] = 'Geschlecht',
|
||||
['mom'] = 'Gesicht der Mutter',
|
||||
['dad'] = 'Gesicht des Vaters',
|
||||
['resemblance'] = 'Wiederspiegelung',
|
||||
['skin_tone'] = 'Hautfarbe',
|
||||
['nose_1'] = 'Nasen Dicke',
|
||||
['nose_2'] = 'Nasen Spitzenlänge',
|
||||
['nose_3'] = 'Nasen Spitzenlänge',
|
||||
['nose_4'] = 'Nasen Knochen Höhe',
|
||||
['nose_5'] = 'Nasen Spitzen Erhöhung',
|
||||
['nose_6'] = 'Nasen Knochen Drehung',
|
||||
['cheeks_1'] = 'Wangenknochen Höhe',
|
||||
['cheeks_2'] = 'Wangenknochen Breite',
|
||||
['cheeks_3'] = 'Wangen Breite',
|
||||
['lip_fullness'] = 'Lippen Volle',
|
||||
['jaw_bone_width'] = 'Kiefer Breite',
|
||||
['jaw_bone_length'] = 'Kiefer Länge',
|
||||
['chin_height'] = 'Kinn Höhe',
|
||||
['chin_length'] = 'Kinn Länge',
|
||||
['chin_width'] = 'Kinn Breite',
|
||||
['chin_hole'] = 'Kinn Loch Breite',
|
||||
['neck_thickness'] = 'Genick Breite',
|
||||
['face'] = 'Gesicht',
|
||||
['skin'] = 'Skin',
|
||||
['Wrinkles'] = 'Falten',
|
||||
['Wrinkle_thickness'] = 'Faltendicke',
|
||||
['beard_type'] = 'Bart Typ',
|
||||
['beard_size'] = 'Bartdichte',
|
||||
['beard_color_1'] = 'Bartfarbe 1',
|
||||
['beard_color_2'] = 'Bartfarbe 2',
|
||||
['hair_1'] = 'Haare 1',
|
||||
['hair_2'] = 'Haare 2',
|
||||
['hair_color_1'] = 'Haarfarbe 1',
|
||||
['hair_color_2'] = 'Haarfarbe 2',
|
||||
['eye_color'] = 'Augenfarbe',
|
||||
['eye_squint'] = 'Augenöffnung',
|
||||
['eyebrow_type'] = 'Augenbrauen Typ',
|
||||
['eyebrow_size'] = 'Augenbrauen Größe',
|
||||
['eyebrow_color_1'] = 'Augenbrauenfarbe 1',
|
||||
['eyebrow_color_2'] = 'Augenbrauenfarbe 2',
|
||||
['eyebrow_depth'] = 'Augenbrauen Tiefe',
|
||||
['eyebrow_height'] = 'Augenbrauen Höhe',
|
||||
['makeup_type'] = 'Makeup Typ',
|
||||
['makeup_thickness'] = 'Makeup dicke',
|
||||
['makeup_color_1'] = 'Makeupfarbe 1',
|
||||
['makeup_color_2'] = 'Makeupfarbe 2',
|
||||
['lipstick_type'] = 'Lippenstift Typ',
|
||||
['lipstick_thickness'] = 'Lippenstift dicke',
|
||||
['lipstick_color_1'] = 'Lippenstiffarbe 1',
|
||||
['lipstick_color_2'] = 'Lippenstiftfarbe 2',
|
||||
['ear_accessories'] = 'Ohr Accessories',
|
||||
['ear_accessories_color'] = 'Ohr Accessories Farbe',
|
||||
['tshirt_1'] = 'T-Shirt 1',
|
||||
['tshirt_2'] = 'T-Shirt 2',
|
||||
['torso_1'] = 'Torso 1',
|
||||
['torso_2'] = 'Torso 2',
|
||||
['decals_1'] = 'Tattoos 1',
|
||||
['decals_2'] = 'Tattoos 2',
|
||||
['arms'] = 'Arme',
|
||||
['arms_2'] = 'Arme 2',
|
||||
['pants_1'] = 'Hosen 1',
|
||||
['pants_2'] = 'Hosen 2',
|
||||
['shoes_1'] = 'Schuhe 1',
|
||||
['shoes_2'] = 'Schuhe 2',
|
||||
['mask_1'] = 'Maske 1',
|
||||
['mask_2'] = 'Maske 2',
|
||||
['bproof_1'] = 'Schusssichere Weste 1',
|
||||
['bproof_2'] = 'Schusssichere Weste 2',
|
||||
['chain_1'] = 'Kette 1',
|
||||
['chain_2'] = 'Kette 2',
|
||||
['helmet_1'] = 'Helm 1',
|
||||
['helmet_2'] = 'Helm 2',
|
||||
['watches_1'] = 'Watches 1',
|
||||
['watches_2'] = 'Watches 2',
|
||||
['bracelets_1'] = 'Bracelets 1',
|
||||
['bracelets_2'] = 'Bracelets 2',
|
||||
['glasses_1'] = 'Brille 1',
|
||||
['glasses_2'] = 'Brille 2',
|
||||
['bag'] = 'Rucksack',
|
||||
['bag_color'] = 'Rucksackfarbe',
|
||||
['blemishes'] = 'Körper Verfärbuing 1',
|
||||
['blemishes_size']= 'Körper Verfärbung Größe',
|
||||
['ageing'] = 'Alterung',
|
||||
['ageing_1'] = 'Alterungsdichte',
|
||||
['blush'] = 'Blush',
|
||||
['blush_1'] = 'Blush Dichte',
|
||||
['blush_color'] = 'Blush Farbe',
|
||||
['complexion'] = 'Komplexion',
|
||||
['complexion_1'] = 'Komplexionsdichte',
|
||||
['sun'] = 'Sonnenbrand',
|
||||
['sun_1'] = 'Sonnenbrandstärke',
|
||||
['freckles'] = 'Sommersprossen',
|
||||
['freckles_1'] = 'Sommersprossen Dichte',
|
||||
['chest_hair'] = 'Brusthaare',
|
||||
['chest_hair_1'] = 'Brusthaardichte',
|
||||
['chest_color'] = 'Brusthaarfarbe',
|
||||
['bodyb'] = 'Körper Verfärbungen 2',
|
||||
['bodyb_size'] = 'Körper Verfärbung Dicke',
|
||||
['bodyb_extra'] = 'Körper Verfärbung Effekt',
|
||||
['bodyb_extra_thickness'] = 'Körper Verfärbung Effek Stärke',
|
||||
['wrinkles'] = 'Falten',
|
||||
['wrinkle_thickness'] = 'Falten Stärke',
|
||||
}
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
Locales['it'] = {
|
||||
['sex'] = 'sesso',
|
||||
['mom'] = 'viso donna',
|
||||
['dad'] = 'viso uomo',
|
||||
['resemblance'] = 'somiglianze',
|
||||
['skin_tone'] = 'tono della pelle',
|
||||
['nose_1'] = 'larghezza del naso',
|
||||
['nose_2'] = 'altezza della punta del naso',
|
||||
['nose_3'] = 'lunghezza della punta del naso',
|
||||
['nose_4'] = 'altezza dell\'osso del naso',
|
||||
['nose_5'] = 'abbassamento della punta del naso',
|
||||
['nose_6'] = 'torsione dell\'osso del naso',
|
||||
['cheeks_1'] = 'altezza degli zigomi',
|
||||
['cheeks_2'] = 'larghezza degli zigomi',
|
||||
['cheeks_3'] = 'larghezza delle guance',
|
||||
['lip_fullness'] = 'spessore delle labbra',
|
||||
['jaw_bone_width'] = 'larghezza dell\'osso mascellare',
|
||||
['jaw_bone_length'] = 'lunghezza dell\'osso mascellare',
|
||||
['chin_height'] = 'altezza del mento',
|
||||
['chin_length'] = 'lunghezza del mento',
|
||||
['chin_width'] = 'larghezza del mento',
|
||||
['chin_hole'] = 'dimensione del foro del mento',
|
||||
['neck_thickness'] = 'spessore del collo',
|
||||
['wrinkles'] = 'rughe',
|
||||
['wrinkle_thickness'] = 'spessore delle rughe',
|
||||
['beard_type'] = 'tipo di barba',
|
||||
['beard_size'] = 'dimensione della barba',
|
||||
['beard_color_1'] = 'colore della barba 1',
|
||||
['beard_color_2'] = 'colore della barba 2',
|
||||
['hair_1'] = 'capelli 1',
|
||||
['hair_2'] = 'capelli 2',
|
||||
['hair_color_1'] = 'colore capelli 1',
|
||||
['hair_color_2'] = 'colore capelli 2',
|
||||
['eye_color'] = 'colore degli occhi',
|
||||
['eye_squint'] = 'strabismo degli occhi',
|
||||
['eyebrow_type'] = 'tipo di sopracciglio',
|
||||
['eyebrow_size'] = 'dimensione delle sopracciglia',
|
||||
['eyebrow_color_1'] = 'colore delle sopracciglia 1',
|
||||
['eyebrow_color_2'] = 'colore delle sopracciglia 2',
|
||||
['eyebrow_depth'] = 'profondità delle sopracciglia',
|
||||
['eyebrow_height'] = 'altezza del sopracciglio',
|
||||
['makeup_type'] = 'tipo di trucco',
|
||||
['makeup_thickness'] = 'spessore del trucco',
|
||||
['makeup_color_1'] = 'colore del trucco 1',
|
||||
['makeup_color_2'] = 'colore del trucco 2',
|
||||
['lipstick_type'] = 'tipo di rossetto',
|
||||
['lipstick_thickness'] = 'spessore del rossetto',
|
||||
['lipstick_color_1'] = 'colore del rossetto 1',
|
||||
['lipstick_color_2'] = 'colore del rossetto 2',
|
||||
['ear_accessories'] = 'accessori per le orecchie',
|
||||
['ear_accessories_color'] = 'colore accessori orecchie',
|
||||
['tshirt_1'] = 't-Shirt 1',
|
||||
['tshirt_2'] = 't-Shirt 2',
|
||||
['torso_1'] = 'torso 1',
|
||||
['torso_2'] = 'torso 2',
|
||||
['decals_1'] = 'decals 1',
|
||||
['decals_2'] = 'decals 2',
|
||||
['arms'] = 'braccia',
|
||||
['arms_2'] = 'braccia 2',
|
||||
['pants_1'] = 'pantaloni',
|
||||
['pants_2'] = 'colore pantaloni',
|
||||
['shoes_1'] = 'scarpe',
|
||||
['shoes_2'] = 'colore scarpe',
|
||||
['mask_1'] = 'maschera 1',
|
||||
['mask_2'] = 'maschera 2',
|
||||
['bproof_1'] = 'giubbotto antiproiettile 1',
|
||||
['bproof_2'] = 'giubbotto antiproiettile2',
|
||||
['chain_1'] = 'collana 1',
|
||||
['chain_2'] = 'collana 2',
|
||||
['helmet_1'] = 'casco 1',
|
||||
['helmet_2'] = 'casco 2',
|
||||
['watches_1'] = 'orologi 1',
|
||||
['watches_2'] = 'orologi 2',
|
||||
['bracelets_1'] = 'bracciali 1',
|
||||
['bracelets_2'] = 'bracciali 2',
|
||||
['glasses_1'] = 'occhiali 1',
|
||||
['glasses_2'] = 'occhiali 2',
|
||||
['bag'] = 'zaino',
|
||||
['bag_color'] = 'colore zaino',
|
||||
['blemishes'] = 'imperfezioni',
|
||||
['blemishes_size'] = 'pessore delle imperfezioni',
|
||||
['ageing'] = 'invecchiamento pelle',
|
||||
['ageing_1'] = 'spessore invecchiamento',
|
||||
['blush'] = 'arrossimento',
|
||||
['blush_1'] = 'spessore del rossore',
|
||||
['blush_color'] = 'colore rossore',
|
||||
['complexion'] = 'carnagione',
|
||||
['complexion_1'] = 'spessore della carnagione',
|
||||
['sun'] = 'lentiggini',
|
||||
['sun_1'] = 'spessore lentiggini',
|
||||
['freckles'] = 'lentiggini',
|
||||
['freckles_1'] = 'spessore delle lentiggini',
|
||||
['chest_hair'] = 'peli del petto',
|
||||
['chest_hair_1'] = 'spessore dei peli del torace',
|
||||
['chest_color'] = 'colore dei peli del petto',
|
||||
['bodyb'] = 'inestetismi del corpo',
|
||||
['bodyb_size'] = 'spessore delle imperfezioni',
|
||||
['bodyb_extra'] = 'inestetismi del corpo extra',
|
||||
['bodyb_extra_thickness'] = 'inestetismi del corpo spessore',
|
||||
}
|
||||
@@ -8,16 +8,19 @@ function CreateAddonAccount(name, owner, money)
|
||||
function self.addMoney(m)
|
||||
self.money = self.money + m
|
||||
self.save()
|
||||
TriggerEvent('esx_addonaccount:addMoney', self.name, m)
|
||||
end
|
||||
|
||||
function self.removeMoney(m)
|
||||
self.money = self.money - m
|
||||
self.save()
|
||||
TriggerEvent('esx_addonaccount:removeMoney', self.name, m)
|
||||
end
|
||||
|
||||
function self.setMoney(m)
|
||||
self.money = m
|
||||
self.save()
|
||||
TriggerEvent('esx_addonaccount:setMoney', self.name, m)
|
||||
end
|
||||
|
||||
function self.save()
|
||||
@@ -30,4 +33,4 @@ function CreateAddonAccount(name, owner, money)
|
||||
end
|
||||
|
||||
return self
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,6 +4,6 @@ Locales['de'] = {
|
||||
['allowlist_empty'] = 'Für diesen Server sind keine allowlists gespeichert.',
|
||||
['license_missing'] = 'Error: Ihr Identifier fehlt.',
|
||||
['help_allowlist_add'] = 'jemanden zur Allowlist hinzufügen',
|
||||
['help_allowlist_load'] = 'reloade die allowlist',
|
||||
['help_allowlist_load'] = 'lade die Allowlist neu',
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
Locales['pl'] = {
|
||||
['allowlist_check'] = 'Sprawdzamy, czy jesteś na Allowlist.',
|
||||
['not_allowlisted'] = 'Aby dołączyć do tego serwera, musisz być na Allowlist!',
|
||||
['allowlist_empty'] = 'Brak zapisanych list Allowlist dla tego serwera.',
|
||||
['license_missing'] = 'Błąd: Brak ID!',
|
||||
['help_allowlist_add'] = 'dodaj do allowlist',
|
||||
['help_allowlist_load'] = 'przeładuj allowlist',
|
||||
}
|
||||
@@ -46,7 +46,7 @@ end)
|
||||
|
||||
ESX.RegisterCommand('alrefresh', 'admin', function(xPlayer, args)
|
||||
loadAllowList()
|
||||
print('[esx_allowlist] Allowlist Refreshed!')
|
||||
print('[^2INFO^7] Allowlist ^5Refreshed^7!')
|
||||
end, true, {help = _U('help_allowlist_load')})
|
||||
|
||||
ESX.RegisterCommand('aladd', 'admin', function(xPlayer, args, showError)
|
||||
|
||||
@@ -429,7 +429,7 @@ function OpenCloakroomMenu()
|
||||
end
|
||||
deadPlayers = {}
|
||||
if Config.Debug then
|
||||
print("[INFO] Now Off Duty")
|
||||
print("[^2INFO^7] Off Duty")
|
||||
end
|
||||
end)
|
||||
elseif data.current.value == 'ambulance_wear' then
|
||||
@@ -445,8 +445,8 @@ function OpenCloakroomMenu()
|
||||
TriggerEvent('esx_ambulancejob:setDeadPlayers', _deadPlayers)
|
||||
end)
|
||||
if Config.Debug then
|
||||
print("[INFO] Player Sex |" .. tostring(skin.sex))
|
||||
print("[INFO] Now On Duty")
|
||||
print("[^2INFO^7] Player Sex |^5" .. tostring(skin.sex).."^7")
|
||||
print("[^2INFO^7] On Duty")
|
||||
end
|
||||
end)
|
||||
end
|
||||
@@ -468,7 +468,7 @@ function OpenPharmacyMenu()
|
||||
{label = _U('pharmacy_take', _U('bandage')), item = 'bandage', type = 'slider', value = 1, min = 1, max = 100}
|
||||
}}, function(data, menu)
|
||||
if Config.Debug then
|
||||
print("[INFO] Attempting to Give Item |" .. tostring(data.current.item))
|
||||
print("[^2INFO^7] Attempting to Give Item - ^5" .. tostring(data.current.item) .. "^7")
|
||||
end
|
||||
TriggerServerEvent('esx_ambulancejob:giveItem', data.current.item, data.current.value)
|
||||
end, function(data, menu)
|
||||
@@ -490,7 +490,7 @@ AddEventHandler('esx_ambulancejob:heal', function(healType, quiet)
|
||||
end
|
||||
|
||||
if Config.Debug then
|
||||
print("[INFO] Healing Player |" .. tostring(healType))
|
||||
print("[^2INFO^7] Healing Player - ^5" .. tostring(healType).. "^7")
|
||||
end
|
||||
if not quiet then
|
||||
ESX.ShowNotification(_U('healed'))
|
||||
@@ -502,7 +502,7 @@ AddEventHandler('esx:setJob', function(job)
|
||||
if isOnDuty and job.name ~= 'ambulance' then
|
||||
for playerId,v in pairs(deadPlayerBlips) do
|
||||
if Config.Debug then
|
||||
print("[INFO] removing dead player blip |" .. tostring(playerId))
|
||||
print("[^2INFO^7] Removing dead blip - ^5" .. tostring(playerId).. "^7")
|
||||
end
|
||||
RemoveBlip(v)
|
||||
deadPlayerBlips[playerId] = nil
|
||||
@@ -515,7 +515,7 @@ end)
|
||||
RegisterNetEvent('esx_ambulancejob:PlayerDead')
|
||||
AddEventHandler('esx_ambulancejob:PlayerDead', function(Player)
|
||||
if Config.Debug then
|
||||
print("[INFO] Setting Player Dead |" .. tostring(Player))
|
||||
print("[^2INFO^7] Player Dead | ^5" .. tostring(Player) .. "^7")
|
||||
end
|
||||
deadPlayers[Player] = "dead"
|
||||
end)
|
||||
@@ -527,7 +527,7 @@ AddEventHandler('esx_ambulancejob:PlayerNotDead', function(Player)
|
||||
deadPlayerBlips[Player] = nil
|
||||
end
|
||||
if Config.Debug then
|
||||
print("[INFO] Setting Player Not Dead |" .. tostring(Player))
|
||||
print("[^2INFO^7] Player Alive | ^5" .. tostring(Player) .. "^7")
|
||||
end
|
||||
deadPlayers[Player] = nil
|
||||
end)
|
||||
@@ -544,11 +544,11 @@ AddEventHandler('esx_ambulancejob:setDeadPlayers', function(_deadPlayers)
|
||||
|
||||
for playerId,status in pairs(deadPlayers) do
|
||||
if Config.Debug then
|
||||
print("[INFO] Setting Player As Dead |" .. tostring(playerId))
|
||||
print("[^2INFO^7] Player Dead | ^5" .. tostring(playerId) .. "^7")
|
||||
end
|
||||
if status == 'distress' then
|
||||
if Config.Debug then
|
||||
print("[INFO] Creating Distress Blip for Player |" .. tostring(playerId))
|
||||
print("[^2INFO^7] Creating Distress Blip for Player - ^5" .. tostring(playerId) .. "^7")
|
||||
end
|
||||
local player = GetPlayerFromServerId(playerId)
|
||||
local playerPed = GetPlayerPed(player)
|
||||
@@ -576,7 +576,7 @@ AddEventHandler('esx_ambulancejob:PlayerDistressed', function(Player)
|
||||
|
||||
if isOnDuty then
|
||||
if Config.Debug then
|
||||
print("[INFO] Player Distress Recived - ID |" .. tostring(Player))
|
||||
print("[^2INFO^7] Player Distress Recived - ID:^5" .. tostring(Player) .. "^7")
|
||||
end
|
||||
ESX.ShowNotification("[DISPATCH]: An Unconscious Person Has Been Reported", "error", 10000)
|
||||
deadPlayerBlips[Player] = nil
|
||||
|
||||
@@ -24,35 +24,35 @@ Locales['de'] = {
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'Fahrzeug-Shop',
|
||||
['vehicleshop_confirm'] = 'Du möchstest dieses Fahrzeug kaufen?',
|
||||
['vehicleshop_bought'] = 'Du hast dir einen %sr $%s geft!',
|
||||
['vehicleshop_bought'] = 'Du hast dir einen %s für $%s gekauft!',
|
||||
['vehicleshop_money'] = 'Du kannst dir dieses Fahrzeug nicht leisten!',
|
||||
['vehicleshop_awaiting_model'] = 'Dieses Fahrzeug LÄDTtte warte',
|
||||
['vehicleshop_awaiting_model'] = 'Dieses Fahrzeug lädt bitte warte',
|
||||
['confirm_no'] = 'Nein',
|
||||
['confirm_yes'] = 'Ja',
|
||||
-- Action Menu
|
||||
['revive_inprogress'] = 'Eine Wiederbelebung findet statt!',
|
||||
['revive_complete'] = 'Du hast %sederbelebt',
|
||||
['revive_complete_award'] = 'Du hast %sederbelebt und dabei $%s erten!',
|
||||
['revive_complete'] = 'Du hast %s wiederbelebt',
|
||||
['revive_complete_award'] = 'Du hast %s wiederbelebt und dabei $%s erten!',
|
||||
['revive_fail_offline'] = 'Dieser Spieler ist nicht länger online',
|
||||
['heal_inprogress'] = 'Du heilst!',
|
||||
['heal_complete'] = 'yDu hast %sheilt!',
|
||||
['heal_complete'] = 'Du hast %s geheilt!',
|
||||
['no_players'] = 'Keine Spieler in der Nähe',
|
||||
['player_not_unconscious'] = 'Diese Spieler ist nicht bewusstlos!',
|
||||
['player_not_conscious'] = 'Dieser Spieler ist nicht bei Bewusstsein!',
|
||||
-- Boss Menu
|
||||
['boss_actions'] = 'Chef-Aktionen',
|
||||
-- Misc
|
||||
['invalid_amount'] = ' ige Menge',
|
||||
['invalid_amount'] = 'Ungültige Menge',
|
||||
['actions_prompt'] = 'Drücke [E] um das Rettungsdienst-Menü öffnen.',
|
||||
['deposit_amount'] = 'Menge deponieren',
|
||||
['money_withdraw'] = 'Menge abheben',
|
||||
['fast_travel'] = 'Drücke [E] zu schnellreisen.',
|
||||
['fast_travel'] = 'Drücke [E] um schnellzureisen.',
|
||||
['open_pharmacy'] = 'Drücke [E] um die Apotheke zu öffnen.',
|
||||
['pharmacy_menu_title'] = 'Apotheke',
|
||||
['pharmacy_take'] = 'Nimm <span style="color:blue;">%s</span>',
|
||||
['medikit'] = 'Medikit',
|
||||
['bandage'] = 'Verbände',
|
||||
['max_item'] = 'Du trägst bereits genug.',
|
||||
['max_item'] = 'Du kannst nicht mehr tragen.',
|
||||
-- F6 Menu
|
||||
['ems_menu'] = 'Rettungsdienst-Menü',
|
||||
['ems_menu_title'] = 'Rettungsdienst-Menü',
|
||||
@@ -66,17 +66,17 @@ Locales['de'] = {
|
||||
['respawn_available_in'] = 'Respawn in %s Minuten %s Sekundenrfügbar',
|
||||
['respawn_bleedout_in'] = 'Du wirst in %s Minuten %s Sekundensbluten\n',
|
||||
['respawn_bleedout_prompt'] = 'Drücke [E] zu respawnen',
|
||||
['respawn_bleedout_fine'] = 'Drücke [E] für $%s zuspawnen',
|
||||
['respawn_bleedout_fine'] = 'Drücke [E] um für $%s zu respawnen',
|
||||
['respawn_bleedout_fine_msg'] = 'Du hast $%s bezahlt, um zu respawnen.',
|
||||
['distress_send'] = 'Drücke [G] um ein Notsignal zu senden',
|
||||
['distress_sent'] = 'Notsignal wurde an den Rettungsdienst übermittelt!',
|
||||
-- Revive
|
||||
['revive_help'] = 'Belebe einen Spieler wieder',
|
||||
-- Item
|
||||
['used_medikit'] = 'Du hast eindikit verwendet',
|
||||
['used_bandage'] = 'Du hast einenrband verwendet',
|
||||
['not_enough_medikit'] = 'Du hast keine medikits',
|
||||
['not_enough_bandage'] = 'Du hast keine verbände',
|
||||
['used_medikit'] = 'Du hast Medikit verwendet',
|
||||
['used_bandage'] = 'Du hast Verband verwendet',
|
||||
['not_enough_medikit'] = 'Du hast keine Medikits',
|
||||
['not_enough_bandage'] = 'Du hast keine Verbände',
|
||||
['healed'] = 'Du wurdest behandelt.',
|
||||
-- Blips
|
||||
['blip_hospital'] = 'Krankenhaus',
|
||||
|
||||
@@ -279,10 +279,10 @@ AddEventHandler('esx_ambulancejob:giveItem', function(itemName, amount)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
|
||||
if xPlayer.job.name ~= 'ambulance' then
|
||||
print(('[esx_ambulancejob] [^2WARNING^7] "%s" attempted to spawn in an item!'):format(xPlayer.identifier))
|
||||
print(('[^2WARNING^7] Player ^5%s^7 Tried Giving Themselves -> ^5' .. itemName ..'^7!'):format(xPlayer.source))
|
||||
return
|
||||
elseif (itemName ~= 'medikit' and itemName ~= 'bandage') then
|
||||
print(('[esx_ambulancejob] [^2WARNING^7] "%s" attempted to spawn in an item!'):format(xPlayer.identifier))
|
||||
print(('[^2WARNING^7] Player ^5%s^7 Tried Giving Themselves -> ^5' .. itemName ..'^7!'):format(xPlayer.source))
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Locales['de'] = {
|
||||
['deposit'] = 'einzahlen',
|
||||
['invalid_amount'] = 'ungültiger Betrag',
|
||||
['no_player_nearby'] = 'kein Spieler in der Nähe',
|
||||
['press_input_context_to_open_menu'] = 'Drücke [E] um das Menü zu öffnen',
|
||||
['press_input_context_to_open_menu'] = 'Drücke [E] um das Bank Menü zu öffnen',
|
||||
['withdraw'] = 'Abheben',
|
||||
['boss_actions'] = 'boss Actions',
|
||||
['phone_receive'] = 'Bankkunde',
|
||||
|
||||
@@ -100,7 +100,7 @@ function CalculateBankSavings(d, h, m)
|
||||
end)
|
||||
|
||||
Async.parallelLimit(asyncTasks, 5, function(results)
|
||||
print('[BANK] Calculated interests')
|
||||
print('[^2INFO^7] Calculated interest Rate')
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
Locales['de'] = {
|
||||
['invalid_amount'] = 'Das ist ein ungültiger Geldbetrag.',
|
||||
['deposit_money'] = 'Du hast $%s eingezahlt',
|
||||
['withdraw_money'] = 'Du hast $%s abgehoben',
|
||||
['pincode_money'] = 'Dein neuer Pincode lautet: %s',
|
||||
['transfer_money'] = 'Du hast erfolgreich $%s Geld zu ID: %s transferiert.',
|
||||
['receive_transfer'] = 'Du hast $%s Geld von ID: %s erhalten.',
|
||||
['press_e_banking'] = 'Drücke [E] um die Bank aufzurufen',
|
||||
['access_bank'] = 'Zugang zur Bank',
|
||||
['banking_blip'] = 'Bank',
|
||||
['cant_do_it'] = "Du kannst es nicht tun!",
|
||||
['not_enough_money'] = "Nicht genug Geld, du brauchst $%s",
|
||||
['pincode_not_found'] = "Ungültiger Pincode",
|
||||
['pincode_found'] = "Gültiger PIN-Code...",
|
||||
['bank_name'] = "Fleeca Bank"
|
||||
}
|
||||
@@ -2,8 +2,8 @@ Locales['de'] = {
|
||||
['valid_purchase'] = 'Einkauf bestätigen?',
|
||||
['yes'] = 'ja',
|
||||
['no'] = 'nein',
|
||||
['not_enough_money'] = 'du hast nicht genug Geld',
|
||||
['not_enough_money'] = 'Du hast nicht genug Geld',
|
||||
['press_access'] = 'Drücke [E] um das Menü zu öffnen',
|
||||
['barber_blip'] = 'Friseur',
|
||||
['you_paid'] = 'du bezahlst $%s',
|
||||
['you_paid'] = 'Du bezahlst $%s',
|
||||
}
|
||||
@@ -1,3 +1,17 @@
|
||||
Config = {}
|
||||
Config.Locale = GetConvar('esx:locale', 'en')
|
||||
Config.Visible = true
|
||||
|
||||
Config.Food = {
|
||||
["bread"] = {
|
||||
status = 200000,
|
||||
remove = false
|
||||
}
|
||||
}
|
||||
|
||||
Config.Drinks = {
|
||||
["water"] = {
|
||||
status = 100000,
|
||||
remove = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Locales['br'] = {
|
||||
['used_bread'] = 'você comeu 1x pão',
|
||||
['used_water'] = 'você tomou 1x água',
|
||||
}
|
||||
['used_eat'] = 'você comeu 1x %s',
|
||||
['used_drink'] = 'você tomou 1x %s',
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Locales['en'] = {
|
||||
['used_bread'] = 'you have used 1x bread',
|
||||
['used_water'] = 'you have used 1x water',
|
||||
}
|
||||
['used_eat'] = 'you have used 1x %s',
|
||||
['used_drink'] = 'you have used 1x %s',
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
Locales['nl'] = {
|
||||
['used_eat'] = 'je hebt 1x %s gegeten',
|
||||
['used_drink'] = 'je hebt 1x %s gedronken',
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
INSERT INTO `items` (`name`, `label`, `weight`) VALUES
|
||||
('bread', 'Brood', 1),
|
||||
('water', 'Water', 1)
|
||||
;
|
||||
@@ -1,19 +1,29 @@
|
||||
ESX.RegisterUsableItem('bread', function(source)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
xPlayer.removeInventoryItem('bread', 1)
|
||||
|
||||
TriggerClientEvent('esx_status:add', source, 'hunger', 200000)
|
||||
TriggerClientEvent('esx_basicneeds:onEat', source)
|
||||
xPlayer.showNotification(_U('used_bread'))
|
||||
CreateThread(function()
|
||||
for k,v in pairs(Config.Food) do
|
||||
ESX.RegisterUsableItem(k, function(source)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
if v.remove then
|
||||
xPlayer.removeInventoryItem(k,1)
|
||||
end
|
||||
TriggerClientEvent("esx_status:add",source,"hunger",v.status)
|
||||
TriggerClientEvent('esx_basicneeds:onEat',source)
|
||||
xPlayer.showNotification(_U('used_eat', ESX.GetItemLabel(k)))
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
ESX.RegisterUsableItem('water', function(source)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
xPlayer.removeInventoryItem('water', 1)
|
||||
|
||||
TriggerClientEvent('esx_status:add', source, 'thirst', 200000)
|
||||
TriggerClientEvent('esx_basicneeds:onDrink', source)
|
||||
xPlayer.showNotification(_U('used_water'))
|
||||
CreateThread(function()
|
||||
for k,v in pairs(Config.Drinks) do
|
||||
ESX.RegisterUsableItem(k, function(source)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
if v.remove then
|
||||
xPlayer.removeInventoryItem(k,1)
|
||||
end
|
||||
TriggerClientEvent("esx_status:add",source,"thirst",v.status)
|
||||
TriggerClientEvent('esx_basicneeds:onDrink',source)
|
||||
xPlayer.showNotification(_U('used_drink', ESX.GetItemLabel(k)))
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
ESX.RegisterCommand('heal', 'admin', function(xPlayer, args, showError)
|
||||
@@ -29,4 +39,4 @@ AddEventHandler('txAdmin:events:healedPlayer', function(eventData)
|
||||
end
|
||||
|
||||
TriggerClientEvent('esx_basicneeds:healPlayer', eventData.id)
|
||||
end)
|
||||
end)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
Locales['de'] = {
|
||||
['invoices'] = 'Rechnungen',
|
||||
['invoices_item'] = '$%s',
|
||||
['received_invoice'] = 'Sie haben eine Rechnung ~r~erhalten.',
|
||||
['paid_invoice'] = 'Sie bezahlen eine Rechnung von ~r~$%s.',
|
||||
['received_invoice'] = 'Sie haben eine Rechnung erhalten.',
|
||||
['paid_invoice'] = 'Sie bezahlen eine Rechnung von $%s.',
|
||||
['no_invoices'] = 'Sie haben keine offenen Rechnungen.',
|
||||
['received_payment'] = 'Sie erhalten eine Zahlung von ~r~$%s.',
|
||||
['received_payment'] = 'Sie erhalten eine Zahlung von $%s.',
|
||||
['player_not_online'] = 'Die Person ist nicht erreichbar.',
|
||||
['no_money'] = 'Sie haben nicht genug Geld, um diese Rechnung zu bezahlen.',
|
||||
['target_no_money'] = 'Die Person kann die Rechnung nicht bezahlen.',
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
Locales['nl'] = {
|
||||
['invoices'] = 'Facturen',
|
||||
['invoices_item'] = '€%s',
|
||||
['received_invoice'] = 'Je hebt zojuist een ~r~factuur ontvangen',
|
||||
['paid_invoice'] = 'Je hebt een factuur betaald van ~r~€%s',
|
||||
['no_invoices'] = 'Je hoeft momenteel geen facturen te betalen',
|
||||
['received_payment'] = 'je hebt een bedrag ontvangen van ~r~€%s',
|
||||
['player_not_online'] = 'de speler is niet online',
|
||||
['no_money'] = 'je hebt niet genoeg geld om deze factuur te betalen',
|
||||
['target_no_money'] = 'de speler ~r~heeft niet genoeg geld om te betalen!',
|
||||
['keymap_showbills'] = 'open factuur menu',
|
||||
}
|
||||
@@ -2,9 +2,9 @@ Locales['de'] = {
|
||||
-- shop
|
||||
['boat_shop'] = 'Bootsladen',
|
||||
['boat_shop_open'] = 'Drücke [E] um auf den Bootsladen zuzugreifen .',
|
||||
['boat_shop_confirm'] = 'Kaufen <span style="color: yellow;">%s</span> for <span style="color: orange;">$%s</span>?',
|
||||
['boat_shop_confirm'] = 'Kaufen <span style="color: yellow;">%s</span> für <span style="color: orange;">$%s</span>?',
|
||||
['boat_shop_bought'] = 'Du hast ein %s für $%s gekauft',
|
||||
['boat_shop_nomoney'] = 'Du kannst dir ~r~ dass nicht leisten!',
|
||||
['boat_shop_nomoney'] = 'Du kannst dir dass nicht leisten!',
|
||||
['confirm_no'] = 'Nein',
|
||||
['confirm_yes'] = 'Ja',
|
||||
|
||||
@@ -12,7 +12,7 @@ Locales['de'] = {
|
||||
['garage'] = 'Bootsgarage',
|
||||
['garage_open'] = 'Drücke [E] um auf deine Bootsgarage zuzugreifen.',
|
||||
['garage_store'] = 'Drücke [E] um auf den Laden in deiner Bootsgarage zuzugreifen.',
|
||||
['garage_taken'] = 'Das Boot wurde ausgeparkt!!',
|
||||
['garage_taken'] = 'Das Boot wurde ausgeparkt!',
|
||||
['garage_stored'] = 'Das Boot wurde sicher in Ihre Garage gelagert!',
|
||||
['garage_noboats'] = 'Sie haben besitzen keine Boote! Besuchen Sie den Bootsladen, um eins zu kaufen.',
|
||||
['garage_blocked'] = 'Das Boot kann nicht ausgeparkt werden, weil ein anderes Fahrzeug den Spawn-Punkt blockiert!',
|
||||
@@ -23,7 +23,7 @@ Locales['de'] = {
|
||||
['license_buy_no'] = 'Nein',
|
||||
['license_buy_yes'] = 'Bootsführerschein kaufen <span style="color: green;">$%s</span>',
|
||||
['license_bought'] = 'Du hast den Bootsführerschein für $%s gekauft',
|
||||
['license_nomoney'] = 'Du kannst dir den ~r~Bootsführerschein nicht leisten!',
|
||||
['license_nomoney'] = 'Du kannst dir den Bootsführerschein nicht leisten!',
|
||||
|
||||
-- blips
|
||||
['blip_garage'] = 'Bootsgarage',
|
||||
|
||||
@@ -7,7 +7,7 @@ function ParkBoats()
|
||||
['@type'] = 'boat'
|
||||
}, function (rowsChanged)
|
||||
if rowsChanged > 0 then
|
||||
print(('esx_boat: %s boat(s) have been stored!'):format(rowsChanged))
|
||||
print(('[^2INFO^7] Stored ^5%s^7 %s !'):format(rowsChanged, rowsChanged > 1 and 'boats' or 'boat'))
|
||||
end
|
||||
end)
|
||||
end
|
||||
@@ -18,7 +18,7 @@ ESX.RegisterServerCallback('esx_boat:buyBoat', function(source, cb, vehicleProps
|
||||
|
||||
-- vehicle model not found
|
||||
if price == 0 then
|
||||
print(('esx_boat: %s attempted to exploit the shop! (invalid vehicle model)'):format(xPlayer.identifier))
|
||||
print(('[^2INFO^7] Player ^5%s^7 Attempted To Exploit Shop'):format(xPlayer.source))
|
||||
cb(false)
|
||||
else
|
||||
if xPlayer.getMoney() >= price then
|
||||
@@ -49,7 +49,7 @@ AddEventHandler('esx_boat:takeOutVehicle', function(plate)
|
||||
['@plate'] = plate
|
||||
}, function(rowsChanged)
|
||||
if rowsChanged == 0 then
|
||||
print(('esx_boat: %s exploited the garage!'):format(xPlayer.identifier))
|
||||
print(('[^2INFO^7] Player ^5%s^7 Attempted To Exploit Garage'):format(xPlayer.source))
|
||||
end
|
||||
end)
|
||||
end)
|
||||
@@ -62,10 +62,6 @@ ESX.RegisterServerCallback('esx_boat:storeVehicle', function (source, cb, plate)
|
||||
['@owner'] = xPlayer.identifier,
|
||||
['@plate'] = plate
|
||||
}, function(rowsChanged)
|
||||
if rowsChanged == 0 then
|
||||
print(('esx_boat: %s attempted to store an boat they don\'t own!'):format(xPlayer.identifier))
|
||||
end
|
||||
|
||||
cb(rowsChanged)
|
||||
end)
|
||||
end)
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
Locales['de'] = {
|
||||
['valid_this_purchase'] = 'einkauf bestätigen?',
|
||||
['valid_this_purchase'] = 'Einkauf bestätigen?',
|
||||
['yes'] = 'ja',
|
||||
['no'] = 'nein',
|
||||
['not_enough_money'] = 'du hast nicht genug Geld',
|
||||
['press_menu'] = 'drücke [E] um das Menü zu öffnen',
|
||||
['clothes'] = 'kleidung',
|
||||
['you_paid'] = 'du bezahlst $%s',
|
||||
['save_in_dressing'] = 'do you want to save the outfit in your property?',
|
||||
['name_outfit'] = 'name des outfits?',
|
||||
['saved_outfit'] = 'the outfit has been saved!',
|
||||
['not_enough_money'] = 'Du hast nicht genug Geld',
|
||||
['press_menu'] = 'Drücke [E] um das Menü zu öffnen',
|
||||
['clothes'] = 'Kleidung',
|
||||
['you_paid'] = 'Du bezahlst $%s',
|
||||
['save_in_dressing'] = 'Wollen sie das Outfit in ihrer Garderobe speichern?',
|
||||
['name_outfit'] = 'Name des outfits?',
|
||||
['saved_outfit'] = 'Das outfit wurde gespeichert',
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
Locales['nl'] = {
|
||||
['valid_this_purchase'] = 'bevestig deze aankoop?',
|
||||
['yes'] = 'ja',
|
||||
['no'] = 'nee',
|
||||
['not_enough_money'] = 'je hebt niet genoeg geld',
|
||||
['press_menu'] = 'klik op [E] om de kleding winkel te bezoeken.',
|
||||
['clothes'] = 'kleding winkel',
|
||||
['you_paid'] = 'je betaalde $%s',
|
||||
['save_in_dressing'] = 'wil je deze outfit opslaan in je garderobe?',
|
||||
['name_outfit'] = 'geef je outfit een naam',
|
||||
['saved_outfit'] = 'je outfit is opgeslagen.',
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
Locales['de'] = {
|
||||
['you_paid'] = 'Du hast $%s an die Fahrschule gezahlt.',
|
||||
['go_next_point'] = 'Fahre zum nächsten Punkt!',
|
||||
['in_town_speed'] = 'Du begibst dich in ein Wohngebiet! Geschwindigkeitsbegrenzung: %s km/h',
|
||||
['next_point_speed'] = 'Begieb dich zum nächsten Punkt! Geschwindigkeitsbegrenzung: %s km/h',
|
||||
['stop_for_ped'] = '~r~Halte für den Fußgänger.',
|
||||
['good_lets_cont'] = 'Gut gemacht, weiter so.',
|
||||
['stop_look_left'] = '~r~Halte an und schau nach links. Geschwindigkeitsbegrenzung: %s km/h',
|
||||
['good_turn_right'] = 'Weiter so, biege rechts ab und folge der Route.',
|
||||
['watch_traffic_lightson'] = 'Pass auf den Verkehr auf und achte auf deine Beleuchtung!',
|
||||
['stop_for_passing'] = '~r~Halte an für weitere Fahrzeuge!',
|
||||
['hway_time'] = 'Es ist Zeit auf der Autobahn zu fahren! Geschwindigkeitsbegrenzung: %s km/h',
|
||||
['gratz_stay_alert'] = 'Sehr gut, bleibe jedoch immer achtsam während der Fahrt!',
|
||||
['passed_test'] = '~g~Du hast bestanden, herzlichen Glückwunsch!',
|
||||
['failed_test'] = '~r~Du hast nicht bestanden, viel Glück beim nächsten Mal!',
|
||||
['theory_test'] = 'Theoretische Fahrprüfung',
|
||||
['road_test_car'] = 'Praktische Fahrprüfung',
|
||||
['road_test_bike'] = 'Motorrad Fahrprüfung',
|
||||
['road_test_truck'] = 'LKW Fahrprüfung',
|
||||
['school_item'] = '$%s',
|
||||
['driving_school'] = 'Fahrschule',
|
||||
['press_open_menu'] = 'Drücke [~y~E~s~] um das Menü zu öffnen.',
|
||||
['driving_school_blip'] = 'Fahrschule',
|
||||
['driving_test_complete'] = 'Fahrschultest abgeschlossen.',
|
||||
['driving_too_fast'] = '~r~Du fährst zu schnell, die Geschwindigkeitsbegrenzung ist: %s km/h!',
|
||||
['errors'] = 'Fehler: ~r~%s/%s',
|
||||
['you_damaged_veh'] = 'Du hast das Fahrzeug beschädigt.',
|
||||
['not_enough_money'] = 'Du hast nicht genügend Geld.',
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO `licenses` (`type`, `label`) VALUES
|
||||
('dmv', 'Probeführerschein'),
|
||||
('drive', 'Führerschein'),
|
||||
('drive_bike', 'Motorradschein'),
|
||||
('drive_truck', 'Lastkraftschein')
|
||||
;
|
||||
@@ -0,0 +1,31 @@
|
||||
Locales ['nl'] = {
|
||||
-- weed
|
||||
['weed_pickupprompt'] = 'druk op [E] om de Cannabis plant te oogsten.',
|
||||
['weed_quitprocess'] = 'druk op [E] om Proces Cannabis te stoppen.',
|
||||
['weed_inventoryfull'] = 'heb je geen voorraadruimte meer voor Cannabis.',
|
||||
['weed_processprompt'] = 'druk op [E] om Proces Cannabis te starten.',
|
||||
['weed_processingstarted'] = 'Cannabis verwerken tot marihuana...',
|
||||
['weed_processingfull'] = 'verwerking ~r~geannuleerd wegens volle voorraad!',
|
||||
['weed_processingenough'] = 'u moet 3x Cannabis hebben om te kunnen verwerken.',
|
||||
['weed_processed'] = 'je hebt 3x Cannabis verwerkt tot 1x Marihuana',
|
||||
['weed_processingtoofar'] = 'het proces is geannuleerd omdat u het gebied verlaten heeft.',
|
||||
|
||||
-- drug dealer
|
||||
['dealer_prompt'] = 'druk op [E] om met de ~r~Drugs Dealer te praten.',
|
||||
['dealer_title'] = 'drugsdealer',
|
||||
['dealer_item'] = '$%s',
|
||||
['dealer_notenough'] = 'heb je daar niet genoeg van om te verkopen!',
|
||||
['dealer_sold'] = 'je hebt %sx %s verkocht voor $%s',
|
||||
|
||||
-- license
|
||||
['license_title'] = 'u moet een verwerkingsvergunning hebben om dit product te verwerken, die kunt u hier kopen.',
|
||||
['license_no'] = 'nee',
|
||||
['license_bought'] = 'je kocht de %s voor ~r~$%s',
|
||||
['license_bought_fail'] = 'je kunt je geen %s veroorloven!',
|
||||
['license_weed'] = 'Licentie voor wietverwerking',
|
||||
|
||||
-- blips
|
||||
['blip_weedfield'] = 'onkruidveld',
|
||||
['blip_weedprocessing'] = 'onkruidverwerking',
|
||||
['blip_drugdealer'] = 'drugsdealer',
|
||||
}
|
||||
@@ -389,10 +389,7 @@ CreateThread(function()
|
||||
currentPart = 'GetOutPoint'
|
||||
|
||||
if IsControlJustReleased(0, 38) and not menuIsShowed then
|
||||
print("2")
|
||||
ESX.TriggerServerCallback('esx_garage:getVehiclesInPound', function(vehicles)
|
||||
print(1)
|
||||
print(vehicles)
|
||||
if next(vehicles) then
|
||||
menuIsShowed = true
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
Locales["de"] = {
|
||||
["parking_blip_name"] = 'Garage',
|
||||
["Impound_blip_name"] = 'Abschlepphof',
|
||||
["access_parking"] = 'Drücke [E] to access the car park.',
|
||||
["access_Impound"] = 'Drücke [E] um den Abschlepphof zu öffnen.',
|
||||
["park_veh"] = 'Drücke [E] um das Fahrzeug zu parken.',
|
||||
["not_owning_veh"] = 'Du besitzt dieses Fahrzeug nicht!',
|
||||
['veh_released'] = 'Du hast dein Fahrzeug erfolgreich abgeholt.',
|
||||
['veh_Impound_released'] = 'Du hast dein Fahrzeug erfolgreich zurückgeholt.',
|
||||
['veh_stored'] = 'Erfolgreich gelagertes Fahrzeug',
|
||||
['veh_impounded'] = 'Beschlagnahmtes Fahrzeug',
|
||||
['no_veh_parking'] = 'Kein Fahrzeug von dir ist hier eingelagert.',
|
||||
['no_veh_impounded'] = 'Kein Fahrzeug von dir ist hier beschlagnahmt.',
|
||||
['no_veh_Impound'] = 'Du hast keine beschlagnahmten Fahrzeuge.',
|
||||
['veh_model'] = 'Model',
|
||||
['veh_plate'] = 'Kennzeichen',
|
||||
['veh_condition'] = 'Zustand',
|
||||
['veh_action'] = 'Aktion',
|
||||
['impound_action'] = 'Beschlagnahme',
|
||||
['veh_exit'] = 'Fahrzeug zurückholen',
|
||||
['pay_impound'] = 'Beschlagnahme bezahlen',
|
||||
['veh_block'] = 'Fahrzeug kann nicht zurückgeholt werden da der Spawn blockiert ist.',
|
||||
['pay_Impound_bill'] = 'Du hast $%s zum Abschlepphof bezahlt.',
|
||||
['missing_money'] = 'Du hast nicht genug Geld.'
|
||||
}
|
||||
@@ -1,16 +1,16 @@
|
||||
Locales['de'] = {
|
||||
['shop_robbery'] = 'ladenraub',
|
||||
['press_to_rob'] = 'drücke [E] ~o~zum Ausrauben %s',
|
||||
['robbery_timer'] = 'ladenraub: ~r~%s Sekunden übrig!',
|
||||
['shop_robbery'] = 'Ladenraub',
|
||||
['press_to_rob'] = 'Drücke [E] zum Ausrauben %s',
|
||||
['robbery_timer'] = 'Ladenraub: %s Sekunden übrig!',
|
||||
['recently_robbed'] = 'dieser Laden wurde bereits ausgeraubt. Bitte warte %s sekunden!',
|
||||
['rob_in_prog'] = '~r~Raub im Gange bei: %s',
|
||||
['started_to_rob'] = 'du hast einen Raub gestartet %s',
|
||||
['alarm_triggered'] = 'der Alarm wurde ausgelöst',
|
||||
['robbery_complete'] = '~r~Raub erfolgreich. Du ~o~hast $%s gestohlen',
|
||||
['robbery_complete_at'] = '~r~Raub erfolgreich bei: %s',
|
||||
['robbery_cancelled'] = 'der Raub wurde abgebrochen, du bekommst nichts!',
|
||||
['robbery_cancelled_at'] = '~r~Raub abgebrochen bei: %s',
|
||||
['min_police'] = 'es müssen mindestens %s Cops im Dienst sein um ein Raub zu starten.',
|
||||
['robbery_already'] = '~r~Ein Raub ist bereits im gange.',
|
||||
['no_threat'] = 'du machst den Ladenbesitzer keine Angst!',
|
||||
['rob_in_prog'] = 'Raub im Gange bei: %s',
|
||||
['started_to_rob'] = 'Du hast einen Raub gestartet %s',
|
||||
['alarm_triggered'] = 'Der Alarm wurde ausgelöst',
|
||||
['robbery_complete'] = 'Raub erfolgreich. Du hast $%s gestohlen',
|
||||
['robbery_complete_at'] = 'Raub erfolgreich bei: %s',
|
||||
['robbery_cancelled'] = 'Der Raub wurde abgebrochen, du bekommst nichts!',
|
||||
['robbery_cancelled_at'] = 'Raub abgebrochen bei: %s',
|
||||
['min_police'] = 'Es müssen mindestens %s Polizisten im Dienst sein um ein Raub zu starten.',
|
||||
['robbery_already'] = 'Ein Raub ist bereits im gange.',
|
||||
['no_threat'] = 'Du machst den Ladenbesitzer keine Angst!',
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
Locales['nl'] = {
|
||||
['shop_robbery'] = 'Winkel Overval',
|
||||
['press_to_rob'] = 'Druk op ~INPUT_CONTEXT~ om ~b~%s~s~ te ~o~overvallen~s~ ',
|
||||
['robbery_timer'] = 'Winkel overval: nog ~r~%s~s~ seconden wachten',
|
||||
['recently_robbed'] = 'Deze winkel is net overvallen . Wacht nog ~y~%s~s~ seconden voordat je deze winkel kan overvallen',
|
||||
['rob_in_prog'] = '~r~Overval aan de gang bij de ~b~%s~s~',
|
||||
['started_to_rob'] = 'Je bent begonnen met het overvallen van de ~y~%s~s~',
|
||||
['alarm_triggered'] = 'Het alarm gaat af!',
|
||||
['robbery_complete'] = '~r~De overval is succesvol ~s~, je hebt ~g~$%s~s~ ~o~buitgemaakt~s~',
|
||||
['robbery_complete_at'] = '~r~De overval bij de ~y~%s~s~ is geslaagd',
|
||||
['robbery_cancelled'] = 'De overval is gestopt!',
|
||||
['robbery_cancelled_at'] = '~r~De overval bij de ~b~%s~s~ is gestopt!',
|
||||
['min_police'] = 'Er moeten minimaal ~b~%s agenten~s~ in de stad aanwezig zijn.',
|
||||
['robbery_already'] = '~r~Er is al een overval gaande.',
|
||||
['no_threat'] = 'Je vormt geen Bedreiging voor de eigenaar',
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
Locales['de'] = {
|
||||
['new_job'] = 'Du hast einen neuen Job!',
|
||||
['access_job_center'] = 'Drücke ~INPUT_PICKUP~ um das Arbeitsamt zu öffnen.',
|
||||
['access_job_center'] = 'Drücke [E] um das Arbeitsamt zu öffnen.',
|
||||
['job_center'] = 'Arbeitsamt',
|
||||
["blip_text"] = "Job Center"
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
Locales['it'] = {
|
||||
['new_job'] = 'Nuovo lavoro: ~b~%s~s~ !',
|
||||
['access_job_center'] = 'Premi ~b~[E]~s~ per aprire la scelta dei lavori.',
|
||||
['job_center'] = 'Seleziona un lavoro.',
|
||||
["blip_text"] = "Centro lavori"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
Locales['nl'] = {
|
||||
['new_job'] = 'Nieuwe baan: ~b~%s~s~ !',
|
||||
['access_job_center'] = 'Klik op ~b~[E]~s~ om het uitzendbureau te openen.',
|
||||
['job_center'] = 'Selecteer een baan.',
|
||||
["blip_text"] = "Uitzendbureau"
|
||||
}
|
||||
@@ -41,7 +41,7 @@ AddEventHandler('esx_joblisting:setJob', function(job)
|
||||
if ESX.DoesJobExist(job, 0) then
|
||||
xPlayer.setJob(job, 0)
|
||||
else
|
||||
print("[^1ERROR^7] Tried Setting User To Invalid Job - ^5"..job .."^7!")
|
||||
print("[^1ERROR^7] Tried Setting User ^5".. source .. "^7 To Invalid Job - ^5"..job .."^7!")
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
Locales['de'] = {
|
||||
-- Global menus
|
||||
['cloakroom'] = 'Umkleide',
|
||||
['cloak_change'] = 'Drücke ~INPUT_PICKUP~ to change clothes.',
|
||||
['cloak_change'] = 'Drücke [E] to change clothes.',
|
||||
['citizen_wear'] = 'Zivilkleidung',
|
||||
['job_wear'] = 'Arbeitskleidung',
|
||||
['bank_deposit_returned'] = 'Ein Pfand über $%s wurde dir zurückgegeben.',
|
||||
['bank_deposit_taken'] = 'Ein Pfand über ~r~$%s wurde von dir genommen.',
|
||||
['bank_deposit_taken'] = 'Ein Pfand über $%s wurde von dir genommen.',
|
||||
['caution_afford'] = 'Du kannst die Kaution über $%s nicht bezahlen',
|
||||
['foot_work'] = 'Du musst dafür zu Fuß sein.',
|
||||
['next_point'] = 'Gehe zum nächsten Schritt nach diesem.',
|
||||
@@ -15,101 +15,101 @@ Locales['de'] = {
|
||||
['max_limit'] = 'Du kannst nicht mehr %s tragen',
|
||||
['not_enough'] = 'Du hast nicht genug %s um diese Aufgabe weiterhin zu erledigen.',
|
||||
['spawn_veh'] = 'Fahrzeug spawnen',
|
||||
['spawn_veh_button'] = 'Drücke ~INPUT_PICKUP~ um ein Lieferfahrzeug zu holen.',
|
||||
['spawn_truck_button'] = 'Drücke ~INPUT_PICKUP~ um einen Truck zu spawnen.',
|
||||
['spawn_veh_button'] = 'Drücke [E] um ein Lieferfahrzeug zu holen.',
|
||||
['spawn_truck_button'] = 'Drücke [E] um einen Truck zu spawnen.',
|
||||
['spawn_blocked'] = 'Ein Fahrzeug blockiert den Spawnpoint!',
|
||||
['service_vh'] = 'Service Fahrzeug',
|
||||
['return_vh'] = 'Fahrzeugrückgabe',
|
||||
['return_vh_button'] = 'Drücke ~INPUT_PICKUP~ um das Fahrzeug zurückzugeben.',
|
||||
['return_vh_button'] = 'Drücke [E] um das Fahrzeug zurückzugeben.',
|
||||
['delivery_point'] = 'Lieferpunkt',
|
||||
['delivery'] = 'Lieferung',
|
||||
['public_enter'] = 'Drücke ~INPUT_PICKUP~ um das Gebäude zu betreten.',
|
||||
['public_leave'] = 'Drücke ~INPUT_PICKUP~ um das Gebäude zu verlassen.',
|
||||
['public_enter'] = 'Drücke [E] um das Gebäude zu betreten.',
|
||||
['public_leave'] = 'Drücke [E] um das Gebäude zu verlassen.',
|
||||
|
||||
-- Lumber Jack job
|
||||
['lj_locker_room'] = 'Umkleide',
|
||||
['lj_mapblip'] = 'Holzstapel',
|
||||
['lj_wood'] = 'Holz',
|
||||
['lj_pickup'] = 'Drücke ~INPUT_PICKUP~ um Holz zu sammeln.',
|
||||
['lj_pickup'] = 'Drücke [E] um Holz zu sammeln.',
|
||||
['lj_woodcutting'] = 'Holzverarbeitung',
|
||||
['lj_cutwood_button'] = 'Drücke ~INPUT_PICKUP~ um das Holz zu schneiden.',
|
||||
['lj_cutwood_button'] = 'Drücke [E] um das Holz zu schneiden.',
|
||||
['lj_board'] = 'Bretter',
|
||||
['lj_planks'] = 'Holz verarbeiten',
|
||||
['lj_cutwood'] = 'Holz schneiden',
|
||||
['lj_pick_boards'] = 'Drücke ~INPUT_PICKUP~ um Bretter zu bekommen.',
|
||||
['lj_deliver_button'] = 'Drücke ~INPUT_PICKUP~ um die Bretter zu liefern.',
|
||||
['lj_pick_boards'] = 'Drücke [E] um Bretter zu bekommen.',
|
||||
['lj_deliver_button'] = 'Drücke [E] um die Bretter zu liefern.',
|
||||
|
||||
-- Fisherman
|
||||
['fm_fish_locker'] = 'Umkleide',
|
||||
['fm_fish'] = 'Fisch',
|
||||
['fm_fish_area'] = 'Fischerzone',
|
||||
['fm_fish_button'] = 'Drücke ~INPUT_PICKUP~ um zu fischen.',
|
||||
['fm_fish_button'] = 'Drücke [E] um zu fischen.',
|
||||
['fm_spawnboat_title'] = 'Boot spawnen',
|
||||
['fm_spawnboat'] = 'Drücke ~INPUT_PICKUP~ um ein Boot auszuparken.',
|
||||
['fm_spawnboat'] = 'Drücke [E] um ein Boot auszuparken.',
|
||||
['fm_boat_title'] = 'Boot',
|
||||
['fm_boat_return_title'] = 'Bootsrückgabe',
|
||||
['fm_boat_return_button'] = 'Drücke ~INPUT_PICKUP~ um das Boot zurückzugeben.',
|
||||
['fm_deliver_fish'] = 'Drücke ~INPUT_PICKUP~ um den Fisch zu liefern.',
|
||||
['fm_boat_return_button'] = 'Drücke [E] um das Boot zurückzugeben.',
|
||||
['fm_deliver_fish'] = 'Drücke [E] um den Fisch zu liefern.',
|
||||
|
||||
-- Fuel
|
||||
['f_oil_refiner'] = 'Umkleide',
|
||||
['f_drill_oil'] = 'Nach Öl bohren',
|
||||
['f_fuel'] = 'Öl',
|
||||
['f_drillbutton'] = 'Drücke ~INPUT_PICKUP~ um nach Öl zu bohren.',
|
||||
['f_drillbutton'] = 'Drücke [E] um nach Öl zu bohren.',
|
||||
['f_fuel_refine'] = 'Öl verarbeiten',
|
||||
['f_refine_fuel_button'] = 'Drücke ~INPUT_PICKUP~ zum verarbeiten.',
|
||||
['f_refine_fuel_button'] = 'Drücke [E] zum verarbeiten.',
|
||||
['f_fuel_mixture'] = 'Öl mischen',
|
||||
['f_gas'] = 'Benzin',
|
||||
['f_fuel_mixture_button'] = 'Drücke ~INPUT_PICKUP~ um das Öl zu mixen.',
|
||||
['f_fuel_mixture_button'] = 'Drücke [E] um das Öl zu mixen.',
|
||||
['f_deliver_gas'] = 'Benzin liefern',
|
||||
['f_deliver_gas_button'] = 'Drücke ~INPUT_PICKUP~ um Benzin zu liefern.',
|
||||
['f_deliver_gas_button'] = 'Drücke [E] um Benzin zu liefern.',
|
||||
|
||||
-- Miner
|
||||
['m_miner_locker'] = 'Umkleide',
|
||||
['m_rock'] = 'Stein',
|
||||
['m_pickrocks'] = 'Drücke ~INPUT_PICKUP~ um Stein abzubauen.',
|
||||
['m_pickrocks'] = 'Drücke [E] um Stein abzubauen.',
|
||||
['m_washrock'] = 'Steine waschen',
|
||||
['m_rock_button'] = 'Drücke ~INPUT_PICKUP~ um die Steine zu waschen.',
|
||||
['m_rock_button'] = 'Drücke [E] um die Steine zu waschen.',
|
||||
['m_rock_smelting'] = 'Steine schmelzen',
|
||||
['m_copper'] = 'Kupfer',
|
||||
['m_sell_copper'] = 'Kupfer Verkäufer',
|
||||
['m_deliver_copper'] = 'Drücke ~INPUT_PICKUP~ um Kupfer zu liefern.',
|
||||
['m_deliver_copper'] = 'Drücke [E] um Kupfer zu liefern.',
|
||||
['m_iron'] = 'Eisen',
|
||||
['m_sell_iron'] = 'Eisen Verkäufer',
|
||||
['m_deliver_iron'] = 'Drücke ~INPUT_PICKUP~ um Eisen zu liefern.',
|
||||
['m_deliver_iron'] = 'Drücke [E] um Eisen zu liefern.',
|
||||
['m_gold'] = 'Gold',
|
||||
['m_sell_gold'] = 'Gold verkaufen',
|
||||
['m_deliver_gold'] = 'Drücke ~INPUT_PICKUP~ um Gold zu verkaufen.',
|
||||
['m_deliver_gold'] = 'Drücke [E] um Gold zu verkaufen.',
|
||||
['m_diamond'] = 'Diamant',
|
||||
['m_sell_diamond'] = 'Diamanten verkaufen',
|
||||
['m_deliver_diamond'] = 'Drücke ~INPUT_PICKUP~ um die Diamanten zu verkaufen.',
|
||||
['m_melt_button'] = 'Drücke ~INPUT_PICKUP~ um die Steine zu schmelzen.',
|
||||
['m_deliver_diamond'] = 'Drücke [E] um die Diamanten zu verkaufen.',
|
||||
['m_melt_button'] = 'Drücke [E] um die Steine zu schmelzen.',
|
||||
|
||||
-- Reporter
|
||||
['reporter_name'] = 'san Andreas Times',
|
||||
['reporter_garage'] = 'Drücke ~INPUT_PICKUP~ to go down to the garage.',
|
||||
['reporter_garage'] = 'Drücke [E] to go down to the garage.',
|
||||
|
||||
-- Slaughterer
|
||||
['s_slaughter_locker'] = 'Umkleide',
|
||||
['s_hen'] = 'Hühner',
|
||||
['s_alive_chicken'] = 'lebende Hühner',
|
||||
['s_catch_hen'] = 'Drücke ~INPUT_PICKUP~ um Hühner zu fangen.',
|
||||
['s_catch_hen'] = 'Drücke [E] um Hühner zu fangen.',
|
||||
['s_slaughtered_chicken'] = 'Hühner verpacken',
|
||||
['s_chop_animal'] = 'Drücke ~INPUT_PICKUP~ um die Hühner zu schneiden.',
|
||||
['s_slaughtered'] = 'SChlachthaus',
|
||||
['s_chop_animal'] = 'Drücke [E] um die Hühner zu schneiden.',
|
||||
['s_slaughtered'] = 'Schlachthaus',
|
||||
['s_package'] = 'Verpackung',
|
||||
['s_packagechicken'] = 'Hühnchen in Verpackung',
|
||||
['s_unpackaged'] = 'Verpackbereite Hühnchen',
|
||||
['s_unpackaged_button'] = 'Drücke ~INPUT_PICKUP~ um die Hühnchen zu verpacken.',
|
||||
['s_deliver'] = 'Drücke ~INPUT_PICKUP~ um die Hühnchen zu liefern.',
|
||||
['s_unpackaged_button'] = 'Drücke [E] um die Hühnchen zu verpacken.',
|
||||
['s_deliver'] = 'Drücke [E] um die Hühnchen zu liefern.',
|
||||
|
||||
-- Dress Designer
|
||||
['dd_dress_locker'] = 'dress Designer\'s Locker Room',
|
||||
['dd_wool'] = 'wool',
|
||||
['dd_pickup'] = 'Drücke ~INPUT_PICKUP~ to retrieve wool.',
|
||||
['dd_fabric'] = 'fabric',
|
||||
['dd_makefabric'] = 'Drücke ~INPUT_PICKUP~ to make fabric.',
|
||||
['dd_clothing'] = 'clothing',
|
||||
['dd_makeclothing'] = 'Drücke ~INPUT_PICKUP~ to retrieve clothing.',
|
||||
['dd_deliver_clothes'] = 'Drücke ~INPUT_PICKUP~ to deliver the clothes.',
|
||||
['dd_wool'] = 'wolle',
|
||||
['dd_pickup'] = 'Drücke [E] um Wolle zu gewinnen.',
|
||||
['dd_fabric'] = 'stoff',
|
||||
['dd_makefabric'] = 'Drücke [E] zur Herstellung von Stoffen.',
|
||||
['dd_clothing'] = 'kleidung',
|
||||
['dd_makeclothing'] = 'Drücke [E] um Kleidung herzustellen.',
|
||||
['dd_deliver_clothes'] = 'Drücke [E] um Kleidung zu liefern.',
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
Locales['de'] = {
|
||||
['by_default'] = 'Standard',
|
||||
['installed'] = 'installed',
|
||||
['installed'] = 'Installiert',
|
||||
['already_own'] = 'Sie besitzen bereits: %s',
|
||||
['not_enough_money'] = 'du kannst dir diese mod nicht leisten',
|
||||
['not_enough_money'] = 'Du kannst dir diese mod nicht leisten',
|
||||
['purchased'] = 'Du hast diese Mod gekauft!',
|
||||
['press_custom'] = 'Drücke ~INPUT_PICKUP~ um dein Fahrzeug auf zu Tunen',
|
||||
['press_custom'] = 'Drücke [E] um dein Fahrzeug auf zu Tunen',
|
||||
['level'] = 'level %s',
|
||||
['neon'] = 'Neon',
|
||||
['blip_name'] = 'Tuning',
|
||||
|
||||
@@ -45,7 +45,7 @@ AddEventHandler('esx_lscustom:refreshOwnedVehicle', function(vehicleProps)
|
||||
if vehicleProps.model == vehicle.model then
|
||||
MySQL.update('UPDATE owned_vehicles SET vehicle = ? WHERE plate = ?', {json.encode(vehicleProps), vehicleProps.plate})
|
||||
else
|
||||
print(('esx_lscustom: %s attempted to upgrade vehicle with mismatching vehicle model!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To upgrade with mismatching vehicle model'):format(xPlayer.source))
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
Locales['de'] = {
|
||||
['mechanic'] = 'Mechaniker',
|
||||
['drive_to_indicated'] = 'Fahre zum markierten Bereich',
|
||||
['mission_canceled'] = 'Mission abgebrochen',
|
||||
['vehicle_list'] = 'Fahrzeugliste',
|
||||
['work_wear'] = 'Arbeitskleidung',
|
||||
['civ_wear'] = 'Zivilkleidung',
|
||||
['deposit_stock'] = 'Bestand Einzahlen',
|
||||
['withdraw_stock'] = 'Verfügbar Abheben',
|
||||
['boss_actions'] = 'Inhaber Aktionen',
|
||||
['service_vehicle'] = 'Service Fahrzeug',
|
||||
['flat_bed'] = 'Pritschenwagen',
|
||||
['tow_truck'] = 'Abschleppwagen',
|
||||
['service_full'] = 'Gesamt Service: ',
|
||||
['open_actions'] = 'Drücke [E] um Menü zu öffnen',
|
||||
['harvest'] = 'Sammeln',
|
||||
['harvest_menu'] = 'Drücke [E] um Farm Menü aufzurufen',
|
||||
['not_experienced_enough'] = 'Du bist nicht erfahren genug um dies zu tun!',
|
||||
['gas_can'] = 'Benzinkanister',
|
||||
['repair_tools'] = 'Reparaturwerkzeug',
|
||||
['body_work_tools'] = 'Karosseriewerkzeug',
|
||||
['blowtorch'] = 'Schweißgerät',
|
||||
['repair_kit'] = 'Reparatur Kit',
|
||||
['body_kit'] = 'Karosserie Kit',
|
||||
['craft'] = 'Herstellen',
|
||||
['craft_menu'] = 'Drücke [E] um Herstellungsmenü zu öffnen.',
|
||||
['billing'] = 'Rechnungen',
|
||||
['hijack'] = 'Aufgebrochen',
|
||||
['repair'] = 'Reparieren',
|
||||
['clean'] = 'Reinigen',
|
||||
['imp_veh'] = 'Fahrzeug einziehen',
|
||||
['place_objects'] = 'Objekte platzieren',
|
||||
['invoice_amount'] = 'Rechnungsbetrag',
|
||||
['amount_invalid'] = 'Ungültiger Betrag',
|
||||
['no_players_nearby'] = 'Es ist kein Spieler in der Nähe',
|
||||
['no_vehicle_nearby'] = 'Es ist kein Fahrzeug in der Nähe',
|
||||
['inside_vehicle'] = 'Du musst vorher aussteigen!',
|
||||
['vehicle_unlocked'] = 'Fahrzeug geöffnet',
|
||||
['vehicle_repaired'] = 'Fahrzeug repariert',
|
||||
['vehicle_cleaned'] = 'Fahrzeug gereinigt',
|
||||
['vehicle_impounded'] = 'Fahrzeug wurde eingezogen',
|
||||
['must_seat_driver'] = 'Setz dich als Fahrer hinein!',
|
||||
['must_near'] = 'In die Nähe des Fahrzeugs stellen was eingezogen werden soll',
|
||||
['vehicle_success_attached'] = 'Fahrzeug fixiert',
|
||||
['please_drop_off'] = 'Stelle Fahrzeug in der Garage ab',
|
||||
['cant_attach_own_tt'] = 'Du kannst nicht den eigenen Abschleppwagen fixieren',
|
||||
['no_veh_att'] = 'Kein Fahrzeug zum fixieren gefunden',
|
||||
['not_right_veh'] = 'Falsches Fahrzeug',
|
||||
['veh_det_succ'] = 'Fahrzeug gelöst!',
|
||||
['imp_flatbed'] = 'Nicht möglich! Du benötigst einen Pritschenwagen',
|
||||
['objects'] = 'Objekte',
|
||||
['roadcone'] = 'Verkehrskegel',
|
||||
['toolbox'] = 'Werkzeugkasten',
|
||||
['mechanic_stock'] = 'Lager Mechaniker',
|
||||
['quantity'] = 'Anzahl',
|
||||
['invalid_quantity'] = 'Anzahl ungültig!',
|
||||
['inventory'] = 'Inventar',
|
||||
['veh_unlocked'] = 'Fahrzeug geöffnet',
|
||||
['hijack_failed'] = 'Aufbrechen gescheitert',
|
||||
['body_repaired'] = 'Karosserie repariert',
|
||||
['veh_repaired'] = 'Fahrzueg repariert',
|
||||
['veh_stored'] = 'Drücke [E] um Fahrzeug einzuparken',
|
||||
['press_remove_obj'] = 'Drücke [E] um Objekt zu entfernen',
|
||||
['please_tow'] = 'Fahrzeug abschleppen',
|
||||
['wait_five'] = 'Warte 5 Minuten',
|
||||
['must_in_flatbed'] = 'Du musst dich im Pritschenwagen befinden',
|
||||
['mechanic_customer'] = 'Kunde',
|
||||
['you_do_not_room'] = 'Kein Platz mehr',
|
||||
['recovery_gas_can'] = 'Abholung Bezinkanister...',
|
||||
['recovery_repair_tools'] = 'Abholung Reparaturwerkzeug...',
|
||||
['recovery_body_tools'] = 'Abholung Karosseriewerkzeug...',
|
||||
['not_enough_gas_can'] = 'Du hast nicht genug Benzinkanister',
|
||||
['assembling_blowtorch'] = 'Schweißgerät zusammenbauen...',
|
||||
['not_enough_repair_tools'] = 'Du hast nicht genug Reparaturwerkzeuge.',
|
||||
['assembling_repair_kit'] = 'Reparatur Kit zusammenbauen...',
|
||||
['not_enough_body_tools'] = 'Du hast nicht genug Karosseriewerkzeug',
|
||||
['assembling_body_kit'] = 'Karosseriewerkzeug zusammenbauen...',
|
||||
['your_comp_earned'] = 'Deine Firma hat $ verdient',
|
||||
['you_used_blowtorch'] = 'Schweißgerät genutzt',
|
||||
['you_used_repair_kit'] = 'Reparatur Kit genutzt',
|
||||
['you_used_body_kit'] = 'Karosserie Kit genutzt',
|
||||
['have_withdrawn'] = 'Du hast x%s %s abgehoben',
|
||||
['have_deposited'] = 'Du hast x%s %s eingezahlt',
|
||||
['player_cannot_hold'] = 'Kein Platz im Inventar!',
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
Locales['it'] = {
|
||||
['mechanic'] = 'meccanico',
|
||||
['drive_to_indicated'] = 'guida fino alla posizione indicata.',
|
||||
['mission_canceled'] = 'missione annullata',
|
||||
['vehicle_list'] = 'elenco veicoli',
|
||||
['work_wear'] = 'abbigliamento da lavoro',
|
||||
['civ_wear'] = 'abiti civili',
|
||||
['deposit_stock'] = 'deposito',
|
||||
['withdraw_stock'] = 'ritira',
|
||||
['boss_actions'] = 'azioni boss',
|
||||
['service_vehicle'] = 'veicoli di servizio',
|
||||
['flat_bed'] = 'flatbed',
|
||||
['tow_truck'] = 'carro attrezzi',
|
||||
['service_full'] = 'servizio completo: ',
|
||||
['open_actions'] = 'premi [E] per accedere al menu.',
|
||||
['harvest'] = 'raccolto',
|
||||
['harvest_menu'] = 'premi [E] per accedere al menu raccolto.',
|
||||
['not_experienced_enough'] = 'non hai abbastanza esperienza per eseguire questa azione.',
|
||||
['gas_can'] = 'bombola del gas',
|
||||
['repair_tools'] = 'riparazione strumenti',
|
||||
['body_work_tools'] = 'strumenti carrozzeria',
|
||||
['blowtorch'] = 'fiamma ossidrica',
|
||||
['repair_kit'] = 'kit di riparazione',
|
||||
['body_kit'] = 'body Kit',
|
||||
['craft'] = 'creazione',
|
||||
['craft_menu'] = 'premi [E] per accedere al menu di creazione.',
|
||||
['billing'] = 'fattura',
|
||||
['hijack'] = 'trasportare',
|
||||
['repair'] = 'riparazione',
|
||||
['clean'] = 'pulito',
|
||||
['imp_veh'] = 'sequestrato',
|
||||
['place_objects'] = 'posiziona oggetti',
|
||||
['invoice_amount'] = 'importo fattura',
|
||||
['amount_invalid'] = 'importo non valido',
|
||||
['no_players_nearby'] = 'nessun giocatore nelle vicinanze',
|
||||
['no_vehicle_nearby'] = 'nessun veicolo nelle vicinanze',
|
||||
['inside_vehicle'] = 'non puoi farlo dall\'interno del veicolo!',
|
||||
['vehicle_unlocked'] = 'il veicolo è stato sbloccato',
|
||||
['vehicle_repaired'] = 'il veicolo è stato riparato',
|
||||
['vehicle_cleaned'] = 'il veicolo è stato pulito',
|
||||
['vehicle_impounded'] = 'il veicolo è stato sequestrato',
|
||||
['must_seat_driver'] = 'devi essere al posto di guida!',
|
||||
['must_near'] = 'devi essere vicino il veicolo per sequestrarlo.',
|
||||
['vehicle_success_attached'] = 'veicolo collegato con successo',
|
||||
['please_drop_off'] = 'perfavore lascia il veicolo al garage',
|
||||
['cant_attach_own_tt'] = 'non puoi attaccare il tuo carro attrezzi',
|
||||
['no_veh_att'] = 'non c\'è nessu veicolo da attaccare',
|
||||
['not_right_veh'] = 'questo non è il veicolo giusto',
|
||||
['not_right_place'] = 'questo non è il posto giusto',
|
||||
['veh_det_succ'] = 'veicolo staccato con successo!',
|
||||
['imp_flatbed'] = 'azione impossibile! hai bisogno di un pianale per caricare il veicolo',
|
||||
['objects'] = 'oggetti',
|
||||
['roadcone'] = 'cono stradale',
|
||||
['toolbox'] = 'cassetta degli attrezzi',
|
||||
['mechanic_stock'] = 'deposito meccanico',
|
||||
['quantity'] = 'quantità',
|
||||
['invalid_quantity'] = 'quantità non valida',
|
||||
['inventory'] = 'inventario',
|
||||
['veh_unlocked'] = 'veicolo sbloccato',
|
||||
['hijack_failed'] = 'traino fallito',
|
||||
['body_repaired'] = 'carrozzeria riparata',
|
||||
['veh_repaired'] = 'veicolo riparato',
|
||||
['veh_stored'] = 'press [E] per depositare il veicolo.',
|
||||
['press_remove_obj'] = 'premi [E] per rimuovere',
|
||||
['please_tow'] = 'perfavore traina il veicolo',
|
||||
['wait_five'] = 'devi attendere 5 minuti',
|
||||
['must_in_flatbed'] = 'devi essere in un flatbed per avviare la missione',
|
||||
['mechanic_customer'] = 'cliente meccanico',
|
||||
['you_do_not_room'] = 'non hai più spazio',
|
||||
['recovery_gas_can'] = 'recupero bomboletta di gas...',
|
||||
['recovery_repair_tools'] = 'recupero degli strumenti di riparazione...',
|
||||
['recovery_body_tools'] = 'recupero body tools...',
|
||||
['not_enough_gas_can'] = 'non hai abbastanza bomboletta di gas.',
|
||||
['assembling_blowtorch'] = 'montaggio fiamma ossidrica...',
|
||||
['not_enough_repair_tools'] = 'non hai abbastanza strumenti di riparazione.',
|
||||
['assembling_repair_kit'] = 'assemblaggio kit di riparazione...',
|
||||
['not_enough_body_tools'] = 'non hai abbastanza body tools.',
|
||||
['assembling_body_kit'] = 'Assemblaggio Body Kit...',
|
||||
['your_comp_earned'] = 'la tua azienda ha guadagnato $',
|
||||
['you_used_blowtorch'] = 'hai usato una fiamma ossidrica',
|
||||
['you_used_repair_kit'] = 'hai usato un Kit di riparazione',
|
||||
['you_used_body_kit'] = 'hai usato un Body Kit',
|
||||
['have_withdrawn'] = 'hai prelevato x%s %s',
|
||||
['have_deposited'] = 'hai depositato x%s %s',
|
||||
['player_cannot_hold'] = 'non hai abbastanza spazio libero nel tuo inventario!',
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
INSERT INTO `addon_account` (name, label, shared) VALUES
|
||||
('society_mechanic', 'Monteur', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `addon_inventory` (name, label, shared) VALUES
|
||||
('society_mechanic', 'Monteur', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `datastore` (name, label, shared) VALUES
|
||||
('society_mechanic', 'Monteur', 1)
|
||||
;
|
||||
|
||||
INSERT INTO `jobs` (name, label) VALUES
|
||||
('mechanic', 'Monteur')
|
||||
;
|
||||
|
||||
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
|
||||
('mechanic',0,'recrue','Stagair',12,'{}','{}'),
|
||||
('mechanic',1,'novice','Personeel',24,'{}','{}'),
|
||||
('mechanic',2,'experimente','Ervaard',36,'{}','{}'),
|
||||
('mechanic',3,'chief','Supervisor',48,'{}','{}'),
|
||||
('mechanic',4,'boss','Baas',0,'{}','{}')
|
||||
;
|
||||
|
||||
INSERT INTO `items` (name, label, weight) VALUES
|
||||
('gazbottle', 'Gas Fles', 2),
|
||||
('fixtool', 'Repareer set', 2),
|
||||
('carotool', 'Tools', 2),
|
||||
('blowpipe', 'Las Apparaat', 2),
|
||||
('fixkit', 'Repareer set', 3),
|
||||
('carokit', 'Body set', 3)
|
||||
;
|
||||
@@ -0,0 +1,5 @@
|
||||
Locales['de'] = {
|
||||
|
||||
['used_beer'] = 'Du hast 1x Bier getrunken',
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
Locales['nl'] = {
|
||||
['new_message'] = 'Je hebt een bericht ontvangen: %s',
|
||||
['press_take_call'] = '%s - Klik op [E] om op te nemen',
|
||||
['taken_call'] = '%s heeft opgenomen',
|
||||
['gps_position'] = 'de bestemming is op je navigatie gezet',
|
||||
['message_sent'] = 'het bericht is verstuurd',
|
||||
['cannot_add_self'] = 'je kan jezelf niet toevoegen!',
|
||||
['number_in_contacts'] = 'dit nummer staat al in je contacten',
|
||||
['contact_added'] = 'je hebt een contact toegevoegd!',
|
||||
['contact_removed'] = 'je hebt een contact verwijderd!',
|
||||
['number_not_assigned'] = 'het nummer is nog niet toegewezen!',
|
||||
['invalid_number'] = 'dat is een ongeldig nummer!',
|
||||
}
|
||||
@@ -3,64 +3,64 @@ Locales['de'] = {
|
||||
['cloakroom'] = 'Garderobe',
|
||||
['citizen_wear'] = 'Zivilkleidung',
|
||||
['police_wear'] = 'Arbeitskleidung',
|
||||
['gilet_wear'] = 'orange reflective jacket',
|
||||
['bullet_wear'] = 'bulletproof vest',
|
||||
['no_outfit'] = 'there\'s no uniform that fits you!',
|
||||
['gilet_wear'] = 'orangefarbene reflektierende Jacke',
|
||||
['bullet_wear'] = 'kugelsichere Weste',
|
||||
['no_outfit'] = 'Es gibt keine Uniform die dir passt.',
|
||||
['open_cloackroom'] = 'Drücke [E] um dich umzuziehen',
|
||||
-- Armory
|
||||
['remove_object'] = 'take object',
|
||||
['deposit_object'] = 'deposit object',
|
||||
['remove_object'] = 'Objekt nehmen',
|
||||
['deposit_object'] = 'Objekt einlagern',
|
||||
['get_weapon'] = 'Waffen holen',
|
||||
['put_weapon'] = 'Waffen bringen',
|
||||
['buy_weapons'] = 'Waffen kaufen',
|
||||
['armory'] = 'Waffenkammer',
|
||||
['open_armory'] = 'Drücke [E] um die Waffenkammer zu öffnen',
|
||||
['armory_owned'] = 'owned',
|
||||
['armory_free'] = 'free',
|
||||
['armory_owned'] = 'eigentum',
|
||||
['armory_free'] = 'gratis',
|
||||
['armory_item'] = '$%s',
|
||||
['armory_weapontitle'] = 'armory - Buy weapon',
|
||||
['armory_componenttitle'] = 'armory - Weapon attatchments',
|
||||
['armory_bought'] = 'you bought an %s for $%s',
|
||||
['armory_money'] = 'you cannot afford that weapon',
|
||||
['armory_hascomponent'] = 'you have that attatchment equiped!',
|
||||
['get_weapon_menu'] = 'armory - Withdraw Weapon',
|
||||
['put_weapon_menu'] = 'armory - Store Weapon',
|
||||
['armory_weapontitle'] = 'Waffenkammer - Waffe kaufen',
|
||||
['armory_componenttitle'] = 'Waffenkammer - Waffen attatchments',
|
||||
['armory_bought'] = 'Du hast dir %s für $%s gekauft',
|
||||
['armory_money'] = 'Du kannst dir die Waffe nicht leisten',
|
||||
['armory_hascomponent'] = 'Du hast das attchment bereits!',
|
||||
['get_weapon_menu'] = 'Arsenal - Waffe auslagern',
|
||||
['put_weapon_menu'] = 'Arsenal - Waffe einlagern',
|
||||
-- Vehicles
|
||||
['vehicle_menu'] = 'vehicle',
|
||||
['vehicle_blocked'] = 'all available spawn points are currently blocked!',
|
||||
['garage_prompt'] = 'press [E] to access the Vehicle Actions.',
|
||||
['garage_title'] = 'vehicle Actions',
|
||||
['garage_stored'] = 'stored',
|
||||
['garage_notstored'] = 'not in garage',
|
||||
['garage_storing'] = 'we\'re attempting to remove the vehicle, make sure no players are around it.',
|
||||
['garage_has_stored'] = 'the vehicle has been stored in your garage',
|
||||
['garage_has_notstored'] = 'no nearby owned vehicles were found',
|
||||
['garage_notavailable'] = 'your vehicle is not stored in the garage.',
|
||||
['garage_blocked'] = 'there\'s no available spawn points!',
|
||||
['garage_empty'] = 'you don\'t have any vehicles in your garage.',
|
||||
['garage_released'] = 'your vehicle has been released from the garage.',
|
||||
['garage_store_nearby'] = 'there is no nearby vehicles.',
|
||||
['garage_storeditem'] = 'open garage',
|
||||
['garage_storeitem'] = 'store vehicle in garage',
|
||||
['garage_buyitem'] = 'vehicle shop',
|
||||
['garage_notauthorized'] = 'you\'re not authorized to buy this kind of vehicles.',
|
||||
['helicopter_prompt'] = 'press [E] to access the Helicopter Actions.',
|
||||
['vehicle_menu'] = 'Fahrzeug',
|
||||
['vehicle_blocked'] = 'alle verfügbaren Spawnpunkte sind derzeit blockiert!',
|
||||
['garage_prompt'] = 'Drücke [E] um das Garagen Menü zu öffnen.',
|
||||
['garage_title'] = 'Fahrzeug aktionen',
|
||||
['garage_stored'] = 'eingelagert',
|
||||
['garage_notstored'] = 'nicht in der Garage',
|
||||
['garage_storing'] = 'Wir versuchen, das Fahrzeug zu entfernen, stelle sicher, dass sich keine Spieler in der Nähe des Fahrzeugs befinden.',
|
||||
['garage_has_stored'] = 'das Fahrzeug wurde in deiner Garage abgestellt',
|
||||
['garage_has_notstored'] = 'Keine eigenen Fahrzeuge in der nähe gefunden',
|
||||
['garage_notavailable'] = 'Dein Fahrzeug ist nicht in der Garage abgestellt.',
|
||||
['garage_blocked'] = 'Es gibt keine verfügbaren Spawn-Punkte!',
|
||||
['garage_empty'] = 'Du hast keine Fahrzeuge in der Garage.',
|
||||
['garage_released'] = 'Ihr Fahrzeug aus der Garage entlassen wurde.',
|
||||
['garage_store_nearby'] = 'Es gibt keine Fahrzeuge in der Nähe.',
|
||||
['garage_storeditem'] = 'Garage öffnen',
|
||||
['garage_storeitem'] = 'Fahrzeug einparken',
|
||||
['garage_buyitem'] = 'Fahrzeugshop',
|
||||
['garage_notauthorized'] = 'Du bist nicht berechtigt, diese Art von Fahrzeugen zu kaufen..',
|
||||
['helicopter_prompt'] = 'Drücken sie [E] um das Hubschrauber Menü zu öffnen.',
|
||||
['shop_item'] = '$%s',
|
||||
['vehicleshop_title'] = 'vehicle Shop',
|
||||
['vehicleshop_confirm'] = 'do you want to buy this vehicle?',
|
||||
['vehicleshop_bought'] = 'you have bought %s for ~r~$%s',
|
||||
['vehicleshop_money'] = 'you cannot afford that vehicle',
|
||||
['vehicleshop_awaiting_model'] = 'the vehicle is currently DOWNLOADING & LOADING please wait',
|
||||
['confirm_no'] = 'no',
|
||||
['confirm_yes'] = 'yes',
|
||||
['vehicleshop_title'] = 'Fahrzeug Shop',
|
||||
['vehicleshop_confirm'] = 'Willst du dieses Fahrzeug kaufen?',
|
||||
['vehicleshop_bought'] = 'Du hast %s gekauft für $%s',
|
||||
['vehicleshop_money'] = 'Du kannst dir das Fahrzeug nicht leisten',
|
||||
['vehicleshop_awaiting_model'] = 'das Fahrzeug wird gerade HERUNTERGELADEN & LÄDT bitte warten',
|
||||
['confirm_no'] = 'nein',
|
||||
['confirm_yes'] = 'ja',
|
||||
-- Service
|
||||
['service_max'] = 'you cannot enter service, max officers in service: %s/%s',
|
||||
['service_not'] = 'you have not entered service! You\'ll have to get changed first.',
|
||||
['service_anonunce'] = 'service information',
|
||||
['service_in'] = 'you\'ve entered service, welcome!',
|
||||
['service_in_announce'] = 'operator %s has entered service!',
|
||||
['service_out'] = 'you have left service.',
|
||||
['service_out_announce'] = 'operator %s has left their service.',
|
||||
['service_max'] = 'Du kannst den Dienst nicht antreten, maximale Anzahl von Beamten im Dienst: %s/%s',
|
||||
['service_not'] = 'Du bist noch nicht im Dienst! Du musst dich erst umziehen.',
|
||||
['service_anonunce'] = 'Service-Informationen',
|
||||
['service_in'] = 'Du hast deinen Dienst angetreten, willkommen!',
|
||||
['service_in_announce'] = 'Operator %s hat seinen Dienst aufgenommen!',
|
||||
['service_out'] = 'Du hast den Dienst verlassen.',
|
||||
['service_out_announce'] = 'Operator %s hat seinen Dienst beendet.',
|
||||
-- Action Menu
|
||||
['citizen_interaction'] = 'Zivilistenaktionen',
|
||||
['vehicle_interaction'] = 'Fahrzeuginteraktionen',
|
||||
@@ -71,28 +71,28 @@ Locales['de'] = {
|
||||
['handcuff'] = 'Festnehmen / Freilassen',
|
||||
['drag'] = 'drag',
|
||||
['put_in_vehicle'] = 'In Fahrzeug setzen',
|
||||
['out_the_vehicle'] = 'take out of vehicle',
|
||||
['out_the_vehicle'] = 'aus dem Fahrzeug nehmen',
|
||||
['fine'] = 'Strafe',
|
||||
['unpaid_bills'] = 'manage unpaid bills',
|
||||
['license_check'] = 'manage license',
|
||||
['license_revoke'] = 'revoke license',
|
||||
['license_revoked'] = 'your %s has been revoked!',
|
||||
['licence_you_revoked'] = 'you revoked a %s which belonged to %s',
|
||||
['unpaid_bills'] = 'Unbezahlte Rechnungen verwalten',
|
||||
['license_check'] = 'Lizenz verwalten',
|
||||
['license_revoke'] = 'Lizenz wegnehmen',
|
||||
['license_revoked'] = 'Deine %s wurde entzogen',
|
||||
['licence_you_revoked'] = 'Du hast %s widerrufen, die %s gehörte',
|
||||
['no_players_nearby'] = 'keine Spieler in der Nähe',
|
||||
['being_searched'] = 'you are being searched by the Police',
|
||||
['being_searched'] = 'Du wirst von der Polizei durchsucht',
|
||||
-- Vehicle interaction
|
||||
['vehicle_info'] = 'Fahrzeug Info',
|
||||
['pick_lock'] = 'Fahrzeug öffnen',
|
||||
['vehicle_unlocked'] = 'Fahrzeug offen',
|
||||
['no_vehicles_nearby'] = 'Keine Fahrzeuge in der Nähe',
|
||||
['impound'] = 'impound vehicle',
|
||||
['impound_prompt'] = 'press [E] to cancel the impound',
|
||||
['impound_canceled'] = 'you canceled the impound',
|
||||
['impound_canceled_moved'] = 'the impound has been canceled because the vehicle moved',
|
||||
['impound_successful'] = 'you have impounded the vehicle',
|
||||
['search_database'] = 'vehicle information',
|
||||
['search_database_title'] = 'vehicle information - search with registration number',
|
||||
['search_database_error_invalid'] = 'that is ~r~not a valid registration number',
|
||||
['impound'] = 'beschlagnahmtes fahrzeug',
|
||||
['impound_prompt'] = 'Drücken Sie [E], um die Beschlagnahmung abzubrechen.',
|
||||
['impound_canceled'] = 'Du hast die Beschlagnahmung abgebrochen',
|
||||
['impound_canceled_moved'] = 'die Beschlagnahme wurde aufgehoben, weil das Fahrzeug bewegt wurde',
|
||||
['impound_successful'] = 'Du hast das Fahrzeug beschlagnahmt',
|
||||
['search_database'] = 'Fahrzeug informationen',
|
||||
['search_database_title'] = 'Fahrzeuginformationen - Suche über das amtliche Kennzeichen',
|
||||
['search_database_error_invalid'] = 'die keine gültige Registrierungsnummer ist',
|
||||
-- Traffic interaction
|
||||
['traffic_interaction'] = 'Straßeninteraktionen',
|
||||
['cone'] = 'Hütchen',
|
||||
@@ -103,49 +103,49 @@ Locales['de'] = {
|
||||
-- ID Card Menu
|
||||
['name'] = 'name: %s',
|
||||
['job'] = 'job: %s',
|
||||
['sex'] = 'sex: %s',
|
||||
['sex'] = 'geschlecht: %s',
|
||||
['dob'] = 'DOB: %s',
|
||||
['height'] = 'height: %s',
|
||||
['height'] = 'größe: %s',
|
||||
['bac'] = 'BAC: %s',
|
||||
['unknown'] = 'unknown',
|
||||
['male'] = 'male',
|
||||
['female'] = 'female',
|
||||
['male'] = 'männlich',
|
||||
['female'] = 'weiblich',
|
||||
-- Body Search Menu
|
||||
['guns_label'] = '--- Waffen ---',
|
||||
['inventory_label'] = '--- Inventar ---',
|
||||
['license_label'] = ' --- Licenses ---',
|
||||
['license_label'] = ' --- Lizenzen ---',
|
||||
['confiscate'] = 'konfeszieren %s',
|
||||
['confiscate_weapon'] = 'confiscate %s with %s bullets',
|
||||
['confiscate_inv'] = 'konfeziere %sx %s',
|
||||
['confiscate_dirty'] = 'schwarzgeld konfesziert: <span style="color:red;">$%s</span>',
|
||||
['you_confiscated'] = 'you confiscated %sx %s from %s',
|
||||
['got_confiscated'] = '%sx %s were confiscated by %s',
|
||||
['you_confiscated_account'] = 'you confiscated $%s (%s) from %s',
|
||||
['got_confiscated_account'] = '$%s (%s) was confiscated by %s',
|
||||
['you_confiscated_weapon'] = 'you confiscated %s from %s with ~o~%s bullets',
|
||||
['got_confiscated_weapon'] = 'your %s with ~o~%s bullets was confiscated by %s',
|
||||
['confiscate_weapon'] = 'konfisziere %s mit %s kugeln',
|
||||
['confiscate_inv'] = 'konfisziere %sx %s',
|
||||
['confiscate_dirty'] = 'Schwarzgeld konfesziert: <span style="color:red;">$%s</span>',
|
||||
['you_confiscated'] = 'Du konfiszierst %sx %s von %s',
|
||||
['got_confiscated'] = '%sx %s wurde konfisziert von %s',
|
||||
['you_confiscated_account'] = 'du konfiszierst $%s (%s) von %s',
|
||||
['got_confiscated_account'] = '$%s (%s) wurde konfisziert von %s',
|
||||
['you_confiscated_weapon'] = 'Du konfiszierst %s von %s mit %s kugeln',
|
||||
['got_confiscated_weapon'] = 'Deine %s mit %s kugeln wurde konfisziert von %s',
|
||||
['traffic_offense'] = 'Verkehrs vergehen',
|
||||
['minor_offense'] = 'Geringes vergehen',
|
||||
['average_offense'] = 'Normales vergehen',
|
||||
['major_offense'] = 'Hohes vergehen',
|
||||
['fine_total'] = 'strafe: %s',
|
||||
-- Vehicle Info Menu
|
||||
['plate'] = 'plate: %s',
|
||||
['plate'] = 'kennzeichen: %s',
|
||||
['owner_unknown'] = 'besitzer: Unbekannt',
|
||||
['owner'] = 'besitzer: %s',
|
||||
-- Boss Menu
|
||||
['open_bossmenu'] = 'Drücke [E] um das Menü zu öffnen',
|
||||
['quantity_invalid'] = 'invalid quantity',
|
||||
['have_withdrawn'] = 'you have withdrawn %sx %s',
|
||||
['have_deposited'] = 'you have deposited %sx %s',
|
||||
['quantity'] = 'quantity',
|
||||
['inventory'] = 'inventory',
|
||||
['police_stock'] = 'police Stock',
|
||||
['quantity_invalid'] = 'ungültige Menge',
|
||||
['have_withdrawn'] = 'Du hast abgehoben %sx %s',
|
||||
['have_deposited'] = 'Sie haben eingezahlt %sx %s',
|
||||
['quantity'] = 'qualität',
|
||||
['inventory'] = 'inventar',
|
||||
['police_stock'] = 'Polizeibestand',
|
||||
-- Misc
|
||||
['remove_prop'] = 'Drücke [E] um das Objekt zu entfernen',
|
||||
['map_blip'] = 'Polizeistation',
|
||||
['unrestrained_timer'] = 'you feel your handcuffs slowly losing grip and fading away.',
|
||||
['unrestrained_timer'] = 'Du spürst, wie die Handschellen langsam ihren Halt verlieren und sich auflösen.',
|
||||
-- Notifications
|
||||
['alert_police'] = 'Polizei alamieren',
|
||||
['phone_police'] = 'police',
|
||||
['phone_police'] = 'Polizei',
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ AddEventHandler('esx_policejob:confiscatePlayerItem', function(target, itemType,
|
||||
local targetXPlayer = ESX.GetPlayerFromId(target)
|
||||
|
||||
if sourceXPlayer.job.name ~= 'police' then
|
||||
print(('esx_policejob: %s attempted to confiscate!'):format(sourceXPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Exploit The Confuscation System!'):format(sourceXPlayer.source))
|
||||
return
|
||||
end
|
||||
|
||||
@@ -75,7 +75,7 @@ AddEventHandler('esx_policejob:handcuff', function(target)
|
||||
if xPlayer.job.name == 'police' then
|
||||
TriggerClientEvent('esx_policejob:handcuff', target)
|
||||
else
|
||||
print(('esx_policejob: %s attempted to handcuff a player (not cop)!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Exploit Handcuffs!'):format(xPlayer.source))
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -86,7 +86,7 @@ AddEventHandler('esx_policejob:drag', function(target)
|
||||
if xPlayer.job.name == 'police' then
|
||||
TriggerClientEvent('esx_policejob:drag', target, source)
|
||||
else
|
||||
print(('esx_policejob: %s attempted to drag (not cop)!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Exploit Dragging!'):format(xPlayer.source))
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -97,7 +97,7 @@ AddEventHandler('esx_policejob:putInVehicle', function(target)
|
||||
if xPlayer.job.name == 'police' then
|
||||
TriggerClientEvent('esx_policejob:putInVehicle', target)
|
||||
else
|
||||
print(('esx_policejob: %s attempted to put in vehicle (not cop)!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Exploit Garage!'):format(xPlayer.source))
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -108,7 +108,7 @@ AddEventHandler('esx_policejob:OutVehicle', function(target)
|
||||
if xPlayer.job.name == 'police' then
|
||||
TriggerClientEvent('esx_policejob:OutVehicle', target)
|
||||
else
|
||||
print(('esx_policejob: %s attempted to drag out from vehicle (not cop)!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Exploit Dragging Out Of Vehicle!'):format(xPlayer.source))
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -314,7 +314,7 @@ ESX.RegisterServerCallback('esx_policejob:buyWeapon', function(source, cb, weapo
|
||||
end
|
||||
|
||||
if not selectedWeapon then
|
||||
print(('esx_policejob: %s attempted to buy an invalid weapon.'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Buy Invalid Weapon - ^5%s^7!'):format(source, weaponName))
|
||||
cb(false)
|
||||
else
|
||||
-- Weapon
|
||||
@@ -344,7 +344,7 @@ ESX.RegisterServerCallback('esx_policejob:buyWeapon', function(source, cb, weapo
|
||||
cb(false)
|
||||
end
|
||||
else
|
||||
print(('esx_policejob: %s attempted to buy an invalid weapon component.'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Buy Invalid Weapon Component - ^5%s^7!'):format(source, componentNum))
|
||||
cb(false)
|
||||
end
|
||||
end
|
||||
@@ -357,7 +357,7 @@ ESX.RegisterServerCallback('esx_policejob:buyJobVehicle', function(source, cb, v
|
||||
|
||||
-- vehicle model not found
|
||||
if price == 0 then
|
||||
print(('esx_policejob: %s attempted to exploit the shop! (invalid vehicle model)'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Buy Invalid Vehicle - ^5%s^7!'):format(source, vehicleProps.model))
|
||||
cb(false)
|
||||
else
|
||||
if xPlayer.getMoney() >= price then
|
||||
|
||||
@@ -230,8 +230,7 @@ function CCTV(PropertyID)
|
||||
if hook then
|
||||
exports['screenshot-basic']:requestScreenshotUpload(hook, "files[]", function(data)
|
||||
local image = json.decode(data)
|
||||
print(ESX.DumpTable(image))
|
||||
ESX.ShowNotification("Picture Taken!", "success")
|
||||
ESX.ShowNotification(_U("picture_taken"), "success")
|
||||
SendNUIMessage({link = image.attachments[1].proxy_url})
|
||||
ESX.ShowNotification(_U("clipboard"), "success")
|
||||
ShowButtons = true
|
||||
|
||||
@@ -86,7 +86,7 @@ function RefreshBlips()
|
||||
SetBlipAsShortRange(Blip, true)
|
||||
SetBlipScale(Blip, 0.7)
|
||||
BeginTextCommandSetBlipName("STRING")
|
||||
AddTextComponentString(PM.joblabel .. " Office")
|
||||
AddTextComponentString(_U("office_blip",PM.joblabel))
|
||||
EndTextCommandSetBlipName(Blip)
|
||||
Blips[#Blips + 1] = Blip
|
||||
end
|
||||
@@ -224,18 +224,18 @@ end
|
||||
|
||||
function SetPropertyName(Property)
|
||||
local Name = Properties[Property].setName ~= "" and Properties[Property].setName or Properties[Property].Name
|
||||
local Elements = {{unselectable = true, title = "Edit Property Name", icon = "fa-solid fa-signature"},
|
||||
{icon = "", title = "Name", input = true, inputType = "text", inputValue = Name, inputPlaceholder = Properties[Property].Name,
|
||||
name = "setName"}, {icon = "fa-solid fa-check", title = "Confirm", name = "confirm"}}
|
||||
local Elements = {{unselectable = true, title = _U("name_edit"), icon = "fa-solid fa-signature"},
|
||||
{icon = "", title = _U("name"), input = true, inputType = "text", inputValue = Name, inputPlaceholder = Properties[Property].Name,
|
||||
name = "setName"}, {icon = "fa-solid fa-check", title = _U("confirm"), name = "confirm"}}
|
||||
|
||||
ESX.OpenContext("right", Elements, function(menu, element)
|
||||
if element.name == "confirm" then
|
||||
ESX.TriggerServerCallback("esx_property:SetPropertyName", function(Set)
|
||||
if Set then
|
||||
ESX.ShowNotification("You Have Set The Property Name To ~b~" .. menu.eles[2].inputValue .. "~s~.", "success")
|
||||
ESX.ShowNotification(_U("name_edit_success",menu.eles[2].inputValue), "success")
|
||||
ESX.CloseContext()
|
||||
else
|
||||
ESX.ShowNotification("You Cannot Set The Property Name To ~r~" .. menu.eles[2].inputValue .. "~s~.", "error")
|
||||
ESX.ShowNotification(_U("name_edit_error",menu.eles[2].inputValue), "error")
|
||||
end
|
||||
end, Property, menu.eles[2].inputValue)
|
||||
end
|
||||
@@ -350,7 +350,7 @@ function OpenPropertyMenu(PropertyId)
|
||||
if element.value == "property_raid" then
|
||||
ESX.TriggerServerCallback("esx_property:CanRaid", function(CanRaid)
|
||||
if CanRaid then
|
||||
ESX.Progressbar(U("prep_raid"), 15000, {FreezePlayer = true, animation = Config.Raiding.Animation, onFinish = function()
|
||||
ESX.Progressbar(_U("prep_raid"), 15000, {FreezePlayer = true, animation = Config.Raiding.Animation, onFinish = function()
|
||||
ESX.ShowNotification(_U("raiding"), "success")
|
||||
AttemptHouseEntry(PropertyId)
|
||||
end, onCancel = function()
|
||||
@@ -720,7 +720,7 @@ end
|
||||
function AccessGarage(PropertyId)
|
||||
ESX.TriggerServerCallback("esx_property:AccessGarage", function(Vehicles)
|
||||
if Vehicles then
|
||||
local elements = {{unselectable = true, icon = "fas fa-warehouse", title = "Property Garage"}}
|
||||
local elements = {{unselectable = true, icon = "fas fa-warehouse", title = _U("property_garage")}}
|
||||
for k, v in pairs(Vehicles) do
|
||||
elements[#elements + 1] = {title = v.vehicle.DisplayName .. " | " .. v.vehicle.plate, Properties = v.vehicle, index = k}
|
||||
end
|
||||
@@ -1001,53 +1001,53 @@ RegisterNetEvent("esx_property:CreateProperty", function()
|
||||
OpenCreate()
|
||||
end
|
||||
if element.index == "cctv" then
|
||||
local status = Property[6].value.enabled and "Enabled" or "Disabled"
|
||||
opos = {{unselectable = true, icon = "fas fa-video", title = "CCTV Settings"},
|
||||
{title = _U("toggle_title"), icon = status == "Enabled" and "fas fa-eye" or "fas fa-eye-slash",
|
||||
local status = Property[6].value.enabled and _U("enabled") or _U("disabled")
|
||||
opos = {{unselectable = true, icon = "fas fa-video", title = _U("cctv_settings")},
|
||||
{title = _U("toggle_title"), icon = status == _U("enabled") and "fas fa-eye" or "fas fa-eye-slash",
|
||||
description = _U("toggle_description",status), index = "ToggleCCTV"},
|
||||
{title = _U("cctv_set_title"), icon = "fas fa-rotate", disabled = not Property[6].value.enabled,
|
||||
description = _U("cctv_set_description"), index = "SetCCTVangle"},
|
||||
{title = _U("back"), icon = "fas fa-arrow-left", description = "return to property creation.", index = "return"}}
|
||||
{title = _U("back"), icon = "fas fa-arrow-left", description = _U("back_description"), index = "return"}}
|
||||
exports["esx_context"]:Refresh(opos, "right")
|
||||
end
|
||||
if element.index == "ToggleCCTV" then
|
||||
Property[6].value.enabled = not Property[6].value.enabled
|
||||
local status = Property[6].value.enabled and "Enabled" or "Disabled"
|
||||
opos = {{unselectable = true, icon = "fas fa-video", title = "CCTV Settings"},
|
||||
{title = _U("toggle_title"), icon = status == "Enabled" and "fas fa-eye" or "fas fa-eye-slash",
|
||||
local status = Property[6].value.enabled and _U("enabled") or _U("disabled")
|
||||
opos = {{unselectable = true, icon = "fas fa-video", title = _U("cctv_settings")},
|
||||
{title = _U("toggle_title"), icon = status == _U("enabled") and "fas fa-eye" or "fas fa-eye-slash",
|
||||
description = _U("toggle_description",status), index = "ToggleCCTV"},
|
||||
{title = _U("cctv_set_title"), icon = "fas fa-rotate", disabled = not Property[6].value.enabled,
|
||||
description = _U("cctv_set_description"), index = "SetCCTVangle"},
|
||||
{title = _U("back"), icon = "fas fa-arrow-left", description = "return to property creation.", index = "return"}}
|
||||
{title = _U("back"), icon = "fas fa-arrow-left", description = _U("back_description"), index = "return"}}
|
||||
exports["esx_context"]:Refresh(opos, "right")
|
||||
end
|
||||
if Config.Garage.Enabled and element.index == "garage" then
|
||||
local status = Property[5].value.enabled and "Enabled" or "Disabled"
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = "Garage Settings"},
|
||||
{title = _U("toggle_title"), icon = status == "Enabled" and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
local status = Property[5].value.enabled and _U("enabled") or _U("disabled")
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = _U("garage_settings")},
|
||||
{title = _U("toggle_title"), icon = status == _U("enabled") and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
description = _U("toggle_description",status), index = "ToggleGarage"}}
|
||||
if Property[5].value.enabled then
|
||||
opos[#opos + 1] = {title = _U("garage_set_title"), icon = "fas fa-map-marker-alt", disabled = not Property[5].value.enabled,
|
||||
description = _U("garage_set_description"), index = "SetGaragePos"}
|
||||
if Property[5].value.pos then
|
||||
opos[#opos + 1] = {title = _U("back"), icon = "fas fa-arrow-left", description = "return to property creation.", index = "return"}
|
||||
opos[#opos + 1] = {title = _U("back"), icon = "fas fa-arrow-left", description = _U("back_description"), index = "return"}
|
||||
end
|
||||
else
|
||||
opos[#opos + 1] = {title = _U("back"), icon = "fas fa-arrow-left", description = "return to property creation.", index = "return"}
|
||||
opos[#opos + 1] = {title = _U("back"), icon = "fas fa-arrow-left", description = _U("back_description"), index = "return"}
|
||||
end
|
||||
exports["esx_context"]:Refresh(opos, "right")
|
||||
end
|
||||
if element.index == "ToggleGarage" then
|
||||
Property[5].value.enabled = not Property[5].value.enabled
|
||||
local status = Property[5].value.enabled and "Enabled" or "Disabled"
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = "Garage Settings"},
|
||||
{title = _U("toggle_title"), icon = status == "Enabled" and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
local status = Property[5].value.enabled and _U("enabled") or _U("disabled")
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = _U("garage_settings")},
|
||||
{title = _U("toggle_title"), icon = status == _U("enabled") and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
description = _U("toggle_description",status), index = "ToggleGarage"}}
|
||||
if Property[5].value.enabled then
|
||||
opos[#opos + 1] = {title = _U("garage_set_title"), icon = "fas fa-map-marker-alt", disabled = not Property[5].value.enabled,
|
||||
description = _U("garage_set_description"), index = "SetGaragePos"}
|
||||
else
|
||||
opos[#opos + 1] = {title = _U("back"), icon = "fas fa-arrow-left", description = "return to property creation.", index = "return"}
|
||||
opos[#opos + 1] = {title = _U("back"), icon = "fas fa-arrow-left", description = _U("back_description"), index = "return"}
|
||||
end
|
||||
exports["esx_context"]:Refresh(opos, "right")
|
||||
end
|
||||
@@ -1095,7 +1095,7 @@ RegisterNetEvent("esx_property:CreateProperty", function()
|
||||
local newProperty = {name = HouseData.name, price = HouseData.price, interior = HouseData.interior, entrance = HouseData.entrance,
|
||||
cctv = Property[6].value, garage = Property[5].value}
|
||||
TriggerServerEvent("esx_property:server:createProperty", newProperty)
|
||||
ESX.ShowNotification("Property created!", "success")
|
||||
ESX.ShowNotification(_U("create_success"), "success")
|
||||
ESX.CloseContext()
|
||||
HouseData = {}
|
||||
else
|
||||
@@ -1188,9 +1188,9 @@ RegisterNetEvent("esx_property:AdminMenu", function()
|
||||
end, currentProperty)
|
||||
end
|
||||
if element.value == "garage" then
|
||||
local status = Properties[currentProperty].garage.enabled and "Enabled" or "Disabled"
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = "Garage Settings"},
|
||||
{title = "Toggle Usage", icon = status == "Enabled" and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
local status = Properties[currentProperty].garage.enabled and _U("enabled") or _U("disabled")
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = _U("garage_settings")},
|
||||
{title = "Toggle Usage", icon = status == _U("enabled") and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
description = "Current Status: " .. status, value = "ToggleGarage"}}
|
||||
if Properties[currentProperty].garage.enabled then
|
||||
opos[#opos + 1] = {title = "Set Position", icon = "fas fa-map-marker-alt",
|
||||
@@ -1206,9 +1206,9 @@ RegisterNetEvent("esx_property:AdminMenu", function()
|
||||
exports["esx_context"]:Refresh(opos, "right")
|
||||
end
|
||||
if element.value == "cctv" then
|
||||
local status = Properties[currentProperty].cctv.enabled and "Enabled" or "Disabled"
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = "CCTV Settings"},
|
||||
{title = "Toggle Usage", icon = status == "Enabled" and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
local status = Properties[currentProperty].cctv.enabled and _U("enabled") or _U("disabled")
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = _U("cctv_settings")},
|
||||
{title = "Toggle Usage", icon = status == _U("enabled") and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
description = "Current Status: " .. status, value = "ToggleCCTV"}}
|
||||
if Properties[currentProperty].cctv.enabled then
|
||||
opos[#opos + 1] = {title = "Set Angle", icon = "fas fa-map-marker-alt", disabled = not Properties[currentProperty].cctv.enabled,
|
||||
@@ -1226,9 +1226,9 @@ RegisterNetEvent("esx_property:AdminMenu", function()
|
||||
ESX.TriggerServerCallback("esx_property:toggleGarage", function(IsUnlocked, enabled)
|
||||
if IsUnlocked then
|
||||
ESX.ShowNotification("Garage Toggled!", "success")
|
||||
local status = enabled and "Enabled" or "Disabled"
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = "Garage Settings"},
|
||||
{title = "Toggle Usage", icon = status == "Enabled" and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
local status = enabled and _U("enabled") or _U("disabled")
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = _U("garage_settings")},
|
||||
{title = "Toggle Usage", icon = status == _U("enabled") and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
description = "Current Status: " .. status, value = "ToggleGarage"}}
|
||||
if enabled then
|
||||
opos[#opos + 1] = {title = "Set Position", icon = "fas fa-map-marker-alt", disabled = not enabled,
|
||||
@@ -1251,9 +1251,9 @@ RegisterNetEvent("esx_property:AdminMenu", function()
|
||||
ESX.TriggerServerCallback("esx_property:toggleCCTV", function(IsUnlocked, enabled)
|
||||
if IsUnlocked then
|
||||
ESX.ShowNotification("CCTV Toggled!", "success")
|
||||
local status = enabled and "Enabled" or "Disabled"
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = "CCTV Settings"},
|
||||
{title = "Toggle Usage", icon = status == "Enabled" and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
local status = enabled and _U("enabled") or _U("disabled")
|
||||
opos = {{unselectable = true, icon = "fas fa-warehouse", title = _U("cctv_settings")},
|
||||
{title = "Toggle Usage", icon = status == _U("enabled") and "fa-solid fa-toggle-on" or "fa-solid fa-toggle-off",
|
||||
description = "Current Status: " .. status, value = "ToggleCCTV"}}
|
||||
if enabled then
|
||||
opos[#opos + 1] = {title = "Set Angle", icon = "fas fa-map-marker-alt", disabled = not enabled,
|
||||
|
||||
@@ -412,7 +412,6 @@ Config.FurnitureCatagories =
|
||||
{name = "prop_el_guitar_01", title = "E Guitar 1", price = 100},
|
||||
{name = "prop_el_guitar_02", title = "E Guitar 2", price = 100},
|
||||
{name = "prop_el_guitar_03", title = "E Guitar 2", price = 100},
|
||||
{name = "prop_ld_greenscreen_01", title = "Green Screen", price = 100},
|
||||
{name = "v_res_mbowlornate", title = "Ornate Bowl", price = 300},
|
||||
{name = "v_res_mbronzvase", title = "Bronze Vase", price = 300},
|
||||
{name = "prop_ceramic_jug_01", title = "Ceramic Jug", price = 100},
|
||||
@@ -429,7 +428,6 @@ Config.FurnitureCatagories =
|
||||
{name = "apa_mp_h_acc_rugwools_03", title = "Rug 6", price = 300},
|
||||
{name = "v_res_fh_pouf", title = "Pouf", price = 300},
|
||||
{name = "v_res_fh_sculptmod", title = "Sculpture", price = 300},
|
||||
{name = "prop_ceramic_jug_01", title = "Ceramic Jug", price = 100},
|
||||
{name = "prop_v_5_bclock", title = "Vintage Clock", price = 300},
|
||||
{name = "prop_v_15_cars_clock", title = "American Flag Clock", price = 300},
|
||||
{name = "prop_sm_19_clock", title = "Modern Clock", price = 300},
|
||||
@@ -531,7 +529,6 @@ Config.FurnitureCatagories =
|
||||
{price = 1200, title = 'PC speaker', name = 'v_res_pcspeaker'},
|
||||
{price = 5000, title = 'VHS white RETRO player', name = 'v_res_vhsplayer'},
|
||||
{price = 2200, title = 'Vacuum Cleaner', name = 'v_res_vacuum'},
|
||||
{price = 5400, title = 'Shredder', name = 'v_ret_gc_shred'},
|
||||
{price = 100, title = 'Stapler', name = 'v_ret_gc_staple'},
|
||||
{price = 1900, title = 'Hardisk', name = 'xm_prop_x17_harddisk_01a'},
|
||||
{price = 5300, title = 'Computer', name = 'xm_prop_x17_res_pctower'},
|
||||
@@ -540,7 +537,7 @@ Config.FurnitureCatagories =
|
||||
{price = 14000, title = 'Jukebox', name = 'bkr_prop_clubhouse_jukebox_01b'},
|
||||
{price = 1700, title = 'USB', name = 'hei_prop_hst_usb_drive'},
|
||||
{price = 700, title = 'Flashlight', name = 'p_cs_police_torch_s'},
|
||||
{price = 1000, title = 'Mikofon', name = 'p_ing_microphonel_01'},
|
||||
{price = 1000, title = 'Microphone', name = 'p_ing_microphonel_01'},
|
||||
{price = 1600, title = 'Radio', name = 'prop_tapeplayer_01'},
|
||||
{price = 4500, title = 'Multifunction Laser Printer', name = 'prop_printer_01'},
|
||||
{price = 11200, title = 'Multifunction Laser Printer', name = 'prop_printer_02'},
|
||||
@@ -648,4 +645,4 @@ end --
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
]]
|
||||
]]
|
||||
|
||||
@@ -8,6 +8,7 @@ Locales['en'] = {
|
||||
["Zoom_level"] = "Zoom Level: %s %",
|
||||
["night_vision"] = "Toggle Night Vision",
|
||||
["clipboard"] = "Link Copied To ~b~Cipboard",
|
||||
["picture_taken"] = "Picture Taken!",
|
||||
["please_wait"] = "Please Wait Before taking another ~b~Picture",
|
||||
["exit"] = "Exit",
|
||||
|
||||
@@ -67,6 +68,7 @@ Locales['en'] = {
|
||||
|
||||
|
||||
--------- Real Estate Strings ---------------
|
||||
["office_blip"] = "%s Office",
|
||||
["actions"] = "Real Estate Actions",
|
||||
["property_create"] = "Create Property",
|
||||
["property_manage"] = "Manage Properties",
|
||||
@@ -92,6 +94,11 @@ Locales['en'] = {
|
||||
---------- Property Actions Menu -------------------------
|
||||
|
||||
["knocking"] = "Someone Is ~b~Knocking~s~ On The Door.",
|
||||
["name_edit"] = "Edit Property Name",
|
||||
["name"] = "Name",
|
||||
["confirm"] = "Confirm",
|
||||
["name_edit_success"] = "You Have Set The Property Name To ~b~%s~s~.",
|
||||
["name_edit_error"] = "You Cannot Set The Property Name To ~r~%s~s~.",
|
||||
["door_locked"] = "Door: Locked",
|
||||
["door_unlocked"] = "Door: Unlocked",
|
||||
["name_manage"] = "Manage Name",
|
||||
@@ -107,7 +114,7 @@ Locales['en'] = {
|
||||
["wardrobe_title"] = "Wardrobe",
|
||||
["wardrobe_desc"] = "Change Position of Property Wardrobe.",
|
||||
["Furniture_title"] = "Furniture",
|
||||
["Furniture_desc"] = "Change Position of Property Wardrobe.",
|
||||
["Furniture_desc"] = "Change Position of Property Furniture.",
|
||||
["enter_title"] = "Enter",
|
||||
["knock_title"] = "Knock On Door",
|
||||
["buy_title"] = "Buy",
|
||||
@@ -138,6 +145,8 @@ Locales['en'] = {
|
||||
|
||||
---------- General Strings ----------------
|
||||
|
||||
["enabled"] = "Enabled",
|
||||
["disabled"] = "Disabled",
|
||||
["exiting"] = "Exiting property...",
|
||||
["entering"] = "Entering property...",
|
||||
["shell_disabled"] ="This Interior Uses Shells, which are disabled!",
|
||||
@@ -149,6 +158,7 @@ Locales['en'] = {
|
||||
|
||||
["store_success"] = "Vehicle ~b~Stored!",
|
||||
["store_error"] = "You Cannot Store This Vehicle!",
|
||||
["property_garage"] = "Property Garage",
|
||||
["retriving_notify"] = "Retrieving ~b~%s~s~ ...",
|
||||
["cannot_access"] = "You Cannot Access This Garage!",
|
||||
["store_textui"] = "Press ~b~[E]~s~ to Store ~b~%s",
|
||||
@@ -182,11 +192,14 @@ Locales['en'] = {
|
||||
["ipl_description"] = "Native GTA Interiors, Made by R*",
|
||||
["shell_title"] = "Custom Interiors",
|
||||
["shell_description"] = "Custom Interiors, Made by You",
|
||||
["cctv_settings"] = "CCTV Settings",
|
||||
["garage_settings"] = "Garage Settings",
|
||||
["toggle_title"] = "Toggle Usage",
|
||||
["toggle_description"] = "Current Status: %s",
|
||||
["cctv_set_title"] = "Set Angle",
|
||||
["cctv_set_title"] = "Set CCTV Angle",
|
||||
["cctv_set_description"] = "Sets the Camera angle to your Cameras Direction",
|
||||
["garage_set_title"] = "Set Position",
|
||||
["back_description"] = "return to property creation.",
|
||||
["garage_set_title"] = "Set Garage Position",
|
||||
["garage_set_description"] = "Set the position of the Property Garage.",
|
||||
["garage_textui"] = "Press ~b~[E]~s~ to Set Position",
|
||||
["cctv_textui_1"] = "Press ~b~[E]~s~ to Set Angle",
|
||||
|
||||
@@ -0,0 +1,218 @@
|
||||
Locales['nl'] = {
|
||||
--- CCTV Strings ------
|
||||
|
||||
["take_picture"] = "Neem foto",
|
||||
["rot_left_right"] = "Links/Rechts",
|
||||
["rot_up_down"] = "Omhoog/Omblaag",
|
||||
["Zoom"] = "Zoom In/Uit",
|
||||
["Zoom_level"] = "Zoom Level: %s %",
|
||||
["night_vision"] = "Nachtcamera aanzetten",
|
||||
["clipboard"] = "Link gekopierd naar ~b~klembord",
|
||||
["picture_taken"] = "Foto genomen!",
|
||||
["please_wait"] = "Wacht even voordat je een nieuwe ~b~Foto neeemt",
|
||||
["exit"] = "Sluit",
|
||||
|
||||
--- Furniture Strings ------
|
||||
|
||||
["Height"] = "Hoogte",
|
||||
["rotate"] = "Rotatie",
|
||||
["place"] = "Plaats Meubel",
|
||||
["delete_furni"] = "Verwijder",
|
||||
["confirm_buy"] = "Wil je %s kopen?",
|
||||
["price"] = "Prijs: $&s",
|
||||
["yes"] = "Ja",
|
||||
["no"] = "Nee",
|
||||
["action"] = "Jij %s ~b~%s~s~ !",
|
||||
["bought_furni"] = "Je hebt een ~b~%s~s~ gekocht!",
|
||||
["edited_furni"] = "Je hebt ~b~%s~s~ aangepast!",
|
||||
["cannot_buy"] = "Je kan ~r~Dit~s~ Niet kopen!",
|
||||
["cannot_edit"] = "Je ~r~Kan niet~s~ aanpassen!",
|
||||
["store_title"] = "Winkel - %s",
|
||||
["back"] = "Ga terug",
|
||||
["edit_title"] = "Aanpassen - %s",
|
||||
["move_title"] = "Verplaats",
|
||||
["deleted_confirm"] = "Verwijderen van ~b~%s~s~!",
|
||||
["deleted_error"] = "Kan ~b~%s~s~ niet verwijderen!",
|
||||
["owned_furni"] = "Mijn meubels",
|
||||
["menu_stores"] = "Meubel winkels",
|
||||
["menu_stores_desc"] = "Koop meubels",
|
||||
["menu_reset"] = "Reset",
|
||||
["menu_reset_desc"] = "Verwijder alle meubels",
|
||||
["menu_edit"] = "Aanpassen",
|
||||
["menu_edit_desc"] = "Verplaats en/of verwijder meubels",
|
||||
["furni_command"] = "meubel",
|
||||
["furni_Command_desc"] = "(ESX Property) Open meubel menu",
|
||||
["furni_command_permission"] = "Je ~r~Kan dit~s~ menu niet betreden!",
|
||||
["furni_reset_success"] = "Meubel Reset!",
|
||||
["furni_cannot_afford"] = "Je kan dit niet betalen!",
|
||||
["furni_reset_error"] = "Je ~r~Kan niet~s~ dit eigendom niet resetten!",
|
||||
["furni_management"] = "Beheer meubels",
|
||||
|
||||
--------- Key Strings ---------------
|
||||
|
||||
["you_granted"] = 'Je hebt de sleutels van ~b~%s~s~ gekregen.',
|
||||
["already_has"] = "Deze speler heeft al sleutels!",
|
||||
["do_not_own"] = 'Dit is ~r~niet~s~ jou eigendom.',
|
||||
["key_revoked"] = 'Je sleutel van ~b~%s~s~. is ~r~afgenomen~s~',
|
||||
["no_keys"] = "Deze speler heeft geen sleutels!",
|
||||
["nearby"] = "Spelers Dichtbij",
|
||||
["gave_key"] = "Je hebt een sleutel gegeven aan %s!",
|
||||
["key_cannot_give"] = "Je kan deze speler geen ~r~sleutel~s~ geven.",
|
||||
["remove_title"] = "Neem sleutels van speler",
|
||||
["key_revoke_success"] = "Sleutels afgenomen van~b~%s~s~.",
|
||||
["key_revoke_error"] = "Je kan de ~r~sleutels~s~ ~b~niet afnemen~s~ van deze speler",
|
||||
["key_management"] = "Sleutel Management",
|
||||
["key_management_desc"] = "Beheer uitgegeven sleutels.",
|
||||
["give_keys"] = "Geef sleutels",
|
||||
["remove_keys"] = "Verwijder sleutels",
|
||||
|
||||
|
||||
--------- Real Estate Strings ---------------
|
||||
["office_blip"] = "%s Kantoor",
|
||||
["actions"] = "Vastgoed acties",
|
||||
["property_create"] = "Creeër kantoor",
|
||||
["property_manage"] = "Beheer kantoor",
|
||||
["realestate_command"] = "vastgoedsnelmenu",
|
||||
["realestate_command_desc"] = "(ESX Property) Open Vastgoed snelle acties",
|
||||
["enter_office"] = "Ga kantoor ~b~naar binnen~s~.",
|
||||
["enter_office_error"] = "Je kan dit kantoor ~r~niet~s~ naar binnen!",
|
||||
["exit_office"] = "~b~Verlaat~s~ kantoor.",
|
||||
["exit_office_error"] = "Je kan dit kantoor ~r~niet~s~ naar buiten!",
|
||||
["realestate_textui"] = "Klik op ~b~[E]~s~ om naar binnen te gaan bij ~b~%s",
|
||||
|
||||
------------Command Strings-----------------------
|
||||
["refresh_name"] = "property:refresh",
|
||||
["refresh_desc"] = "Ververs naar server start status.",
|
||||
["save_name"] = "property:save",
|
||||
["save_desc"] = "Forceer eigendom save",
|
||||
["create_name"] = "property:create",
|
||||
["create_desc"] = "Creeër een nieuw gebouw",
|
||||
["admin_name"] = "property:admin",
|
||||
["admin_desc"] = "Beheer/bekijk alle gebouwen",
|
||||
|
||||
|
||||
---------- Property Actions Menu -------------------------
|
||||
|
||||
["knocking"] = "Iemand ~b~klopt~s~ op de deur.",
|
||||
["name_edit"] = "Verander gebouw naam",
|
||||
["name"] = "Naam",
|
||||
["confirm"] = "Bevestig",
|
||||
["name_edit_success"] = "Je hebt de naam van het gebouw veranderd naar ~b~%s~s~.",
|
||||
["name_edit_error"] = "Je kan dit gebouw niet deze naam geven ~r~%s~s~.",
|
||||
["door_locked"] = "Deur: Vergrendeld",
|
||||
["door_unlocked"] = "Deur: Ontgrendeld",
|
||||
["name_manage"] = "Beheer naam",
|
||||
["name_manage_desc"] = "Verander de naam van het gebouw.",
|
||||
["sell_title"] = "Verkoop",
|
||||
["sell_desc"] = "Verkoop dit gebouw voor $%s",
|
||||
["raid_title"] = "Binnenvallen",
|
||||
["raid_desc"] = "Forceer jezelf naar binnen.",
|
||||
["cctv_title"] = "Camera systeem",
|
||||
["cctv_desc"] = "Check het camera systeem.",
|
||||
["inventory_title"] = "Inventaris",
|
||||
["inventory_desc"] = "Verander positie van de berging.",
|
||||
["wardrobe_title"] = "Kledingkast",
|
||||
["wardrobe_desc"] = "Verander de positie van de kledingkast.",
|
||||
["Furniture_title"] = "Meubels",
|
||||
["Furniture_desc"] = "Verander de positie van een meubel",
|
||||
["enter_title"] = "Ga naar binnen",
|
||||
["knock_title"] = "Klop op de deur",
|
||||
["buy_title"] = "Koop",
|
||||
["buy_desc"] = "Koop dit gebouw voor $%s",
|
||||
["sellplayer_title"] = "Verkoop aan speler",
|
||||
["sellplayer_desc"] = "Verkoop dit gebouw voor $%s",
|
||||
["view_title"] = "Bekijk Interieur",
|
||||
["exit_title"] = "Verlaat",
|
||||
["property_editing_error"] = "Je bent momenteel dit gebouw aan aan het passen.",
|
||||
["unlock_error"] = "Je kan dit gebouw niet ~b~ontgrendelen",
|
||||
["lock_error"] = "Je kan dit gebouw niet ~b~vergrendelen",
|
||||
["prep_raid"] = "Deur forceren ~b~voorbereiden~s~!",
|
||||
["raiding"] = "Deur forceren...",
|
||||
["cancel_raiding"] = "Deur forceren ~r~geannuleerd~s~!",
|
||||
["cannot_raid"] = "You Cannot ~b~Raid~s~ This Property.",
|
||||
["storage_pos_textui"] = "Klik op ~b~[G]~s~ om de berging te plaatsen",
|
||||
["storage_pos_success"] = "~b~Berging~s~ positie veranderd.",
|
||||
["storage_pos_error"] = "De ~b~berging~s~ positie ~r~kan niet~s~ veranderd worden.",
|
||||
["wardrobe_pos_textui"] = "Klik op ~b~[G]~s~ om de kledingkast te plaatsen",
|
||||
["wardrobe_pos_success"] = "~b~Kledingkast~s~ positie veranderd.",
|
||||
["wardrobe_pos_error"] = "De ~b~kledingkast~s~ positie ~r~kan niet~s~ veranderd worden.",
|
||||
["please_finish"] = "Maak het plaatsen van ~b~%s~s~ eerst af.",
|
||||
["cannot_afford"] = "Je kan dit gebouw niet kopen!",
|
||||
["select_player"] = "Selecteer speler",
|
||||
["cannot_Sell"] = "Kan niet aan deze speler verkopen!",
|
||||
["knock_on_door"] = "Op deur kloppen...",
|
||||
["nobody_home"] = "Lijkt erop alsof niemand thuis is...",
|
||||
|
||||
---------- General Strings ----------------
|
||||
|
||||
["enabled"] = "Aan",
|
||||
["disabled"] = "Uit",
|
||||
["exiting"] = "Verlaat gebouw...",
|
||||
["entering"] = "Gebouw binnen gaan...",
|
||||
["shell_disabled"] ="Dit Interieur gebruikt Shells, en die staan uit!",
|
||||
["access_textui"] = "Klik op ~b~[E]~s~ om ~b~%s~s~ te betreden",
|
||||
["raid_notify_error"] = "Je hebt ~b~ %sx %s~s~ nodig om de deur te forceren!",
|
||||
["raid_notify_success"] = "Je gebouw word momenteel ~b~geforceerd!",
|
||||
|
||||
--------------- Garage Strings --------------
|
||||
|
||||
["store_success"] = "Voertuig ~b~Opgeslagen!",
|
||||
["store_error"] = "Je kan dit voertuig niet opslaan!",
|
||||
["property_garage"] = "Gebouw garage",
|
||||
["retriving_notify"] = "~b~%s~s~ ophalen ...",
|
||||
["cannot_access"] = "Je kan deze garage niet gebruiken!",
|
||||
["store_textui"] = "Klik op ~b~[E]~s~ om ~b~%s~s~ op te slaan.",
|
||||
["garage_not_enabled"] = 'De garage is niet actief op dit gebouw.',
|
||||
["cannot_access_property"] = 'Je ~r~kan niet~s~ dit gebouw betreden.',
|
||||
|
||||
|
||||
----------------- Creation Menu Strings ----------------
|
||||
|
||||
["menu_title"] = "Gebouw creatie",
|
||||
["element_title1"] = "Straat nummer",
|
||||
["element_description1"] = "Kies het straat nummer van het gebouw.",
|
||||
["element_title2"] = "Prijs",
|
||||
["element_description2"] = "Kies de prijs van het gebouw.",
|
||||
["element_title3"] = "Interieur",
|
||||
["element_description3"] = "Kies een interieur voor dit gebouw.",
|
||||
["element_title4"] = "Garage",
|
||||
["element_description4"] = "(Optional) Beheer Garage instellingen",
|
||||
["element_title5"] = "Camera systeem",
|
||||
["element_description5"] = "(Optional) Beheer Camera systeem instellingen",
|
||||
["element_title6"] = "Ingang",
|
||||
["element_description6"] = "Kies de locatie voor de ingang van het gebouw.",
|
||||
["element_create_title"] = "Creeër gebouw",
|
||||
["element_create_desc_1"] = "Vul alle velden in!",
|
||||
["entrance_set_title"] = "Ingang gekozen.",
|
||||
["entrance_set_description"] = "Ingang: %s, %s, %s",
|
||||
["interior_set_title"] = "Interieur geselecteerd.",
|
||||
["interior_set_description"] = "Geselecteerd: %s",
|
||||
["ipl_title"] = "IPL Interieuren",
|
||||
["types_title"] = "Interieur Types",
|
||||
["ipl_description"] = "Orginele GTA Interiors, Made by R*",
|
||||
["shell_title"] = "Custom Interieuren",
|
||||
["shell_description"] = "Custom Interieuren, gemaakt door jou",
|
||||
["cctv_settings"] = "Camera systeem instellingen",
|
||||
["garage_settings"] = "Garage instellingen",
|
||||
["toggle_title"] = "Schakel gebruik aan/uit",
|
||||
["toggle_description"] = "Momentele status: %s",
|
||||
["cctv_set_title"] = "Kies hoek",
|
||||
["cctv_set_description"] = "Past de camera hoek aan naar waar jou camera naar richt.",
|
||||
["back_description"] = "ga terug naar gebouw creatie.",
|
||||
["garage_set_title"] = "Garage positie",
|
||||
["garage_set_description"] = "Kies de positie van de garage.",
|
||||
["garage_textui"] = "Klik op ~b~[E]~s~ om de locatie te kiezen",
|
||||
["cctv_textui_1"] = "Klik op ~b~[E]~s~ om de hoek te kiezen",
|
||||
["cctv_textui_2"] = "Klik op ~b~[E]~s~ om maximale rechtse draai te kiezen",
|
||||
["cctv_textui_3"] = "Klik op ~b~[E]~s~ om maximale linkse draai te kiezen",
|
||||
["create_success"] = "Gebouw gemaakt!",
|
||||
["missing_data"] = "Vul alle velden in!",
|
||||
|
||||
-- Saving Translations
|
||||
["server_restart"] = "Server word opnieuw opgestart",
|
||||
["server_shutdown"] = "Server gaat uit",
|
||||
["manual_save"] = "Handmatig opgeslagen (Aangevraagd door %s)",
|
||||
["resource_stop"] = "Resource Stopping",
|
||||
["force_save"] = "Opslaan geforceerd (Aangevraagd door %s)",
|
||||
["interval_saving"] = "Tussentijds opslaan"
|
||||
}
|
||||
@@ -72,7 +72,7 @@ function PropertiesRefresh()
|
||||
end
|
||||
else
|
||||
Properties = {}
|
||||
print("[ERROR]: Properties.json Not Found!")
|
||||
print("[^1ERROR^7]: ^5Properties.json^7 Not Found!")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1052,7 +1052,6 @@ RegisterNetEvent('esx_property:server:createProperty', function(Property)
|
||||
local source = source
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local Interior = GetInteriorValues(Property.interior)
|
||||
print(ESX.DumpTable(Property))
|
||||
local garageData =
|
||||
Property.garage.enabled and {enabled = true, pos = Property.garage.pos, Heading = Property.garage.heading, StoredVehicles = {}} or
|
||||
{enabled = false}
|
||||
@@ -1109,6 +1108,12 @@ AddEventHandler('onResourceStop', function(ResourceName)
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('onServerResourceStop', function(ResourceName)
|
||||
if ResourceName == GetCurrentResourceName() then
|
||||
PropertySave(_U("resource_stop"))
|
||||
end
|
||||
end)
|
||||
|
||||
-- Save Properties every x Minutes
|
||||
|
||||
CreateThread(function()
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
Locales['de'] = {
|
||||
['ooc_prefix'] = 'OOC | %s',
|
||||
['twt_help'] = 'Sende eine twitter nachricht',
|
||||
['twt_prefix'] = '^0[^4Twitter^0] (^5@%s^0)',
|
||||
['me_help'] = 'personal action',
|
||||
['me_prefix'] = 'ich | %s',
|
||||
['do_help'] = 'RP information',
|
||||
['do_prefix'] = 'do | %s',
|
||||
['generic_argument_name'] = 'nachricht',
|
||||
['generic_argument_help'] = 'die nachricht',
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
Locales['nl'] = {
|
||||
['ooc_prefix'] = 'OOC | %s',
|
||||
['twt_help'] = 'stuur tweet',
|
||||
['twt_prefix'] = '^0[^4Twitter^0] (^5@%s^0)',
|
||||
['me_help'] = 'persoonlijke actie',
|
||||
['me_prefix'] = 'ik | %s',
|
||||
['do_help'] = 'RP informatie',
|
||||
['do_prefix'] = 'doe | %s',
|
||||
['generic_argument_name'] = 'bericht',
|
||||
['generic_argument_help'] = 'het bericht',
|
||||
}
|
||||
@@ -9,7 +9,7 @@ end)
|
||||
|
||||
RegisterCommand('twt', function(playerId, args, rawCommand)
|
||||
if playerId == 0 then
|
||||
print('esx_rpchat: you can\'t use this command from console!')
|
||||
print('[^1ERROR^7] This Command Cannot Be Used By The Console!')
|
||||
else
|
||||
args = table.concat(args, ' ')
|
||||
|
||||
@@ -21,7 +21,7 @@ end, false)
|
||||
|
||||
RegisterCommand('anontwt', function(playerId, args, rawCommand)
|
||||
if playerId == 0 then
|
||||
print('esx_rpchat: you can\'t use this command from console!')
|
||||
print('[^1ERROR^7] This Command Cannot Be Used By The Console!')
|
||||
else
|
||||
args = table.concat(args, ' ')
|
||||
|
||||
@@ -33,7 +33,7 @@ end, false)
|
||||
|
||||
RegisterCommand('me', function(playerId, args, rawCommand)
|
||||
if playerId == 0 then
|
||||
print('esx_rpchat: you can\'t use this command from console!')
|
||||
print('[^1ERROR^7] This Command Cannot Be Used By The Console!')
|
||||
else
|
||||
args = table.concat(args, ' ')
|
||||
local playerName = GetRealPlayerName(playerId)
|
||||
@@ -44,7 +44,7 @@ end, false)
|
||||
|
||||
RegisterCommand('do', function(playerId, args, rawCommand)
|
||||
if playerId == 0 then
|
||||
print('esx_rpchat: you can\'t use this command from console!')
|
||||
print('[^1ERROR^7] This Command Cannot Be Used By The Console!')
|
||||
else
|
||||
args = table.concat(args, ' ')
|
||||
local playerName = GetRealPlayerName(playerId)
|
||||
|
||||
@@ -52,7 +52,7 @@ ESX.RegisterServerCallback('esx_service:isInService', function(source, cb, name)
|
||||
isInService = true
|
||||
end
|
||||
else
|
||||
print(('[esx_service] [^3WARNING^7] A service "%s" is not activated'):format(name))
|
||||
print(('[^3WARNING^7] Attempted To Use Inactive Service - ^5%s^7'):format(name))
|
||||
end
|
||||
|
||||
cb(isInService)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
Locales['de'] = {
|
||||
['shop'] = 'geschäft',
|
||||
['shops'] = 'geschäfte',
|
||||
['press_menu'] = 'drücke [E] um auf das Geschäft zuzugreifen.',
|
||||
['press_menu'] = 'Drücke [E] um auf das Geschäft zuzugreifen.',
|
||||
['shop_item'] = '$%s',
|
||||
['bought'] = 'du kaufst %sx %s für ~r~$%s',
|
||||
['not_enough'] = 'du ~r~hast nicht genug geld: %s',
|
||||
['player_cannot_hold'] = 'du hast ~r~nicht genug Platz in deinem Inventar',
|
||||
['bought'] = 'Du kaufst %sx %s für $%s',
|
||||
['not_enough'] = 'Du hast nicht genug geld: %s',
|
||||
['player_cannot_hold'] = 'Du hast nicht genug Platz in deinem Inventar',
|
||||
['shop_confirm'] = 'Kaufe %sx %s für $%s?',
|
||||
['no'] = 'nein',
|
||||
['yes'] = 'ja',
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
Locales['nl'] = {
|
||||
['shop'] = 'winkel',
|
||||
['shops'] = 'winkels',
|
||||
['press_menu'] = 'klik op [E] om de ~g~winkel~s~ te gebruiken.',
|
||||
['shop_item'] = '$%s',
|
||||
['bought'] = 'Je hebt ~b~%sx %s~s~ gekocht voor ~b~$%s',
|
||||
['not_enough'] = 'je hebt ~r~niet~s~ genoeg geld, je mist nog ~b~€%s!',
|
||||
['player_cannot_hold'] = 'je hebt ~r~niet~s~ genoeg ruimte in je inventaris!',
|
||||
['shop_confirm'] = 'koop %sx %s voor €%s?',
|
||||
['no'] = 'nee',
|
||||
['yes'] = 'ja',
|
||||
}
|
||||
@@ -28,12 +28,12 @@ AddEventHandler('esx_shops:buyItem', function(itemName, amount, zone)
|
||||
amount = ESX.Math.Round(amount)
|
||||
|
||||
if amount < 0 then
|
||||
print('esx_shops: ' .. xPlayer.identifier .. ' attempted to exploit the shop!')
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to exploit the shop!'):format(source))
|
||||
return
|
||||
end
|
||||
|
||||
if not Exists then
|
||||
print('esx_shops: ' .. xPlayer.identifier .. ' attempted to exploit the shop!')
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to exploit the shop!'):format(source))
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
@@ -349,5 +349,3 @@ end
|
||||
AddEventHandler('esx_society:openBossMenu', function(society, close, options)
|
||||
OpenBossMenu(society, close, options)
|
||||
end)
|
||||
|
||||
if ESX.PlayerLoaded then RefreshBussHUD() end
|
||||
@@ -63,7 +63,7 @@ AddEventHandler('esx_society:withdrawMoney', function(societyName, amount)
|
||||
local source = source
|
||||
local society = GetSociety(societyName)
|
||||
if not society then
|
||||
print(('[^3WARNING^7] %s attempted to withdraw from non-existing society %s!'):format(xPlayer.getName(), societyName))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to withdraw from non-existing society - ^5%s^7!'):format(source, societyName))
|
||||
return
|
||||
end
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
@@ -79,7 +79,7 @@ AddEventHandler('esx_society:withdrawMoney', function(societyName, amount)
|
||||
end
|
||||
end)
|
||||
else
|
||||
print(('esx_society: %s attempted to call withdrawMoney!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to withdraw from society - ^5%s^7!'):format(source, society.name))
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -89,7 +89,7 @@ AddEventHandler('esx_society:depositMoney', function(societyName, amount)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local society = GetSociety(societyName)
|
||||
if not society then
|
||||
print(('[^3WARNING^7] %s attempted to deposit to non-existing society %s!'):format(xPlayer.getName(), societyName))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to deposit to non-existing society - ^5%s^7!'):format(source, societyName))
|
||||
return
|
||||
end
|
||||
amount = ESX.Math.Round(tonumber(amount))
|
||||
@@ -105,7 +105,7 @@ AddEventHandler('esx_society:depositMoney', function(societyName, amount)
|
||||
xPlayer.showNotification(_U('invalid_amount'))
|
||||
end
|
||||
else
|
||||
print(('esx_society: %s attempted to call depositMoney!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to deposit to society - ^5%s^7!'):format(source, society.name))
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -128,7 +128,7 @@ AddEventHandler('esx_society:washMoney', function(society, amount)
|
||||
xPlayer.showNotification(_U('invalid_amount'))
|
||||
end
|
||||
else
|
||||
print(('esx_society: %s attempted to call washMoney!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to wash money in society - ^5%s^7!'):format(source, society))
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -138,7 +138,7 @@ AddEventHandler('esx_society:putVehicleInGarage', function(societyName, vehicle)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local society = GetSociety(societyName)
|
||||
if not society then
|
||||
print(('[^3WARNING^7] %s attempted to put a vehicle in a non-existing society - %s!'):format(xPlayer.getName(), societyName))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to put vehicle in non-existing society garage - ^5%s^7!'):format(source, societyName))
|
||||
return
|
||||
end
|
||||
TriggerEvent('esx_datastore:getSharedDataStore', society.datastore, function(store)
|
||||
@@ -154,7 +154,7 @@ AddEventHandler('esx_society:removeVehicleFromGarage', function(societyName, veh
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local society = GetSociety(societyName)
|
||||
if not society then
|
||||
print(('[^3WARNING^7] %s attempted to Remove a vehicle in a non-existing society - %s!'):format(xPlayer.getName(), societyName))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to remove vehicle from non-existing society garage - ^5%s^7!'):format(source, societyName))
|
||||
return
|
||||
end
|
||||
TriggerEvent('esx_datastore:getSharedDataStore', society.datastore, function(store)
|
||||
@@ -174,7 +174,7 @@ end)
|
||||
ESX.RegisterServerCallback('esx_society:getSocietyMoney', function(source, cb, societyName)
|
||||
local society = GetSociety(societyName)
|
||||
if not society then
|
||||
print(('[^3WARNING^7] Attempting To get a non-existing society - %s!'):format(societyName))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to get money from non-existing society - ^5%s^7!'):format(source, societyName))
|
||||
return
|
||||
end
|
||||
if society then
|
||||
@@ -275,9 +275,9 @@ end)
|
||||
ESX.RegisterServerCallback('esx_society:setJob', function(source, cb, identifier, job, grade, type)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local isBoss = xPlayer.job.grade_name == 'boss'
|
||||
local xTarget = ESX.GetPlayerFromIdentifier(identifier)
|
||||
|
||||
if isBoss then
|
||||
local xTarget = ESX.GetPlayerFromIdentifier(identifier)
|
||||
|
||||
if xTarget then
|
||||
xTarget.setJob(job, grade)
|
||||
@@ -301,7 +301,7 @@ ESX.RegisterServerCallback('esx_society:setJob', function(source, cb, identifier
|
||||
end)
|
||||
end
|
||||
else
|
||||
print(('esx_society: %s attempted to setJob'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to setJob for Player ^5%s^7!'):format(source, xTarget.source))
|
||||
cb()
|
||||
end
|
||||
end)
|
||||
@@ -327,11 +327,11 @@ ESX.RegisterServerCallback('esx_society:setJobSalary', function(source, cb, job,
|
||||
cb()
|
||||
end)
|
||||
else
|
||||
print(('esx_society: %s attempted to setJobSalary over config limit!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to setJobSalary over the config limit for ^5%s^7!'):format(source, job))
|
||||
cb()
|
||||
end
|
||||
else
|
||||
print(('esx_society: %s attempted to setJobSalary'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to setJobSalary for ^5%s^7!'):format(source, job))
|
||||
cb()
|
||||
end
|
||||
end)
|
||||
@@ -356,7 +356,7 @@ ESX.RegisterServerCallback('esx_society:setJobLabel', function(source, cb, job,
|
||||
cb()
|
||||
end)
|
||||
else
|
||||
print(('esx_society: %s attempted to setJobSalary'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to setJobLabel for ^5%s^7!'):format(source, job))
|
||||
cb()
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -40,30 +40,18 @@ function ShowLoadingPromt(msg, time, type)
|
||||
end
|
||||
|
||||
function GetRandomWalkingNPC()
|
||||
local search = {}
|
||||
local peds = ESX.Game.GetPeds()
|
||||
|
||||
for i = 1, #peds, 1 do
|
||||
if IsPedHuman(peds[i]) and IsPedWalking(peds[i]) and not IsPedAPlayer(peds[i]) then
|
||||
table.insert(search, peds[i])
|
||||
local search = {}
|
||||
local peds = GetGamePool("CPed")
|
||||
|
||||
for i = 1, #peds, 1 do
|
||||
if IsPedHuman(peds[i]) and IsPedWalking(peds[i]) and not IsPedAPlayer(peds[i]) then
|
||||
search[#search+1] = peds[i]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if #search > 0 then
|
||||
return search[GetRandomIntInRange(1, #search)]
|
||||
end
|
||||
|
||||
for i = 1, 250, 1 do
|
||||
local ped = GetRandomPedAtCoord(0.0, 0.0, 0.0, math.huge + 0.0, math.huge + 0.0, math.huge + 0.0, 26)
|
||||
|
||||
if DoesEntityExist(ped) and IsPedHuman(ped) and IsPedWalking(ped) and not IsPedAPlayer(ped) then
|
||||
table.insert(search, ped)
|
||||
|
||||
if #search > 0 then
|
||||
return search[math.random(#search)]
|
||||
end
|
||||
end
|
||||
|
||||
if #search > 0 then
|
||||
return search[GetRandomIntInRange(1, #search)]
|
||||
end
|
||||
end
|
||||
|
||||
function ClearCurrentMission()
|
||||
@@ -173,13 +161,9 @@ function OpenVehicleSpawnerMenu()
|
||||
menu.close()
|
||||
|
||||
local vehicleProps = data.current.value
|
||||
ESX.Game.SpawnVehicle(vehicleProps.model, Config.Zones.VehicleSpawnPoint.Pos,
|
||||
Config.Zones.VehicleSpawnPoint.Heading, function(vehicle)
|
||||
ESX.Game.SetVehicleProperties(vehicle, vehicleProps)
|
||||
local playerPed = PlayerPedId()
|
||||
TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
|
||||
end)
|
||||
|
||||
ESX.TriggerServerCallback("esx_taxijob:SpawnVehicle", function()
|
||||
return
|
||||
end, vehicleProps.model, vehicleProps)
|
||||
TriggerServerEvent('esx_society:removeVehicleFromGarage', 'taxi', vehicleProps)
|
||||
end, function(data, menu)
|
||||
CurrentAction = 'vehicle_spawner'
|
||||
@@ -201,13 +185,10 @@ function OpenVehicleSpawnerMenu()
|
||||
ESX.ShowNotification(_U('spawnpoint_blocked'))
|
||||
return
|
||||
end
|
||||
|
||||
ESX.TriggerServerCallback("esx_taxijob:SpawnVehicle", function()
|
||||
ESX.ShowNotification(_U('vehicle_spawned'), "success")
|
||||
end, "taxi", {plate = "TAXI JOB"})
|
||||
menu.close()
|
||||
ESX.Game.SpawnVehicle(data.current.model, Config.Zones.VehicleSpawnPoint.Pos,
|
||||
Config.Zones.VehicleSpawnPoint.Heading, function(vehicle)
|
||||
local playerPed = PlayerPedId()
|
||||
TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
|
||||
end)
|
||||
end, function(data, menu)
|
||||
CurrentAction = 'vehicle_spawner'
|
||||
CurrentActionMsg = _U('spawner_prompt')
|
||||
@@ -569,15 +550,9 @@ CreateThread(function()
|
||||
local playerPed = PlayerPedId()
|
||||
if CurrentCustomer == nil then
|
||||
DrawSub(_U('drive_search_pass'), 5000)
|
||||
|
||||
if IsPedInAnyVehicle(playerPed, false) and GetEntitySpeed(playerPed) > 0 then
|
||||
local waitUntil = GetGameTimer() + GetRandomIntInRange(30000, 45000)
|
||||
|
||||
while OnJob and waitUntil > GetGameTimer() do
|
||||
Wait(0)
|
||||
end
|
||||
|
||||
if OnJob and IsPedInAnyVehicle(playerPed, false) and GetEntitySpeed(playerPed) > 0 then
|
||||
|
||||
if IsPedInAnyVehicle(playerPed, false) and OnJob then
|
||||
Wait(5000)
|
||||
CurrentCustomer = GetRandomWalkingNPC()
|
||||
|
||||
if CurrentCustomer ~= nil then
|
||||
@@ -597,7 +572,6 @@ CreateThread(function()
|
||||
|
||||
ESX.ShowNotification(_U('customer_found'))
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
if IsPedFatallyInjured(CurrentCustomer) then
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
Locales['de'] = {
|
||||
-- cloakroom
|
||||
['cloakroom_menu'] = 'cloakroom',
|
||||
['cloakroom_prompt'] = 'press [E] to open the cloakroom.',
|
||||
['wear_citizen'] = 'citizen wear',
|
||||
['wear_work'] = 'taxi wear',
|
||||
['cloakroom_menu'] = 'Garderobe',
|
||||
['cloakroom_prompt'] = 'Drücke [E] um die Garderobe zu öffnen.',
|
||||
['wear_citizen'] = 'Bürger Kleidung',
|
||||
['wear_work'] = 'Taxi Kleidung',
|
||||
|
||||
-- garage
|
||||
['spawner_prompt'] = 'press [E] to open the garage.',
|
||||
['spawner_prompt'] = 'Drücke [E] um die Garage zu öffnen.',
|
||||
['store_veh'] = 'Drücke [E] um das Fahrzeug zu parken',
|
||||
['spawn_veh'] = 'Fahrzeug spawnen',
|
||||
['spawnpoint_blocked'] = 'there is a vehicle blocking the spawnpoint!',
|
||||
['spawnpoint_blocked'] = 'Ein Fahrzeug blockiert den Spawnpoint!',
|
||||
['only_taxi'] = 'Du kannst nur Taxis parken.',
|
||||
|
||||
['taking_service'] = 'Service annehmen: Taxi/Uber',
|
||||
@@ -17,36 +17,36 @@ Locales['de'] = {
|
||||
['amount_invalid'] = 'Betrag ungültig',
|
||||
['press_to_open'] = 'Drücke [E] um das Menü zu öffnen',
|
||||
['billing'] = 'Rechnung',
|
||||
['billing_sent'] = 'the bill has been registered!',
|
||||
['billing_sent'] = 'Die Rechnung wurde gesendet!',
|
||||
['invoice_amount'] = 'Rechnugsbetrag',
|
||||
['no_players_near'] = 'Kein Spieler in der Nähe',
|
||||
['start_job'] = 'start / stop driving NPC jobs',
|
||||
['start_job'] = 'Start/Stopp NPC Aufträge',
|
||||
['drive_search_pass'] = 'Auf der Suche nach Passagieren',
|
||||
['customer_found'] = 'du hast einen Passagier gefunden , Fahre in zum Ziel',
|
||||
['client_unconcious'] = 'dein Passagier ist ~r~bewusstlos. Suche nach einem anderen.',
|
||||
['client_unconcious'] = 'dein Passagier ist bewusstlos. Suche nach einem anderen.',
|
||||
['arrive_dest'] = 'du bist an deinem Ziel angekommen',
|
||||
['take_me_to_near'] = 'Bring mich nach %s, in der Nähe von %s',
|
||||
['take_me_to'] = 'Bring mich nach %s',
|
||||
['close_to_client'] = 'du bist nahe an dem Passagier, du musst noch näher ran',
|
||||
['return_to_veh'] = 'bitte kehre zu deinem Fahezeug zurück umd die Mission fortzuführen',
|
||||
['close_to_client'] = 'Du bist nahe an dem Passagier, du musst noch näher ran',
|
||||
['return_to_veh'] = 'Bitte kehre zu deinem Fahezeug zurück umd die Mission fortzuführen',
|
||||
['must_in_taxi'] = 'Du musst in einem Taxis sein umd die Mission starten zu können',
|
||||
['must_in_vehicle'] = 'Du musst in einem Fahrzeug sein um die Mission starten zu können',
|
||||
['not_in_taxi'] = 'You left the taxi while on mission!',
|
||||
['have_earned'] = 'verdient $%s',
|
||||
['not_in_taxi'] = 'Du hast das Taxi während der Mission verlassen',
|
||||
['have_earned'] = 'Du hast verdient $%s',
|
||||
['comp_earned'] = '- Die Firma verdient $\n- Verdient $%s',
|
||||
['deposit_stock'] = 'deposit Stock',
|
||||
['take_stock'] = 'take Stock',
|
||||
['boss_actions'] = 'boss Actions',
|
||||
['mission_complete'] = 'mission Completed',
|
||||
['quantity'] = 'quantity',
|
||||
['quantity_invalid'] = 'that is an invalid quantity!',
|
||||
['take_stock'] = 'Bestand nehmen',
|
||||
['boss_actions'] = 'Boss aktionen',
|
||||
['mission_complete'] = 'Mission abgeschlossen',
|
||||
['quantity'] = 'menge',
|
||||
['quantity_invalid'] = 'Das ist eine ungültige Menge!',
|
||||
['inventory'] = 'inventory',
|
||||
['taxi_client'] = 'taxi Client',
|
||||
['have_withdrawn'] = 'you have withdrawn x%s %s',
|
||||
['have_deposited'] = 'you have deposited x%s %s',
|
||||
['player_cannot_hold'] = 'you do ~r~not have enough free space in your inventory!',
|
||||
['taxi_client'] = 'Taxi Kunde',
|
||||
['have_withdrawn'] = 'Du hast entnommen x%s %s',
|
||||
['have_deposited'] = 'Du hast eingelagert x%s %s',
|
||||
['player_cannot_hold'] = 'Du hast nicht genug Platz im Inventar',
|
||||
['blip_taxi'] = 'taxi',
|
||||
['phone_taxi'] = 'taxi',
|
||||
['taxi'] = 'taxi',
|
||||
['taxi_stock'] = 'taxi Stock'
|
||||
['taxi_stock'] = 'taxi lagerbestand'
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ Locales['en'] = {
|
||||
|
||||
-- garage
|
||||
['spawner_prompt'] = 'press [E] to access the Garage.',
|
||||
["vehicle_spawned"] = "Successfully Spawned A ~b~Taxi!",
|
||||
['store_veh'] = 'press [E] to store the vehicle',
|
||||
['spawn_veh'] = 'spawn vehicle',
|
||||
['spawnpoint_blocked'] = 'there is a vehicle blocking the spawnpoint!',
|
||||
|
||||
@@ -41,10 +41,25 @@ AddEventHandler('esx_taxijob:success', function()
|
||||
end)
|
||||
end
|
||||
else
|
||||
print(('[esx_taxijob] [^3WARNING^7] %s attempted to trigger success (cheating)'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to ^5esx_taxijob:success^7 (cheating)'):format(source))
|
||||
end
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback("esx_taxijob:SpawnVehicle", function(source, cb, model , props)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
|
||||
if xPlayer.job.name ~= "taxi" then
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted to Exploit Vehicle Spawing!!'):format(source))
|
||||
return
|
||||
end
|
||||
local SpawnPoint = vector3(Config.Zones.VehicleSpawnPoint.Pos.x, Config.Zones.VehicleSpawnPoint.Pos.y, Config.Zones.VehicleSpawnPoint.Pos.z)
|
||||
ESX.OneSync.SpawnVehicle(joaat(model), SpawnPoint, Config.Zones.VehicleSpawnPoint.Heading, true, props, function(vehicle)
|
||||
local vehicle = NetworkGetEntityFromNetworkId(vehicle)
|
||||
TaskWarpPedIntoVehicle(GetPlayerPed(source), vehicle, -1)
|
||||
end)
|
||||
cb()
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_taxijob:getStockItem')
|
||||
AddEventHandler('esx_taxijob:getStockItem', function(itemName, count)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
@@ -68,7 +83,7 @@ AddEventHandler('esx_taxijob:getStockItem', function(itemName, count)
|
||||
end
|
||||
end)
|
||||
else
|
||||
print(('[esx_taxijob] [^3WARNING^7] %s attempted to trigger getStockItem'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted ^5esx_taxijob:getStockItem^7 (cheating)'):format(source))
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -95,7 +110,7 @@ AddEventHandler('esx_taxijob:putStockItems', function(itemName, count)
|
||||
end
|
||||
end)
|
||||
else
|
||||
print(('[esx_taxijob] [^3WARNING^7] %s attempted to trigger putStockItems'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 attempted ^5esx_taxijob:putStockItems^7 (cheating)'):format(source))
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@ function getVehicles()
|
||||
end)
|
||||
end
|
||||
|
||||
AddEventHandler("onResourceStart", getVehicles)
|
||||
|
||||
function PlayerManagement()
|
||||
if Config.EnablePlayerManagement then
|
||||
if ESX.PlayerData.job.name == 'cardealer' then
|
||||
@@ -118,7 +120,7 @@ end
|
||||
|
||||
function OpenShopMenu()
|
||||
if #Vehicles == 0 then
|
||||
print('[esx_vehicleshop] [^3ERROR^7] No vehicles found')
|
||||
print('[^3ERROR^7] Vehicleshop has ^50^7 vehicles, please add some!')
|
||||
return
|
||||
end
|
||||
|
||||
@@ -145,7 +147,7 @@ function OpenShopMenu()
|
||||
if IsModelInCdimage(joaat(Vehicles[i].model)) then
|
||||
table.insert(vehiclesByCategory[Vehicles[i].category], Vehicles[i])
|
||||
else
|
||||
print(('[esx_vehicleshop] [^3ERROR^7] Vehicle "%s" does not exist'):format(Vehicles[i].model))
|
||||
print(('[^3WARNING^7] Ignoring vehicle ^5%s^7 due to invalid Model'):format(Vehicles[i].model))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
Locales['nl'] = {
|
||||
-- global menus
|
||||
['not_enough_in_society'] = 'er zijn niet genoeg van ~r~deze spullen in de stad!',
|
||||
['player_cannot_hold'] = 'je hebt ~r~niet~s~ genoeg plaats in je inventaris!',
|
||||
['vehicle_belongs'] = 'een voertuig met kenteken %s is nu van jou',
|
||||
['broke_company'] = 'je bedrijf heeft niet genoeg geld in de bank',
|
||||
['license_missing'] = 'je hebt geen rijbewijs!',
|
||||
['buy_vehicle_shop'] = 'Wil je %s kopen voor €%s?',
|
||||
['buy_vehicle'] = 'koop voertuig',
|
||||
['car_dealer'] = 'Voertuig verkoop',
|
||||
['shop_awaiting_model'] = 'het voertuig is aan het laden, even geduld',
|
||||
['create_bill'] = 'creeër rekening',
|
||||
['dealer_boss'] = 'Voertuig verkoop - Baas',
|
||||
['delivered'] = 'het voertuig is afgeleverd',
|
||||
['depop_vehicle'] = 'parkeer voertuig in de garage?',
|
||||
['return_provider'] = 'stuur voertuig terug naar de eigenaar?',
|
||||
['get_rented_vehicles'] = 'voertuigen te huur',
|
||||
['no_current_vehicle'] = 'je hebt momenteel geen voertuig uitstaan',
|
||||
['invalid_amount'] = 'ongeldig bedrag',
|
||||
['invoice_amount'] = 'rekening bedrag',
|
||||
['no'] = 'nee',
|
||||
['yes'] = 'ja',
|
||||
['no_players'] = 'er zijn geen spelers in de buurt',
|
||||
['not_enough_money'] = 'je hebt niet genoeg geld',
|
||||
['not_rental'] = 'dit is geen ~r~huur voertuig',
|
||||
['not_yours'] = 'dit voertuig is niet van jou',
|
||||
['paid_rental'] = 'je hebt €%s betaald voor het huren van een voertuig met kenteken %s',
|
||||
['paid_rental_evicted'] = 'je hebt niet genoeg om €%s te betalen voor je gehuurde voertuig met kenteken %s, hij is teruggebracht.',
|
||||
['pop_vehicle'] = 'zet voertuig uit voor verkoop',
|
||||
['rent_vehicle'] = 'Auto verkoop - Voertuigen te huur',
|
||||
['return_provider_menu'] = 'Auto verkoop - Breng voertuig terug',
|
||||
['rental_amount'] = 'huur bedrag',
|
||||
['sell_menu'] = 'klik op [E] om %s te verkopen voor $%s',
|
||||
['set_vehicle_owner_rent'] = 'verhuur voertuig',
|
||||
['set_vehicle_owner_sell'] = 'verkoop vuurtuig',
|
||||
['shop_menu'] = 'klik op [E] om het menu te gebruiken',
|
||||
['generic_shopitem'] = '€%s',
|
||||
['vehicle_dealer'] = 'voertuig - Auto verkoop',
|
||||
['vehicle_menu'] = 'klik op [E] om je gehuurde voertuig terug te brengen',
|
||||
['vehicle_purchased'] = 'je hebt een voertuig gekocht',
|
||||
['vehicle_set_owned'] = 'voertuig %s is toegewezen aan %s',
|
||||
['vehicle_set_rented'] = 'voertuig %s is gehuurd door %s',
|
||||
['vehicle_sold_for'] = 'de %s is verkocht voor €%s',
|
||||
['vehicle_sold_to'] = 'het voertuig met kenteken %s is verkocht aan %s',
|
||||
['deposit_stock'] = 'sla voorraad op',
|
||||
['take_stock'] = 'pak voorraad',
|
||||
['dealership_stock'] = 'verkoop voorraad',
|
||||
['amount'] = 'bedrag',
|
||||
['quantity_invalid'] = 'ongeldig bedrag',
|
||||
['inventory'] = 'inventaris',
|
||||
['dealership'] = 'Auto verkoop',
|
||||
['dealer_customers'] = 'Klanten',
|
||||
['have_withdrawn'] = 'je hebt x%s %s gepakt',
|
||||
['have_deposited'] = 'je hebt x%s %s opgeslagen',
|
||||
['boss_actions'] = 'baas acties',
|
||||
['invalid_vehicle'] = 'Onjuist voertuig',
|
||||
|
||||
-- sold vehicles
|
||||
['boss_sold'] = 'lijst van verkochten voertuigen',
|
||||
['customer_client'] = 'klanten naam',
|
||||
['customer_model'] = 'voertuig model',
|
||||
['customer_plate'] = 'kenteken voertuig',
|
||||
['customer_soldby'] = 'verkocht door',
|
||||
['customer_date'] = 'datum',
|
||||
}
|
||||
@@ -9,7 +9,7 @@ CreateThread(function()
|
||||
if Config.PlateUseSpace then char = char + 1 end
|
||||
|
||||
if char > 8 then
|
||||
print(('[esx_vehicleshop] [^3WARNING^7] Plate character count reached, %s/8 characters!'):format(char))
|
||||
print(('[^3WARNING^7] Character Limit Exceeded, ^5%s/8^7!'):format(char))
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -172,7 +172,8 @@ ESX.RegisterServerCallback('esx_vehicleshop:buyVehicle', function(source, cb, mo
|
||||
MySQL.insert('INSERT INTO owned_vehicles (owner, plate, vehicle) VALUES (?, ?, ?)', {xPlayer.identifier, plate, json.encode({model = joaat(model), plate = plate})
|
||||
}, function(rowsChanged)
|
||||
xPlayer.showNotification(_U('vehicle_belongs', plate))
|
||||
ESX.OneSync.SpawnVehicle(joaat(model), Config.Zones.VehicleSpawnPoint.Pos, Config.Zones.VehicleSpawnPoint.Heading, automobile,{plate = plate}, function(vehicle)
|
||||
ESX.OneSync.SpawnVehicle(joaat(model), Config.Zones.ShopOutside.Pos, Config.Zones.ShopOutside.Heading, false,{plate = plate}, function(vehicle)
|
||||
local vehicle = NetworkGetEntityFromNetworkId(vehicle)
|
||||
TaskWarpPedIntoVehicle(GetPlayerPed(source), vehicle, -1)
|
||||
end)
|
||||
cb(true)
|
||||
@@ -234,7 +235,7 @@ AddEventHandler('esx_vehicleshop:returnProvider', function(vehicleModel)
|
||||
end
|
||||
end)
|
||||
else
|
||||
print(('[esx_vehicleshop] [^3WARNING^7] %s attempted selling an invalid vehicle!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Sell Invalid Vehicle - ^5%s^7!'):format(source, vehicleModel))
|
||||
end
|
||||
end)
|
||||
end
|
||||
@@ -290,7 +291,7 @@ ESX.RegisterServerCallback('esx_vehicleshop:resellVehicle', function(source, cb,
|
||||
end
|
||||
|
||||
if not resellPrice then
|
||||
print(('[esx_vehicleshop] [^3WARNING^7] %s attempted to sell an unknown vehicle!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Resell Invalid Vehicle - ^5%s^7!'):format(source, model))
|
||||
cb(false)
|
||||
else
|
||||
MySQL.single('SELECT * FROM rented_vehicles WHERE plate = ?', {plate},
|
||||
@@ -309,11 +310,11 @@ ESX.RegisterServerCallback('esx_vehicleshop:resellVehicle', function(source, cb,
|
||||
RemoveOwnedVehicle(plate)
|
||||
cb(true)
|
||||
else
|
||||
print(('[esx_vehicleshop] [^3WARNING^7] %s attempted to sell an vehicle with plate mismatch!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Resell Vehicle With Invalid Plate - ^5%s^7!'):format(source, plate))
|
||||
cb(false)
|
||||
end
|
||||
else
|
||||
print(('[esx_vehicleshop] [^3WARNING^7] %s attempted to sell an vehicle with model mismatch!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Resell Vehicle With Invalid Model - ^5%s^7!'):format(source, model))
|
||||
cb(false)
|
||||
end
|
||||
end
|
||||
@@ -360,14 +361,14 @@ AddEventHandler('esx_vehicleshop:setJobVehicleState', function(plate, state)
|
||||
MySQL.update('UPDATE owned_vehicles SET `stored` = ? WHERE plate = ? AND job = ?', {state, plate, xPlayer.job.name},
|
||||
function(rowsChanged)
|
||||
if rowsChanged == 0 then
|
||||
print(('[esx_vehicleshop] [^3WARNING^7] %s exploited the garage!'):format(xPlayer.identifier))
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To Exploit the Garage!'):format(source, plate))
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
function PayRent()
|
||||
local timeStart = os.clock()
|
||||
print('[esx_vehicleshop] [^2INFO^7] Paying rent cron job started')
|
||||
print('[^2INFO^7] ^5Rent Payments^7 Initiated')
|
||||
|
||||
MySQL.query('SELECT rented_vehicles.owner, rented_vehicles.rent_price, rented_vehicles.plate, users.accounts FROM rented_vehicles LEFT JOIN users ON rented_vehicles.owner = users.identifier', {},
|
||||
function(rentals)
|
||||
@@ -451,7 +452,7 @@ function PayRent()
|
||||
MySQL.prepare.await('DELETE FROM rented_vehicles WHERE owner = ? AND plate = ?', unrentals)
|
||||
end
|
||||
|
||||
print(('[esx_vehicleshop] [^2INFO^7] Paying rent cron job took %s seconds'):format(os.clock() - timeStart))
|
||||
print(('[^2INFO^7] ^5Rent Payments^7 took ^5%s^7 ms to execute'):format(ESX.Math.Round((os.time() - timeStart) / 1000000, 2)))
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user