[LUA] Ограничение доступа к Q меню по SteamID/Рангу

Я хочу сделать так, человек платит мне деньги и я ему выдаю доступ к q menu, как это реализовать?

Создай роль в ulx/sam Сделай Ограничение на нее и выдавай эту роль.

если у человека уже имеется роль?

То по sid делай

можешь пояснить?

local steamIDs = {
    "STEAM_:0:1111111111",
}

for _, steamID in ipairs(steamIDs) do
   function(allowqmenubro)
end
end

Незнаю будет работать нет но держи(функцию allowqmenubro напиши сам куча гайдов в инете)

спасибо :orange_heart:

Не зачто) :smiling_face_with_three_hearts:

прости,но можешь скинуть ссылку на гайд (ы) пожалуйста

Путь: lua/autorun/server

local function CanOpenQMenu(ply)
    local allowedSteamIDs = {
        "STEAM_0:0:437375633",
        "сюда стимайди человека которому нужен доступ к q меню",
    }

    local steamID = ply:SteamID()

    for _, allowedID in ipairs(allowedSteamIDs) do
        if steamID == allowedID then
            return true
        end
    end

    return false
end

hook.Add("ShowTeam", "RestrictQMenuAccess", function(ply)
    if CanOpenQMenu(ply) then
        ply:ConCommand("gm_showteam")
    else
        ply:ChatPrint("У вас нет доступа к Q меню.")
    end
end)
1 лайк

Огроооомное спасибо

А где ранг указывать?

В этом скрипте можно указывать так же и ранг:
Скрипт для FAdmin

local allowedPlayers = {
    ["STEAM_0:0:437375633"] = true,
}

local allowedFAdminRanks = {
    ["superadmin"] = true, -- тут
--  ["admin"] = false, 
}

local function CanOpenQMenuBySteamID(ply)
    local steamID = ply:SteamID()
    return allowedPlayers[steamID] or false
end

local function CanOpenQMenuByFAdminRank(ply)
    if FAdmin.Access.PlayerHasPrivilege(ply, "OpenQMenu") then
        return true
    end
    return false
end

local function CanOpenQMenu(ply)
    return CanOpenQMenuBySteamID(ply) or CanOpenQMenuByFAdminRank(ply)
end

hook.Add("ShowTeam", "RestrictQMenuAccess", function(ply)
    if CanOpenQMenu(ply) then
        ply:ConCommand("gm_showteam")
    else
        ply:ChatPrint("У вас нет доступа к Q меню.")
    end
end)

Скрипт для ULX:

local allowedPlayers = {
    ["STEAM_0:0:437375633"] = true,
}

local allowedULXRanks = {
    ["superadmin"] = true,
}

local function CanOpenQMenuBySteamID(ply)
    local steamID = ply:SteamID()
    return allowedPlayers[steamID] or false
end

local function CanOpenQMenuByULXRank(ply)
    if ply:IsValid() and ply:IsPlayer() then
        return ULib.ucl.query(ply, "gm_showteam")
    end
    return false
end

local function CanOpenQMenu(ply)
    return CanOpenQMenuBySteamID(ply) or CanOpenQMenuByULXRank(ply)
end

hook.Add("ShowTeam", "RestrictQMenuAccess", function(ply)
    if CanOpenQMenu(ply) then
        ply:ConCommand("gm_showteam")
    else
        ply:ChatPrint("У вас нет доступа к Q меню.")
    end
end)

для sam есть?

local allowedPlayers = {
    ["STEAM_0:0:437375633"] = true,
}

local allowedSAMRanks = {
    ["superadmin"] = true,
}

local function CanOpenQMenuBySteamID(ply)
    local steamID = ply:SteamID()
    return allowedPlayers[steamID] or false
end

local function CanOpenQMenuBySAMRank(ply)
    if SAM and SAM.Ranks and SAM.Ranks.IsUserGroupInList then
        return SAM.Ranks:IsUserGroupInList(ply, allowedSAMRanks)
    end
    return false
end

local function CanOpenQMenu(ply)
    return CanOpenQMenuBySteamID(ply) or CanOpenQMenuBySAMRank(ply)
end

hook.Add("ShowTeam", "RestrictQMenuAccess", function(ply)
    if CanOpenQMenu(ply) then
        ply:ConCommand("gm_showteam")
    else
        ply:ChatPrint("У вас нет доступа к Q меню.")
    end
end)

спасибо. ещё вопрос: можно указывать какие категории/предметы можно будет брать а какие нет?
например мне нужно что бы был доступ к оружию у qmenu, а к остальным категориям не было.

local allowedPlayers = {
    ["STEAM_0:0:437375633"] = {
        ["Weapons"] = true, -- Разрешен доступ к категории оружия для SteamID
    },
}

local allowedSAMRanks = {
    ["superadmin"] = {
        ["Weapons"] = true, -- Разрешен доступ к категории оружия для рангов
    },
}

local function CanOpenQMenuBySteamID(ply)
    local steamID = ply:SteamID()
    return allowedPlayers[steamID] or {}
end

local function CanOpenQMenuBySAMRank(ply)
    if SAM and SAM.Ranks and SAM.Ranks.GetGroup then
        local userGroup = ply:GetUserGroup()
        return allowedSAMRanks[userGroup] or {}
    end
    return {}
end

local function CanOpenQMenu(ply)
    local allowedCategories = {}
    local steamIDData = CanOpenQMenuBySteamID(ply)
    local SAMRankData = CanOpenQMenuBySAMRank(ply)

    for category, allowed in pairs(steamIDData) do
        allowedCategories[category] = allowed
    end
    for category, allowed in pairs(SAMRankData) do
        allowedCategories[category] = allowed
    end

    for _, allowed in pairs(allowedCategories) do
        if allowed then
            return true
        end
    end

    return false
end

hook.Add("ShowTeam", "RestrictQMenuAccess", function(ply)
    if CanOpenQMenu(ply) then
        ply:ConCommand("gm_showteam")
    else
        ply:ChatPrint("У вас нет доступа к Q меню.")
    end
end)

Названия всех категорий:

  1. “Entities” - Энтти
  2. “Weapons” - Оружия
  3. “Ammo” - Патроны
  4. “Vehicles” - Транспорт
  5. “Post Processing” - Пост-обработка (лучше вообще убрать)
  6. “Construction” - Конструкции/пропы
  7. “Save/Load” - Сохранение/Загрузка
  8. “Options” - Опции
  9. “NPCs” - НПС
  10. “Player” - Игрок
  11. “Effects” - Эффекты
  12. “Utilities” - Утилиты
1 лайк

можно ли например в категории оружий так же настроить какие оружия какой ранг может брать?