[SHOWCASE] vms_barber
Compatibility with ESX and QB-Core
Compatibility with esx_skin / qb-clothing / fivem-appearance / illenium-appearance
Pretty UI design.
Barber job to be set in config, many players can have their own barbershop, but this does not exclude the possibility of setting another barbers for NPCs.
Price separately for each category. (hairs, beards, eyes)
Advanced barber includes the ability to configure how many barbers are be companies of the players and how many by NPCs at one time!
Script easy to configure.
Automatic detection of addon hairstyles.
Synchronized haircutting animations by the player and NPCs.
Compatibility with Onesync & OneSync Infinity.
0.00ms resmon outside the interiors.
0.03ms resmon in the course of using the barber.
Ability to set custom hairstyle name in config.
Ability to set TextUI (my free TextUI here)
Automatically camera correct detection with switching of 45 degrees of angle.
Full JS, Lua translation.
Full 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:playerLoaded' -- its a trigger to load players tattoos
-- ESX: "esx:playerLoaded"
-- 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']:DrawText(msg, 'right')
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.",
},
}
If you decide to purchase the script, I encourage you to join on the discord, to keep up to date with updates.
You can check my others scripts
vms_bank
vms_pausemenu
vms_skydiving
vms_races
vms_drivingschool
vms_boatschool
vms_flyingschool
vms_notify
vms_shops
vms_redeem
vms_garage
vms_jobcenter
vms_subway
interact
Code is accessible | Yes/No |
Subscription-based | No |
Lines (approximately) | +500 lua |
Requirements | ESX, esx_skin, skinchanger |
Support | Yes |