Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.54 KB | None | 0 0
  1. Vehicletransport = inherit(Singleton)
  2.  
  3. function Vehicletransport.new(...)
  4.     local o = setmetatable({}, { __index = Vehicletransport })
  5.     if o.constructor then
  6.         o:constructor(...)
  7.     end
  8.     return o
  9. end
  10.  
  11. function Vehicletransport:constructor()
  12.     self._iTransporterID = 578
  13.     self._iStolenCarID = 598
  14.     self._iTimer = 60
  15.     self._iFirstStart = math.random(900000, 2700000)
  16.     self._isStarted = false
  17.  
  18.     self._tblTransporterPositions = {
  19.         [1] = { 2795.4, -2493.4, 14.2, 90 },
  20.         [2] = { 1827.2, -1144.8, 24.6, 0 },
  21.         [3] = { -1980.6, -2392.9, 31.2, 314 },
  22.         [4] = { 797.5, -615.1, 16.9, 0 },
  23.         [5] = { 2654, 789.5, 5.9, 0 },
  24.         [6] = { 1633.8, 2229.9, 11.4, 0 },
  25.     }
  26.  
  27.     self._tblStolenCarPositions = {
  28.         [1] = { -108.8, -230.3, 1.2, 0 },
  29.         [2] = { -2448.1, 2305.7, 4.7, 90 },
  30.         [3] = { 1446.5, 972, 10.5, 0 },
  31.         [4] = { 435.7, -1294.7, 14.9, 214 },
  32.         [5] = { -77.5, -1113.6999511719, 0.89999997615814, 160 },
  33.     }
  34.  
  35.     self._tblFactionMarker = {
  36.         [2] = { -2715.1513671875, -297.4951171875, 6.5946455001831 },
  37.         [3] = { -2623.15234375, 1364.294921875, 7.0732231140137 },
  38.         [7] = { -2134.5517578125, -182.466796875, 34.880332946777 },
  39.         [9] = { -94.2294921875, 1356.900390625, 9.8312578201294 },
  40.         [12] = { 1056.7939453125, -322.6376953125, 73.545051574707 },
  41.         [13] = { 2479.4541015625, -1665.2763671875, 12.88843536377 },
  42.     }
  43.  
  44.     setTimer(function() self:onStart() end, self._iFirstStart, 1)
  45.     addCommandHandler("svt", function() self:onStart() end)
  46. end
  47.  
  48. function Vehicletransport:onStart()
  49.     self._isStarted = not self._isStarted
  50.     self._iRandomNumberTransporter = math.random(1, #self._tblTransporterPositions)
  51.     self._iRandomNumberStolenCar = math.random(1, #self._tblStolenCarPositions)
  52.  
  53.     self._uTransporter = createVehicle(self._iTransporterID, self._tblTransporterPositions[self._iRandomNumberTransporter][1], self._tblTransporterPositions[self._iRandomNumberTransporter][2], self._tblTransporterPositions[self._iRandomNumberTransporter][3], 0, 0, self._tblTransporterPositions[self._iRandomNumberTransporter][4])
  54.     self._uTransporterBlip = createBlipAttachedTo(self._uTransporter)
  55.  
  56.     self:sendNotification("Ein Transporter steht zum Diebstahl bereit!", "evil", 255, 255, 0)
  57.     self:setVisibleTo(self._uTransporterBlip, "evil", true)
  58.     self:checkActivity()
  59.  
  60.     addEventHandler("onVehicleStartEnter", self._uTransporter, function(...) self:setStep2(...) end)
  61.     setElementData(self._uTransporter, "noKeyNeeded", true)
  62. end
  63.  
  64. function Vehicletransport:setStep2(uPlayer, iSeat)
  65.     if (settings.faction.evil[getElementData(uPlayer, "Fraktion")] and iSeat == 0) then
  66.         if (not isElement(self._uStolenCar)) then
  67.             self._uStolenCar = createVehicle(self._iStolenCarID, self._tblStolenCarPositions[self._iRandomNumberStolenCar][1], self._tblStolenCarPositions[self._iRandomNumberStolenCar][2], self._tblStolenCarPositions[self._iRandomNumberStolenCar][3], 0, 0, self._tblStolenCarPositions[self._iRandomNumberStolenCar][4])
  68.             self._uStolenCarBlip = createBlip(self._tblStolenCarPositions[self._iRandomNumberStolenCar][1], self._tblStolenCarPositions[self._iRandomNumberStolenCar][2], self._tblStolenCarPositions[self._iRandomNumberStolenCar][3])
  69.             self:addAntiSteal(true)
  70.  
  71.             self:setVisibleTo(self._uStolenCarBlip, uPlayer, true)
  72.             self:sendNotification("Finde das Fahrzeug und stehle es!", uPlayer, 255, 255, 0)
  73.  
  74.             addEventHandler("onVehicleStartEnter", self._uTransporter, function(...) self:addFirstBlip(...) end)
  75.             addEventHandler("onVehicleStartExit", self._uTransporter, function() self:deleteFirstBlip() end)
  76.             addEventHandler("onVehicleExplode", self._uTransporter, function(...) self:onExplode(...) end)
  77.             addEventHandler("onPlayerWasted", uPlayer, function(...) self:onDie(...) end)
  78.             addEventHandler("onElementClicked", root, function(...) self:onClick(...) end)
  79.         end
  80.     else
  81.         cancelEvent(true)
  82.     end
  83. end
  84.  
  85. function Vehicletransport:lastStep(uPlayer)
  86.     if (uPlayer) then
  87.         if (settings.faction.evil[getElementData(uPlayer, "Fraktion")]) then
  88.             self._iFaction = getElementData(uPlayer, "Fraktion")
  89.             self._uFactionMarker = createMarker(self._tblFactionMarker[self._iFaction][1], self._tblFactionMarker[self._iFaction][2], self._tblFactionMarker[self._iFaction][3])
  90.             self._uFactionBlip = createBlipAttachedTo(self._uFactionMarker)
  91.             self:setVisibleTo(self._uFactionMarker, uPlayer, true)
  92.             self:setVisibleTo(self._uFactionBlip, uPlayer, true)
  93.  
  94.             addEventHandler("onMarkerHit", self._uFactionMarker, function(...) self:finishTransport(...) end)
  95.             addEventHandler("onVehicleStartEnter", self._uTransporter, function(...) self:addSecondBlip(...) end)
  96.             addEventHandler("onVehicleStartExit", self._uTransporter, function(...) self:deleteSecondBlip(...) end)
  97.         end
  98.     end
  99. end
  100.  
  101. function Vehicletransport:finishTransport(uElement, iDimension)
  102.     if (getElementType(uElement) == "vehicle" and iDimension) then
  103.         if (uElement == self._uTransporter) then
  104.             self._uDriver = getVehicleController(uElement)
  105.             if (self._uDriver) then
  106.                 if (settings.faction.evil[getElementData(self._uDriver, "Fraktion")]) then
  107.                     self:sendNotification("Der Fahrzeugtransport wurde erfolgreich beendet!", root, 0, 120, 0)
  108.                     self:sendNotification("Euch wurde 5.000€ in die Fraktionskasse überwiesen.", self._uDriver, 0, 120, 0)
  109.                     self:sendNotification("Du hast 7.000€ Cash auf die Hand bekommen!", self._uDriver, 0, 120, 0)
  110.                     setElementData(self._uDriver, "Bargeld", getElementData(self._uDriver, "Bargeld") + 5000)
  111.                     dbExec(connection, "UPDATE factiondepot SET amount = amount + ? WHERE fraktion = ?", tonumber(5000), getElementData(self._uDriver, "Fraktion"))
  112.  
  113.                     if (isElement(source)) then destroyElement(source) end
  114.                     if (isElement(self._uFactionBlip)) then destroyElement(self._uFactionBlip) end
  115.                     if (isElement(self._uTransporter)) then destroyElement(self._uTransporter) end
  116.                     if (isElement(self._uTransporterBlip)) then destroyElement(self._uTransporterBlip) end
  117.                     if (isElement(self._uStolenCar)) then destroyElement(self._uStolenCar) end
  118.                 end
  119.             end
  120.         end
  121.     end
  122. end
  123.  
  124. function Vehicletransport:onExplode()
  125.     if (isElement(self._uTransporter)) then destroyElement(self._uTransporter) end
  126.     if (isElement(self._uTransporterBlip)) then destroyElement(self._uTransporterBlip) end
  127.     if (isElement(self._uStolenCar)) then destroyElement(self._uStolenCar) end
  128.     if (isElement(self._uStolenCarBlip)) then destroyElement(self._uStolenCarBlip) end
  129.     if (isElement(self._uFactionMarker)) then destroyElement(self._uFactionMarker) end
  130.     if (isElement(self._uFactionBlip)) then destroyElement(self._uFactionBlip) end
  131.  
  132.     self:sendNotification("Der Fahrzeugtransport wurde zerschlagen!", root, 120, 0, 0)
  133.     setTimer(function() self:onStart() end, self._iTimer * 1000 * 60, 1)
  134.     self._isStarted = not self._isStarted
  135. end
  136.  
  137. function Vehicletransport:onDie()
  138.     self:setVisibleTo(self._uStolenCarBlip, source, false)
  139.     self:setVisibleTo(self._uFactionMarker, source, false)
  140.     self:setVisibleTo(self._uFactionBlip, source, false)
  141. end
  142.  
  143. function Vehicletransport:onClick(strButton, strState, uPlayer)
  144.     if (strButton == "left" and strState == "down") then
  145.         if (isPedInVehicle(uPlayer)) then
  146.             if (settings.faction.evil[getElementData(uPlayer, "Fraktion")]) then
  147.                 local x, y, z = getElementPosition(uPlayer)
  148.                 if (getDistanceBetweenPoints3D(x, y, z, getElementPosition(source)) <= 5) then
  149.                     if (self._uStolenCar == source) then
  150.                         attachElements(self._uStolenCar, self._uTransporter)
  151.                         self:deleteFirstBlip()
  152.                         self:sendNotification("Bringe das Fahrzeug zu deiner Base!", uPlayer, 255, 255, 0)
  153.                         self:sendNotification("Holt euch das geklaute Polzeifahrzeug!", "staat", 255, 255, 0)
  154.                         self:setVisibleTo(self._uTransporterBlip, root, true)
  155.                         self:lastStep(uPlayer)
  156.                     end
  157.                 end
  158.             end
  159.         end
  160.     end
  161. end
  162.  
  163. function Vehicletransport:addFirstBlip(uPlayer)
  164.     if (not isElement(self._uStolenCarBlip) and not isElementAttached(self._uStolenCar)) then
  165.         self._uStolenCarBlip = createBlip(self._tblStolenCarPositions[self._iRandomNumberStolenCar][1], self._tblStolenCarPositions[self._iRandomNumberStolenCar][2], self._tblStolenCarPositions[self._iRandomNumberStolenCar][3])
  166.         self:setVisibleTo(self._uStolenCarBlip, uPlayer, true)
  167.     end
  168. end
  169.  
  170. function Vehicletransport:deleteFirstBlip()
  171.     if (isElement(self._uStolenCarBlip)) then destroyElement(self._uStolenCarBlip) end
  172. end
  173.  
  174. function Vehicletransport:addSecondBlip(uPlayer)
  175.     if (not isElement(self._uFactionMarker)) then
  176.         self._iFaction = getElementData(uPlayer, "Fraktion")
  177.         self._uFactionMarker = createMarker(self._tblFactionMarker[self._iFaction][1], self._tblFactionMarker[self._iFaction][2], self._tblFactionMarker[self._iFaction][3])
  178.         self._uFactionBlip = createBlipAttachedTo(self._uFactionMarker)
  179.         self:setVisibleTo(self._uFactionMarker, uPlayer, true)
  180.         self:setVisibleTo(self._uFactionBlip, uPlayer, true)
  181.  
  182.         addEventHandler("onMarkerHit", self._uFactionMarker, function(...) self:finishTransport(...) end)
  183.     end
  184. end
  185.  
  186. function Vehicletransport:deleteSecondBlip()
  187.     removeEventHandler("onMarkerHit", self._uFactionMarker, function(...) self:finishTransport(...) end)
  188.  
  189.     if (isElement(self._uFactionMarker)) then destroyElement(self._uFactionMarker) end
  190.     if (isElement(self._uFactionBlip)) then destroyElement(self._uFactionBlip) end
  191. end
  192.  
  193. function Vehicletransport:checkActivity()
  194.     if (self._isStarted) then
  195.         local x, y, z = getElementPosition(self._uTransporter)
  196.         setTimer(function()
  197.             if (self._isStarted) then
  198.                 if (isElement(self._uTransporter)) then
  199.                     local xT, yT, zT = getElementPosition(self._uTransporter)
  200.                     if (getDistanceBetweenPoints3D(x, y, z, xT, yT, zT) < 2) then
  201.                         if (isElement(self._uTransporter)) then destroyElement(self._uTransporter) end
  202.                         if (isElement(self._uTransporterBlip)) then destroyElement(self._uTransporterBlip) end
  203.                         if (isElement(self._uStolenCar)) then destroyElement(self._uStolenCar) end
  204.                         if (isElement(self._uStolenCarBlip)) then destroyElement(self._uStolenCarBlip) end
  205.                         if (isElement(self._uFactionMarker)) then destroyElement(self._uFactionMarker) end
  206.                         if (isElement(self._uFactionBlip)) then destroyElement(self._uFactionBlip) end
  207.                         self:sendNotification("Der Fahrzeugtransport wurde abgebrochen.", root, 120, 0, 0)
  208.                         setTimer(function() self:onStart() end, self._iTimer * 1000 * 60, 1)
  209.                         self._isStarted = not self._isStarted
  210.                     else
  211.                         self:checkAcitity()
  212.                     end
  213.                 end
  214.             end
  215.         end, 900000, 1)
  216.     end
  217. end
  218.  
  219. function Vehicletransport:addAntiSteal(boolean)
  220.     if (boolean) then
  221.         if (isElement(self._uStolenCar)) then
  222.             setVehicleLocked(self._uStolenCar, boolean)
  223.             setElementFrozen(self._uStolenCar, boolean)
  224.             setVehicleDamageProof(self._uStolenCar, boolean)
  225.         end
  226.     end
  227. end
  228.  
  229. function Vehicletransport:setVisibleTo(uElement, uVisibleTo, boolean)
  230.     if (uElement and uVisibleTo and boolean) then
  231.         setElementVisibleTo(uElement, root, false)
  232.         if (uVisibleTo == "evil") then
  233.             for _, v in pairs(getElementsByType("player")) do
  234.                 if (settings.faction.evil[getElementData(v, "Fraktion")]) then
  235.                     setElementVisibleTo(uElement, v, boolean)
  236.                 end
  237.             end
  238.         elseif (uVisibleTo == "staat") then
  239.             for _, v in pairs(getElementsByType("player")) do
  240.                 if (settings.faction.staat[getElementData(v, "Fraktion")]) then
  241.                     setElementVisibleTo(uElement, v, boolean)
  242.                 end
  243.             end
  244.         else
  245.             setElementVisibleTo(uElement, uVisibleTo, boolean)
  246.         end
  247.     end
  248. end
  249.  
  250. function Vehicletransport:sendNotification(strText, uElement, r, g, b)
  251.     if (strText and uElement and r) then
  252.         if (uElement == "evil") then
  253.             for _, v in pairs(getElementsByType("player")) do
  254.                 if (settings.faction.evil[getElementData(v, "Fraktion")]) then
  255.                     outputChatBox(strText, v, r, g, b)
  256.                 end
  257.             end
  258.         elseif (uElement == "staat") then
  259.             for _, v in pairs(getElementsByType("player")) do
  260.                 if (settings.faction.staat[getElementData(v, "Fraktion")] and getElementData(v, "Duty")) then
  261.                     triggerClientEvent(v, "showInfo", root, strText, r, g, b, "Fahrzeugtransport")
  262.                 end
  263.             end
  264.         else
  265.             outputChatBox(strText, uElement, r, g, b)
  266.         end
  267.     end
  268. end
  269.  
  270. G_Vehicletransport = Vehicletransport.new()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement