✂️ Hairdresser
Documentation relating to the kd_hairdresser.
1. Installation
kd_hairdresser works on all frameworks compatible with jo_libs (the list).
To install kd_hairdresser :
- Download the library: jo_libs
- Unzip the folder and drop it in your resource folder
- Download kd_hairdresser from your keymaster
- Unzip the folder and drop it in your resource folder
- Add this ensure in your server.cfg
ensure jo_libsensure kd_hairdresser
Congratulation, the Hairdresser script is ready to be use !
WARNING
Be sure you have oxmysql ensure in your server.cfg
For VORP
To fixed clothes and skin, you have to edit two files :
vorp_character/client/client.lua- line 267
function LoadAll(gender, ped, pedskin, components, set)
removeMetaTags(ped)
IsPedReadyToRender(ped)
ResetPedComponents(ped)
local skin = setDefaultSkin(gender, pedskin)
ApplyShopItemToPed(skin.HeadType, ped)
ApplyShopItemToPed(skin.BodyType, ped)
ApplyShopItemToPed(skin.LegsType, ped)
ApplyShopItemToPed(skin.Eyes, ped)
ApplyShopItemToPed(skin.Legs, ped)
ApplyShopItemToPed(skin.Hair, ped)
ApplyShopItemToPed(skin.Beard, ped)
ApplyShopItemToPed(skin.Torso, ped)
EquipMetaPedOutfit(skin.Waist, ped)
EquipMetaPedOutfit(skin.Body, ped)
Citizen.InvokeNative(0xAAB86462966168CE, ped, 1)
LoadFaceFeatures(ped, skin)
UpdatePedVariation(ped)
IsPedReadyToRender(ped)
LoadComps(ped, components, set)
SetPedScale(ped, skin.Scale)
UpdatePedVariation(ped)
TriggerServerEvent("jo_libs:server:applySkinAndClothes",ped,skin,components)
return skin
endvorp_character/server/server.lua- line 6
local function ConvertTable(comps, compTints)
local NewComps = {}
for k, comp in pairs(comps) do
NewComps[k] = { comp = comp, tint0 = 0, tint1 = 0, tint2 = 0, palette = 0 }
if compTints and compTints[k] and compTints[k][tostring(comp)] then
local compTint = compTints[k][tostring(comp)]
NewComps[k].tint0 = compTint.tint0 or 0
NewComps[k].tint1 = compTint.tint1 or 0
NewComps[k].tint2 = compTint.tint2 or 0
NewComps[k].palette = compTint.palette or 0
NewComps[k].state = compTint.state or nil
end
end
return NewComps
end2. Usage
You have two way to use my script :
Go on the shop (marker on the map) and use the command /barber to seat on the chair and open the menu.
Go on the shop and use the prompt to seat on the chair and open the menu
Use my mouse selection and right click on the barber chair to seat on it and open the menu.
For developer, you can force the reload of hair and beard with the client event
kd_hairdresser:client:reload3. Configuration
The configuration file is config.lua in the resource root. Do not edit this file directly as your changes may be lost during updates. Instead, use overwriteConfig.lua to store your customizations.
config.lua- Default configuration maintained by developers. Do not modify this file.overwriteConfig.lua- This is where you place only the values you want to override.
How to customize the configuration
- Open
/overwriteConfig.lua - Find the value you want to change in
config.lua(e.g.,Config.language) - Copy only that line into
overwriteConfig.lua - Edit the copied value to your liking
The script loads config.lua first, then overwriteConfig.lua overwrites only the values you redefine. This ensures your customizations are preserved when updating the script.
4. For developper
Two client events are fired when you use the script :
- When you open the menu :
kd_hairdresser:event:Open - When you close the menu :
kd_hairdresser:event:Close
Filters
Filters are the new way to modify data used by the script. These filters are fired at a specific point in time during the execution of the script. But contrary to events, filters are synchronous.
- Syntax:
-- @param <actionName> - name of the action
-- @param <argumentList> - list of arguments which are passed
exports.kd_haidresser:registerFilter(<actionName>, function(variable)
-- Add your new data here
return variable -- Don't forget to return the value
end)Client canOpenMenu
Fires before sit on the chair. Return false to disable the menu
-- @param canUse - boolean
exports.kd_haidresser:registerFilter('canOpenMenu', function(canOpen)
return canOpen
end)