• Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/

  • Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/

  • Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades

Вопрос по системе администрирования.

  • Автор темы Автор темы Mr.Cat
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Mr.Cat

Пользователь
Регистрация
5 Янв 2017
Сообщения
41
Реакции
0
Баллы
15
Возраст
27
Адрес
Russia
Пол
Приветствую!
У меня вопрос, как сделать что-бы администратор только за профессию администратора мог летать, садить в джаил, телепортировать людей и т.д.
 
Это пример

TEAM_ADMIN = DarkRP.createJob("Админ", {
color = Color(0, 201, 8, 255),
model = {"models/player/combine_super_soldier.mdl"},
description = [[ТЕКСТ]],
weapons = {""},
command = "adminz",
max = 0,
salary = 50,
admin = 1, (admin = 0 -- любой игрок) (admin = 1 -- только администраторы) (admin = 2 -- только супер админы)
vote = false,
hasLicense = false,
candemote = true,
-- CustomCheck
medic = false,
chief = false,
mayor = false,
hobo = false,
cook = false,
category = "Основные работы",
 
Это просто создаёт работу, а мне надо что-бы за профу допустим мафия админ не мог использовать функции админа ...
 
Это просто создаёт работу, а мне надо что-бы за профу допустим мафия админ не мог использовать функции админа ...
Если админка ULX, то придется каждую команду обрабатывать вручную.
Вот как я например сделал в TTT.
В функции YobaFuncSlay, если игрок не суперадмин и что-то еще то его убьет за использование прав, как-то так.
Естественно тебе нужно для даркрп, то будет что-то типо if (!ply:IsSuperAdmin() and ply:Team() == TEAM_GUN) then ... end
Код:
local function YobaFuncSlay(ply)
    if engine.ActiveGamemode() != "terrortown" then return false end
    if !ply:IsSuperAdmin() and GetRoundState() == ROUND_PREP then
        if IsValid(ply) and ply:Alive() then
            ply:Kill()
        end
        return true
    end
    return false
end

Код:
function ulx.slap( calling_ply, target_plys, dmg )
    if YobaFuncSlay(calling_ply) then
        return
    end

    local affected_plys = {}
    for i=1, #target_plys do
        local v = target_plys[ i ]
        if v:IsFrozen() then
            ULib.tsayError( calling_ply, v:Nick() .. " is frozen!", true )
        else
            ULib.slap( v, dmg )
            table.insert( affected_plys, v )
        end
    end

    ulx.fancyLogAdmin( calling_ply, "#A slapped #T with #i damage", affected_plys, dmg )
end
 
Если админка ULX, то придется каждую команду обрабатывать вручную.
Вот как я например сделал в TTT.
В функции YobaFuncSlay, если игрок не суперадмин и что-то еще то его убьет за использование прав, как-то так.
Естественно тебе нужно для даркрп, то будет что-то типо if (!ply:IsSuperAdmin() and ply:Team() == TEAM_GUN) then ... end
Код:
local function YobaFuncSlay(ply)
    if engine.ActiveGamemode() != "terrortown" then return false end
    if !ply:IsSuperAdmin() and GetRoundState() == ROUND_PREP then
        if IsValid(ply) and ply:Alive() then
            ply:Kill()
        end
        return true
    end
    return false
end

Код:
function ulx.slap( calling_ply, target_plys, dmg )
    if YobaFuncSlay(calling_ply) then
        return
    end

    local affected_plys = {}
    for i=1, #target_plys do
        local v = target_plys[ i ]
        if v:IsFrozen() then
            ULib.tsayError( calling_ply, v:Nick() .. " is frozen!", true )
        else
            ULib.slap( v, dmg )
            table.insert( affected_plys, v )
        end
    end

    ulx.fancyLogAdmin( calling_ply, "#A slapped #T with #i damage", affected_plys, dmg )
end
Конечно спасибо ... Но *** это такая запара ...)
[doublepost=1511766114,1511765922][/doublepost]
Если админка ULX, то придется каждую команду обрабатывать вручную.
Вот как я например сделал в TTT.
В функции YobaFuncSlay, если игрок не суперадмин и что-то еще то его убьет за использование прав, как-то так.
Естественно тебе нужно для даркрп, то будет что-то типо if (!ply:IsSuperAdmin() and ply:Team() == TEAM_GUN) then ... end
Код:
local function YobaFuncSlay(ply)
    if engine.ActiveGamemode() != "terrortown" then return false end
    if !ply:IsSuperAdmin() and GetRoundState() == ROUND_PREP then
        if IsValid(ply) and ply:Alive() then
            ply:Kill()
        end
        return true
    end
    return false
end

Код:
function ulx.slap( calling_ply, target_plys, dmg )
    if YobaFuncSlay(calling_ply) then
        return
    end

    local affected_plys = {}
    for i=1, #target_plys do
        local v = target_plys[ i ]
        if v:IsFrozen() then
            ULib.tsayError( calling_ply, v:Nick() .. " is frozen!", true )
        else
            ULib.slap( v, dmg )
            table.insert( affected_plys, v )
        end
    end

    ulx.fancyLogAdmin( calling_ply, "#A slapped #T with #i damage", affected_plys, dmg )
end
А можно ли использовать перечисление проф ? if (!ply:IsSuperAdmin() and ply:Team() == TEAM_GUN, TEAM_TAPOCK, ...) then ... end ? Я просто сам по большей части занимаюсь pawno и не знаю как это всё в гарисе работает, но предполагаю
 
А можно ли использовать перечисление проф ? if (!ply:IsSuperAdmin() and ply:Team() == TEAM_GUN, TEAM_TAPOCK, ...) then ... end ?

Такого рода перечисление недоступно в LUA/GLUA. Для данного потребуется использовать наиболее классический способ:
Код:
if (player:Team() == FACTION_NAME or player:Team() == FACTION_NAME2) then ... end

Если количество фракций превышает все допустимые нормы, а проверка до боли необходима, то можно использовать метод таблицей:
Код:
local factionTable =
{
    [FACTION_NAME] = true,
    [FACTION_NAME2] = true
}

if factionTable[player:Team()] then ... end
 
Статус
В этой теме нельзя размещать новые ответы.
Главная Регистрация
Назад
Сверху