Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Vehicletransport = inherit(Singleton)
- function Vehicletransport.new(...)
- local o = setmetatable({}, { __index = Vehicletransport })
- if o.constructor then
- o:constructor(...)
- end
- return o
- end
- function Vehicletransport:constructor()
- self._iTransporterID = 578
- self._iStolenCarID = 598
- self._iTimer = 60
- self._iFirstStart = math.random(900000, 2700000)
- self._isStarted = false
- self._tblTransporterPositions = {
- [1] = { 2795.4, -2493.4, 14.2, 90 },
- [2] = { 1827.2, -1144.8, 24.6, 0 },
- [3] = { -1980.6, -2392.9, 31.2, 314 },
- [4] = { 797.5, -615.1, 16.9, 0 },
- [5] = { 2654, 789.5, 5.9, 0 },
- [6] = { 1633.8, 2229.9, 11.4, 0 },
- }
- self._tblStolenCarPositions = {
- [1] = { -108.8, -230.3, 1.2, 0 },
- [2] = { -2448.1, 2305.7, 4.7, 90 },
- [3] = { 1446.5, 972, 10.5, 0 },
- [4] = { 435.7, -1294.7, 14.9, 214 },
- [5] = { -77.5, -1113.6999511719, 0.89999997615814, 160 },
- }
- self._tblFactionMarker = {
- [2] = { -2715.1513671875, -297.4951171875, 6.5946455001831 },
- [3] = { -2623.15234375, 1364.294921875, 7.0732231140137 },
- [7] = { -2134.5517578125, -182.466796875, 34.880332946777 },
- [9] = { -94.2294921875, 1356.900390625, 9.8312578201294 },
- [12] = { 1056.7939453125, -322.6376953125, 73.545051574707 },
- [13] = { 2479.4541015625, -1665.2763671875, 12.88843536377 },
- }
- setTimer(function() self:onStart() end, self._iFirstStart, 1)
- addCommandHandler("svt", function() self:onStart() end)
- end
- function Vehicletransport:onStart()
- self._isStarted = not self._isStarted
- self._iRandomNumberTransporter = math.random(1, #self._tblTransporterPositions)
- self._iRandomNumberStolenCar = math.random(1, #self._tblStolenCarPositions)
- 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])
- self._uTransporterBlip = createBlipAttachedTo(self._uTransporter)
- self:sendNotification("Ein Transporter steht zum Diebstahl bereit!", "evil", 255, 255, 0)
- self:setVisibleTo(self._uTransporterBlip, "evil", true)
- self:checkActivity()
- addEventHandler("onVehicleStartEnter", self._uTransporter, function(...) self:setStep2(...) end)
- setElementData(self._uTransporter, "noKeyNeeded", true)
- end
- function Vehicletransport:setStep2(uPlayer, iSeat)
- if (settings.faction.evil[getElementData(uPlayer, "Fraktion")] and iSeat == 0) then
- if (not isElement(self._uStolenCar)) then
- 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])
- self._uStolenCarBlip = createBlip(self._tblStolenCarPositions[self._iRandomNumberStolenCar][1], self._tblStolenCarPositions[self._iRandomNumberStolenCar][2], self._tblStolenCarPositions[self._iRandomNumberStolenCar][3])
- self:addAntiSteal(true)
- self:setVisibleTo(self._uStolenCarBlip, uPlayer, true)
- self:sendNotification("Finde das Fahrzeug und stehle es!", uPlayer, 255, 255, 0)
- addEventHandler("onVehicleStartEnter", self._uTransporter, function(...) self:addFirstBlip(...) end)
- addEventHandler("onVehicleStartExit", self._uTransporter, function() self:deleteFirstBlip() end)
- addEventHandler("onVehicleExplode", self._uTransporter, function(...) self:onExplode(...) end)
- addEventHandler("onPlayerWasted", uPlayer, function(...) self:onDie(...) end)
- addEventHandler("onElementClicked", root, function(...) self:onClick(...) end)
- end
- else
- cancelEvent(true)
- end
- end
- function Vehicletransport:lastStep(uPlayer)
- if (uPlayer) then
- if (settings.faction.evil[getElementData(uPlayer, "Fraktion")]) then
- self._iFaction = getElementData(uPlayer, "Fraktion")
- self._uFactionMarker = createMarker(self._tblFactionMarker[self._iFaction][1], self._tblFactionMarker[self._iFaction][2], self._tblFactionMarker[self._iFaction][3])
- self._uFactionBlip = createBlipAttachedTo(self._uFactionMarker)
- self:setVisibleTo(self._uFactionMarker, uPlayer, true)
- self:setVisibleTo(self._uFactionBlip, uPlayer, true)
- addEventHandler("onMarkerHit", self._uFactionMarker, function(...) self:finishTransport(...) end)
- addEventHandler("onVehicleStartEnter", self._uTransporter, function(...) self:addSecondBlip(...) end)
- addEventHandler("onVehicleStartExit", self._uTransporter, function(...) self:deleteSecondBlip(...) end)
- end
- end
- end
- function Vehicletransport:finishTransport(uElement, iDimension)
- if (getElementType(uElement) == "vehicle" and iDimension) then
- if (uElement == self._uTransporter) then
- self._uDriver = getVehicleController(uElement)
- if (self._uDriver) then
- if (settings.faction.evil[getElementData(self._uDriver, "Fraktion")]) then
- self:sendNotification("Der Fahrzeugtransport wurde erfolgreich beendet!", root, 0, 120, 0)
- self:sendNotification("Euch wurde 5.000€ in die Fraktionskasse überwiesen.", self._uDriver, 0, 120, 0)
- self:sendNotification("Du hast 7.000€ Cash auf die Hand bekommen!", self._uDriver, 0, 120, 0)
- setElementData(self._uDriver, "Bargeld", getElementData(self._uDriver, "Bargeld") + 5000)
- dbExec(connection, "UPDATE factiondepot SET amount = amount + ? WHERE fraktion = ?", tonumber(5000), getElementData(self._uDriver, "Fraktion"))
- if (isElement(source)) then destroyElement(source) end
- if (isElement(self._uFactionBlip)) then destroyElement(self._uFactionBlip) end
- if (isElement(self._uTransporter)) then destroyElement(self._uTransporter) end
- if (isElement(self._uTransporterBlip)) then destroyElement(self._uTransporterBlip) end
- if (isElement(self._uStolenCar)) then destroyElement(self._uStolenCar) end
- end
- end
- end
- end
- end
- function Vehicletransport:onExplode()
- if (isElement(self._uTransporter)) then destroyElement(self._uTransporter) end
- if (isElement(self._uTransporterBlip)) then destroyElement(self._uTransporterBlip) end
- if (isElement(self._uStolenCar)) then destroyElement(self._uStolenCar) end
- if (isElement(self._uStolenCarBlip)) then destroyElement(self._uStolenCarBlip) end
- if (isElement(self._uFactionMarker)) then destroyElement(self._uFactionMarker) end
- if (isElement(self._uFactionBlip)) then destroyElement(self._uFactionBlip) end
- self:sendNotification("Der Fahrzeugtransport wurde zerschlagen!", root, 120, 0, 0)
- setTimer(function() self:onStart() end, self._iTimer * 1000 * 60, 1)
- self._isStarted = not self._isStarted
- end
- function Vehicletransport:onDie()
- self:setVisibleTo(self._uStolenCarBlip, source, false)
- self:setVisibleTo(self._uFactionMarker, source, false)
- self:setVisibleTo(self._uFactionBlip, source, false)
- end
- function Vehicletransport:onClick(strButton, strState, uPlayer)
- if (strButton == "left" and strState == "down") then
- if (isPedInVehicle(uPlayer)) then
- if (settings.faction.evil[getElementData(uPlayer, "Fraktion")]) then
- local x, y, z = getElementPosition(uPlayer)
- if (getDistanceBetweenPoints3D(x, y, z, getElementPosition(source)) <= 5) then
- if (self._uStolenCar == source) then
- attachElements(self._uStolenCar, self._uTransporter)
- self:deleteFirstBlip()
- self:sendNotification("Bringe das Fahrzeug zu deiner Base!", uPlayer, 255, 255, 0)
- self:sendNotification("Holt euch das geklaute Polzeifahrzeug!", "staat", 255, 255, 0)
- self:setVisibleTo(self._uTransporterBlip, root, true)
- self:lastStep(uPlayer)
- end
- end
- end
- end
- end
- end
- function Vehicletransport:addFirstBlip(uPlayer)
- if (not isElement(self._uStolenCarBlip) and not isElementAttached(self._uStolenCar)) then
- self._uStolenCarBlip = createBlip(self._tblStolenCarPositions[self._iRandomNumberStolenCar][1], self._tblStolenCarPositions[self._iRandomNumberStolenCar][2], self._tblStolenCarPositions[self._iRandomNumberStolenCar][3])
- self:setVisibleTo(self._uStolenCarBlip, uPlayer, true)
- end
- end
- function Vehicletransport:deleteFirstBlip()
- if (isElement(self._uStolenCarBlip)) then destroyElement(self._uStolenCarBlip) end
- end
- function Vehicletransport:addSecondBlip(uPlayer)
- if (not isElement(self._uFactionMarker)) then
- self._iFaction = getElementData(uPlayer, "Fraktion")
- self._uFactionMarker = createMarker(self._tblFactionMarker[self._iFaction][1], self._tblFactionMarker[self._iFaction][2], self._tblFactionMarker[self._iFaction][3])
- self._uFactionBlip = createBlipAttachedTo(self._uFactionMarker)
- self:setVisibleTo(self._uFactionMarker, uPlayer, true)
- self:setVisibleTo(self._uFactionBlip, uPlayer, true)
- addEventHandler("onMarkerHit", self._uFactionMarker, function(...) self:finishTransport(...) end)
- end
- end
- function Vehicletransport:deleteSecondBlip()
- removeEventHandler("onMarkerHit", self._uFactionMarker, function(...) self:finishTransport(...) end)
- if (isElement(self._uFactionMarker)) then destroyElement(self._uFactionMarker) end
- if (isElement(self._uFactionBlip)) then destroyElement(self._uFactionBlip) end
- end
- function Vehicletransport:checkActivity()
- if (self._isStarted) then
- local x, y, z = getElementPosition(self._uTransporter)
- setTimer(function()
- if (self._isStarted) then
- if (isElement(self._uTransporter)) then
- local xT, yT, zT = getElementPosition(self._uTransporter)
- if (getDistanceBetweenPoints3D(x, y, z, xT, yT, zT) < 2) then
- if (isElement(self._uTransporter)) then destroyElement(self._uTransporter) end
- if (isElement(self._uTransporterBlip)) then destroyElement(self._uTransporterBlip) end
- if (isElement(self._uStolenCar)) then destroyElement(self._uStolenCar) end
- if (isElement(self._uStolenCarBlip)) then destroyElement(self._uStolenCarBlip) end
- if (isElement(self._uFactionMarker)) then destroyElement(self._uFactionMarker) end
- if (isElement(self._uFactionBlip)) then destroyElement(self._uFactionBlip) end
- self:sendNotification("Der Fahrzeugtransport wurde abgebrochen.", root, 120, 0, 0)
- setTimer(function() self:onStart() end, self._iTimer * 1000 * 60, 1)
- self._isStarted = not self._isStarted
- else
- self:checkAcitity()
- end
- end
- end
- end, 900000, 1)
- end
- end
- function Vehicletransport:addAntiSteal(boolean)
- if (boolean) then
- if (isElement(self._uStolenCar)) then
- setVehicleLocked(self._uStolenCar, boolean)
- setElementFrozen(self._uStolenCar, boolean)
- setVehicleDamageProof(self._uStolenCar, boolean)
- end
- end
- end
- function Vehicletransport:setVisibleTo(uElement, uVisibleTo, boolean)
- if (uElement and uVisibleTo and boolean) then
- setElementVisibleTo(uElement, root, false)
- if (uVisibleTo == "evil") then
- for _, v in pairs(getElementsByType("player")) do
- if (settings.faction.evil[getElementData(v, "Fraktion")]) then
- setElementVisibleTo(uElement, v, boolean)
- end
- end
- elseif (uVisibleTo == "staat") then
- for _, v in pairs(getElementsByType("player")) do
- if (settings.faction.staat[getElementData(v, "Fraktion")]) then
- setElementVisibleTo(uElement, v, boolean)
- end
- end
- else
- setElementVisibleTo(uElement, uVisibleTo, boolean)
- end
- end
- end
- function Vehicletransport:sendNotification(strText, uElement, r, g, b)
- if (strText and uElement and r) then
- if (uElement == "evil") then
- for _, v in pairs(getElementsByType("player")) do
- if (settings.faction.evil[getElementData(v, "Fraktion")]) then
- outputChatBox(strText, v, r, g, b)
- end
- end
- elseif (uElement == "staat") then
- for _, v in pairs(getElementsByType("player")) do
- if (settings.faction.staat[getElementData(v, "Fraktion")] and getElementData(v, "Duty")) then
- triggerClientEvent(v, "showInfo", root, strText, r, g, b, "Fahrzeugtransport")
- end
- end
- else
- outputChatBox(strText, uElement, r, g, b)
- end
- end
- end
- G_Vehicletransport = Vehicletransport.new()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement