Advertisement
Filexdoj

carjacker (demo)

Jul 4th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.86 KB | None | 0 0
  1. ocal ClientScreenW, ClientScreenH = guiGetScreenSize()
  2. local requestPanelObjects = {}
  3. local VehicleLockStatus
  4. local currentVehicle
  5. local deliveryMarker
  6. local entering = false
  7. local deliveryBlip
  8. local deliveryMarkerPosition = Vector3(-1561.3, 110.3, 2.5)
  9. function startFeature(player, seat, door)
  10.     if entering then
  11.         entering = false
  12.         setTimer(checkIfEntered,5000,1)
  13.         return
  14.     end
  15.     if seat == 0 then
  16.         if player:getData("class") == "Carjacker" then
  17.             if source:getData("vehicleOwner") and not source:getData("vehicleOwner") == player:getData("username") then
  18.                 currentVehicle = source
  19.                 cancelEvent()
  20.                 if source:isLocked() then
  21.                     requestJacking(true)
  22.                     VehicleLockStatus = true
  23.                 elseif not source:isLocked() then
  24.                     requestJacking(false)
  25.                     VehicleLockStatus = false
  26.                 end
  27.             end
  28.         end
  29.     end
  30. end
  31. addEventHandler("onClientVehicleStartEnter", getRootElement(), startFeature)
  32.  
  33. function requestJacking(locked)
  34.     if locked then
  35.         createRequestPanel("is locked")
  36.     elseif not locked then
  37.         createRequestPanel("isn't locked")
  38.     end
  39. end
  40.  
  41. function createRequestPanel(Status)
  42.     showCursor(true)
  43.     requestPanelObjects.window =
  44.         GuiWindow((ClientScreenW - 386) / 2, (ClientScreenH - 131) / 2, 386, 131, "SAES:RPG - Carjacker ", false)
  45.     requestPanelObjects.window:setSizable(false)
  46.     requestPanelObjects.label =
  47.         GuiLabel(
  48.         24,
  49.         23,
  50.         338,
  51.         50,
  52.         "Seems like this vehicle is empty and " .. Status .. ", would you like to steal it ?",
  53.         false,
  54.         requestPanelObjects.window
  55.     )
  56.     requestPanelObjects.label:setHorizontalAlign("center", true)
  57.     requestPanelObjects.label:setVerticalAlign("center")
  58.     requestPanelObjects.yesButton = GuiButton(24, 83, 167, 26, "Yes", false, requestPanelObjects.window)
  59.     addEventHandler("onClientGUIClick", requestPanelObjects.yesButton, onYesButtonClick, false)
  60.     requestPanelObjects.noButton = GuiButton(201, 83, 161, 26, "No", false, requestPanelObjects.window)
  61.     addEventHandler("onClientGUIClick", requestPanelObjects.noButton, onNoButtonClick, false)
  62. end
  63.  
  64. function minigameFailed()
  65.     currentVehicle = nil
  66.     local hanlder1 = getEventHandlers("minigamePassed", getRootElement())[1]
  67.     local hanlder2 = getEventHandlers("minigameFailed", getRootElement())[1]
  68.     removeEventHandler("minigamePassed", getRootElement(), hanlder1)
  69.     removeEventHandler("minigameFailed", getRootElement(), hanlder2)
  70. end
  71. addEvent("minigamePassed", true)
  72. addEvent("minigameFailed", true)
  73.  
  74. function onYesButtonClick()
  75.     if VehicleLockStatus then
  76.         removeEventHandler("onClientGUIClick", requestPanelObjects.noButton, onNoButtonClick)
  77.         removeEventHandler(
  78.             "onClientGUIClick",
  79.             requestPanelObjects.yesButton,
  80.             getEventHandlers("onClientGUIClick", requestPanelObjects.yesButton)[1]
  81.         )
  82.         triggerServerEvent("triggerMiniGame", currentVehicle)
  83.         addEventHandler(
  84.             "minigamePassed",
  85.             getRootElement(),
  86.             function()
  87.                 startDelivery()
  88.                 entering = true
  89.                 currentVehicle:setLocked(false)
  90.                 localPlayer:setControlState("enter_exit", true)
  91.             end
  92.         )
  93.         addEventHandler("minigameFailed", getRootElement(), minigameFailed)
  94.     elseif not VehicleLockStatus then
  95.         showCursor(false)
  96.         entering = true
  97.         startDelivery()
  98.         localPlayer:setControlState("enter_exit", true)
  99.         removeEventHandler("onClientGUIClick", requestPanelObjects.noButton, onNoButtonClick)
  100.         removeEventHandler(
  101.             "onClientGUIClick",
  102.             requestPanelObjects.yesButton,
  103.             getEventHandlers("onClientGUIClick", requestPanelObjects.yesButton)[1]
  104.         )
  105.     end
  106.     requestPanelObjects.window:destroy()
  107.     requestPanelObjects = {}
  108. end
  109. function onNoButtonClick()
  110.     showCursor(false)
  111.     if VehicleLockStatus then
  112.         removeEventHandler("onClientGUIClick", requestPanelObjects.yesButton, onYesButtonClick)
  113.         removeEventHandler(
  114.             "onClientGUIClick",
  115.             requestPanelObjects.noButton,
  116.             getEventHandlers("onClientGUIClick", requestPanelObjects.noButton)[1]
  117.         )
  118.         currentVehicle = nil
  119.     elseif not VehicleLockStatus then
  120.         entering = true
  121.         localPlayer:setControlState("enter_exit", true)
  122.         removeEventHandler("onClientGUIClick", requestPanelObjects.yesButton, onYesButtonClick)
  123.         removeEventHandler(
  124.             "onClientGUIClick",
  125.             requestPanelObjects.noButton,
  126.             getEventHandlers("onClientGUIClick", requestPanelObjects.noButton)[1]
  127.         )
  128.         currentVehicle = nil
  129.     end
  130.     requestPanelObjects.window:destroy()
  131.     requestPanelObjects = {}
  132. end
  133.  
  134. function startDelivery()
  135.     local hanlder1 = getEventHandlers("minigamePassed", getRootElement())[1]
  136.     local hanlder2 = getEventHandlers("minigameFailed", getRootElement())[1]
  137.     if hanlder1 and hanlder2 then
  138.         removeEventHandler("minigamePassed", getRootElement(), hanlder1)
  139.         removeEventHandler("minigameFailed", getRootElement(), hanlder2)
  140.     end
  141.     deliveryMarker = Marker(deliveryMarkerPosition, "cylinder", 4, 255, 0, 0, 255)
  142.     deliveryBlip = Blip.createAttachedTo(deliveryMarker, 41, 3, 255, 0, 0, 0, 65535)
  143.     addEventHandler("onClientMarkerHit", deliveryMarker, deliveryMarkerHit)
  144.     addEventHandler("onClientVehicleExit", currentVehicle, stopDelivery)
  145.     addEventHandler("onClientPlayerWasted", localPlayer, stopDelivery)
  146. end
  147.  
  148. function checkIfEntered()
  149.     if not localPlayer:getOccupiedVehicle() then
  150.         stopDelivery()
  151.     end
  152. end
  153.  
  154. function stopDelivery()
  155.     removeEventHandler("onClientMarkerHit", deliveryMarker, getEventHandlers("onClientMarkerHit", deliveryMarker)[1])
  156.     removeEventHandler(
  157.         "onClientVehicleExit",
  158.         currentVehicle,
  159.         getEventHandlers("onClientVehicleExit", currentVehicle)[1]
  160.     )
  161.     removeEventHandler("onClientPlayerWasted", localPlayer, getEventHandlers("onClientPlayerWasted", localPlayer)[1])
  162.     currentVehicle = nil
  163.     deliveryBlip:destroy()
  164.     deliveryMarker:destroy()
  165.     outputChatBox("You have abandonded the mission", 255, 0, 0)
  166. end
  167.  
  168. function deliveryMarkerHit()
  169.     removeEventHandler("onClientMarkerHit", deliveryMarker, getEventHandlers("onClientMarkerHit", deliveryMarker)[1])
  170.     removeEventHandler("onClientVehicleExit", currentVehicle, stopDelivery)
  171.     removeEventHandler("onClientPlayerWasted", localPlayer, stopDelivery)
  172.     deliveryBlip:destroy()
  173.     deliveryMarker:destroy()
  174.     triggerServerEvent("Delivery:done", currentVehicle)
  175.     currentVehicle = nil
  176.     givePlayerMoney(5000)
  177. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement