Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.31 KB | None | 0 0
  1. local beginningMarker = {
  2. {2518.23706, -2270.74927, -0.55000},
  3. {2698.90576, -2310.06494, -0.55000},
  4. {2309.20703, -2417.13794, -0.55000},
  5. {2351.62012, -2522.45435, -0.55000},
  6. {2614.61987, -2479.15967, -0.55000},
  7. {2730.23950, -2587.99219, -0.55000}
  8. }
  9.  
  10. local isMissionActive = false
  11. local firstMarker, firstBlip = nil, nil
  12. local timers = {}
  13. local boatElements ={}
  14. local currentBoat = 1
  15.  
  16. function enableStartMissionOption(plr, seat)
  17. if (plr ~= localPlayer) then
  18. return false
  19. end
  20. if (getElementMode(source) ~= 430 or seat ~= 0) then
  21. return false
  22. end
  23. if (getElementData(plr, "o") ~= "Police Officer") then
  24. return false
  25. end
  26. exports.CIThelp:modTextBar("boatMission", "Press N to start the Predator Mission.")
  27. bindKey(plr, "N", "down", startBoatMission)
  28. end
  29.  
  30. function startBoatMission()
  31. local veh = getPedOccupiedVehicle(localPlayer)
  32. local seat = getPedOccupiedVehicleSeat(localPlayer)
  33. if (not veh or seat ~= 0) then
  34. return false
  35. end
  36. if (isMissionActive) then
  37. return false
  38. end
  39. unbindKey("N", "down", startBoatMission)
  40. isMissionActive = true
  41. local pos = beginningMarker[math.random(1,#beginningMarker)]
  42. firstMarker = createMarker(pos.x, pos.y, pos.z, "cylinder", 6, 0, 0, 210)
  43. firstBlip = createBlip(pos.x, pos.y, pos.z, 43)
  44.  
  45. addEventHandler("onClientMarkerHit", firstMarker, missionStarting)
  46. addEventHandler("onClientPlayerWasted", localPlayer, failMission)
  47. addEventHandler("onClientPlayerResign", localPlayer, failMission)
  48. addEventHandler("onClientElementDestroy", veh, failMission)
  49. end
  50.  
  51. function checkDistance(veh)
  52. if (not veh or not isElement(veh)) then
  53. failMission()
  54. return false
  55. end
  56. local px, py, pz = getElementPosition(localPlayer)
  57. local vx, vy, vz = getElementPosition(veh)
  58. if (getDistanceBetweenPoints2D(px, py, vx, vy) > 100) then
  59. failMission("dist")
  60. return true
  61. end
  62. end
  63. addEventHandler("onClientVehicleEnter", root, enableStartMissionOption)
  64.  
  65. function missionStarting(plr, dim)
  66. if(plr ~= localPlayer or not dim) then
  67. return false
  68. end
  69. local veh = getPedOccupiedVehicle(localPlayer)
  70. local seat = getPedOccupiedVehicleSeat(localPlayer)
  71. if(not veh or seat ~= 0) then
  72. return false
  73. end
  74. if(firstMarker or firstBlip) then
  75. setElementSpeed(veh, 1, 0)
  76. outputChatBox("Some drug smugglers are escaping with tons of drugs, stop them before they escape!", 0, 0, 110)
  77. destroyElement(firstMarker)
  78. destroyElement(firstBlip)
  79. firstMarker = nil
  80. firstBlip = nil
  81. end
  82. timers["distanceCheck"] = setTimer(checkDistance, 1000, 0, veh)
  83. boatElements["boat"] = createVehicle(446, x, y, z)
  84. boatElements["boatPed1"] = exports.CITpeds:newPed(15, 0, 0, 0)
  85. boatElements["boatPed2"] = exports.CITpeds:newPed(22, x, y, z)
  86. exports.CITpeds:pedOptions(boatElements["boatPed2"], 5, 31)
  87. attachElements(boatElements["boatPed2"], boatElements["boat"])
  88. warpPedIntoVehicle(boatElements["boatPed1"], boatElements["boat"])
  89. setPedControlState(boatElements["boatPed1"], "accelerate", true)
  90. timers["turnBoat"] = setTimer(turnBoat, 4000, 0)
  91.  
  92. addEventHandler("onClientVehicleDamage", boatElements["boat"], boatIsDamaged)
  93. end
  94.  
  95. function boatIsDamaged(attacker, gun, loss)
  96. if(attacker ~= localPlayer) then
  97. return false
  98. end
  99. if(getElementHealth(source) > 0) then
  100. return false
  101. end
  102. removePedFromVehicle(boatElements["boatPed1"])
  103. setElementPosition(boatElements["boatPed1"], x, y, z)
  104. exports.CITpeds:pedOptions(boatElements["boatPed1"], 5, 31)
  105. addEventHandler("onClientPedWasted", boatElements["boatPed1"], boatPedDead)
  106. end
  107.  
  108. function boatPedDead(killer)
  109. if(killer ~= localPlayer) then
  110. return false
  111. end
  112. if(isElement(drugCrate)) then
  113. return false
  114. end
  115. local drugCrate = createMarker(x, y, z, "cylinder", 1, 0, 0, 255)
  116. outputChatBox("You killed the drug smugglers, remove the drugs from the crate", 0, 255, 0)
  117. addEventHandler("onClientMarkerHit", drugCrate1, tookTheCrate)
  118. end
  119.  
  120. function tookTheCrate(plr, dim)
  121. if(plr ~= localPlayer or not dim) then
  122. return false
  123. end
  124. destroyElement(source)
  125. if(currentBoat == 4) then
  126. missionCompleted()
  127. return true
  128. end
  129. currentBoat = currentBoat + 1
  130. outputChatBox("You have got the drugs, but there are still more drug smugglers, stop them!", 0, 0, 160)
  131. destroyMainAssets()
  132. missionStarting(localPlayer, true)
  133. end
  134.  
  135. function destroyMainAssets()
  136. for i, v in pairs(boatElements) do
  137. destroyElement(v)
  138. end
  139. boatElements = {}
  140. for i, v in pairs(timers) do
  141. destroyElement(v)
  142. end
  143. timers = {}
  144. end
  145.  
  146. function turnBoat()
  147. if(not boatElements["boat"] or not boatElements["boatPed1"]) then
  148. return false
  149. end
  150. local r = math.random(1, 2)
  151. if(r == 1) then
  152. setPedControlState(boatElements["boatPed1"], "vehicle_left", true)
  153. else
  154. setPedControlState(boatElements["boatPed1"], "vehicle_right", true)
  155. end
  156. end
  157.  
  158. function missionCompleted()
  159. destroyMainAssets()
  160. isMissionActive = false
  161. triggerServerEvent() --gonna give rewards
  162. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement