optionsTable = {}
optionsTable[1] = {x=1583.68408, y=1450.32666, z=9.83114} -- LV
optionsTable[2] = {x=348.91159, y=2539.05054, z=15.74509} -- VM
optionsTable[3] = {x=-1460.63989, y=-152.66759, z=13.14844} -- SF
optionsTable[4] = {x=1562.28149, y=-2414.01587, z=12.55469} -- LS
lastTarget = false
deliveryPrice = false
deliveryMarker = false
deliveryBlip = false
function onPlaneEnter()
local daVehicle = getPedOccupiedVehicle(localPlayer)
if daVehicle and getVehicleType(daVehicle) == "Plane" then
if isElement(deliveryMarker) then destroyElement(deliveryMarker) deliveryMarker = false end
if isElement(deliveryBlip) then destroyElement(deliveryBlip) deliveryBlip = false end
local optionsNew = deepcopy(optionsTable)
if lastTarget then table.remove(optionsNew, lastTarget) end
local randomNumber = math.random(1,#optionsNew)
lastTarget = randomNumber
local x = optionsNew[randomNumber]['x']
local y = optionsNew[randomNumber]['y']
local z = optionsNew[randomNumber]['z']
exports.saptcommands:sendClientMessage("*Pilot Delivery* Your load is ready to be delivered. ", 0, 255, 0)
deliveryMarker = createMarker(x,y,z,"cylinder",5)
local px, py = getElementPosition(localPlayer)
deliveryPrice = getDistanceBetweenPoints2D(x, y, px, py) * 5
deliveryBlip = createBlipAttachedTo(deliveryMarker,5)
addEventHandler("onClientMarkerHit",deliveryMarker,onDeliveryHit)
addEventHandler("onClientVehicleExit",daVehicle ,onPlaneExit)
addEventHandler("onClientVehicleExplode",daVehicle ,onPlaneExit)
addEventHandler("onPlayerWasted", localPlayer, deleteMission)
end
end
addEventHandler("onClientPlayerVehicleEnter",localPlayer,function() onPlaneEnter() end)
function onDeliveryHit(hitPlayer, matchingDimension)
if hitPlayer == localPlayer then
if getPedOccupiedVehicle(hitPlayer) and matchingDimension and isVehicleOnGround(getPedOccupiedVehicle(hitPlayer)) and getVehicleType(getPedOccupiedVehicle(hitPlayer)) == "Plane" then
exports.saptcommands:sendClientMessage("*Pilot Delivery* You've delivered it successfully, great job!", 50, 255, 50)
exports.saptcommands:giveMoney(localPlayer, deliveryPrice)
destroyElement(deliveryMarker)
destroyElement(deliveryBlip)
deliveryMarker = false
deliveryBlip = false
deliveryPrice = false
onPlaneEnter()
end
end
end
function onPlaneExit()
removeEventHandler("onClientVehicleExit",source,onPlaneExit)
deleteMission()
end
function deleteMission()
if deliveryMarker then
exports.saptcommands:sendClientMessage("Pilot Delivery* The delivery failed. Keep going, you were going great!", 0, 255, 0)
destroyElement(deliveryMarker)
destroyElement(deliveryBlip)
deliveryMarker = false
deliveryBlip = false
deliveryPrice = false
end
end
addEventHandler("onClientPlayerSpawn", localPlayer, deleteMission)
function deepcopy(object)
local lookup_table = {}
local function _copy(object)
if type(object) ~= "table" then
return object
elseif lookup_table[object] then
return lookup_table[object]
end
local new_table = {}
lookup_table[object] = new_table
for index, value in pairs(object) do
new_table[_copy(index)] = _copy(value)
end
return setmetatable(new_table, getmetatable(object))
end
return _copy(object)
end