Roda
Roda de ações na tela. O jogador segura a tecla, aponta com o mouse e solta. Mostra ações a pé e no veículo, com submenus e filtro por grupo. Outros scripts adicionam entradas ou abrem rodas avulsas.
Precisa de: ox_lib, krs_helper
Instalação
ensure rodaColoque depois do krs_helper. Não usa banco de dados. Veja a ordem de instalação.
As entradas que vêm na config disparam eventos de outros scripts, como player:*, skinshop:* e paramedic:*. Troque pelos eventos do seu servidor.
Como usar
| Ação | O que acontece |
|---|---|
Segurar F9, apontar e soltar | Escolhe a entrada |
| Soltar no centro | Cancela |
Toque rápido em F9, menos de 300 ms | A roda fica aberta no modo clique |
Esc, no modo clique | Fecha |
O jogador troca a tecla em Configurações > Teclas > FiveM.
A roda não abre com o personagem caído nem com os estados de BlockedStates. Se um desses estados ligar com ela aberta, ela fecha.
Permissão
Groups em uma entrada limita quem a vê. Por padrão, é preciso estar em serviço em um dos grupos. Com OnDuty = false, basta ter o grupo. "Policia-2" indica grupo e cargo.
Sem framework, o grupo é a permissão do krs_helper no server.cfg. Veja a página do krs_helper.
Configuração
Tudo fica em config.lua. Só precisa ter o que você mudou. Os textos ficam em locales/*.json.
| Opção | Padrão | O que muda |
|---|---|---|
Key | "F9" | Tecla padrão |
Theme.Color | "#b3c0ff" | Cor de destaque |
Theme.Background | "rgba(12, 13, 17, 0.95)" | Fundo |
Theme.Hover | "rgba(40, 45, 66, 0.97)" | Fundo da entrada apontada |
Theme.Text | "#f3f1ed" | Cor do texto |
Theme.Font | "" | Nome de fonte instalada. Vazio usa a padrão |
Theme.Scale | 1.0 | Tamanho |
Theme.X | 0.74 | Posição horizontal do centro. 0.0 esquerda, 1.0 direita |
BlockedStates | Banned, Prison, Commands, Handcuff, Buttons, Cancel | Statebags que impedem abrir e fecham a roda |
Entries | Assentos, portas, roupas, guarda-roupa, ferimentos, polícia e paramédico | Entradas, na ordem da lista |
Entradas
{ Id = "door:5", Parent = "doors", Label = "entry.trunk", Icon = "trunk", Hint = "entry.toggle_open", Event = "player:Doors", Param = "5", Server = true, Where = "vehicle" }| Campo | O que faz |
|---|---|
Id | Identificador único |
Label, Hint | Texto direto ou chave de locales/*.json |
Icon | Nome da lista abaixo, arquivo da pasta icons/ ou URL https:// |
Parent | Id do submenu onde a entrada fica |
Event | Evento disparado ao escolher |
Param | Valor enviado com o evento |
Server | true usa TriggerServerEvent |
Close | true fecha a roda ao escolher |
Groups | Grupos que veem a entrada |
OnDuty | false dispensa estar em serviço |
Where | "foot" só a pé, "vehicle" só no veículo. Sem o campo, sempre |
Uma entrada sem Event só aparece se tiver filhos visíveis.
Ícones: clothes, wardrobe, injuries, reload, hat, mask, glasses, jacket, gloves, vest, pants, shoes, accessory, send, driver, seat, rear, windows, door, trunk, hood, heart, back, plate, siren, person, carry, car, uniform, cone, plus, trash, info, light, wrench, paw.
Para usar uma imagem sua, coloque .png, .jpg, .webp, .svg ou .gif em icons/ e escreva Icon = "meu.png".
Para programadores
Exports de cliente:
exports.roda:Add({ Id = "meu:item", Label = "Meu item", Icon = "info", Hint = "Faz algo", Event = "meu:Evento", Param = "x", Close = true, Where = "foot" })
exports.roda:Remove("meu:item") -- remove também os filhos
exports.roda:Show("Título", { { Label = "A", Event = "x:A", Children = { { Label = "B", Event = "x:B" } } } }) -- roda avulsa
exports.roda:Close()Add e Show devolvem true ou false. Entradas adicionadas por um script somem quando ele para. Em Show, uma entrada sem Event e sem Children aparece como informação.
Para fechar por evento:
TriggerEvent("roda:Close")
TriggerClientEvent("roda:Close", source) -- do servidorO evento escolhido chega com Param. A roda só mostra e repassa, então valide tudo no servidor.
