nb_menuperso

Menu personnel pour ESX
Un menu simple qui regroupe l'inventaire, les factures, le téléphone, les emotes, une gestion lite des véhicules et un menu admin
Il permet aussi une compatibilité manette accru.

Pour ouvrir le menu personnel faite F5 ou X+Fleche du haut a la manette
Pour ouvrir le menu métier faite F6 ou X+Fleche du bas a la manette
Pour ouvrir l'inventaire depuis le clavier : Maj+R
Pour ouvrir le téléphone depuis le clavier : Maj+T
Pour ouvrir les factures depuis le clavier : Maj+Y
Pour les admin/owner se TP sur le marker sur la map : Maj+E

Ajout des fonctions lever les mains, s'accroupir et pointer du doigt.
Pour lever les mains depuis le clavier : N
Pour lever les mains avec la manette : Fleche de droite + X
Pour s'accroupir depuis le clavier : Ctrl gauche
Pour s'accroupir avec la manette : Clic joystick gauche
Pour pointer du doigt depuis le clavier : B
Pour pointer du doigt avec la manette : Clic joystick droit

NECESSAIRE

https://github.com/indilo53/fivem-es_extended
https://github.com/FXServer-ESX/fxserver-esx_phone
https://github.com/FXServer-ESX/fxserver-esx_billing
https://github.com/FXServer-ESX/fxserver-esx_policejob
https://github.com/FXServer-ESX/fxserver-esx_ambulancejob
https://github.com/FXServer-ESX/fxserver-esx_mecanojob

INSTALLATION

Copier le dossier "nb_menuperso" dans resources
Ajouter "start nb_menuperso" dans votre serveur.cfg

Lignes a modifier dans d'autres scripts

####################
Dans es_extended :
####################
Modifier le es_extended/client/main.lua pour commenter les lignes suivante :

-- Menu interactions
Citizen.CreateThread(function()
	while true do

  	Wait(0)

  	if IsControlPressed(0, Keys["F2"]) and not ESX.UI.Menu.IsOpen('default', 'es_extended', 'inventory') and (GetGameTimer() - GUI.Time) > 150 then
  		ESX.ShowInventory()
	  	GUI.Time  = GetGameTimer()
    end

  end
end)

et les lignes :

-- Pause menu disable HUD display
Citizen.CreateThread(function()
	while true do
    Citizen.Wait(1)
    if IsPauseMenuActive() and not IsPaused then
      IsPaused = true
      TriggerEvent('es:setMoneyDisplay', 0.0)
      ESX.UI.HUD.SetDisplay(0.0)     
    elseif not IsPauseMenuActive() and IsPaused then
      IsPaused = false
      TriggerEvent('es:setMoneyDisplay', 1.0)
      ESX.UI.HUD.SetDisplay(1.0)    
    end
  end
end)

puis ajouter ces lignes en fin de script :

---------------------------------------------------------------------------------------------------------
--NB : gestion des menu
---------------------------------------------------------------------------------------------------------

RegisterNetEvent('NB:openMenuInventaire')
AddEventHandler('NB:openMenuInventaire', function()
	ESX.ShowInventory()
end)

RegisterNetEvent('NB:closeMenuInventaire')
AddEventHandler('NB:closeMenuInventaire', function()
	if ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'inventory') then
		ESX.UI.Menu.Close('default', GetCurrentResourceName(), 'inventory')
		
	elseif ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'inventory_item') then
		ESX.UI.Menu.Close('default', GetCurrentResourceName(), 'inventory_item')
		
	elseif ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'inventory_item_count_give') then
		ESX.UI.Menu.Close('default', GetCurrentResourceName(), 'inventory_item_count_give')
		
	elseif ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'inventory_item_count_remove') then
		ESX.UI.Menu.Close('default', GetCurrentResourceName(), 'inventory_item_count_remove')
	end
end)

####################
Dans esx_phone :
####################
Modifier le esx_phone/client/main.lua pour commenter les lignes suivante :

    else

      if IsControlPressed(0, Keys['F1']) and (GetGameTimer() - GUI.Time) > 150 then

        if not ESX.UI.Menu.IsOpen('phone', GetCurrentResourceName(), 'main') then
        	ESX.UI.Menu.CloseAll()
        	ESX.UI.Menu.Open('phone', GetCurrentResourceName(), 'main')
        end

        GUI.Time = GetGameTimer()

      end

puis ajouter ces lignes en fin de script :

---------------------------------------------------------------------------------------------------------
--NB : gestion des menu
---------------------------------------------------------------------------------------------------------

RegisterNetEvent('NB:openMenuTelephone')
AddEventHandler('NB:openMenuTelephone', function()
	ESX.UI.Menu.Open('phone', GetCurrentResourceName(), 'main')
end)

RegisterNetEvent('NB:closeMenuTelephone')
AddEventHandler('NB:closeMenuTelephone', function()
	TriggerEvent('NB:closeAllMenu')
end)

####################
Dans esx_billing :
####################
Modifier le esx_billing/client/main.lua pour commenter les lignes suivante :

--Key controls
Citizen.CreateThread(function()
	while true do

  	Wait(0)

  	if IsControlPressed(0, Keys["F7"]) and not ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'billing') and (GetGameTimer() - GUI.Time) > 150 then
  		ShowBillsMenu()
	  	GUI.Time  = GetGameTimer()
    end

  end
end)

puis ajouter ces lignes en fin de script :

---------------------------------------------------------------------------------------------------------
--NB : gestion des menu
---------------------------------------------------------------------------------------------------------

RegisterNetEvent('NB:openMenuFactures')
AddEventHandler('NB:openMenuFactures', function()
  	ShowBillsMenu()
end)

RegisterNetEvent('NB:closeMenuFactures')
AddEventHandler('NB:closeMenuFactures', function()
	TriggerEvent('NB:closeAllMenu')
end)

####################
Dans esx_policejob :
####################
Modifier le esx_policejob/client/main.lua pour commenter les lignes suivante :

		if IsControlPressed(0,  Keys['F6']) and PlayerData.job ~= nil and PlayerData.job.name == 'police' and not ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'police_actions') and (GetGameTimer() - GUI.Time) > 150 then
			OpenPoliceActionsMenu()
			GUI.Time = GetGameTimer()
		end

puis ajouter ces lignes en fin de script :

---------------------------------------------------------------------------------------------------------
--NB : gestion des menu
---------------------------------------------------------------------------------------------------------

RegisterNetEvent('NB:openMenuPolice')
AddEventHandler('NB:openMenuPolice', function()
	OpenPoliceActionsMenu()
end)

RegisterNetEvent('NB:closeMenuPolice')
AddEventHandler('NB:closeMenuPolice', function()
	if ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'citizen_interaction') then
		ESX.UI.Menu.Close('default', GetCurrentResourceName(), 'citizen_interaction')
		
	elseif ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'vehicle_interaction') then
		ESX.UI.Menu.Close('default', GetCurrentResourceName(), 'vehicle_interaction')
		
	elseif ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'object_spawner') then
		ESX.UI.Menu.Close('default', GetCurrentResourceName(), 'object_spawner')
	end
end)

####################
Dans esx_ambulancejob :
####################
Modifier le esx_ambulancejob/client/main.lua pour commenter les lignes suivante :

		if IsControlPressed(0,  Keys['F6']) and PlayerData.job ~= nil and PlayerData.job.name == 'ambulance' and (GetGameTimer() - GUI.Time) > 150 then
			OpenMobileAmbulanceActionsMenu()
			GUI.Time = GetGameTimer()
		end

puis ajouter ces lignes en fin de script :

---------------------------------------------------------------------------------------------------------
--NB : gestion des menu
---------------------------------------------------------------------------------------------------------

RegisterNetEvent('NB:openMenuAmbulance')
AddEventHandler('NB:openMenuAmbulance', function()
	OpenMobileAmbulanceActionsMenu()
end)

RegisterNetEvent('NB:closeMenuAmbulance')
AddEventHandler('NB:closeMenuAmbulance', function()
	if ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'citizen_interaction') then
		ESX.UI.Menu.Close('default', GetCurrentResourceName(), 'citizen_interaction')
	end
end)

####################
Dans esx_mecanojob :
####################
Modifier le esx_mecanojob/client/main.lua commenter les lignes suivantes :

	if IsControlJustReleased(0, Keys['F6']) and PlayerData.job ~= nil and PlayerData.job.name == 'mecano' then
            OpenMobileMecanoActionsMenu()
        end

puis ajouter ces lignes en fin de script :

---------------------------------------------------------------------------------------------------------
--NB : gestion des menu
---------------------------------------------------------------------------------------------------------

RegisterNetEvent('NB:openMenuMecano')
AddEventHandler('NB:openMenuMecano', function()
	OpenMobileMecanoActionsMenu()
end)

RegisterNetEvent('NB:closeMenuMecano')
AddEventHandler('NB:closeMenuMecano', function()
	if ESX.UI.Menu.IsOpen('default', GetCurrentResourceName(), 'citizen_interaction') then
		ESX.UI.Menu.Close('default', GetCurrentResourceName(), 'citizen_interaction')
	end
end)

Attention : Ce script est optimisable et peut etre mis a jour a tout moment.