JIT
creating a server script for saving peds in json format
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
Updated files
v1