---------------------------------------->>
-- Grand Theft International (GTI)
-- Author: Mitch
-- Date: 11 Feb 2015
-- Resource: storeRob_c.Lua
-- Version: 1.0
----------------------------------------->>
addEvent("onClientInteriorExit",true)
colShapeDerFix = createColCuboid ( 251.714, -81.700, 0.578, 12, 19, 10 )
local theRobbery = false
local robCashRegister = false
local robberyStarted = false
local hasBag = false
local cancelRobb = false
local intLeave = false
local peds = {
--{createPed ( 179, 1370.286, -1292.434, 13.549, -90), 0, 0},
--{createPed ( 179, 1370.297, -1286.706, 18.002, -90), 0, 0},
{createPed ( 179, 2402.549, -1986.312, 13.546, 90), 0, 0},
{createPed ( 179, 1316.687, -896.606, 39.578, 360 ), 0, 0 },
{createPed ( 179, 1348.748046875, -1760.7326660156, 13.549824714661, 181.38510131836 ), 0, 0 },
{createPed ( 179, 2411.5866699219, -1505.5615234375, 24.002511978149, 270.54040527344 ), 0, 0 },
--{createPed ( 179, 2324.559, 57.402, 20.866, 90), 0, 0},
--[[
{createPed ( 179, 237.804, -167.235, -3.744, 180), 0, 0},
{createPed ( 179, 2170.868, 931.855, 10.096, 90), 0, 0},
{createPed ( 179, -2093.384, -2470.107, 30.625, 50), 0, 0},
{createPed ( 179, -318.559, 829.981, 14.245, 90), 0, 0},
{createPed ( 179, 2550.509, 2071.741, 10.107, 0), 0, 0},
--{createPed ( 59, -2235.597, 128.584, 1035.414, 0), 0, 6 },
--{createPed ( 59, 497.644, -77.471, 998.765, 0 ), 1, 11 },
--{createPed ( 59, -23.286, -57.334, 1003.547, 0 ), 1, 6 },
--{createPed ( 59, -28.066, -91.640, 1003.547, 0 ), 1, 18 },
--{createPed ( 59, -28.066, -91.640, 1003.547, 0 ), 0, 18 },
--{createPed ( 59, -23.409, -57.324, 1003.547, 0 ), 4, 6 },
--{createPed ( 59, -27.963, -91.640, 1003.547, 0 ), 2, 18 },
--{createPed ( 59, -23.409, -57.324, 1003.547, 0 ), 3, 6 },
{createPed ( 59, -1560.088, -2731.392, 48.748, 325 ), 0, 0 },
--{createPed ( 59, 1834.721, -1837.593, 13.595, 265 ), 0, 0 },
{createPed ( 59, 250.219, -54.828, 1.578, 180 ), 0, 0 },
{createPed ( 59, 2356.241, 68.039, 22.3, 90 ), 0, 0 },
{createPed ( 59, 2446.081, 2076.602, 10.826, 180 ), 0, 0 },
]]--
}
local cashRegister = {
--[[
{createObject ( 1514, -2235.574, 129.407, 1035.700, 0, 0, 180 ), 0, 6, 180 },
{createObject ( 1514, 497.646, -76.722, 999.005, 0, 0, 180 ), 1, 11, 180},
{createObject ( 1514, -23.386, -56.597, 1003.706, 0, 0, 180 ), 1, 6, 0 },
{createObject ( 1514, -28.338, -90.706, 1003.706, 0, 0, 180 ), 1, 18, 0 },
{createObject ( 1514, -28.338, -90.706, 1003.706, 0, 0, 180 ), 0, 18, 0 },
{createObject ( 1514, -23.395, -56.484, 1003.706, 0, 0, 180 ), 4, 6, 0 },
{createObject ( 1514, -28.338, -90.706, 1003.706, 0, 0, 180 ), 2, 18, 0 },
{createObject ( 1514, -23.395, -56.484, 1003.706, 0, 0, 180 ), 3, 6, 0 },
]]--
{createObject ( 1514, 2439.421, 2075.942, 11.061, 0, 0, 0 ), 0, 0, 0 },
{createObject ( 1514, -1559.773, -2730.774, 48.895, 0, 0, 140 ), 0, 0, 0 },
--{createObject ( 1514, 1836.306, -1837.925, 13.741, 0, 0, 90 ), 0, 0, 0 },
{createObject ( 1514, 1316.697, -895.876, 39.624, 0, 0, 180 ), 0, 0, 0 },
{createObject ( 1514, 251.762, -55.555, 1.679, 0, 0, 0 ), 0, 0, 0 },
}
local markers = {
{1353.1480712891, -1757.9229736328, 13.5078125},
{-1561.990, -2733.559, 47.743},
--{1832.750, -1842.396, 12.578},
{1313.498, -898.805, 38.578},
{244.183, -49.155, 0.578},
{254.637, -64.013, 0.578},
{2325.879, 74.452, 23.508},
{2437.921, 2065.402, 9.820},
{2420.3723144531, -1509.0484619141, 24},
}
function respawnCashRegisters ( )
for k,v in ipairs ( cashRegister ) do
setTimer (respawnObject, 7500, 1, ( v[1] ) )
end
end
addEventHandler ("onClientObjectBreak", root, respawnCashRegisters )
function secsToMin(seconds)
local hours = 0
local minutes = 0
local secs = 0
local theseconds = seconds
if theseconds >= 60*60 then
hours = math.floor(theseconds / (60*60))
theseconds = theseconds - ((60*60)*hours)
end
if theseconds >= 60 then
minutes = math.floor(theseconds / (60))
theseconds = theseconds - ((60)*minutes)
end
if theseconds >= 1 then
secs = theseconds
end
if minutes < 10 then
minutes = "0"..minutes
end
if secs < 10 then
secs = "0"..secs
end
return minutes,secs
end
-- Marker and ped functions
function createMarkers ( )
for k,v in ipairs(peds) do
local x, y, z = getElementPosition(v[1])
-- createBlip ( x, y, z, 53, 1, 0, 0, 0, 0, 0, 1000 )
local ass = createBlip(x, y, z, 58)
setElementData(ass ,"blipName", "Assaltos")
end
--[[
for i, v in ipairs ( markers ) do
local x = v[1]
local y = v[2]
local z = v[3]
safeMarker = createMarker ( x, y, z, "cylinder", 3, 0, 0, 0, 0 )
addEventHandler ("onClientMarkerHit", safeMarker, robberyCancelOnMarkerHit )
addEventHandler ("onClientMarkerLeave", safeMarker, robberyCancelOnMarkerHit )
end
]]--
end
addEventHandler ("onClientResourceStart", resourceRoot, createMarkers )
function breakCashRegister ( player )
if ( player == localPlayer and robCashRegister == false and robberyStarted == true ) then
triggerServerEvent ("GTIstoreRob_payOutForCashRegister", localPlayer )
robCashRegister = true
timer = setTimer ( timeForCashRegister, 360000, 1 )
else
cancelEvent()
end
end
function cancelTheKill ( player )
cancelEvent ()
end
for k,v in ipairs(peds) do
addEventHandler ( "onClientPedDamage", v[1], cancelTheKill )
setElementFrozen ( v[1], true )
setElementInterior ( v[1], v[3] )
setElementDimension ( v[1], v[2] )
end
for k,v in ipairs(cashRegister) do
addEventHandler ("onClientObjectBreak", v[1], breakCashRegister )
setElementInterior ( v[1], v[3] )
setElementDimension ( v[1], v[2] )
setElementDoubleSided ( v[1], true )
end
function isItAPedToRob( ped )
for k,v in ipairs(peds) do
if v[1] == ped then return true end
end
end
local teste1 = createColSphere(2402.549, -1986.312, 13.546,3)
local teste2 = createColSphere(1316.687, -896.606, 39.578,3)
local teste3 = createColSphere(1348.748046875, -1760.7326660156, 13.549824714661,3)
local teste4 = createColSphere(2411.5866699219, -1505.5615234375, 24.002511978149,3)
function detectAim( target )
--local job = exports.btc_employment:getPlayerJob(true)
--if getPlayerTeam(localPlayer) == getTeamFromName("Policia") then return end
if isElementWithinColShape(localPlayer, teste1) or isElementWithinColShape(localPlayer, teste2) or isElementWithinColShape(localPlayer, teste3) or isElementWithinColShape(localPlayer, teste4) then
local pedSlot = getPedWeaponSlot ( localPlayer )
if (pedSlot == 0) then return end
local arma = getPlayerWeapon ( localPlayer )
if (arma == 22) then return end
if ( target ) and ( getElementType( target ) == "ped" ) and (source == localPlayer) and getControlState("aim_weapon") and isItAPedToRob(target) then
if ( robberyStarted == true ) then
if not isDX then
exports.btc_hud:dm("Porfavor eu não tenho mais dinheiro me deixe em paz!.", 200, 0, 0 )
isDX = true
setTimer(function() isDX = false end, 10000, 1)
return
end
end
if (not robberyStarted) then
local policiaTeam = getTeamFromName ( "Policia" )
local groveCount = countPlayersInTeam ( policiaTeam )
-----[error]-------------[error]-------------------------[error]-----------------[error]---------- [error] [error] if groveCount >= 3 then
setPedAnimation( target, "SHOP", "SHP_Rob_GiveCash", 3000, false, false, false, false)
triggerServerEvent ("GTIstoreRob_WantedLevel", localPlayer )
theRobbery = true
exports.btc_hud:dm("(fique dentro do local por 3 minutos!)", 200, 255, 0)
exports.btc_hud:dm("Mãos pra cima isso é um assalto", 200, 0, 0)
isDX = true
setTimer(function() isDX = false end, 10000, 1)
robberyStarted = true
setElementData(localPlayer, "isPlayerRobbing", true)
cancelRobb = true
intLeave = true
seconds = 180
countDown = setTimer ( cDown, 1000, 180 )
else
outputChatBox("#dc143c[AVISO]:#ffffff Não tem policia na cidade ( minimo 3 policiais ), vaza daqui!", 255, 255, 255, true)
end
end
end
end
end
addEventHandler ( "onClientPlayerTarget", localPlayer, detectAim )
addEventHandler ( "onClientColShapeHit", root, detectAim )
function timeForCashRegister ( )
robCashRegister = false
end
function cDown ( )
seconds = seconds - 1
local mins,secds = secsToMin(seconds)
if mins == "00" and secds == "00" then --time is up
killTimer( countDown )
createMoneyBag()
setElementData(localPlayer, "isPlayerRobbing", false)
exports.btc_hud:drawStat("storeRobTimer", "", "", 200, 0, 0)
else
exports.btc_hud:drawStat("storeRobTimer", "Tempo restante: ", mins..":"..secds, 200, 0, 0)
end
end
function createMoneyBag ( )
triggerServerEvent ("GTIstoreRob_moneyBag", localPlayer )
x, y, z = getElementPosition ( localPlayer )
colshape = createColCuboid ( x-200, y-200, z-50, 400, 400, 100 )
exports.btc_hud:dm("Assalto com sucesso saia da zona verde que apareceu no radar para receber o dinheiro!", 200, 0, 0)
leaveAreaRadar = createRadarArea ( x-200, y-200, 400, 450, 0, 200, 0, 150 )
addEventHandler ("onClientColShapeLeave", colshape, payoutForSafe )
hasBag = true
end
function payoutForSafe ( player )
if ( player == localPlayer ) and not isTimer(payTimer) then
payTimer = setTimer(function()
if (getElementInterior(localPlayer) ~= 0) or (getElementDimension(localPlayer) ~= 0) then return end
if ( robberyStarted == false ) then return end
if ( hasBag == false ) then return end
triggerServerEvent ("GTIstoreRob_payoutForSafe", localPlayer )
c = setTimer ( isRobberyFalseAgain, 180000, 1 )
destroyElement ( colshape )
destroyElement ( leaveAreaRadar )
end, 500, 1 )
end
end
-- Cancel the robbery functions
--[[function createMarkers ( )
for i, a in ipairs ( cancelMarkers ) do
local x = a[1]
local y = a[2]
local z = a[3]
cancelMarker = createMarker ( x, y, z, "cylinder", 4, 0, 0, 0, 0 )
addEventHandler ("onClientMarkerHit", cancelMarker, robberyCancelOnMarkerHit )
end
end
addEventHandler ("onClientResourceStart", resourceRoot, createMarkers )--]]
local recieved = {}
function cancelRobbery ( jobName )
if ( source == localPlayer ) then
if ( intLeave == false ) then return end
if ( robberyStarted == false) then return end
if ( theRobbery == false ) then return end
triggerServerEvent ("GTIstoreRob_stopMission", localPlayer )
unbindKey ( "N", "down", startCrack )
exports.btc_hud:drawStat("storeRobTimer", "", "", 200, 0, 0)
exports.btc_hud:drawNote ("StoreRobCrackSafeNote", "", 255, 0, 0, 0 )
if (not recieved[localPlayer]) then
exports.btc_hud:dm("Você falhou no assalto!", 200, 0, 0)
recieved[localPlayer] = true
end
robCashRegister = true
theRobbery = false
hasBag = false
if isElement ( colshape ) then destroyElement ( colshape ) end
if isElement ( leaveAreaRadar ) then destroyElement ( leaveAreaRadar ) end
setElementData(localPlayer, "isPlayerRobbing", false)
if isTimer ( countDown ) then killTimer ( countDown ) end
if isTimer ( timer ) then killTimer ( timer ) end
if isTimer ( c ) then killTimer ( c ) end
c = setTimer ( isRobberyFalseAgain, 180000, 1 )
end
end
addEventHandler ("onClientPlayerQuitJob", root,
function ( jobName )
if not jobName then
return true
else
return cancelRobbery ( )
end
end
)
addEventHandler ("onClientPlayerGetJob", root,
function ( jobName )
if jobName == "Criminal" then
return true
else
return cancelRobbery ( )
end
end
)
addEventHandler ("onClientPlayerWasted", localPlayer,
function ( )
cancelRobbery(localPlayer)
end
)
addEvent ("GTIstoreRob_CancelOnArrest", true )
addEventHandler ("GTIstoreRob_CancelOnArrest", root,
function ()
cancelRobbery()
end
)
local zone = createColCuboid(2404.43433, -1511.25940, 20.30252, 15.187744140625, 19.721435546875, 6.6000484466553)
local zone2 = createColCuboid(2388.13867, -1993.72693, 11.40695, 16.262451171875, 12.043823242188, 5.600008392334)
local zone3 = createColCuboid(1342.31470, -1770.88306, 10.95000, 22.0830078125, 11.440673828125, 6.5000213623047)
local zone4 = createColCuboid(1304.45557, -897.47839, 38.07304, 26.8134765625, 20.557800292969, 7.1000274658203)
function robberyCancelOnMarkerHit ( player )
if ( player == localPlayer ) then
if ( intLeave == false ) then return end
if ( hasBag == true ) then return end
unbindKey ( "N", "down", startCrack )
exports.btc_hud:drawNote ("StoreRobCrackSafeNote", "", 255, 0, 0, 0 )
if ( cancelRobb == false ) then return end
if ( robberyStarted == false) then return end
exports.btc_hud:drawStat("storeRobTimer", "", "", 200, 0, 0)
if (not recieved[localPlayer]) then
exports.btc_hud:dm("Você falhou no assalto!", 200, 0, 0)
recieved[localPlayer] = true
end
setElementData(localPlayer, "isPlayerRobbing", false)
theRobbery = false
cancelRobb = false
hasBag = false
robCashRegister = true
triggerServerEvent ("GTIstoreRob_stopMission", localPlayer )
if isElement ( colshape ) then destroyElement ( colshape ) end
if isElement ( leaveAreaRadar ) then destroyElement ( leaveAreaRadar ) end
if isTimer ( countDown ) then killTimer ( countDown ) end
if isTimer ( timer ) then killTimer ( timer ) end
if isTimer ( c ) then killTimer ( c ) end
c = setTimer ( isRobberyFalseAgain, 180000, 1 )
end
end
addEventHandler ("onClientColShapeLeave", zone, robberyCancelOnMarkerHit )
addEventHandler ("onClientColShapeLeave", zone2, robberyCancelOnMarkerHit )
addEventHandler ("onClientColShapeLeave", zone3, robberyCancelOnMarkerHit )
addEventHandler ("onClientColShapeLeave", zone4, robberyCancelOnMarkerHit )
--addEventHandler ("onClientColShapeHit", colShapeDerFix, robberyCancelOnMarkerHit )
--addEventHandler ("onClientColShapeLeave", colShapeDerFix, robberyCancelOnMarkerHit )
--addEventHandler ("onClientInteriorExit", root, robberyCancelOnMarkerHit )
function isRobberyFalseAgain ( )
robberyStarted = false
robCashRegister = false
theRobbery = false
cancelRobb = false
intLeave = false
hasBag = false
if isTimer ( timer ) then killTimer ( timer ) end
if isTimer ( c ) then killTimer ( c ) end
end