Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can someone help me please #86

Open
CrankChaos opened this issue Feb 21, 2022 · 0 comments
Open

Can someone help me please #86

CrankChaos opened this issue Feb 21, 2022 · 0 comments

Comments

@CrankChaos
Copy link

Using esx_eden_garage,
and with this code: function StoreVehicleInGarage(vehicle)
local plate = GetVehicleNumberPlateText(vehicle)
local fuelLevel = exports["LegacyFuel"]:GetFuel(vehicle)

TriggerServerEvent('vehiclesStored', plate, fuel)
end

I cant seem to save the fuel when putting in garage. Where is this code going to be added?

`local CurrentAction = nil
local GUI = {}
GUI.Time = 0
local HasAlreadyEnteredMarker = false
local LastZone = nil
local CurrentActionMsg = ''
local CurrentActionData = {}
local times = 0
local this_Garage = {}
-- Init ESX
ESX = nil

Citizen.CreateThread(function()
while ESX == nil do
TriggerEvent('esx:getSharedObject', function(obj)
ESX = obj
end)

    Citizen.Wait(0)
end

end)

--- Blips Management
RegisterNetEvent('esx:playerLoaded')

AddEventHandler('esx:playerLoaded', function(xPlayer)
--PlayerData = xPlayer
--TriggerServerEvent('esx_jobs:giveBackCautionInCaseOfDrop')
refreshBlips()
end)

function refreshBlips()
local zones = {}
local blipInfo = {}

for zoneKey, zoneValues in pairs(Config.Garages) do
    local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z)
    SetBlipSprite(blip, Config.BlipInfos.Sprite)
    SetBlipDisplay(blip, 4)
    SetBlipScale(blip, 1.2)
    SetBlipColour(blip, Config.BlipInfos.Color)
    SetBlipAsShortRange(blip, true)
    BeginTextCommandSetBlipName('STRING')
    AddTextComponentString(zoneKey)
    EndTextCommandSetBlipName(blip)
    local blip = AddBlipForCoord(zoneValues.MunicipalPoundPoint.Pos.x, zoneValues.MunicipalPoundPoint.Pos.y, zoneValues.MunicipalPoundPoint.Pos.z)
    SetBlipSprite(blip, Config.BlipPound.Sprite)
    SetBlipDisplay(blip, 4)
    SetBlipScale(blip, 1.2)
    SetBlipColour(blip, Config.BlipPound.Color)
    SetBlipAsShortRange(blip, true)
    BeginTextCommandSetBlipName('STRING')
    AddTextComponentString(_U('impound_yard'))
    EndTextCommandSetBlipName(blip)
end

end
--Menu function
function OpenMenuGarage(PointType)
ESX.UI.Menu.CloseAll()
local elements = {}

if PointType == 'spawn' then
    table.insert(elements, {
        label = _U('list_vehicles'),
        value = 'list_vehicles'
    })
end

if PointType == 'delete' then
    table.insert(elements, {
        label = _U('stock_vehicle'),
        value = 'stock_vehicle'
    })
end

if PointType == 'pound' then
    table.insert(elements, {
        label = _U('return_vehicle', Config.Price),
        value = 'return_vehicle'
    })
end

ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'garage_menu', {
    title = _U('garage'),
    align = 'top-left',
    elements = elements
}, function(data, menu)
    menu.close()

    if (data.current.value == 'list_vehicles') then
        ListVehiclesMenu()
    end

    if (data.current.value == 'stock_vehicle') then
        StockVehicleMenu()
    end

    if (data.current.value == 'return_vehicle') then
        ReturnVehicleMenu()
    end

    local playerPed = GetPlayerPed(-1)
    SpawnVehicle(data.current.value)
end, function(data, menu)
    menu.close()
end)

end

-- View Vehicle Listings
function ListVehiclesMenu()
local elements = {}

ESX.TriggerServerCallback('eden_garage:getVehicles', function(vehicles)
    for _, v in pairs(vehicles) do
        local hashVehicule = v.vehicle.model
        local vehicleName = GetDisplayNameFromVehicleModel(hashVehicule)
        local labelvehicle

        if (v.state) then
            labelvehicle = _U('status_in_garage', GetLabelText(vehicleName))
        else
            labelvehicle = _U('status_impounded', GetLabelText(vehicleName))
        end

        table.insert(elements, {
            label = labelvehicle,
            value = v
        })
    end

    ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'spawn_vehicle', {
        title = _U('garage'),
        align = 'top-left',
        elements = elements
    }, function(data, menu)
        if (data.current.value.state) then
            menu.close()
            SpawnVehicle(data.current.value.vehicle)
        else
            exports.pNotify:SendNotification({
                text = _U('notif_car_impounded'),
                queue = 'right',
                timeout = 400,
                layout = 'centerLeft'
            })
        end
    end, function(data, menu)
        menu.close()
    end)
end)
--CurrentAction = 'open_garage_action'

end

function reparation(prix, vehicle, vehicleProps)
ESX.UI.Menu.CloseAll()

local elements = {
    {
        label = _U('reparation_yes', prix),
        value = 'yes'
    },
    {
        label = _U('reparation_no', prix),
        value = 'no'
    }
}

ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'delete_menu', {
    title = _U('reparation'),
    align = 'top-left',
    elements = elements
}, function(data, menu)
    menu.close()

    if (data.current.value == 'yes') then
        TriggerServerEvent('eden_garage:payhealth', prix)
        ranger(vehicle, vehicleProps)
    end

    if (data.current.value == 'no') then
        ESX.ShowNotification(_U('reparation_no_notif'))
    end
end, function(data, menu)
    menu.close()
end)

end

RegisterNetEvent('eden_garage:deletevehicle_cl')

AddEventHandler('eden_garage:deletevehicle_cl', function(plate)
local _plate = plate:gsub('^%s*(.-)%s*$', '%1')
local playerPed = GetPlayerPed(-1)

if IsPedInAnyVehicle(playerPed, false) then
    local playerPed = GetPlayerPed(-1)
    local coords = GetEntityCoords(playerPed)
    local vehicle = GetVehiclePedIsIn(playerPed, false)
    local vehicleProps = ESX.Game.GetVehicleProperties(vehicle)
    local usedPlate = vehicleProps.plate:gsub('^%s*(.-)%s*$', '%1')

    if usedPlate == _plate then
        ESX.Game.DeleteVehicle(vehicle)
    end
end

end)

function ranger(vehicle, vehicleProps)
TriggerServerEvent('eden_garage:deletevehicle_sv', vehicleProps.plate)
TriggerServerEvent('eden_garage:modifystate', vehicleProps, true)

exports.pNotify:SendNotification({
    text = _U('ranger'),
    queue = 'right',
    timeout = 400,
    layout = 'centerLeft'
})

end

-- Function that allows player to enter a vehicle
function StockVehicleMenu()
local playerPed = GetPlayerPed(-1)

if IsPedInAnyVehicle(playerPed, false) then
    local playerPed = GetPlayerPed(-1)
    local coords = GetEntityCoords(playerPed)
    local vehicle = GetVehiclePedIsIn(playerPed, false)
    local vehicleProps = ESX.Game.GetVehicleProperties(vehicle)
    local current = GetPlayersLastVehicle(GetPlayerPed(-1), true)
    local engineHealth = GetVehicleEngineHealth(current)

    ESX.TriggerServerCallback('eden_garage:stockv', function(valid)
        if (valid) then
            ESX.TriggerServerCallback('eden_garage:getVehicles', function(vehicules)
                local plate = vehicleProps.plate:gsub('^%s*(.-)%s*$', '%1')
                local owned = false

                for _, v in pairs(vehicules) do
                    if plate == v.plate then
                        owned = true
                        TriggerServerEvent('eden_garage:debug', 'vehicle plate returned to the garage: ' .. vehicleProps.plate)
                        TriggerServerEvent('eden_garage:logging', 'Fahrzeug zurück in die Garage: ' .. engineHealth)

                        if engineHealth < 1000 then
                            local fraisRep = math.floor((1000 - engineHealth) * Config.RepairMultiplier)
                            reparation(fraisRep, vehicle, vehicleProps)
                        else
                            ranger(vehicle, vehicleProps)
                        end
                    end
                end

                if owned == false then
                    exports.pNotify:SendNotification({
                        text = _U('stockv_not_owned'),
                        queue = 'right',
                        timeout = 400,
                        layout = 'centerLeft'
                    })
                end
            end)
        else
            exports.pNotify:SendNotification({
                text = _U('stockv_not_owned'),
                queue = 'right',
                timeout = 400,
                layout = 'centerLeft'
            })
        end
    end, vehicleProps)
else
    exports.pNotify:SendNotification({
        text = _U('stockv_not_in_veh'),
        queue = 'right',
        timeout = 400,
        layout = 'centerLeft'
    })
end

end

--Function for spawning vehicle
function SpawnVehicle(vehicle)
ESX.Game.SpawnVehicle(vehicle.model, {
x = this_Garage.SpawnPoint.Pos.x,
y = this_Garage.SpawnPoint.Pos.y,
z = this_Garage.SpawnPoint.Pos.z + 1
}, this_Garage.SpawnPoint.Heading, function(callback_vehicle)
ESX.Game.SetVehicleProperties(callback_vehicle, vehicle)
SetVehRadioStation(callback_vehicle, 'OFF')
TaskWarpPedIntoVehicle(GetPlayerPed(-1), callback_vehicle, -1)
local plate = GetVehicleNumberPlateText(callback_vehicle)
TriggerServerEvent('ls:mainCheck', plate, callback_vehicle, true)
end)

TriggerServerEvent('eden_garage:modifystate', vehicle, false)

end

--Function for spawning vehicle
function SpawnPoundedVehicle(vehicle)
ESX.Game.SpawnVehicle(vehicle.model, {
x = this_Garage.SpawnMunicipalPoundPoint.Pos.x,
y = this_Garage.SpawnMunicipalPoundPoint.Pos.y,
z = this_Garage.SpawnMunicipalPoundPoint.Pos.z + 1
}, 180, function(callback_vehicle)
ESX.Game.SetVehicleProperties(callback_vehicle, vehicle)
local plate = GetVehicleNumberPlateText(callback_vehicle)
TriggerServerEvent('ls:mainCheck', plate, callback_vehicle, true)
end)

TriggerServerEvent('eden_garage:modifystate', vehicle, true)

ESX.SetTimeout(10000, function()
    TriggerServerEvent('eden_garage:modifystate', vehicle, false)
end)

end

-- Marker actions
AddEventHandler('eden_garage:hasEnteredMarker', function(zone)
if zone == 'spawn' then
CurrentAction = 'spawn'
CurrentActionMsg = _U('spawn')
CurrentActionData = {}
end

if zone == 'delete' then
    CurrentAction = 'delete'
    CurrentActionMsg = _U('delete')
    CurrentActionData = {}
end

if zone == 'pound' then
    CurrentAction = 'pound_action_menu'
    CurrentActionMsg = _U('pound_action_menu')
    CurrentActionData = {}
end

end)

AddEventHandler('eden_garage:hasExitedMarker', function(zone)
ESX.UI.Menu.CloseAll()
CurrentAction = nil
end)

function ReturnVehicleMenu()
ESX.TriggerServerCallback('eden_garage:getOutVehicles', function(vehicles)
local elements = {}

    for _, v in pairs(vehicles) do
        local hashVehicule = v.model
        local vehicleName = GetDisplayNameFromVehicleModel(hashVehicule)
        local labelvehicle
        labelvehicle = _U('impound_list', GetLabelText(vehicleName))

        table.insert(elements, {
            label = labelvehicle,
            value = v
        })
    end

    ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'return_vehicle', {
        title = _U('impound_yard'),
        align = 'top-left',
        elements = elements
    }, function(data, menu)
        ESX.TriggerServerCallback('eden_garage:checkMoney', function(hasEnoughMoney)
            if hasEnoughMoney then
                if times == 0 then
                    TriggerServerEvent('eden_garage:pay')
                    SpawnPoundedVehicle(data.current.value)
                    times = times + 1
                elseif times > 0 then
                    ESX.SetTimeout(60000, function()
                        times = 0
                    end)
                end
            else
                exports.pNotify:SendNotification({
                    text = _U('impound_not_enough_money'),
                    queue = 'right',
                    timeout = 400,
                    layout = 'centerLeft'
                })
            end
        end)
    end, function(data, menu)
        menu.close()
    end)
end)
--CurrentAction = 'open_garage_action'

end

-- Display markers
Citizen.CreateThread(function()
while true do
Wait(0)
local coords = GetEntityCoords(GetPlayerPed(-1))

    for k, v in pairs(Config.Garages) do
        if (GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then
            DrawMarker(v.SpawnPoint.Marker, v.SpawnPoint.Pos.x, v.SpawnPoint.Pos.y, v.SpawnPoint.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.SpawnPoint.Size.x, v.SpawnPoint.Size.y, v.SpawnPoint.Size.z, v.SpawnPoint.Color.r, v.SpawnPoint.Color.g, v.SpawnPoint.Color.b, 100, false, true, 2, false, false, false, false)
            DrawMarker(v.DeletePoint.Marker, v.DeletePoint.Pos.x, v.DeletePoint.Pos.y, v.DeletePoint.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.DeletePoint.Size.x, v.DeletePoint.Size.y, v.DeletePoint.Size.z, v.DeletePoint.Color.r, v.DeletePoint.Color.g, v.DeletePoint.Color.b, 100, false, true, 2, false, false, false, false)
        end

        if (GetDistanceBetweenCoords(coords, v.MunicipalPoundPoint.Pos.x, v.MunicipalPoundPoint.Pos.y, v.MunicipalPoundPoint.Pos.z, true) < Config.DrawDistance) then
            DrawMarker(v.MunicipalPoundPoint.Marker, v.MunicipalPoundPoint.Pos.x, v.MunicipalPoundPoint.Pos.y, v.MunicipalPoundPoint.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.MunicipalPoundPoint.Size.x, v.MunicipalPoundPoint.Size.y, v.MunicipalPoundPoint.Size.z, v.MunicipalPoundPoint.Color.r, v.MunicipalPoundPoint.Color.g, v.MunicipalPoundPoint.Color.b, 100, false, true, 2, false, false, false, false)
            DrawMarker(v.SpawnMunicipalPoundPoint.Marker, v.SpawnMunicipalPoundPoint.Pos.x, v.SpawnMunicipalPoundPoint.Pos.y, v.SpawnMunicipalPoundPoint.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.SpawnMunicipalPoundPoint.Size.x, v.SpawnMunicipalPoundPoint.Size.y, v.SpawnMunicipalPoundPoint.Size.z, v.SpawnMunicipalPoundPoint.Color.r, v.SpawnMunicipalPoundPoint.Color.g, v.SpawnMunicipalPoundPoint.Color.b, 100, false, true, 2, false, false, false, false)
        end
    end
end

end)

-- Open/close menus
Citizen.CreateThread(function()
local currentZone = 'garage'

while true do
    Wait(0)
    local coords = GetEntityCoords(GetPlayerPed(-1))
    local isInMarker = false

    for _, v in pairs(Config.Garages) do
        if (GetDistanceBetweenCoords(coords, v.SpawnPoint.Pos.x, v.SpawnPoint.Pos.y, v.SpawnPoint.Pos.z, true) < v.Size.x) then
            isInMarker = true
            this_Garage = v
            currentZone = 'spawn'
        end

        if (GetDistanceBetweenCoords(coords, v.DeletePoint.Pos.x, v.DeletePoint.Pos.y, v.DeletePoint.Pos.z, true) < v.Size.x) then
            isInMarker = true
            this_Garage = v
            currentZone = 'delete'
        end

        if (GetDistanceBetweenCoords(coords, v.MunicipalPoundPoint.Pos.x, v.MunicipalPoundPoint.Pos.y, v.MunicipalPoundPoint.Pos.z, true) < v.MunicipalPoundPoint.Size.x) then
            isInMarker = true
            this_Garage = v
            currentZone = 'pound'
        end
    end

    if isInMarker and not hasAlreadyEnteredMarker then
        hasAlreadyEnteredMarker = true
        LastZone = currentZone
        TriggerEvent('eden_garage:hasEnteredMarker', currentZone)
    end

    if not isInMarker and hasAlreadyEnteredMarker then
        hasAlreadyEnteredMarker = false
        TriggerEvent('eden_garage:hasExitedMarker', LastZone)
    end
end

end)

-- Button press
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)

    if CurrentAction ~= nil then
        SetTextComponentFormat('STRING')
        AddTextComponentString(CurrentActionMsg)
        DisplayHelpTextFromStringLabel(0, 0, 1, -1)

        if IsControlPressed(0, 38) and (GetGameTimer() - GUI.Time) > 150 then
            if CurrentAction == 'pound_action_menu' then
                OpenMenuGarage('pound')
            end

            if CurrentAction == 'spawn' then
                OpenMenuGarage('spawn')
            end

            if CurrentAction == 'delete' then
                OpenMenuGarage('delete')
            end

            CurrentAction = nil
            GUI.Time = GetGameTimer()
        end
    end
end

end)
-- Fin controle touche`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant