99 lines
3.3 KiB
Lua
99 lines
3.3 KiB
Lua
|
QBCore = exports['qb-core']:GetCoreObject()
|
||
|
|
||
|
currentStation, opened = nil, false
|
||
|
local lastStation = nil
|
||
|
|
||
|
Citizen.CreateThread(function()
|
||
|
while true do
|
||
|
local playerPed = PlayerPedId()
|
||
|
local currentStation = nil
|
||
|
for k, v in pairs(Config.Stations) do
|
||
|
local playerCoords = GetEntityCoords(playerPed)
|
||
|
local distance = #(playerCoords - v.ticketBuy)
|
||
|
if distance < 12.0 and not IsPedInAnyVehicle(playerPed, false) then
|
||
|
DrawMarker(1, v.ticketBuy, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.MarkerSize, Config.RGB[1], Config.RGB[2], Config.RGB[3], 100, false, true, 2, false, false, false, false)
|
||
|
currentStation = v.stationNumber
|
||
|
lastStation = v.stationNumber
|
||
|
end
|
||
|
if distance < 1.5 and not opened then
|
||
|
SetTextComponentFormat('STRING')
|
||
|
AddTextComponentString("Tryk ~INPUT_CONTEXT~ for at købe en ~y~metrobillet~s~")
|
||
|
DisplayHelpTextFromStringLabel(0, 0, 1, -1)
|
||
|
if IsControlJustPressed(0, 38) then
|
||
|
OpenStationsMenu(currentStation)
|
||
|
currentStation = nil
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
if currentStation == nil then
|
||
|
Citizen.Wait(1000)
|
||
|
end
|
||
|
Citizen.Wait(1)
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
|
||
|
local calculateTime = function(currentStation, station)
|
||
|
local stationsAway = math.abs(currentStation - station)
|
||
|
local time = (stationsAway * Config.SubwayTimer)
|
||
|
return time
|
||
|
end
|
||
|
|
||
|
RegisterNUICallback("action", function(data, cb)
|
||
|
if data.action == "close" then
|
||
|
CloseStationsMenu()
|
||
|
elseif data.action == "transport" then
|
||
|
if data.station ~= currentStation then
|
||
|
for k, v in pairs(Config.Stations) do
|
||
|
if v.stationNumber == data.station then
|
||
|
local time = calculateTime(lastStation, v.stationNumber)
|
||
|
QBCore.Functions.TriggerCallback("hp_subway:getMoney", function(get)
|
||
|
if get then
|
||
|
Teleport(v.exitMetro, time)
|
||
|
end
|
||
|
end, v.price)
|
||
|
end
|
||
|
CloseStationsMenu()
|
||
|
end
|
||
|
end
|
||
|
elseif data.action == "getTime" then
|
||
|
local returnTime = calculateTime(data.currentStation, data.currentNumber)
|
||
|
Wait(10)
|
||
|
cb({time = returnTime})
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
OpenStationsMenu = function(crntStation)
|
||
|
opened = true
|
||
|
SetNuiFocus(true, true)
|
||
|
SendNUIMessage({action = "open", station = Config.Stations, currentNumber = crntStation})
|
||
|
end
|
||
|
|
||
|
CloseStationsMenu = function()
|
||
|
opened = false
|
||
|
SetNuiFocus(false, false)
|
||
|
SendNUIMessage({action = "close"})
|
||
|
end
|
||
|
|
||
|
Teleport = function(spawnCoords, time)
|
||
|
TriggerServerEvent("hp_hud:server:UpdateData", true)
|
||
|
DoScreenFadeOut(1000)
|
||
|
Citizen.Wait(575)
|
||
|
SendNUIMessage({action = "enter"})
|
||
|
local finished = nil
|
||
|
CreateThread(function()
|
||
|
local start = GetGameTimer()/1000
|
||
|
while GetGameTimer()/1000 - start < time do
|
||
|
Wait(1000)
|
||
|
end
|
||
|
finished = true
|
||
|
SetEntityCoords(PlayerPedId(), spawnCoords)
|
||
|
DoScreenFadeIn(1000)
|
||
|
Citizen.Wait(575)
|
||
|
SendNUIMessage({action = "exit"})
|
||
|
TriggerServerEvent("hp_hud:server:UpdateData", false)
|
||
|
end)
|
||
|
while finished == nil or not finished do
|
||
|
Wait(0)
|
||
|
end
|
||
|
end
|