Supportcall Script

Config
_4p = {
    -- Specifies the framework being used. Accepted values: "esx", "qbcore", "custom".
    Framework = "esx",

    -- The command players will use to call for support.
    supportCallCommand = "supportcall",

    -- Allowed player groups that can call players into support. Use the group name from your framework.
    allowed_groups = {
        "admin",
        "superadmin",
    },

    -- The default message shown when no reason is provided for the support call.
    no_reason_provided = "No reason provided",

    -- Settings applied when a player is called into support.
    called_settings = {
        freeze = false,            -- If true, the player will be frozen (unable to move) during the support session.
        godmode = true,            -- If true, the player will be invincible (cannot be killed).
        moving_radius = 5.0,       -- The allowed movement radius for the player in meters. Setting this to nil means no movement restriction.
        ghost_player = false,      -- If true, the player's appearance changes to indicate they are in support mode (cannot be killed or run over).
        disable_weapons = true,    -- If true, all player weapons will be disabled to prevent misuse during support.
    },

    -- Sets the language used for messages and notifications. Available options: "en", "de", "fr", "es", "it", "nl", "pl".
    lang = "en", 
}

-- Function to check if the player is allowed to call for support.
_4p.IsPlayerAllowed = function(source, callback)
    local allowed = false
    local player_group = Framework:getPlayerGroup(source)
    for i = 1, #_4p.allowed_groups do
        if player_group == _4p.allowed_groups[i] then
            allowed = true
            break
        end
    end
    callback(allowed)
end

-- Function to toggle other user interfaces when a support session is active.
_4p.ToggleOtherUIS = function(bool)
    TriggerEvent('esx_hud:HudToggle', not bool)
end

-- Function to ban a player on quit while Support. Custom ban logic and HTTP requests for Discord logs can be added here.
_4p.BanPlayer = function(identifier)
    -- Leave this function empty if you do not want the player to be automatically banned.
    -- Add your custom HTTP request for Discord logs or an event for your ban system here.
    -- Function will be triggered by Server-Side.
end

-- Universal notification function for different frameworks.
_4p.notify = function(message, source)
    if IsDuplicityVersion() then -- Checks if the function is being called from the server side.
        if _4p.Framework == "esx" then
            TriggerClientEvent("esx:showNotification", source, message)
        elseif _4p.Framework == "qbcore" then
            TriggerClientEvent("QBCore:Notify", source, message)
        else
            print("^1[4p-supportcall] ^3You are using a custom framework, please add a notification function to the config.lua^7")
        end
    else -- If the function is being called from the client side.
        if _4p.Framework == "esx" then
            Framework.object.ShowNotification(message)
        elseif _4p.Framework == "qbcore" then
            Framework.object.Functions.Notify(message)
        else
            print("^1[4p-supportcall] ^3You are using a custom framework, please add a notification function to the config.lua^7")
        end
    end
end

-- Language support for various messages and notifications.
_4p.language = {
    ["en"] = {
        no_permissions = "You do not have permission to use this command",
        no_id_provided = "You need to provide a player ID",
        invalid_id = "Invalid player ID",
        cannot_call_self = "You cannot call yourself for support",
        title = "Temporary Pause",
        description = "You have been called in support and are now asked to report to support within 5 minutes. Append #%s to your nickname. If you do not report to support, you will be temporarily banned.",
        reason = "Reason: %s",
        player_called_into_support = "You called %s into support. Reason: %s",
        player_called_out_of_support = "You called %s out of support",
    }, 
    ["de"] = {
        no_permissions = "Du hast keine Berechtigung, diesen Befehl zu verwenden",
        no_id_provided = "Du musst eine Spieler-ID angeben",
        invalid_id = "Ungültige Spieler-ID",
        cannot_call_self = "Du kannst dich nicht selbst für Support anrufen",
        title = "Vorübergehende Pause",
        description = "Du wurdest in den Support gerufen und wirst nun gebeten, dich innerhalb von 5 Minuten beim Support zu melden. Füge #%s zu deinem Spitznamen hinzu. Wenn du dich nicht beim Support meldest, wirst du vorübergehend gebannt.",
        reason = "Grund: %s",
        player_called_into_support = "Du hast %s in den Support gerufen. Grund: %s",
        player_called_out_of_support = "Du hast %s aus dem Support gerufen",
    },
    ["fr"] = {
        no_permissions = "Vous n'avez pas la permission d'utiliser cette commande",
        no_id_provided = "Vous devez fournir un identifiant de joueur",
        invalid_id = "Identifiant de joueur invalide",
        cannot_call_self = "Vous ne pouvez pas vous appeler pour obtenir de l'aide",
        title = "Pause temporaire",
        description = "Vous avez été appelé en support et êtes maintenant invité à vous rendre au support dans les 5 minutes. Ajoutez #%s à votre surnom. Si vous ne vous présentez pas au support, vous serez temporairement banni.",
        reason = "Raison: %s",
        player_called_into_support = "Vous avez appelé %s en support. Raison: %s",
        player_called_out_of_support = "Vous avez appelé %s hors du support",
    },
    ["es"] = {
        no_permissions = "No tienes permiso para usar este comando",
        no_id_provided = "Debes proporcionar un ID de jugador",
        invalid_id = "ID de jugador no válido",
        cannot_call_self = "No puedes llamarte a ti mismo para obtener ayuda",
        title = "Pausa temporal",
        description = "Has sido llamado en apoyo y ahora se te pide que te presentes en apoyo dentro de los 5 minutos. Agrega #%s a tu apodo. Si no te presentas al apoyo, serás baneado temporalmente.",
        reason = "Razón: %s",
        player_called_into_support = "Llamaste a %s en apoyo. Razón: %s",
        player_called_out_of_support = "Llamaste a %s fuera del apoyo",
    },
    ["it"] = {
        no_permissions = "Non hai il permesso di utilizzare questo comando",
        no_id_provided = "Devi fornire un ID giocatore",
        invalid_id = "ID giocatore non valido",
        cannot_call_self = "Non puoi chiamarti per il supporto",
        title = "Pausa temporanea",
        description = "Sei stato chiamato in supporto e ora ti viene chiesto di presentarti in supporto entro 5 minuti. Aggiungi #%s al tuo soprannome. Se non ti presenti al supporto, sarai temporaneamente bannato.",
        reason = "Motivo: %s",
        player_called_into_support = "Hai chiamato %s in supporto. Motivo: %s",
        player_called_out_of_support = "Hai chiamato %s fuori dal supporto",
    },
    ["nl"] = {
        no_permissions = "Je hebt geen toestemming om deze opdracht te gebruiken",
        no_id_provided = "Je moet een speler-ID opgeven",
        invalid_id = "Ongeldige speler-ID",
        cannot_call_self = "Je kunt jezelf niet bellen voor ondersteuning",
        title = "Tijdelijke pauze",
        description = "Je bent opgeroepen voor ondersteuning en wordt nu gevraagd om binnen 5 minuten naar de ondersteuning te gaan. Voeg #%s toe aan je bijnaam. Als je je niet meldt bij de ondersteuning, word je tijdelijk verbannen.",
        reason = "Reden: %s",
        player_called_into_support = "Je hebt %s opgeroepen voor ondersteuning. Reden: %s",
        player_called_out_of_support = "Je hebt %s uit de ondersteuning gehaald",
    },
    ["pl"] = {
        no_permissions = "Nie masz uprawnień do korzystania z tej komendy",
        no_id_provided = "Musisz podać identyfikator gracza",
        invalid_id = "Nieprawidłowy identyfikator gracza",
        cannot_call_self = "Nie możesz wezwać siebie na pomoc",
        title = "Tymczasowa przerwa",
        description = "Zostałeś wezwany na pomoc i teraz prosisz o zgłoszenie się do pomocy w ciągu 5 minut. Dodaj #%s do swojego pseudonimu. Jeśli nie zgłosisz się na pomoc, zostaniesz tymczasowo zbanowany.",
        reason = "Powód: %s",
        player_called_into_support = "Wezwałeś %s na pomoc. Powód: %s",
        player_called_out_of_support = "Wezwałeś %s poza pomoc",
    },
}

If you’re experiencing any issues, don’t worry! We’ve got you covered. Just open a ticket in our Discord, and our team will work hard to assist you.

:hammer_and_wrench: Key Features:

🡂 QB-Core & Esx
🡂 Change Theme Color
🡂 Sound Effects
🡂 Call player in support with command
🡂 Player notification
🡂 Modify the freeze of the player & more
🡂 Modify the allowed groups like superadmin who can use the command
🡂 Change the command

Code is accessible 50%
Subscription-based No
Lines (approximately) 200
Requirements ESX or QB-Core
Support Yes
7 Likes

Your post has the “free” tag even tho it’s paid…

2 Likes

my bad, im gonna change it

6 Likes

:fire: :fire: :fire::fire::fire:

6 Likes