From 92b36f06c91e13575a767077e91b1712153168a1 Mon Sep 17 00:00:00 2001 From: Nordi98 Date: Sun, 20 Jul 2025 18:42:47 +0200 Subject: [PATCH] Update main.lua --- .../nordi_containerheist/client/main.lua | 112 +++--------------- 1 file changed, 16 insertions(+), 96 deletions(-) diff --git a/resources/[jobs]/[crime]/nordi_containerheist/client/main.lua b/resources/[jobs]/[crime]/nordi_containerheist/client/main.lua index 267fcc29a..b6d2c015c 100644 --- a/resources/[jobs]/[crime]/nordi_containerheist/client/main.lua +++ b/resources/[jobs]/[crime]/nordi_containerheist/client/main.lua @@ -21,40 +21,6 @@ local function GetModelNameFromHash(hash) return "Unknown" end --- Function to check if player is at the correct position (rear for trailers, front/door for containers) -local function IsPlayerAtCorrectPosition(entity, containerType) - local playerPos = GetEntityCoords(PlayerPedId()) - local entityPos = GetEntityCoords(entity) - local entityHeading = GetEntityHeading(entity) - local entityForwardVector = GetEntityForwardVector(entity) - - -- Get vector from entity to player - local toPlayerVector = vector3( - playerPos.x - entityPos.x, - playerPos.y - entityPos.y, - 0.0 - ) - - -- Normalize the vector - local length = math.sqrt(toPlayerVector.x^2 + toPlayerVector.y^2) - if length > 0 then - toPlayerVector = vector3(toPlayerVector.x / length, toPlayerVector.y / length, 0.0) - else - return false - end - - -- Calculate dot product with forward vector - local forwardDot = toPlayerVector.x * entityForwardVector.x + toPlayerVector.y * entityForwardVector.y - - if string.match(containerType.type, "trailer") then - -- For trailers, player should be at the rear (negative dot product) - return forwardDot < -0.7 -- Threshold to ensure player is behind the trailer - else - -- For containers, player should be at the front/door (positive dot product) - return forwardDot > 0.7 -- Threshold to ensure player is at the front/door of the container - end -end - -- Function to check if player is near a valid container local function IsNearValidContainer() local playerPed = PlayerPedId() @@ -74,19 +40,10 @@ local function IsNearValidContainer() if distance <= 5.0 and distance < closestDistance then for _, containerType in pairs(Config.ContainerTypes) do if model == GetHashKey(containerType.model) then - -- Check if player is at the front/door for containers - if IsPlayerAtCorrectPosition(object, containerType) then - foundEntity = object - foundType = containerType - closestDistance = distance - break - else - lib.notify({ - title = Config.Notifications.title, - description = "You need to stand at the front/door of the container!", - type = 'error' - }) - end + foundEntity = object + foundType = containerType + closestDistance = distance + break end end end @@ -104,19 +61,10 @@ local function IsNearValidContainer() if distance <= 5.0 and distance < closestDistance then for _, containerType in pairs(Config.ContainerTypes) do if model == GetHashKey(containerType.model) then - -- Check if player is at the rear for trailers - if IsPlayerAtCorrectPosition(vehicle, containerType) then - foundEntity = vehicle - foundType = containerType - closestDistance = distance - break - else - lib.notify({ - title = Config.Notifications.title, - description = "You need to stand at the rear of the trailer!", - type = 'error' - }) - end + foundEntity = vehicle + foundType = containerType + closestDistance = distance + break end end end @@ -243,34 +191,14 @@ local function StartContainerRobbery(container, containerType) return end - -- Get container dimensions - local containerModel = GetEntityModel(container) - local min, max = GetModelDimensions(containerModel) - local containerLength = max.y - min.y - - -- Position player for animation - local containerCoords = GetEntityCoords(container) - local containerHeading = GetEntityHeading(container) - local offsetCoords - local playerHeading - - -- Different positioning for trailers and containers - if string.match(containerType.type, "trailer") then - -- For trailers, position at the rear - offsetCoords = GetOffsetFromEntityInWorldCoords(container, 0.0, -(containerLength/2 + 1.0), 0.0) - playerHeading = containerHeading + 180.0 -- Face the rear of the trailer - else - -- For containers, position at the front/door - offsetCoords = GetOffsetFromEntityInWorldCoords(container, 0.0, (containerLength/2 + 1.0), 0.0) - playerHeading = containerHeading -- Face the front/door of the container - end - - -- Set player position and heading - SetEntityCoords(PlayerPedId(), offsetCoords.x, offsetCoords.y, offsetCoords.z) - SetEntityHeading(PlayerPedId(), playerHeading) + -- Position player for animation - use current player position and orientation + local playerPed = PlayerPedId() + local playerCoords = GetEntityCoords(playerPed) + local playerHeading = GetEntityHeading(playerPed) -- Alert police if configured if containerType.policeAlert then + local containerCoords = GetEntityCoords(container) local streetName = GetStreetNameFromHashKey(GetStreetNameAtCoord(containerCoords.x, containerCoords.y, containerCoords.z)) TriggerServerEvent('container_heist:server:alertPolice', containerCoords, streetName, containerType.label) end @@ -340,9 +268,6 @@ local function ScanAndAddContainersToTarget() icon = "fas fa-angle-double-right", label = "Break into " .. containerType.label, containerType = containerType, - canInteract = function(entity) - return IsPlayerAtCorrectPosition(entity, containerType) - end } }, distance = 3.0 @@ -378,9 +303,6 @@ local function ScanAndAddContainersToTarget() icon = "fas fa-angle-double-right", label = "Break into " .. containerType.label, containerType = containerType, - canInteract = function(entity) - return IsPlayerAtCorrectPosition(entity, containerType) - end } }, distance = 3.0 @@ -544,9 +466,6 @@ CreateThread(function() icon = "fas fa-angle-double-right", label = "Break into " .. containerType.label, containerType = containerType, - canInteract = function(entity) - return IsPlayerAtCorrectPosition(entity, containerType) - end } }, distance = 3.0 @@ -606,9 +525,10 @@ RegisterNetEvent('container_heist:client:policeAlert', function(coords, streetNa title = alertTitle, description = string.format(Config.Notifications.policeMessage, streetName), type = 'inform', - position = 'right', + position = 'top', icon = alertIcon, - iconColor = '#ff0000' + iconColor = '#ff0000', + duration = 20000 -- 10 Sekunden (10000 Millisekunden) }) -- Add blip to map