✅ Команда !adminmode

Команда чтобы можно было с определенного ранга (например curator) использовать админ возможности в рп профе.

Ладно, вот нормальный код, который на самом деле запрещает юзать команды. Чуть позже напишу для ULX, пока что только FAdmin.

В файле gamemodes/darkrp/gamemode/modules/fadmin/commands/sv_chatcommands.lua после 28 строки добавь:

if hook.Run("FAdmin_CanExecuteCommand", ply, Command, Args) == false then return "" end

В файле gamemodes/darkrp/gamemode/modules/fadmin/fadmin/commands/sv_concommands.lua после 18 строки добавь:

if hook.Run("FAdmin_CanExecuteCommand", ply, name, args2) == false then return end

В любом серверном файле (addons/addon/lua/autorun/server/sv_adminmode.lua):

local meta = FindMetaTable('Player')
function meta:InAdminmode()
    return self:GetNWBool('fadmin_adminmode', false)
end

hook.Add('loadCustomDarkRPItems', 'adminmode', function()
    FAdmin.Commands.AddCommand('adminmode', function(ply, cmd, args)
        if not ply:IsAdmin() then return false end

        ply:SetNWBool('fadmin_adminmode', not ply:InAdminmode())
        FAdmin.Messages.SendMessage(ply, 5, 'Админ-мод '..(ply:InAdminmode() and 'включен' or 'выключен')..'!')

        return true, ply:InAdminmode()
    end)
end)

local function restrict(ply)
    if not ply:InAdminmode() then
        DarkRP.notify(ply, 1, 5, 'Ты не включил админ-мод')
        return false
    end
end

hook.Add('PlayerNoClip', 'adminmode', restrict)
hook.Add('FAdmin_CanExecuteCommand', 'adminmode', function(ply, cmd, args)
    if not IsValid(ply) then return end
    if not ply:InAdminmode() and cmd ~= 'adminmode' then return restrict(ply) end
end)

спасибо! работает.

Не работает я хочу тип чтоб не просто в чат писало а именно там права на ноуклип клок выдавались и.т.п

Эх, разбираться и учиться надо, а не копипастить чужой код. В любой shared-модуль ulx (addons/ulx/lua/ulx/modules/sh/adminmode.lua):

local meta = FindMetaTable('Player')
function meta:InAdminmode()
    return self:GetNWBool('ulx_adminmode', false)
end

function ulx.adminmode(ply)
    ply:SetNWBool('ulx_adminmode', not ply:InAdminmode())
    ulx.fancyLogAdmin( ply, '#A '..(ply:InAdminmode() and 'включил' or 'выключил')..' админ-мод')
end

local adminmode = ulx.command('Utility', 'ulx adminmode', ulx.adminmode, '!adminmode')
adminmode:defaultAccess( ULib.ACCESS_ADMIN )
adminmode:help('Включить/выключить админ-мод')

local function restrict(ply)
    if not ply:InAdminmode() then
        DarkRP.notify(ply, 1, 5, 'Ты не включил админ-мод')
        return false
    end
end

local whitelisted = {
    ['ulx help'] = true,
    ['ulx adminmode'] = true,
    ['ulx motd'] = true,
    ['ulx version'] = true,
}

hook.Add('PlayerNoClip', 'adminmode', restrict)
hook.Add(ULib.HOOK_COMMAND_CALLED, 'adminmode', function(ply, cmd, args)
    if not IsValid(ply) then return end
    if cmd:sub(1,3) ~= 'ulx' then return end
    if not whitelisted[cmd] then return restrict(ply) end
end)
1 лайк

Можете на SAM, негде нету некто не делал вам за это должны медаль дать )

local meta = FindMetaTable('Player')
function meta:InAdminmode()
    return self:GetNWBool('sam_adminmode', false)
end

sam.command.set_category('Utility')

sam.command.new('adminmode')

    :Help('Включает/Выключает админмод')

	:SetPermission('adminmode', 'admin')

	:OnExecute(function(ply)
        ply:SetNWBool('sam_adminmode', not ply:InAdminmode())
        ply:ChatPrint('Ты '..(ply:InAdminmode() and 'включил' or 'выключил')..' админ-мод')
	end)

:End()

local function restrict(ply)
    if not ply:InAdminmode() then
        ply:ChatPrint('Ты не включил админ-мод')
        return false
    end
end

local whitelisted = {
    ['adminmode'] = true,
}

hook.Add('PlayerNoClip', 'adminmode', restrict)
hook.Add('SAM.CanRunCommand', 'adminmode', function(ply, cmd)
    if not IsValid(ply) then return end
    if not whitelisted[cmd] then return restrict(ply) end
end)

А можно, как-то еще добавить исключения для root, superadmin?

local excluded = {
    ['root'] = true,
    ['superadmin'] = true,
}

local function restrict(ply)
    if not excluded[ply:GetUserGroup()] and not ply:InAdminmode() then
        ply:ChatPrint('Ты не включил админ-мод')
        return false
    end
end

Это работает как прошлый код для SAM? Только с исключениям? И куда кидать код?? В модули?

Вроде-бы установил, но какая-то фигня. Почему-то один раз включаю noclip за admin. И мне пишет 1 млн сообщений
зображення
Хотя, должно быть одно!

Этим кодом нужно заменить функцию restrict из оригинального кода. Насчет кучи сообщений не знаю, такого не должно быть

Как сделать что бы писалось в админский чат или просто в чат и если можно над головой
Типо
User включил админмод или как то так

вот нормальная луашка, там тп в админ зону и админ мод

там не только под SAM если что, все настраивается

Где функция эта?

А куда сам скрипт?

Привет, можешь добавить фичу, чтобы при активации только при активации можна было брать людей физганом?

Куда Кидать?

Значит не правильно заменил код