OBJCOLLISIONS_AREAS = {} OBJCOLLISIONS_AREAS.__index = OBJCOLLISIONS_AREAS OBJCOLLISIONS_AREAS.ZONES = { {Vector2(108.836, 1931.439, 18.635), Vector2(108.081, 1911.099, 18.652), Vector2(88.655, 1911.104, 17.829), Vector2(88.180, 1931.949, 17.898)}, -- configurar essa merda! {Vector2(-1781.426, 799.259, 24.953), Vector2(-1780.600, 790.225, 24.953), Vector2(-1789.928, 789.677, 24.891), Vector2(-1789.805, 800.265, 24.892)}, -- configurar essa merda! {Vector2(926.901, 1699.377, 8.977), Vector2(927.265, 1694.336, 8.977), Vector2(921.876, 1694.177, 8.655), Vector2(922.048, 1699.894, 8.655)}, -- configurar essa merda! {Vector2(1071.625, -282.739, 73.100), Vector2(1124.894, -287.358, 72.450), Vector2(1125.422, -335.195, 72.450), Vector2(1074.694, -341.424, 73.100)}, -- Blackjack } OBJCOLLISIONS_AREAS.AREAS = {} OBJCOLLISIONS_AREAS.INDEX = {} OBJCOLLISIONS_AREAS.ElementsType = { ['player'] = true, ['vehicle'] = true, ['object'] = true, } OBJCOLLISIONS_AREAS.ObjectsID = { [1238] = true; [1237] = true; [2899] = true; [1228] = true; } local function onEnterBlockZone(element, dim) local zone = OBJCOLLISIONS_AREAS.INDEX[source]; if not isElement(element) or not dim then return end local ElementType = getElementType(element) if not OBJCOLLISIONS_AREAS.ElementsType[ElementType] then return end if not isElement(source) then return end if not getElementData(element, 'element:collisionsV2') then setElementData(element, 'element:collisionsV2', source, false) end end local function onLeaveBlockZone(element, dim) local zone = OBJCOLLISIONS_AREAS.INDEX[source]; if not isElement(element) or not dim then return end local ElementType = getElementType(element) if not OBJCOLLISIONS_AREAS.ElementsType[ElementType] then return end if getElementData(element, 'element:collisionsV2') then setElementData(element, 'element:collisionsV2', nil, false) end end addEventHandler("onClientResourceStart", resourceRoot, function() for _, zone in ipairs(OBJCOLLISIONS_AREAS.ZONES) do local blockZone = createColPolygon(zone[1].x, zone[1].y, unpack(zone)) if isElement(blockZone) then OBJCOLLISIONS_AREAS.AREAS[blockZone] = true OBJCOLLISIONS_AREAS.INDEX[blockZone] = zone addEventHandler("onClientColShapeHit", blockZone, onEnterBlockZone) addEventHandler("onClientColShapeLeave", blockZone, onLeaveBlockZone) end end outputDebugString('['..resource.name..'] '..#OBJCOLLISIONS_AREAS.ZONES..' Colisions zones (2) loaded') end) addEventHandler('onClientElementDataChange', root, function(Name, Old, New) if Name ~= 'element:collisionsV2' then return end if not isElement(source) then return end local ElementType = getElementType(source) if not OBJCOLLISIONS_AREAS.ElementsType[ElementType] then return end if New then if isElement(New) then local Elements = {} local players = getElementsWithinColShape(New, 'player') local vehicles = getElementsWithinColShape(New, 'vehicle') local objects = getElementsWithinColShape(New, 'object') for i = 1, #players do local Element = players[i] if isElement(Element) then table.insert(Elements, Element) end end for i = 1, #vehicles do local Element = vehicles[i] if isElement(Element) then table.insert(Elements, Element) end end for i = 1, #objects do local Element = objects[i] if isElement(Element) and OBJCOLLISIONS_AREAS.ObjectsID[getElementModel(Element)] then table.insert(Elements, Element) end end for i = #Elements, 1, -1 do local v = Elements[i]; if isElement(v) then if isElementCollidableWith(source, v) then setElementCollidableWith(v, source, false) setElementCollidableWith(source, v, false) end end end end else if isElement(Old) then local Elements = {} local vehicles = getElementsWithinColShape(Old, 'vehicle') local players = getElementsWithinColShape(Old, 'player') local objects = getElementsWithinColShape(Old, 'object') for i = 1, #players do local Element = players[i] if isElement(Element) then table.insert(Elements, Element) end end for i = 1, #vehicles do local Element = vehicles[i] if isElement(Element) then table.insert(Elements, Element) end end for i = 1, #objects do local Element = objects[i] if isElement(Element) and OBJCOLLISIONS_AREAS.ObjectsID[getElementModel(Element)] then table.insert(Elements, Element) end end for i = #Elements, 1, -1 do local v = Elements[i]; if isElement(v) then if not isElementCollidableWith(source, v) then setElementCollidableWith(v, source, true) setElementCollidableWith(source, v, true) end end end end end end) setTimer(function() for blockZone in next, OBJCOLLISIONS_AREAS.AREAS, nil do if isElementWithinColShape(localPlayer, blockZone) then local Elements = {} local players = getElementsWithinColShape(blockZone, 'player'); local vehicles = getElementsWithinColShape(blockZone, 'vehicle'); local objects = getElementsWithinColShape(blockZone, 'object'); for i = 1, #players do local Element = players[i] if isElement(Element) then table.insert(Elements, Element) end end for i = 1, #vehicles do local Element = vehicles[i] if isElement(Element) then table.insert(Elements, Element) end end for i = 1, #objects do local Element = objects[i] if isElement(Element) and OBJCOLLISIONS_AREAS.ObjectsID[getElementModel(Element)] then table.insert(Elements, Element) end end for i = #Elements, 1, -1 do local v = Elements[i]; if isElement(v) then if not getElementData(v, 'element:collisionsV2') then setElementData(v, 'element:collisionsV2', blockZone, false) else for k = #Elements, 1, -1 do local e = Elements[k] if e ~= v and isElementCollidableWith(v, e) then setElementCollidableWith(v, e, false) setElementCollidableWith(e, v, false) end end end end end end end end, 500, 0)