forked from Simnation/Main
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) |