Hey guys i need help!
I want to use a Vehicle Addon/Livery Menu.
But it should only be useable with the Mechanic Job.
What do i have to do ?
Hey guys i need help!
I want to use a Vehicle Addon/Livery Menu.
But it should only be useable with the Mechanic Job.
What do i have to do ?
if PlayerData.job ~= nil and PlayerData.job.name == âjob1â then
job = job1
elseif PlayerData.job ~= nil and PlayerData.job.name == âjob2â then
job = job2
elseif PlayerData.job ~= nil and PlayerData.job.name == âjob3â then
job = job3
FOR EVERY job do that âŚ
end
so that will be
if PlayerData.job ~= nil and PlayerData.job.name == âpoliceâ then
â your stuff
end
What do i have to Change to get it only to Mechanic?
Client.lua:
_menuPool = NativeUI.CreatePool()
function ShowNotification(text)
SetNotificationTextEntry(âSTRINGâ)
AddTextComponentString(text)
DrawNotification(false, false)
endfunction has_hash_value (tab, val)
for index, value in ipairs(tab) do
if GetHashKey(value) == val then
return true
end
end
return false
endcardoors = {}
for k, v in pairs (Config.doors) do
cardoors[k] = v
endcarwindows = {}
for k, v in pairs (Config.windows) do
carwindows[k] = v
end---- Creating Menus
function LiveryMenu(vehicle, menu)
local liveryMenu = _menuPool:AddSubMenu(menu, âLiveryâ, âEdit vehicle liveriesâ,
true, true, true)
local livery_count = GetVehicleLiveryCount(vehicle)
local livery_list = {}
local fetched_liveries = falsefor liveryID = 1, livery_count do
livery_list[liveryID] = liveryID
fetched_liveries = true
endlocal liveryItem = NativeUI.CreateListItem(âLiveryâ, livery_list,
GetVehicleLivery(vehicle))
liveryMenu:AddItem(liveryItem)liveryMenu.OnListChange = function(sender, item, index)
if item == liveryItem then
SetVehicleLivery(vehicle,item:IndexToItem(index))
end
end
endfunction ExtrasMenu(vehicle, menu)
local extrasMenu = _menuPool:AddSubMenu(menu, âExtrasâ, âEdit vehicle extrasâ,
true, true)local veh_extras = {[âvehicleExtrasâ] = {}}
local items = {[âvehicleâ] = {}}
local fetched_extras = falsefor extraID = 0, 20 do
if DoesExtraExist(vehicle, extraID) then
veh_extras.vehicleExtras[extraID] = (IsVehicleExtraTurnedOn(vehicle, extraID)
== 1)
fetched_extras = true
end
endif fetched_extras then for k, v in pairs(veh_extras.vehicleExtras) do local extraItem = NativeUI.CreateCheckboxItem('Extra ' .. k,
veh_extras.vehicleExtras[k],"Toggle for Extra "âŚk)
extrasMenu:AddItem(extraItem)
items.vehicle[k] = extraItem
endextrasMenu.OnCheckboxChange = function(sender, item, checked) for k, v in pairs(items.vehicle) do if item == v then veh_extras.vehicleExtras[k] = checked if veh_extras.vehicleExtras[k] then SetVehicleExtra(vehicle, k, 0) else SetVehicleExtra(vehicle, k, 1) end end end end end
end
function AddLocksEngineMenu(vehicle, menu)
local lockMenu = NativeUI.CreateItem(âToggle Locksâ, âLock/Unlock vehicleâ)
local engineMenu = NativeUI.CreateItem(âToggle Engineâ, âStart/Stop engineâ)
menu:AddItem(lockMenu)
menu:AddItem(engineMenu)menu.OnListChange = function(sender, item, index)
print(âBeep Beep.â)
endmenu.OnItemSelect = function(sender, item, index)
if item == lockMenu then
print(âLock status:â)
print(GetVehicleDoorLockStatus(vehicle))
if GetVehicleDoorLockStatus(vehicle) == 1 or
GetVehicleDoorLockStatus(vehicle) == 0 then
SetVehicleDoorsLocked(vehicle,4)
ShowNotification(âLocking Doorsâ)
else
SetVehicleDoorsLocked(vehicle,1)
ShowNotification(âUnlocking Doorsâ)
end
end
if item == engineMenu then
print(âengine running?:â)
print(GetIsVehicleEngineRunning(vehicle))
if GetIsVehicleEngineRunning(vehicle) then
SetVehicleEngineOn(vehicle,false,false,true)
else
SetVehicleEngineOn(vehicle,true,false,true)
end
end
end
endfunction AddDoorsMenu(vehicle, menu)
local doorMenu = _menuPool:AddSubMenu(menu, âDoorsâ, âOpen/Close doorsâ,
true, true)for k, v in pairs(cardoors) do
newIndex = k - 1
if DoesVehicleHaveDoor(vehicle, newIndex) then
local doorItem = NativeUI.CreateItem("Toggle "âŚv,"Toggle for "âŚv)
doorMenu:AddItem(doorItem)
end
enddoorMenu.OnItemSelect = function(sender, item, index)
newIndex = index - 1
if DoesVehicleHaveDoor(vehicle, newIndex) then
local isopen = GetVehicleDoorAngleRatio(vehicle,newIndex)
if isopen == 0 then
SetVehicleDoorOpen(vehicle,newIndex,0,0)
ShowNotification(âOpening ââŚConfig.doors[index]âŚâ Doorâ)
else
SetVehicleDoorShut(vehicle,newIndex,0)
ShowNotification(âShutting ââŚConfig.doors[index]âŚâ Doorâ)
end
end
end
endfunction AddWindowsMenu(vehicle, menu)
local windowMenu = _menuPool:AddSubMenu(menu, âWindowsâ, âOpen/Close
windowsâ, true, true)for k, v in pairs(carwindows) do
local windowItem = NativeUI.CreateItem(âToggle ââŚvâŚâ Windowâ,"")
windowMenu:AddItem(windowItem)
endwindowMenu.OnItemSelect = function(sender, item, index)
newIndex = index - 1
local isopen = IsVehicleWindowIntact(vehicle,newIndex)
if isopen then
RollDownWindow(vehicle,newIndex,0,0)
ShowNotification(âOpening ââŚConfig.windows[index]âŚâ Windowâ)
else
RollUpWindow(vehicle,newIndex,0)
ShowNotification(âShutting ââŚConfig.windows[index]âŚâ Windowâ)
end
end
endfunction openDynamicMenu(vehicle)
_menuPool:Remove()
if vehMenu ~= nil and vehMenu:Visible() then
vehMenu:Visible(false)
return
end
vehMenu = NativeUI.CreateMenu(Config.mTitle, âEdit your vehicleâ, 5,
100,Config.mBG[1],Config.mBG[2])
_menuPool:Add(vehMenu)
LiveryMenu(vehicle, vehMenu)
ExtrasMenu(vehicle, vehMenu)
AddDoorsMenu(vehicle, vehMenu)
AddWindowsMenu(vehicle, vehMenu)
AddLocksEngineMenu(vehicle, vehMenu)_menuPool:RefreshIndex()
_menuPool:MouseControlsEnabled (false);
_menuPool:MouseEdgeEnabled (false);
_menuPool:ControlDisablingEnabled(false);
endCitizen.CreateThread(function()
while true do
Citizen.Wait(0)
_menuPool:ProcessMenus()local ped = GetPlayerPed(-1) local vehicle = GetVehiclePedIsIn(ped, false) if IsControlJustReleased(1, Config.menuKey) then if IsPedInAnyVehicle(ped, false) and GetPedInVehicleSeat(vehicle, -1) == > ped then print("Open Menu!") collectgarbage() openDynamicMenu(vehicle) vehMenu:Visible(not vehMenu:Visible()) end end if IsPedInAnyVehicle(ped, false) == false then if vehMenu ~= nil and vehMenu:Visible() then vehMenu:Visible(false) end end end
end)
I hope you have ESX Framework on your server, as this category topic.
-- Get ESX Object.
ESX = nil
local PlayerData = {}
Citizen.CreateThread(function()
while ESX == nil do
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
Citizen.Wait(500)
end
while ESX.GetPlayerData().job == nil do
Citizen.Wait(100)
end
Citizen.Wait(5000)
PlayerData = ESX.GetPlayerData()
end)
RegisterNetEvent("esx:playerLoaded")
AddEventHandler("esx:playerLoaded", function(Player)
PlayerData = Player
end)
RegisterNetEvent("esx:setJob")
AddEventHandler("esx:setJob", function(Job)
PlayerData.job = Job
end)
if PlayerData.job.name == "mechanic" then
-- Your other stuff.
end
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.