Tudo o que você pode alterar está em dois lugares: config.lua para o comportamento, e a pasta bridge/ para como a corda se comunica com o seu framework, seu target e sua interface de texto. Ambos são abertos (listados em escrow_ignore); client/client.lua e server.lua possuem escrow.
| Arquivo | O que ele decide |
|---|
config.lua | Framework, nome do item, sistema de interação, rótulos, teclas, distâncias, comprimento e física da corda, marcador, cooldown, limite de tempo |
bridge/server_bridge.lua | Obter o framework, registrar o item rope como utilizável, verificar se o jogador o possui |
bridge/client_bridge.lua | O texto 3D e o marcador desenhados no modo drawtext, e o evento client que tira a corda |
bridge/target.lua | As opções de ox_target e qb-target, e o fallback para drawtext |
bridge/README.md | Notas curtas sobre a bridge (em espanhol) |
inventory/ | Definições prontas de itens para ox_inventory, QBCore e ESX |
stream/ | O modelo do prop da corda e sua textura |
Não há pasta locales/. O único texto que os jogadores veem são os rótulos em Config.Labels.
| Opção | O que faz | Padrão |
|---|
Config.Framework | esx ou qbcore. No QBox, use qbcore — o QBox executa resources QBCore através de sua camada de compatibilidade. Qualquer outro valor para o resource ao iniciar | esx |
Config.Item | O item de inventário que representa a corda | rope |
| Opção | O que faz | Padrão |
|---|
Config.InteractionSystem | ox_target, qb-target ou drawtext. Um target que não esteja rodando muda para drawtext até iniciar | ox_target |
Config.Labels | O texto para cada ação: grab (Drag with rope), release (Release player), attach (Tie to vehicle), detach (Untie from vehicle) | Inglês |
Config.KeyLabels | Os nomes das teclas mostrados no modo drawtext: Attach e Vehicle | E, Y |
Config.ShowInteractionMarkers | Desenha um marcador sobre o jogador ou veículo com o qual você pode interagir. Apenas no modo drawtext | true |
O que cada ação faz:
| Ação | Quem pode fazer | O que acontece |
|---|
| Drag with rope | Você, com a corda na mão, perto de um jogador a pé | Esse jogador fica amarrado à sua mão |
| Release player | Quem está arrastando | A corda é removida e o jogador se levanta |
| Tie to vehicle | Quem está arrastando, perto de um veículo | A corda passa da sua mão para a traseira do veículo |
| Untie from vehicle | Quem amarrou | A corda volta para a sua mão, com o jogador ainda preso |
| Release player (no veículo) | Quem amarrou | O jogador é solto diretamente do veículo |
As teclas são números de controle do FiveM. As setas funcionam em todos os modos; E e Y só importam no modo drawtext (com um target, você escolhe a ação pelo menu).
| Opção | O que faz | Padrão |
|---|
Config.AttachKey | Agarrar ou soltar um jogador | 38 (E) |
Config.AttachToVehicleKey | Amarrar ou desamarrar de um veículo | 246 (Y) |
Config.AdjustLengthUpKey | Segure para alongar a corda | 172 (Seta para Cima) |
Config.AdjustLengthDownKey | Segure para encurtar a corda | 173 (Seta para Baixo) |
Se você alterar AttachKey ou AttachToVehicleKey, altere Config.KeyLabels também, ou o aviso mostrará a tecla antiga.
| Opção | O que faz | Padrão |
|---|
Config.MaxDetectionDistance | Quão perto (m) um jogador deve estar para ser agarrado. Também é a distância do target para jogadores | 2.0 |
Config.MaxVehicleAttachDistance | Quão perto (m) um veículo deve estar para amarrar a corda nele. Também é a distância do target para veículos | 5.0 |
Config.MarkerVisibilityDistance | Ainda presente em config.lua, mas não é lido pela versão atual — o aviso aparece para quem estiver dentro das duas distâncias acima | 20.0 |
| Opção | O que faz | Padrão |
|---|
Config.InitialRopeLength | Comprimento (m) quando o arrasto começa | 3.0 |
Config.MinRopeLength | O menor comprimento que as setas podem deixar | 1.0 |
Config.MaxRopeLength | O maior comprimento que as setas podem deixar | 100.0 |
Config.RopeType | O tipo de corda do jogo | 1 |
Config.RopeSlack | Ainda presente em config.lua, mas não é lido pela versão atual — a folga da corda vem do seu comprimento | 0.5 |
Config.RopePropModel | O prop na mão do jogador. O padrão é transmitido a partir de stream/ | prop_stag_do_rope |
| Opção | O que faz | Padrão |
|---|
Config.MarkerType | O tipo de marcador do jogo | 2 |
Config.MarkerHeightOffset | Altura (m) acima do jogador onde o aviso e o marcador ficam | 1.0 |
Config.MarkerScale | Tamanho do marcador | 0.3 |
Config.MarkerColor | Cor do marcador, em vermelho, verde, azul e alfa | vermelho, alfa 150 |
| Opção | O que faz | Padrão |
|---|
Config.DragCooldown | Milissegundos entre duas ações de corda | 1000 |
Config.DisableControls | Bloqueia todos os controles do jogador sendo arrastado. Desativado, ele ainda pode usar controles em ragdoll | true |
Config.EnableMaxDragTime | Rompe a corda sozinha após MaxDragTime | false |
Config.MaxDragTime | Segundos antes da corda se romper, quando a opção acima está ativada | 100 |
Config.NeedItemToRelease | A pé, soltar exige a corda na mão. O dono sempre pode soltar alguém amarrado a um veículo | true |
O jogador sendo arrastado fica em ragdoll, não pode atirar e fica invencível até que a corda seja removida.
Não há arquivo de idioma. Traduza as quatro strings em Config.Labels, e Config.KeyLabels se os seus jogadores usarem nomes de teclas diferentes.
A pasta bridge/ é aberta para que você possa adaptar a corda a uma estrutura que ela não conhece. A física da corda e os eventos de rede permanecem nos arquivos protegidos por escrow e não precisam ser alterados.
server_bridge.lua — framework e inventário. Obtém o ESX ou QBCore, registra Config.Item como um item utilizável e responde “este jogador tem uma corda?” quando um arrasto começa. Para um framework próprio ou um inventário com API própria, reescreva Bridge.GetPlayer, Bridge.HasRope e Bridge.RegisterRopeItem. Registre o item em apenas um lugar — duas integrações registrando o mesmo item farão com que ele dispare duas vezes.
client_bridge.lua — texto e marcador. Bridge.DrawText e Bridge.DrawMarker desenham o aviso drawtext a cada frame em que ele está visível. Substitua-os para usar seu próprio texto 3D ou resource de TextUI. Ele também escuta o evento client mic_drag:useRope, que pega ou guarda a corda — dispare isso a partir do callback de uso de um inventário próprio caso você não use os itens utilizáveis do framework.
target.lua — menus de target. Adiciona e remove as opções globais de jogador e veículo para ox_target e qb-target, e alterna para drawtext quando o target para. Outro resource de target seria adicionado aqui.
| Export (client) | Retorna |
|---|
GetInteractionState | Uma tabela: mode (a interação em uso), hasRope (corda na mão), targetServerId (quem você está arrastando), vehicle (o veículo ao qual a corda está amarrada), beingDragged, busy |
É somente leitura: útil para um HUD, ou para que outro script saiba que não deve interagir com um jogador que está preso a uma corda.