Radial-Menü (cv_radialmenu)¶
Kontextsensitives Kreismenü (geöffnet mit X) für Fahrzeug-Aktionen, Spieler-Interaktionen und erweiterbare Custom-Optionen.
Grundkonfiguration¶
Config.RadialMenu = {
key = 'X', -- Öffnen-Taste
maxDistance = 6.0, -- Max. Distanz zum Ziel-Entity
maxOptions = 8, -- Max. angezeigte Optionen gleichzeitig
}
Kontext-Flags¶
Optionen werden nur angezeigt, wenn der Kontext passt:
| Flag | Beschreibung |
|---|---|
in_vehicle_driver |
Spieler ist Fahrer |
in_vehicle |
Spieler ist irgendwo im Fahrzeug |
target_vehicle |
Spieler schaut auf ein Fahrzeug |
target_player |
Spieler schaut auf einen anderen Spieler |
on_foot |
Spieler zu Fuß |
Standard-Optionen¶
| ID | Label | Kontext | Aktion |
|---|---|---|---|
toggle_engine |
Motor | in_vehicle_driver |
cv:vehicles:client:toggleEngine |
open_trunk |
Kofferraum | target_vehicle, in_vehicle_driver |
cv:vehicles:client:toggleTrunk |
toggle_door_lock |
Tür verriegeln | in_vehicle, target_vehicle |
cv_framework:vehicle:toggle_door_lock |
manuelshuffel |
Sitzplatzwechsel | in_vehicle |
cv_framework:vehicle:manuelshuffel |
toggle_vehicle_seat_door |
Tür öffnen/schließen | in_vehicle |
cv_framework:vehicle:toggle_seat_door |
toggle_vehicle_hood |
Motorhaube | in_vehicle_driver |
cv_framework:vehicle:toggle_hood |
show_player_id |
Spieler-ID | target_player |
show_target_player_id (client_action) |
Optionen-Definition¶
{
id = 'meine_option', -- eindeutiger String
label = 'Aktion ausführen', -- angezeigter Text
icon = 'Wrench', -- Lucide-Icon-Name
contexts = { 'in_vehicle_driver', 'target_vehicle' }, -- leer = immer sichtbar
action = {
-- Client-Event auslösen:
type = 'client_event',
event = 'meinresource:client:meineAktion',
-- ODER: Server-Event auslösen:
-- type = 'server_event',
-- event = 'meinresource:server:meineAktion',
-- ODER: Benannte Client-Aktion:
-- type = 'client_action',
-- name = 'show_target_player_id',
}
}
Server-Exports¶
Andere Ressourcen können Optionen zur Laufzeit registrieren:
-- Option dauerhaft hinzufügen (bleibt bis Server-Restart)
exports['cv_radialmenu']:RegisterOption({
id = 'mein_button',
label = 'Reparieren',
icon = 'Wrench',
contexts = { 'in_vehicle_driver' },
action = { type = 'client_event', event = 'cv_repair:start' }
})
-- Option entfernen
exports['cv_radialmenu']:RemoveOption('mein_button')
Server-Event (für bestehende Verbindungen)¶
Optionen können auch per Net-Event registriert werden (für bereits verbundene Spieler):
TriggerServerEvent('cv_radialmenu:server:registerOptions', {
{ id = '...', label = '...', icon = '...', contexts = {}, action = {} }
})
Trunk-Integration¶
Der Kofferraum (open_trunk) öffnet das Sekundär-Inventar des Fahrzeugs. Der Server baut dafür ein ContainerInventoryPayload aus dem Framework:
Callback-Validierung¶
Vor jeder Aktion validiert der Server serverseitig per Callback: