structura foldere
mutat kq- folders in un singur folder [kq]
This commit is contained in:
@@ -0,0 +1,252 @@
|
||||
if Config.esxSettings.enabled and Config.qbSettings.enabled then
|
||||
print('^1BOTH FRAMEWORKS ENABLED!! MAKE SURE TO ONLY ENABLE ONE FRAMEWORK IN THE CONFIG FILE!')
|
||||
end
|
||||
if not Config.esxSettings.enabled and not Config.qbSettings.enabled then
|
||||
print('^1NO FRAMEWORK ENABLED!! MAKE SURE TO ENABLE ONE FRAMEWORK IN THE CONFIG FILE!')
|
||||
end
|
||||
|
||||
-- Do not remove this!
|
||||
sellableVehicles = {}
|
||||
|
||||
newHeist = {
|
||||
player = nil,
|
||||
truck = nil,
|
||||
trailer = nil,
|
||||
npc = nil,
|
||||
passenger = nil,
|
||||
support = nil,
|
||||
supportEnabled = nil,
|
||||
weaponsEnabled = nil,
|
||||
passengerEnabled = nil,
|
||||
bulletproofTiresEnabled = nil,
|
||||
touches = 0,
|
||||
vehicles = {}
|
||||
}
|
||||
|
||||
heist = {}
|
||||
|
||||
function AttemptCreateHeist()
|
||||
EndHeist()
|
||||
|
||||
heist = json.decode(json.encode(newHeist))
|
||||
|
||||
heist.hash = math.random(1, 99999)
|
||||
|
||||
heist.startLocation = Config.startLocations[math.random(1, #Config.startLocations)]
|
||||
heist.endLocation = heist.startLocation.finish
|
||||
|
||||
local closestPlayer = nil
|
||||
local closestDistance = 99999.9
|
||||
|
||||
for _, playerId in ipairs(GetPlayers()) do
|
||||
playerId = tonumber(playerId)
|
||||
local playerCoords = GetEntityCoords(GetPlayerPed(playerId))
|
||||
|
||||
local distance = GetDistanceBetweenCoords(playerCoords.x, playerCoords.y, playerCoords.z, heist.startLocation.truck.x, heist.startLocation.truck.y, heist.startLocation.truck.z)
|
||||
|
||||
if distance < 120 then
|
||||
return false
|
||||
end
|
||||
|
||||
if closestDistance > distance then
|
||||
closestPlayer = playerId
|
||||
closestDistance = distance
|
||||
end
|
||||
end
|
||||
|
||||
if not closestPlayer then
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
heist.weaponsEnabled = true
|
||||
if math.random(0, 100) > Config.weaponChance then
|
||||
heist.weaponsEnabled = false
|
||||
end
|
||||
|
||||
local odds = 0
|
||||
local eventKey = nil
|
||||
local hit = math.random(0, 100)
|
||||
for k, event in pairs(Config.events) do
|
||||
if event.chance + odds > hit and not eventKey then
|
||||
eventKey = k
|
||||
else
|
||||
odds = odds + event.chance
|
||||
end
|
||||
end
|
||||
if not eventKey then
|
||||
eventKey = math.random(1, #Config.events)
|
||||
end
|
||||
|
||||
heist.event = eventKey
|
||||
local event = Config.events[eventKey]
|
||||
|
||||
local empty = 0
|
||||
for k, slot in pairs(Settings.trailerSlots) do
|
||||
if math.random(0, 100) <= event.vehicleSlotChance or (empty + event.minimumVehicles == #Settings.trailerSlots) then
|
||||
local vehicle = event.vehicles[math.random(1, #event.vehicles)]
|
||||
heist.vehicles[k] = { data = vehicle, vehicle = nil }
|
||||
else
|
||||
empty = empty + 1
|
||||
end
|
||||
end
|
||||
|
||||
heist.passengerEnabled = true
|
||||
if math.random(0, 100) > event.passengerChance then
|
||||
heist.passengerEnabled = false
|
||||
end
|
||||
|
||||
heist.bulletproofTiresEnabled = true
|
||||
if math.random(0, 100) > event.bulletproofTiresChance then
|
||||
heist.bulletproofTiresEnabled = false
|
||||
end
|
||||
|
||||
heist.supportEnabled = true
|
||||
if math.random(0, 100) > event.supportChance then
|
||||
heist.supportEnabled = false
|
||||
end
|
||||
|
||||
heist.player = closestPlayer
|
||||
Debug('starting heist, initiator: ' .. closestPlayer)
|
||||
TriggerClientEvent('kq_carheist:createHeist', closestPlayer, heist)
|
||||
|
||||
OnHeistCreated()
|
||||
return true
|
||||
end
|
||||
|
||||
function EndHeist()
|
||||
DeleteIfExists(heist.truck)
|
||||
DeleteIfExists(heist.trailer)
|
||||
DeleteIfExists(heist.npc)
|
||||
DeleteIfExists(heist.passenger)
|
||||
|
||||
if heist.supportEnabled and heist.support then
|
||||
DeleteIfExists(heist.support.vehicle)
|
||||
for k, ped in pairs(heist.support.peds) do
|
||||
DeleteIfExists(ped)
|
||||
end
|
||||
end
|
||||
|
||||
TriggerClientEvent('kq_carheist:endHeist', -1)
|
||||
|
||||
heist = json.decode(json.encode(newHeist))
|
||||
end
|
||||
|
||||
RegisterServerEvent('kq_carheist:heistCreated')
|
||||
AddEventHandler('kq_carheist:heistCreated', function(syncedHeist)
|
||||
if source ~= heist.player then
|
||||
return
|
||||
end
|
||||
|
||||
heist = syncedHeist
|
||||
|
||||
TriggerClientEvent('kq_carheist:startDriver', -1)
|
||||
TriggerClientEvent('kq_carheist:syncHeist', -1, heist)
|
||||
|
||||
if Config.announceTruckDepartureToPlayers then
|
||||
TriggerClientEvent('kq_carheist:announceHeist', -1, vector3(heist.startLocation.truck.x, heist.startLocation.truck.y, heist.startLocation.truck.z))
|
||||
end
|
||||
end)
|
||||
|
||||
if Config.debug then
|
||||
RegisterCommand('cheist', function(source, args)
|
||||
AttemptCreateHeist()
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
while true do
|
||||
local sleep = 20000
|
||||
if heist.player and heist.truck then
|
||||
sleep = 4000
|
||||
|
||||
local truckCoords = GetEntityCoords(NetworkGetEntityFromNetworkId(heist.truck))
|
||||
local trailerCoords = GetEntityCoords(NetworkGetEntityFromNetworkId(heist.trailer))
|
||||
local ended = false
|
||||
|
||||
Debug('Truck Owner: ' .. NetworkGetEntityOwner(NetworkGetEntityFromNetworkId(heist.truck)))
|
||||
Debug(truckCoords)
|
||||
|
||||
Debug('Trailer Owner: ' .. NetworkGetEntityOwner(NetworkGetEntityFromNetworkId(heist.trailer)))
|
||||
Debug(trailerCoords)
|
||||
|
||||
if not DoesEntityExist(NetworkGetEntityFromNetworkId(heist.truck)) or not DoesEntityExist(NetworkGetEntityFromNetworkId(heist.trailer)) or not DoesEntityExist(NetworkGetEntityFromNetworkId(heist.npc)) then
|
||||
Debug('Ending heist')
|
||||
EndHeist()
|
||||
ended = true
|
||||
end
|
||||
|
||||
if not ended then
|
||||
Debug('Remaining distance: ' .. GetDistanceBetweenCoords(truckCoords.x, truckCoords.y, truckCoords.z, heist.endLocation.x, heist.endLocation.y, heist.endLocation.z))
|
||||
|
||||
if GetDistanceBetweenCoords(truckCoords.x, truckCoords.y, truckCoords.z, heist.endLocation.x, heist.endLocation.y, heist.endLocation.z) < 18.0 and GetDistanceBetweenCoords(trailerCoords.x, trailerCoords.y, trailerCoords.z, heist.endLocation.x, heist.endLocation.y, heist.endLocation.z) < 25.0 then
|
||||
Debug('Truck arrived to its destination. Ending heist')
|
||||
TriggerClientEvent('kq_carheist:truckArrived', -1)
|
||||
EndHeist()
|
||||
end
|
||||
end
|
||||
end
|
||||
Citizen.Wait(sleep)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
Citizen.Wait(30000)
|
||||
while true do
|
||||
if Config.minimumOfficers > 0 then
|
||||
local enough = false
|
||||
while not enough do
|
||||
local currentOfficers = GetPoliceCount()
|
||||
|
||||
if currentOfficers >= Config.minimumOfficers then
|
||||
enough = true
|
||||
else
|
||||
Debug('Couldn\'t start a new heist. Not enough police online')
|
||||
Citizen.Wait(120000)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if heist.player ~= nil and heist.trailer and DoesEntityExist(NetworkGetEntityFromNetworkId(heist.trailer)) and not Config.ignoreDistances then
|
||||
Citizen.Wait(20000)
|
||||
|
||||
local tooClose = true
|
||||
while tooClose do
|
||||
local closestDistance = 99999.9
|
||||
|
||||
for _, playerId in ipairs(GetPlayers()) do
|
||||
playerId = tonumber(playerId)
|
||||
local playerCoords = GetEntityCoords(GetPlayerPed(playerId))
|
||||
|
||||
local trailerCoords = GetEntityCoords(NetworkGetEntityFromNetworkId(heist.trailer))
|
||||
|
||||
local distance = GetDistanceBetweenCoords(playerCoords.x, playerCoords.y, playerCoords.z, trailerCoords.x, trailerCoords.y, trailerCoords.z)
|
||||
|
||||
Debug('Distance: ' .. distance)
|
||||
if closestDistance > distance then
|
||||
closestDistance = distance
|
||||
end
|
||||
end
|
||||
|
||||
if closestDistance > 100.0 then
|
||||
tooClose = false
|
||||
else
|
||||
Debug('Couldn\'t start a new heist. Someone is too near the old trailer')
|
||||
Citizen.Wait(60000)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local success = false
|
||||
while not success do
|
||||
success = AttemptCreateHeist()
|
||||
if not success then
|
||||
Debug('Couldn\'t start a new heist. Someone is too close the spawn location')
|
||||
Citizen.Wait(60000)
|
||||
end
|
||||
end
|
||||
Citizen.Wait(Config.heistSpawnTime * 60000)
|
||||
end
|
||||
end)
|
||||
Reference in New Issue
Block a user