Advertisement
Filexdoj

carjacker Minigame

Jul 28th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.91 KB | None | 0 0
  1. local DevScreenW, DevScreenH = 1280, 900
  2. local ClientScreenW, ClientScreenH = guiGetScreenSize()
  3. local speed
  4. local speedAdditionOnStep = 0.5
  5. local step = 1
  6. local Timer
  7. local currentVehicle
  8. local drawDimensions = {
  9.     mainRectangle = {
  10.         startX = (ClientScreenW - 486 / ClientScreenW * DevScreenW) / 2,
  11.         startY = 52 / ClientScreenH * DevScreenH,
  12.         width = 486 / ClientScreenW * DevScreenW,
  13.         height = 30 / ClientScreenH * DevScreenH
  14.     },
  15.     targettingRectangel = {
  16.         startX = (ClientScreenW - 486 / ClientScreenW * DevScreenW) / 2,
  17.         width = 4 / ClientScreenW * DevScreenW,
  18.         height = 30 / ClientScreenH * DevScreenH
  19.     },
  20.     targetRectangle = {
  21.         startX = 0,
  22.         width = 30 / ClientScreenW * DevScreenW,
  23.         height = 30 / ClientScreenH * DevScreenH
  24.     },
  25.     outline = {
  26.         startX = ((ClientScreenW - 486 / ClientScreenW * DevScreenW) / 2) + (486 / ClientScreenW * DevScreenW),
  27.         startY = 82 / ClientScreenH * DevScreenH
  28.     }
  29. }
  30.  
  31. function chooseMinigameSpeedDependingOnCarPrice()
  32.     local priceString = tostring(getVehiclePrice(currentVehicle.name))
  33.     local length = priceString:len() - 2
  34.     speed = tonumber(tostring(length) .. "." .. priceString:sub(1))
  35. end
  36.  
  37. function drawMiniGame()
  38.     showCursor(true)
  39.     -- drawing main rectangle and it's outlines
  40.     dxDrawLine(
  41.         drawDimensions.mainRectangle["startX"] - 1,
  42.         drawDimensions.mainRectangle["startY"] - 1,
  43.         drawDimensions.mainRectangle["startX"] - 1,
  44.         drawDimensions.outline["startY"],
  45.         tocolor(0, 0, 0, 255),
  46.         1,
  47.         false
  48.     )
  49.     dxDrawLine(
  50.         drawDimensions.outline["startX"],
  51.         drawDimensions.mainRectangle["startY"] - 1,
  52.         drawDimensions.mainRectangle["startX"] - 1,
  53.         drawDimensions.mainRectangle["startY"] - 1,
  54.         tocolor(0, 0, 0, 255),
  55.         1,
  56.         false
  57.     )
  58.     dxDrawLine(
  59.         drawDimensions.mainRectangle["startX"] - 1,
  60.         drawDimensions.outline["startY"],
  61.         drawDimensions.outline["startX"],
  62.         drawDimensions.outline["startY"],
  63.         tocolor(0, 0, 0, 255),
  64.         1,
  65.         false
  66.     )
  67.     dxDrawLine(
  68.         drawDimensions.outline["startX"],
  69.         drawDimensions.outline["startY"],
  70.         drawDimensions.outline["startX"],
  71.         drawDimensions.mainRectangle["startY"] - 1,
  72.         tocolor(0, 0, 0, 255),
  73.         1,
  74.         false
  75.     )
  76.     dxDrawRectangle(
  77.         drawDimensions.mainRectangle["startX"],
  78.         drawDimensions.mainRectangle["startY"],
  79.         drawDimensions.mainRectangle["width"],
  80.         drawDimensions.mainRectangle["height"],
  81.         tocolor(0, 0, 0, 0),
  82.         false
  83.     )
  84.     -- drawing target rectangle
  85.     dxDrawRectangle(
  86.         drawDimensions.targetRectangle["startX"],
  87.         drawDimensions.mainRectangle["startY"],
  88.         drawDimensions.targetRectangle["width"],
  89.         drawDimensions.targetRectangle["height"],
  90.         tocolor(51, 254, 17, 255),
  91.         false
  92.     )
  93.  
  94.     -- drawing targetting rectangle
  95.     dxDrawRectangle(
  96.         drawDimensions.targettingRectangel["startX"],
  97.         drawDimensions.mainRectangle["startY"],
  98.         drawDimensions.targettingRectangel["width"],
  99.         drawDimensions.targettingRectangel["height"],
  100.         tocolor(254, 254, 254, 255),
  101.         false
  102.     )
  103. end
  104.  
  105. function stopMiniGame()
  106.     killTimer(Timer)
  107.     removeEventHandler("onClientKey", getRootElement(), onSpaceClick)
  108.     removeEventHandler("onClientRender", getRootElement(), drawMiniGame)
  109.     removeEventHandler("onClientPlayerWasted", localPlayer, stopMiniGameIfDeadOrArrested)
  110.     speed = nil
  111.     drawDimensions.targettingRectangel["startX"] = drawDimensions.mainRectangle["startX"]
  112.     drawDimensions.targetRectangle["width"] = 30 / ClientScreenW * DevScreenW
  113.     step = 1
  114.     showCursor(false)
  115. end
  116.  
  117. function moveToNextStep()
  118.     if step == 3 then
  119.         stopMiniGame()
  120.         outputChatBox("You have Succefully unlocked the vehicle", 0, 255, 0)
  121.         outputChatBox("Make sure to reach the delivery point on the map", 255, 0, 0)
  122.         triggerServerEvent("minigamePassed", localPlayer)
  123.     else
  124.         step = step + 1
  125.         outputChatBox("Step " .. step, 0, 255, 0)
  126.         if speed > 0 then
  127.             speed = speed + 0.5
  128.         elseif speed < 0 then
  129.             speed = speed - 0.5
  130.         end
  131.         drawDimensions.targetRectangle["width"] = drawDimensions.targetRectangle["width"] - 7
  132.         drawDimensions.targetRectangle["startX"] =
  133.             math.random(
  134.             drawDimensions.mainRectangle["startX"],
  135.             drawDimensions.mainRectangle["startX"] + drawDimensions.mainRectangle["width"] -
  136.                 drawDimensions.targetRectangle["width"]
  137.         )
  138.     end
  139. end
  140.  
  141. function onSpaceClick(key, pOr)
  142.     if pOr == false and key == "space" then
  143.         if
  144.             drawDimensions.targettingRectangel["startX"] >= drawDimensions.targetRectangle["startX"] and
  145.                 drawDimensions.targettingRectangel["startX"] <=
  146.                     drawDimensions.targetRectangle["startX"] + drawDimensions.targetRectangle["width"]
  147.          then
  148.             moveToNextStep()
  149.         else
  150.             stopMiniGame()
  151.             outputChatBox("You have failed to unlock the vehicle and an alarm has started", 255, 0, 0)
  152.             triggerServerEvent("minigameFailed", localPlayer)
  153.         end
  154.     end
  155. end
  156.  
  157. function stopMiniGameIfDeadOrArrested()
  158.     stopMiniGame()
  159.     triggerServerEvent("minigameFailed", localPlayer)
  160. end
  161. addEvent("stopIfArrested", true)
  162. addEventHandler("stopIfArrested", localPlayer, stopMiniGameIfDeadOrArrested)
  163.  
  164. function moveTargettingRectangleAndCheck()
  165.     drawDimensions.targettingRectangel["startX"] = drawDimensions.targettingRectangel["startX"] + speed
  166.     if
  167.         drawDimensions.targettingRectangel["startX"] + drawDimensions.targettingRectangel["width"] >=
  168.             drawDimensions.mainRectangle["startX"] + drawDimensions.mainRectangle["width"]
  169.      then
  170.         speed = -speed
  171.     elseif drawDimensions.targettingRectangel["startX"] <= drawDimensions.mainRectangle["startX"] then
  172.         speed = -speed
  173.     end
  174. end
  175.  
  176. function triggerMiniGame()
  177.     currentVehicle = source
  178.     chooseMinigameSpeedDependingOnCarPrice()
  179.     Timer = setTimer(moveTargettingRectangleAndCheck, 0, 0)
  180.     drawDimensions.targetRectangle["startX"] =
  181.         math.random(
  182.         drawDimensions.mainRectangle["startX"],
  183.         drawDimensions.mainRectangle["startX"] + drawDimensions.mainRectangle["width"] -
  184.             drawDimensions.targetRectangle["width"]
  185.     )
  186.     addEventHandler("onClientKey", getRootElement(), onSpaceClick)
  187.     addEventHandler("onClientRender", getRootElement(), drawMiniGame)
  188.     addEventHandler("onClientPlayerWasted", localPlayer, stopMiniGameIfDeadOrArrested)
  189.     triggerServerEvent("addIfArrestedEvent", localPlayer)
  190. end
  191. addEvent("triggerMiniGame", true)
  192. addEventHandler("triggerMiniGame", getRootElement(), triggerMiniGame)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement