diff --git a/resources/[cars]/schlagengt4/data/carcols.meta b/resources/[cars]/schlagengt4/data/carcols.meta new file mode 100644 index 000000000..9730f826e --- /dev/null +++ b/resources/[cars]/schlagengt4/data/carcols.meta @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/resources/[cars]/schlagengt4/data/carvariations.meta b/resources/[cars]/schlagengt4/data/carvariations.meta new file mode 100644 index 000000000..2550ea7ce --- /dev/null +++ b/resources/[cars]/schlagengt4/data/carvariations.meta @@ -0,0 +1,45 @@ + + + + + + schlagengt4 + + + + 111 + 0 + 156 + 89 + 0 + 111 + + + + + + + + + + + + + + + 0_default_modkit + + + + + + Standard White + + + + + + + + + \ No newline at end of file diff --git a/resources/[cars]/schlagengt4/data/dlctext.meta b/resources/[cars]/schlagengt4/data/dlctext.meta new file mode 100644 index 000000000..22bb4c390 --- /dev/null +++ b/resources/[cars]/schlagengt4/data/dlctext.meta @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/resources/[cars]/schlagengt4/data/handling.meta b/resources/[cars]/schlagengt4/data/handling.meta new file mode 100644 index 000000000..3d1f40d50 --- /dev/null +++ b/resources/[cars]/schlagengt4/data/handling.meta @@ -0,0 +1,65 @@ + + + + + + + schlagengt4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 441010 + 20002 + 0 + AVERAGE + + + + + + + + + \ No newline at end of file diff --git a/resources/[cars]/schlagengt4/data/vehicles.meta b/resources/[cars]/schlagengt4/data/vehicles.meta new file mode 100644 index 000000000..8198a1f4d --- /dev/null +++ b/resources/[cars]/schlagengt4/data/vehicles.meta @@ -0,0 +1,135 @@ + + + vehshare + + + + schlagengt4 + schlagengt4 + schlagengt4 + schlagengt4 + Benefactor + null + null + null + null + + null + xa21 + LAYOUT_STANDARD + NEON_COVER_OFFSET_INFO + EXPLOSION_INFO_DEFAULT + + FOLLOW_CHEETAH_CAMERA + DEFAULT_THIRD_PERSON_VEHICLE_AIM_CAMERA + VEHICLE_BONNET_CAMERA_LOW + REDUCED_NEAR_CLIP_POV_CAMERA + + + + + + + + + + + + + + + + + + + + + + + + + + + + VFXVEHICLEINFO_CAR_GENERIC + + + + + + + + + + + + + + + + + + + + + + 500.000000 + 500.000000 + 500.000000 + 500.000000 + 500.000000 + 500.000000 + + + + + + + + + + SWANKNESS_2 + + FLAG_AVERAGE_CAR FLAG_POOR_CAR + VEHICLE_TYPE_CAR + VPT_BACK_PLATES + VDT_GENTAXI + VC_SPORT + VWT_SPORT + + + + + + + + + + + + WHEEL_FRONT_RIGHT_CAMERA + WHEEL_FRONT_LEFT_CAMERA + WHEEL_REAR_RIGHT_CAMERA + WHEEL_REAR_LEFT_CAMERA + + + + + + + STD_NEON_FRONT_LEFT + STD_NEON_FRONT_RIGHT + STD_NEON_REAR_LEFT + STD_NEON_REAR_RIGHT + + + + + + + vehicles_poltax_interior + schlagengt4 + + + + \ No newline at end of file diff --git a/resources/[cars]/schlagengt4/fxmanifest.lua b/resources/[cars]/schlagengt4/fxmanifest.lua new file mode 100644 index 000000000..dbf79b792 --- /dev/null +++ b/resources/[cars]/schlagengt4/fxmanifest.lua @@ -0,0 +1,18 @@ +fx_version 'adamant' + +game 'gta5' + +files { + '**/**.meta', + '**/**.meta', + '**/**.meta', + '**/**.meta', + '**/**.meta', +} + + +data_file 'HANDLING_FILE' '**/**.meta' +data_file 'VEHICLE_METADATA_FILE' '**/**.meta' +data_file 'CARCOLS_FILE' '**/**.meta' +data_file 'VEHICLE_VARIATION_FILE' '**/**.meta' +data_file 'VEHICLE_LAYOUTS_FILE' '**/**.meta' -- Not Required diff --git a/resources/[cars]/schlagengt4/stream/schlagengt4.yft b/resources/[cars]/schlagengt4/stream/schlagengt4.yft new file mode 100644 index 000000000..763b2bf5b Binary files /dev/null and b/resources/[cars]/schlagengt4/stream/schlagengt4.yft differ diff --git a/resources/[cars]/schlagengt4/stream/schlagengt4.ytd b/resources/[cars]/schlagengt4/stream/schlagengt4.ytd new file mode 100644 index 000000000..c8da971b7 Binary files /dev/null and b/resources/[cars]/schlagengt4/stream/schlagengt4.ytd differ diff --git a/resources/[cars]/schlagengt4/stream/schlagengt4_hi.yft b/resources/[cars]/schlagengt4/stream/schlagengt4_hi.yft new file mode 100644 index 000000000..77d7796be Binary files /dev/null and b/resources/[cars]/schlagengt4/stream/schlagengt4_hi.yft differ diff --git a/resources/[inventory]/nordi_vending/client.lua b/resources/[inventory]/nordi_vending/client.lua index e3aafdc14..39ff16669 100644 --- a/resources/[inventory]/nordi_vending/client.lua +++ b/resources/[inventory]/nordi_vending/client.lua @@ -712,32 +712,57 @@ RegisterNetEvent('vending:client:startRobbery', function(coords) end end) --- Police alert -RegisterNetEvent('vending:client:policeAlert', function(coords, streetName) - local alert = { - title = "Verkaufsautomat Aufbruch", - coords = coords, - description = "Ein Verkaufsautomat wird aufgebrochen in " .. streetName - } +-- Police alert with ox_lib notification and blinking blip +RegisterNetEvent('vending:client:policeAlert', function(alertData) + -- Extract data + local coords = alertData.coords + local locationName = alertData.locationName - -- Add blip + -- Create a blinking blip local blip = AddBlipForCoord(coords.x, coords.y, coords.z) - SetBlipSprite(blip, 161) - SetBlipColour(blip, 1) - SetBlipScale(blip, 1.0) + SetBlipSprite(blip, 161) -- Robbery icon + SetBlipColour(blip, 1) -- Red color + SetBlipScale(blip, 1.2) SetBlipAsShortRange(blip, false) + + -- Make the blip flash + SetBlipFlashes(blip, true) + SetBlipFlashInterval(blip, 200) -- Flash interval in milliseconds + + -- Set blip name BeginTextCommandSetBlipName("STRING") AddTextComponentString("Verkaufsautomat Aufbruch") EndTextCommandSetBlipName(blip) + -- Create route to the robbery + SetBlipRoute(blip, true) + SetBlipRouteColour(blip, 1) -- Red route + + -- Show ox_lib notification + if lib and lib.notify then + lib.notify({ + title = 'Verkaufsautomat Aufbruch', + description = 'Ein Verkaufsautomat wird aufgebrochen bei ' .. locationName, + type = 'error', + icon = 'fas fa-mask', + position = 'top-right', + duration = 8000 + }) + else + -- Fallback to QBCore notification if ox_lib is not available + QBCore.Functions.Notify('Verkaufsautomat Aufbruch gemeldet: ' .. locationName, 'error', 8000) + end + + -- Play alert sound + PlaySound(-1, "Lose_1st", "GTAO_FM_Events_Soundset", 0, 0, 1) + -- Remove blip after 5 minutes SetTimeout(300000, function() RemoveBlip(blip) end) - - QBCore.Functions.Notify('Verkaufsautomat Aufbruch gemeldet: ' .. streetName, 'error', 8000) end) + -- Management menu (alternative opening method) RegisterNetEvent('vending:client:openManagement', function(machine) -- Fast check for management permissions diff --git a/resources/[inventory]/nordi_vending/server.lua b/resources/[inventory]/nordi_vending/server.lua index 8e4b4796b..688a64bb1 100644 --- a/resources/[inventory]/nordi_vending/server.lua +++ b/resources/[inventory]/nordi_vending/server.lua @@ -523,10 +523,20 @@ RegisterNetEvent('vending:server:startRobbery', function(coords) -- Alert police - use a generic location name instead of street name local locationName = "Verkaufsautomat #" .. machineId + -- Get player position for more accurate location + local playerPos = GetEntityCoords(GetPlayerPed(src)) + + -- Alert police with enhanced data + local alertData = { + coords = coords, + locationName = locationName, + machineId = machineId + } + local players = QBCore.Functions.GetQBPlayers() for k, v in pairs(players) do if v.PlayerData.job.name == 'police' and v.PlayerData.job.onduty then - TriggerClientEvent('vending:client:policeAlert', v.PlayerData.source, coords, locationName) + TriggerClientEvent('vending:client:policeAlert', v.PlayerData.source, alertData) end end @@ -550,6 +560,7 @@ RegisterNetEvent('vending:server:startRobbery', function(coords) TriggerClientEvent('vending:client:startRobbery', src, coords) end) + -- Complete robbery RegisterNetEvent('vending:server:completeRobbery', function(coords, success) local src = source