Advertisement
Filexdoj

client.lua

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