2026-04-14 17:41:39 +02:00

241 lines
12 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local selectedDelivery = false
RegisterNUICallback('getOrder', function(data, cb)
TriggerServerEvent('codem-vehicleshop:SelectDelivery', data)
end)
function GetVehicleShopById(id)
for _,v in pairs(Config.VehicleShops) do
if v.id == id then
return v
end
end
end
RegisterNetEvent('codem-vehicleshop:SelectDelivery')
AddEventHandler('codem-vehicleshop:SelectDelivery', function(data)
if vehicleShopData then
if selectedDelivery then
print('You already have an active delivery!')
return
end
selectedDelivery = data
StartDeliveryLoop()
end
end)
function LoadModel(model, timeout)
timeout = timeout or 3000
if type(model) == "string" then
model = GetHashKey(model)
end
RequestModel(model)
local deadline = GetGameTimer() + timeout
while not HasModelLoaded(model) do
Wait(10) -- 10 ms bekle
if GetGameTimer() >= deadline then -- Süre dolduysa çık
return false
end
RequestModel(model) -- İsteği canlı tut
end
return model -- Başarıyla yüklendi
end
function CreateBlip(coords, sprite, color, scale, name, show, isEntity, entity)
if show then
local blip
if isEntity then
blip = AddBlipForEntity(entity)
else
blip = AddBlipForCoord(coords)
end
SetBlipSprite(blip, sprite)
SetBlipColour(blip, color)
SetBlipScale(blip, scale)
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString(name)
EndTextCommandSetBlipName(blip)
return blip
end
end
function StartDeliveryLoop()
local vehshop = GetVehicleShopById(vehicleShopData.id)
if vehshop then
local model = GetHashKey(vehshop.delivery.truck_model)
local trailerModel = GetHashKey('tr2')
LoadModel(model)
LoadModel(trailerModel)
local veh = CreateVehicle(model, vehshop.delivery.truckSpawnLocation.x, vehshop.delivery.truckSpawnLocation.y, vehshop.delivery.truckSpawnLocation.z, true, true)
SetEntityHeading(veh, vehshop.delivery.truckSpawnLocation.w)
local vehicleBlip = CreateBlip(false, 477, 3, 0.8, "Truck", true, true, veh)
Config.GiveVehicleKey(GetVehicleNumberPlateText(veh), GetHashKey(veh), veh)
CreateNotification(Config.Notifications.vehicle_spawned.message, Config.Notifications.vehicle_spawned.type)
local trailer = CreateVehicle(trailerModel, vehshop.delivery.trailerSpawnLocation.x, vehshop.delivery.trailerSpawnLocation.y, vehshop.delivery.trailerSpawnLocation.z, true, true)
SetEntityHeading(trailer, vehshop.delivery.trailerSpawnLocation.w)
local trailerBlip = CreateBlip(false, 479, 3, 0.8, "Vehicles Delivery Trailer", true, true, trailer)
local trailerDestinationBlip = AddBlipForCoord(vehshop.delivery.trailerSpawnLocation.x, vehshop.delivery.trailerSpawnLocation.y, vehshop.delivery.trailerSpawnLocation.z)
SetBlipColour(trailerDestinationBlip, 5)
SetBlipRoute(trailerDestinationBlip, true)
SetBlipRouteColour(trailerDestinationBlip, 5)
CloseUI()
local attach = {
{
y = 4.75,
z = 1.0,
},
{
y = 0.0,
z = 1.0,
},
{
y = -4.75,
z = 1.0,
},
{
y = 4.75,
z = 2.8,
},
{
y = 0.0,
z = 2.9,
},
{
y = -4.75,
z = 3.2,
},
}
local deliverVehModel = GetHashKey(selectedDelivery.model)
LoadModel(deliverVehModel)
for i=1,selectedDelivery.amount do
if i <= #attach then
local deliverVehicle = CreateVehicle(deliverVehModel, vehshop.delivery.trailerSpawnLocation.x, vehshop.delivery.trailerSpawnLocation.y, vehshop.delivery.trailerSpawnLocation.z, true, true)
SetEntityHeading(deliverVehicle, vehshop.delivery.trailerSpawnLocation.w)
AttachEntityToEntity(deliverVehicle, trailer, GetEntityBoneIndexByName(trailer, GetHashKey('boot')), 0.0, attach[i].y, attach[i].z, 0.0, 0.0, 0.0, false, false, false, false, 0.0, true)
end
end
hasTrailer, _trailer = GetVehicleTrailerVehicle(veh)
while _trailer ~= trailer and DoesEntityExist(veh) and selectedDelivery do
local truckCoords = GetEntityCoords(veh)
local trailerCoords = GetEntityCoords(trailer)
local dist = #(truckCoords - trailerCoords)
local cd = 2000
if dist < 20.0 then
cd = 0
hasTrailer, _trailer = GetVehicleTrailerVehicle(veh)
DrawMarker(2, trailerCoords.x, trailerCoords.y, trailerCoords.z + 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.5, 0.5, 0.5, 255, 255, 255, 255, true, false, false, true, false, false, false)
end
Wait(cd)
end
RemoveBlip(trailerBlip)
RemoveBlip(trailerDestinationBlip)
CreateNotification(Config.Notifications.return_to_veh.message, Config.Notifications.return_to_veh.type)
local truckDestinationBlip = AddBlipForCoord(vehshop.delivery.truckSpawnLocation.x, vehshop.delivery.truckSpawnLocation.y, vehshop.delivery.truckSpawnLocation.z)
SetBlipColour(truckDestinationBlip, 5)
SetBlipRoute(truckDestinationBlip, true)
SetBlipRouteColour(truckDestinationBlip, 5)
local ped = PlayerPedId()
local isTextUiOpen = false
local markerData = Config.InteractionHandler.marker
while selectedDelivery do
local playerCoords = GetEntityCoords(ped)
local destinationCoords = vector3(vehshop.delivery.truckSpawnLocation.x, vehshop.delivery.truckSpawnLocation.y, vehshop.delivery.truckSpawnLocation.z)
local dist = #(playerCoords - destinationCoords)
local cd = 2000
if dist < 20.0 then
cd = 0
if dist < 4.0 then
if Config.InteractionHandler.drawtext then
DrawText3D(vehshop.delivery.truckSpawnLocation.x, vehshop.delivery.truckSpawnLocation.y, vehshop.delivery.truckSpawnLocation.z+0.3, Config.InteractionHandler.deliver_text)
end
if Config.InteractionHandler.marker then
DrawMarker(39, vehshop.delivery.truckSpawnLocation.x, vehshop.delivery.truckSpawnLocation.y, vehshop.delivery.truckSpawnLocation.z-0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 1.5, 1.5, markerData.r, markerData.g, markerData.b, markerData.a, false, false, 0, true, false, false, false)
end
if not isTextUiOpen and Config.InteractionHandler.codemtextui.enable then
isTextUiOpen = true
exports["codem-textui"]:OpenTextUI(Config.InteractionHandler.deliver_text, Config.InteractionHandler.codemtextui.keytext, Config.InteractionHandler.codemtextui.theme)
end
if not isTextUiOpen and Config.InteractionHandler.okoktextui.enable then
isTextUiOpen = true
exports['okokTextUI']:Open(Config.InteractionHandler.deliver_text, Config.InteractionHandler.okoktextui.color, Config.InteractionHandler.okoktextui.position)
end
if not isTextUiOpen and Config.InteractionHandler.ethTextUI.enable then
isTextUiOpen = true
exports['eth-textUi']:Show('', Config.InteractionHandler.deliver_text)
end
if not isTextUiOpen and Config.InteractionHandler.qb_textui.enable then
isTextUiOpen = true
TriggerEvent('qb-core:client:DrawText', Config.InteractionHandler.deliver_text, 'left')
end
if not isTextUiOpen and Config.InteractionHandler.esx_textui.enable then
isTextUiOpen = true
TriggerEvent('ESX:TextUI', Config.InteractionHandler.deliver_text)
end
if IsControlJustPressed(0, Config.InteractionHandler.openKey) then
CreateNotification(Config.Notifications.delivered_vehicle.message, Config.Notifications.delivered_vehicle.type)
TriggerServerEvent('codem-vehicleshop:DeliverOrders', selectedDelivery)
selectedDelivery = false
CreateThread(function()
TaskLeaveAnyVehicle(ped, 0, 0)
RemoveBlip(truckDestinationBlip)
RemoveBlip(vehicleBlip)
if isTextUiOpen and Config.InteractionHandler.codemtextui.enable then
exports["codem-textui"]:CloseTextUI()
isTextUiOpen = false
end
if isTextUiOpen and Config.InteractionHandler.okoktextui.enable then
exports['okokTextUI']:Close()
isTextUiOpen = false
end
if isTextUiOpen and Config.InteractionHandler.ethTextUI.enable then
exports['eth-textUi']:Close()
isTextUiOpen = false
end
if isTextUiOpen and Config.InteractionHandler.esx_textui.enable then
TriggerEvent('ESX:HideUI')
isTextUiOpen = false
end
if isTextUiOpen and Config.InteractionHandler.qb_textui.enable then
TriggerEvent('qb-core:client:HideText')
isTextUiOpen = false
end
Wait(10000)
DeleteEntity(trailer)
DeleteEntity(veh)
end)
end
else
if isTextUiOpen and Config.InteractionHandler.codemtextui.enable then
exports["codem-textui"]:CloseTextUI()
isTextUiOpen = false
end
if isTextUiOpen and Config.InteractionHandler.okoktextui.enable then
exports['okokTextUI']:Close()
isTextUiOpen = false
end
if isTextUiOpen and Config.InteractionHandler.ethTextUI.enable then
exports['eth-textUi']:Close()
isTextUiOpen = false
end
if isTextUiOpen and Config.InteractionHandler.esx_textui.enable then
TriggerEvent('ESX:HideUI')
isTextUiOpen = false
end
if isTextUiOpen and Config.InteractionHandler.qb_textui.enable then
TriggerEvent('qb-core:client:HideText')
isTextUiOpen = false
end
end
end
Wait(cd)
end
end
end