forked from Simnation/Main
130 lines
3.4 KiB
Lua
130 lines
3.4 KiB
Lua
local QBCore = exports['qb-core']:GetCoreObject()
|
|
local isMenuOpen = false
|
|
local currentRestaurant = nil
|
|
local currentPage = 1
|
|
|
|
-- DrawText3D Funktion
|
|
local function DrawText3D(x, y, z, text)
|
|
SetTextScale(0.35, 0.35)
|
|
SetTextFont(4)
|
|
SetTextProportional(1)
|
|
SetTextColour(255, 255, 255, 215)
|
|
SetTextEntry("STRING")
|
|
SetTextCentre(1)
|
|
AddTextComponentString(text)
|
|
SetDrawOrigin(x,y,z, 0)
|
|
DrawText(0.0, 0.0)
|
|
local factor = (string.len(text)) / 370
|
|
DrawRect(0.0, 0.0+0.0125, 0.017+ factor, 0.03, 0, 0, 0, 75)
|
|
ClearDrawOrigin()
|
|
end
|
|
|
|
-- Event zum Öffnen der Speisekarte
|
|
RegisterNetEvent('qb-menu:openRestaurantMenu')
|
|
AddEventHandler('qb-menu:openRestaurantMenu', function(restaurant)
|
|
if isMenuOpen then return end
|
|
|
|
currentRestaurant = restaurant
|
|
currentPage = 1
|
|
isMenuOpen = true
|
|
|
|
SetNuiFocus(true, true)
|
|
SendNUIMessage({
|
|
action = "open",
|
|
menu = Config.Restaurants[restaurant],
|
|
page = 1
|
|
})
|
|
end)
|
|
|
|
-- Funktion zum Schließen des Menüs
|
|
function CloseMenu()
|
|
if isMenuOpen then
|
|
isMenuOpen = false
|
|
SetNuiFocus(false, false)
|
|
SendNUIMessage({
|
|
action = "close"
|
|
})
|
|
currentRestaurant = nil
|
|
end
|
|
end
|
|
|
|
-- Hauptschleife
|
|
CreateThread(function()
|
|
while true do
|
|
Wait(0)
|
|
if isMenuOpen then
|
|
-- ESC-Taste zum Schließen
|
|
if IsControlJustPressed(0, 177) then -- 177 = ESC
|
|
CloseMenu()
|
|
end
|
|
else
|
|
Wait(1000)
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- Zweite Hauptschleife für Locations
|
|
CreateThread(function()
|
|
while true do
|
|
local sleep = 1000
|
|
local playerPed = PlayerPedId()
|
|
local playerCoords = GetEntityCoords(playerPed)
|
|
local isNearMenu = false
|
|
|
|
for restaurant, data in pairs(Config.Restaurants) do
|
|
local distance = #(playerCoords - data.location)
|
|
|
|
if distance < 2.0 then
|
|
isNearMenu = true
|
|
sleep = 0
|
|
|
|
if not isMenuOpen then
|
|
DrawText3D(data.location.x, data.location.y, data.location.z + 1.0, "Drücke [E] um " .. data.label .. " zu öffnen")
|
|
|
|
if IsControlJustReleased(0, 38) then
|
|
TriggerEvent('qb-menu:openRestaurantMenu', restaurant)
|
|
Wait(100)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if not isNearMenu and isMenuOpen then
|
|
CloseMenu()
|
|
end
|
|
|
|
Wait(sleep)
|
|
end
|
|
end)
|
|
|
|
-- NUI Callbacks
|
|
RegisterNUICallback('close', function(data, cb)
|
|
CloseMenu()
|
|
cb('ok')
|
|
end)
|
|
|
|
RegisterNUICallback('changePage', function(data, cb)
|
|
currentPage = data.page
|
|
SendNUIMessage({
|
|
action = "updatePage",
|
|
menu = Config.Restaurants[currentRestaurant],
|
|
page = currentPage
|
|
})
|
|
cb('ok')
|
|
end)
|
|
|
|
-- Event Handler für das Schließen
|
|
RegisterNetEvent('qb-menu:client:closeMenu')
|
|
AddEventHandler('qb-menu:client:closeMenu', function()
|
|
CloseMenu()
|
|
end)
|
|
|
|
-- Cleanup beim Resource Stop
|
|
AddEventHandler('onResourceStop', function(resourceName)
|
|
if (GetCurrentResourceName() ~= resourceName) then return end
|
|
if isMenuOpen then
|
|
CloseMenu()
|
|
end
|
|
end)
|
|
|
|
|