Introdução
Na base vRPex, trancas em portas costumam vir de resources como vrp_doorlock, packs de interiores ou scripts dedicados. Este guia resume a ideia geral e um exemplo mínimo para estudo.
1. Escolha um resource compatível
vrp_doorlock,vrp_tranca, ou recurso incluído no pack
2. Estrutura típica
resources/vrp_tranca/ ├── client.lua ├── server.lua └── fxmanifest.lua
3. fxmanifest.lua (exemplo)
fx_version 'cerulean' game 'gta5' client_script 'client.lua' server_script 'server.lua'
4. server.lua (exemplo simplificado)
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)
5. client.lua
Implemente a lógica de proximidade, tecla E e sincronização com o estado vindo do servidor. Use coordenadas e hash da porta corretos (muitas bases usam /coords ou ferramentas de debug). Adapte DrawText3D e natives ao seu framework — copie de um resource estável da comunidade em vez de usar código incompleto.
6. server.cfg
ensure vrp_tranca
(nome da pasta = nome do resource)
Permissões (opcional)
Integre com vRP: só polícia ou dono da propriedade pode trancar — consulte a API da sua versão de vRP/vRPex.
Dicas
- Evite loops com
Citizen.Wait(1)em grandes áreas — aumente o wait longe das portas - Use hash correto do modelo da porta