- ESX and QB-Core Compatibility
- Support for esx_skin, qb-clothing, fivem-appearance, and illenium-appearance
- Elegant UI design
- Configurable Barber job, allowing multiple players to own their own barbershops, with the option to assign barbers for NPCs
- Separate pricing for each category (hairs, beards, eyes)
- Advanced barber functionality, enabling configuration of the number of player-owned and NPC barbers simultaneously
- User-friendly script configuration
- Automatic detection of addon hairstyles
- Synchronized haircutting animations for both players and NPCs
- Compatibility with Onesync & OneSync Infinity
- Negligible resmon impact (0.00ms outside interiors, 0.03ms during barber usage)
- Customizable hairstyle names in the configuration
- Option to use TextUI (free TextUI available)
- Automatic camera angle correction with a 45-degree switch
- Full translation support for JS and Lua
- Comprehensive assistance and support.
| Config = {} Config.Core = "ESX" -- "ESX" / "QB-Core" Config.CoreExport = function() return exports['es_extended']:getSharedObject() -- return exports['qb-core']:GetCoreObject() end Config.PlayerLoaded = 'esx -- ESX: "esx -- QBCore: "QBCore:Client:OnPlayerLoaded" Config.JobUpdated = 'esx:setJob' -- its a trigger to check players job -- ESX: "esx:setJob" -- QBCore: "QBCore:Client:OnJobUpdate" -- @Config.SkinManager for ESX: "esx_skin" / "fivem-appearance" / "illenium-appearance" -- @Config.SkinManager for QBCore: "qb-clothing" / "fivem-appearance" / "illenium-appearance" Config.SkinManager = "esx_skin" Config.DistanceView = 8 Config.DistanceAccess = 1.1 Config.AnimDict = "misshair_shop@barbers" Config.Anim = "keeper_idle_b" Config.CanMakeup = true -- if you want a player can buy makeup's set true -- Config.CanOthers = false -- if you want a player can buy chest_hair's, set true Config.Notification = function(message, time, type) if type == "success" then exports["vms_notify"]:Notification("BARBER", message, time, "#27FF09", "fa fa-scissors") -- ESX.ShowNotification(message) -- QBCore.Functions.Notify(message, "success", 5000) elseif type == "error" then exports["vms_notify"]:Notification("BARBER", message, time, "#FF0909", "fa fa-scissors") -- ESX.ShowNotification(message) -- QBCore.Functions.Notify(message, "error", 5000) end end Config.TextUI_Enabled = false Config.TextUI_Open = function(msg) exports["interact"]:Open("E", msg) -- Here you can use your TextUI or use my free one - https://github.com/vames-dev/interact -- exports['okokTextUI']:Open('[E] '..msg, 'darkgreen', 'right') -- exports['qb-core'] end Config.TextUI_Close = function() exports["interact"]:Close() -- Here you can use your TextUI or use my free one - https://github.com/vames-dev/interact -- exports['okokTextUI']:Close() -- exports['qb-core']:HideText() end Config.Blip = { ["Sprite"] = 71, ["Scale"] = 0.6, ["Color"] = 3, ["Display"] = 4 } Config.Prices = { ["hair"] = 5500, ["beard"] = 3500, ["eye"] = 1500, ["makeup"] = 500, } Config.CustomNames = { ["hair_1"] = { [0] = "Bald", [14] = "Dreads", [16] = "Afro curls", }, } Config.Barbers = { { -- HOT SHAVE | Carson Ave - Davis business = false, barber = "s_f_m_fembarber", pedHeadingToChair = 227.49, position = vector3(136.66, -1708.4, 28.29), barberSpawnPos = vector4(141.45, -1705.82, 28.29, 141.47), takeSitMarker = { FreeColor = {255, 9, 106, 125}, BusyColor = {128, 0, 31, 110}, }, Chairs = { [1] = { position = vector3(136.8, -1709.88, 28.3), barberPos = vector4(137.68, -1709.84, 28.3, 224.61), chair_coord = vector4(137.77, -1710.67, 28.71, 229.93), busy = false, }, [2] = { position = vector3(137.79, -1708.71, 28.3), barberPos = vector4(138.59, -1708.64, 28.3, 230.57), chair_coord = vector4(138.72, -1709.58, 28.64, 232.26), busy = false, }, [3] = { position = vector3(138.7, -1707.5, 28.3), barberPos = vector4(139.35, -1707.5, 28.3, 223.69), chair_coord = vector4(139.66, -1708.47, 28.64, 222.14), busy = false, }, } }, { -- HOT SHAVE | Magellan Ave - Conquistador St, Vespucci > The file is supplemented by this hairdressing salon, but here I removed so that there was so much code. }, { -- HOT SHAVE | Mirror Park Blvd - Park Mirror > The file is supplemented by this hairdressing salon, but here I removed so that there was so much code. }, { -- HOT SHAVE | Paleto Blvd - Duluoz Ave, Paleto Bay > The file is supplemented by this hairdressing salon, but here I removed so that there was so much code. }, { -- HOT SHAVE | Alhambra Dr - Niland Ave, Sandy Shores > The file is supplemented by this hairdressing salon, but here I removed so that there was so much code. }, { -- BOB MULET | Mad Wayne Thunder Dr - Rockford Hills business = true, ownerJob = "barber1", barber = "s_m_m_hairdress_01", position = vector3(-814.58, -184.39, 36.57), barberSpawnPos = vector4(-808.27, -179.79, 36.57, 124.26), takeSitMarker = { FreeColor = {255, 9, 106, 125}, BusyColor = {128, 0, 31, 110}, }, Chairs = { [1] = { position = vector3(-817.68, -184.44, 36.57), barberPos = vector4(-818.15, -184.76, 36.57, 344.45), chair_coord = vector4(-818.21, -183.57, 36.8, 27.48), busy = false, }, [2] = { position = vector3(-815.9, -183.45, 36.57), barberPos = vector4(-816.43, -183.68, 36.57, 351.06), chair_coord = vector4(-816.46, -182.55, 36.8, 27.48), busy = false, }, [3] = { position = vector3(-814.16, -182.53, 36.57), barberPos = vector4(-814.65, -182.68, 36.57, 355.75), chair_coord = vector4(-814.69, -181.53, 36.8, 33.27), busy = false, }, [4] = { position = vector3(-812.44, -181.54, 36.57), barberPos = vector4(-813.22, -181.52, 36.57, 25.87), chair_coord = vector4(-812.97, -180.6, 36.85, 33.07), busy = false, }, } }, } Config.Lang = "EN" Config.Translate = { ["EN"] = { ["barber_blip"] = "Barber", ["take_a_sit"] = "Take a sit", -- if textui is disabled then you will use ESX.ShowHelpNotification, set this: "Press ~INPUT_CONTEXT~ to take a sit" ["open_barber"] = "Take care of the customer", -- if textui is disabled then you will use ESX.ShowHelpNotification, set this: "Press ~INPUT_CONTEXT~ to open menu" ["get_up"] = "Press ~INPUT_VEH_DUCK~ to get up", ["paid"] = "You paid %s$ for a service.", ["nomoney"] = "You don't have enough money.", ["you_started_cutting_customer"] = "You're cutting the customer hair", ["started_cutting_hair_by_employee"] = "The hairdresser started cutting you", }, ["PL"] = { ["barber_blip"] = "Fryzjer", ["take_a_sit"] = "Usiądź", -- if textui is disabled then you will use ESX.ShowHelpNotification, set this: "Press ~INPUT_CONTEXT~ to take a sit" ["open_barber"] = "Klient", -- if textui is disabled then you will use ESX.ShowHelpNotification, set this: "Press ~INPUT_CONTEXT~ to open menu" ["get_up"] = "Naciśnij ~INPUT_VEH_DUCK~ aby wstać", ["paid"] = "Zapłacono %s$ za usługę.", ["nomoney"] = "Nie posiadasz wystarczająco pieniędzy.", ["started_cutting"] = "Obcinasz klientowi włosy", ["started_cutting_hair_by_employee"] = "Fryzjer zaczął cię strzyc.", }, } | 





