69 lines
		
	
	
		
			No EOL
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			No EOL
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local title = Lang:t('teleport.teleport_default')
 | 
						|
local ran = false
 | 
						|
local teleportPoly = {}
 | 
						|
 | 
						|
local function teleportMenu(zones, currentZone)
 | 
						|
    local menu = {}
 | 
						|
    for k, v in pairs(Config.Teleports[zones]) do
 | 
						|
        if k ~= currentZone then
 | 
						|
            if not v.label then
 | 
						|
                title = Lang:t('teleport.teleport_default')
 | 
						|
            else
 | 
						|
                title = v.label
 | 
						|
            end
 | 
						|
            menu[#menu + 1] = {
 | 
						|
                header = title,
 | 
						|
                params = {
 | 
						|
                    event = 'teleports:chooseloc',
 | 
						|
                    args = {
 | 
						|
                        car = Config.Teleports[zones][currentZone].allowVeh,
 | 
						|
                        coords = v.poly.coords,
 | 
						|
                        heading = v.poly.heading
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        end
 | 
						|
    end
 | 
						|
    exports['qb-menu']:showHeader(menu)
 | 
						|
end
 | 
						|
 | 
						|
CreateThread(function()
 | 
						|
    for i = 1, #Config.Teleports, 1 do
 | 
						|
        for u = 1, #Config.Teleports[i] do
 | 
						|
            local portal = Config.Teleports[i][u].poly
 | 
						|
            teleportPoly[#teleportPoly + 1] = BoxZone:Create(vector3(portal.coords.x, portal.coords.y, portal.coords.z), portal.length, portal.width, {
 | 
						|
                heading = portal.heading,
 | 
						|
                name = i,
 | 
						|
                debugPoly = false,
 | 
						|
                minZ = portal.coords.z - 5,
 | 
						|
                maxZ = portal.coords.z + 5,
 | 
						|
                data = {pad = u}
 | 
						|
            })
 | 
						|
            local teleportCombo = ComboZone:Create(teleportPoly, {name = 'teleportPoly'})
 | 
						|
            teleportCombo:onPlayerInOut(function(isPointInside, _, zone)
 | 
						|
                if isPointInside then
 | 
						|
                    if not ran then
 | 
						|
                        ran = true
 | 
						|
                        teleportMenu(tonumber(zone.name), zone.data.pad)
 | 
						|
                    end
 | 
						|
                else
 | 
						|
                    ran = false
 | 
						|
                end
 | 
						|
            end)
 | 
						|
        end
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('teleports:chooseloc', function(data)
 | 
						|
    local ped = PlayerPedId()
 | 
						|
    DoScreenFadeOut(500)
 | 
						|
    Wait(500)
 | 
						|
    if data.car then
 | 
						|
        SetPedCoordsKeepVehicle(ped, data.coords.x, data.coords.y, data.coords.z)
 | 
						|
    else
 | 
						|
        SetEntityCoords(ped, data.coords.x, data.coords.y, data.coords.z)
 | 
						|
    end
 | 
						|
    SetEntityHeading(ped, data.heading)
 | 
						|
    Wait(500)
 | 
						|
    DoScreenFadeIn(500)
 | 
						|
end) |