client.lua
ESX = exports['es_extended']:getSharedObject()
local isAdminMenuOpen = false
local isPlayerMenuOpen = false
local currentPed = nil
local currentWalkStyle = nil
RegisterNetEvent('pedadmin:openAdminUI')
AddEventHandler('pedadmin:openAdminUI', function()
isAdminMenuOpen = true
SetNuiFocus(true, true)
SendNUIMessage({
type = 'open_admin_ui'
})
end)
RegisterNetEvent('pedadmin:updatePed')
AddEventHandler('pedadmin:updatePed', function(pedModel, walkStyle)
currentPed = pedModel
currentWalkStyle = walkStyle
applyPedChanges()
end)
function applyPedChanges()
local playerPed = PlayerPedId()
local currentClothes = {}
if not currentPed then
for _, component in ipairs(Config.Components) do
currentClothes[component.subMenu] = GetPedDrawableVariation(playerPed, component.subMenu)
end
end
if currentPed then
RequestModel(currentPed)
while not HasModelLoaded(currentPed) do
Wait(500)
end
SetPlayerModel(PlayerId(), currentPed)
SetModelAsNoLongerNeeded(currentPed)
for component, drawable in pairs(currentClothes) do
SetPedComponentVariation(PlayerPedId(), component, drawable, 0, 0)
end
if currentWalkStyle and currentWalkStyle ~= 'default' then
RequestAnimSet(currentWalkStyle)
while not HasAnimSetLoaded(currentWalkStyle) do
Wait(500)
end
SetPedMovementClipset(PlayerPedId(), currentWalkStyle, 1.0)
end
end
end
function resetToDefaultPed()
ESX.TriggerServerCallback('novuz_appearance:fetchSkin', function(skin)
local model = skin.sex == 0 and `mp_m_freemode_01` or `mp_f_freemode_01`
RequestModel(model)
while not HasModelLoaded(model) do
Wait(500)
end
SetPlayerModel(PlayerId(), model)
SetModelAsNoLongerNeeded(model)
TriggerEvent('novuz_appearance:loadAppearance', skin)
currentPed = nil
currentWalkStyle = nil
ResetPedMovementClipset(PlayerPedId(), 0.0)
end)
end
RegisterNUICallback('closeUI', function(data, cb)
isAdminMenuOpen = false
isPlayerMenuOpen = false
SetNuiFocus(false, false)
cb({})
end)
RegisterNUICallback('getPlayers', function(data, cb)
local players = {}
for _, player in ipairs(ESX.Game.GetPlayers()) do
local playerId = GetPlayerServerId(player)
local playerName = GetPlayerName(player)
table.insert(players, {
id = playerId,
name = playerName
})
end
cb(players)
end)
RegisterNUICallback('savePed', function(data, cb)
TriggerServerEvent('pedadmin:savePed', tonumber(data.playerId), data.pedModel, data.walkStyle)
cb({})
end)
RegisterNUICallback('removePed', function(data, cb)
ESX.TriggerServerCallback('pedadmin:removePed', function(success)
if success then
TriggerEvent('esx:showNotification', 'Ped borttagen')
end
cb({success = success})
end, data.identifier)
end)
RegisterNUICallback('getAllPeds', function(data, cb)
ESX.TriggerServerCallback('pedadmin:getAllPeds', function(peds)
cb(peds)
end)
end)
RegisterNUICallback('usePed', function(data, cb)
if currentPed then
resetToDefaultPed()
else
ESX.TriggerServerCallback('pedadmin:getPlayerPed', function(pedData)
if pedData then
currentPed = pedData.ped_model
currentWalkStyle = pedData.walk_style
applyPedChanges()
end
end)
end
cb({})
end)
RegisterNetEvent('pedadmin:updateClothing')
AddEventHandler('pedadmin:updateClothing', function(component, drawable)
if currentPed then
SetPedComponentVariation(PlayerPedId(), component, drawable, 0, 0)
end
end)
RegisterCommand(Config.CommandPM, function()
ESX.TriggerServerCallback('pedadmin:getPlayerPed', function(pedData)
local elements = {}
if pedData then
elements = {
{label = 'Använd din ped', value = 'use_ped'},
{label = 'Byt kläder', value = 'clothes_ped'},
{label = 'Återställ till din karaktär', value = 'reset_ped'}
}
else
elements = {
{label = 'Du har ingen tilldelad ped', value = 'no_ped', disabled = true}
}
end
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'ped_menu', {
title = 'PedMeny',
align = "right",
elements = elements
}, function(data, menu)
if data.current.value == 'use_ped' then
currentPed = pedData.ped_model
currentWalkStyle = pedData.walk_style
applyPedChanges()
ESX.ShowNotification('Ped tillämpad')
menu.close()
elseif data.current.value == 'clothes_ped' then
menu.close()
local componentList = {}
for _, comp in ipairs(Config.Components) do
table.insert(componentList, comp.subMenu)
end
TriggerEvent("novuz_appearance:openAppearanceMenu", componentList, function()
ESX.ShowNotification("Utseende uppdaterat.")
end)
elseif data.current.value == 'reset_ped' then
resetToDefaultPed()
ESX.ShowNotification('Återställd till karaktär')
menu.close()
end
end, function(data, menu)
menu.close()
end)
end)
end, false)
config.lua
Config = {}
Config.CommandPM = 'pedmenu' -- för pedmenu
Config.CommandPA = 'pedadmin' -- för pedadmin
Config.Components = {
{ ["label"] = "Ansikte", ["subMenu"] = "face" },
{ ["label"] = "Hår / Hjälm", ["subMenu"] = "hair" },
{ ["label"] = "T-Shirt", ["subMenu"] = "tshirt" },
{ ["label"] = "Tröjor", ["subMenu"] = "arms" },
{ ["label"] = "Byxor", ["subMenu"] = "pants" },
{ ["label"] = "Skor", ["subMenu"] = "shoes" },
{ ["label"] = "Dekaler / Bricka", ["subMenu"] = "decals" },
{ ["label"] = "Mask / Huvudbonad", ["subMenu"] = "mask" },
{ ["label"] = "Skottsäkerväst", ["subMenu"] = "bulletproof" },
{ ["label"] = "Halsband / Smycke / Scarf", ["subMenu"] = "chains" },
{ ["label"] = "Hjälm / Huvudbonad", ["subMenu"] = "helmet" },
{ ["label"] = "Glasögon", ["subMenu"] = "glasses" },
{ ["label"] = "Öronaccessoar", ["subMenu"] = "earaccessories" },
{ ["label"] = "Vänsterarm", ["subMenu"] = "watches_left" },
{ ["label"] = "Högerarm", ["subMenu"] = "watches_right" },
{ ["label"] = "Väska / Ryggsäck / Fallskärm", ["subMenu"] = "bag" }
}
Config.Admins = {
'steam:110000166641c43', -- Manne
}
Config.Movement = {
['default'] = 'Standard',
['move_m@gangster@ng'] = 'Gangster',
['move_m@business@a'] = 'Affärsman',
['MOVE_CHARACTERS@ORLEANS@CORE@'] = 'Gorilla'
}
gör en server.lua pedsen ska sparas i en peds.json med