📌 Introdução #
Na base vRPex, diferente de ESX ou QBCore, os sistemas de tranca de portas geralmente são integrados diretamente em scripts de interior, funções nativas da framework ou por scripts externos feitos para vRP. Neste tutorial, você verá como configurar portas trancáveis, seja com comandos ou permissão por grupo/job.
🔧 1. Baixe um script de trancar portas compatível com vRPex #
Você pode usar scripts prontos como:
vrp_doorlock
vrp_tranca
- Ou editar o
vrp_interiors
com suporte a trancas
Caso não tenha, use este como base:
📁 Estrutura do script:
resources/vrp_tranca/
├── client.lua
├── server.lua
└── __resource.lua
📄 2. Exemplo de script vrp_tranca
#
__resource.lua
: #
client_script "client.lua"
server_script "server.lua"
client.lua
(simplificado): #
local portas = {
{x = 425.1, y = -979.5, z = 30.7, h = 90.0, id = -1215222675, locked = true}
}
Citizen.CreateThread(function()
while true do
Citizen.Wait(1)
local player = PlayerPedId()
local px, py, pz = table.unpack(GetEntityCoords(player, true))
for k,v in pairs(portas) do
local dist = Vdist(px, py, pz, v.x, v.y, v.z)
if dist <= 1.2 then
DrawText3D(v.x, v.y, v.z + 0.3, "[E] Trancar/Destrancar")
if IsControlJustPressed(0, 38) then
TriggerServerEvent("vrp_tranca:toggle", k)
end
end
FreezeEntityPosition(GetClosestObjectOfType(v.x, v.y, v.z, 1.0, v.id, false, false, false), v.locked)
end
end
end)
function DrawText3D(x,y,z, text)
SetTextScale(0.35, 0.35)
SetTextFont(4)
SetTextProportional(1)
SetTextColour(255, 255, 255, 215)
SetTextEntry("STRING")
SetTextCentre(true)
AddTextComponentString(text)
DrawText(_x,_y)
end
server.lua
: #
local trancas = {}
RegisterServerEvent("vrp_tranca:toggle")
AddEventHandler("vrp_tranca:toggle", function(porta)
trancas[porta] = not trancas[porta]
TriggerClientEvent("vrp_tranca:update", -1, porta, trancas[porta])
end)
🧱 3. Adicione no server.cfg
#
No final do seu server.cfg
, adicione:
start vrp_tranca
🧠 Como usar no jogo: #
- Vá até a porta (coordenadas definidas no script)
- Pressione E para trancar ou destrancar
- Pode ser adaptado para permitir só policiais, admin, etc.
🔐 Exemplo com permissão (opcional): #
Você pode adicionar no client.lua
um check usando vRP:
if vRP.hasPermission("police.permission") then
-- permitir trancar
end
Ou usar um webhook para logar quem usou.
💡 Dicas importantes #
- Use
/coords
para pegar as posições exatas das portas - Sempre use o hash correto da porta (ex:
-1215222675
) - Evite colocar muitas trancas em looping — use
Citizen.Wait(500)
fora da área
🔗 Veja também: #
- Como instalar scripts no servidor FiveM
- Como acessar os arquivos do servidor FiveM
- Host para servidores FiveM com vRPex
🤝 Suporte técnico OTH HOST #
Se você precisar de ajuda para implementar esse sistema de tranca, entre em contato com o suporte técnico via painel ou:
📨 https://othhost.com.br/contato/