Ограничение доступа к оружию

Здравствуйте, а как сделать оружие некоторые под щиток чтобы некоторые оружия люди с определённым рангом не могли брать там например оружия мои не могли брать глобал админы и ниже.

SWEP.AdminOnly = true

Так оружие смогут заспавнить только те, у кого ply:IsAdmin() вернёт true.

Равносильно вот этому, но только для одного оружия:

hook.Add( 'PlayerGiveSWEP', 'BlockPlayerSWEPs', function( ply, class, swep )
	if ( not ply:IsAdmin() ) then
		return false
	end
end )

Если хочешь сделать более гибкую настройку, можешь написать что-то в духе этого:
это не сделает “щиток” в спавн меню

local accessTable = {
    ['weapon_class_1'] = {
        ['admin'] = true,
        ['moderator'] = true
    },
    ['weapon_class_2'] = {
        ['superadmin'] = true,
        ['admin'] = true
    }
}

local function canSpawn(ply, class)
    if not accessTable[class] then 
        return true -- разрешить спавн оружия, т.к. его нет в таблице
    end

    if not accessTable[class][ply:GetUserGroup()] then -- такой группы нет в списке, запрещаем
        return false
    end

    return true -- разрешаем, чел крутой и может спавнить
end

-- Два хука, потому-что это гмод.
hook.Add( 'PlayerGiveSWEP', 'BlockPlayerSWEPs', canSpawn ) -- На выдачу себе
hook.Add( 'PlayerSpawnSWEP', 'BlockPlayerSWEPs', canSpawn ) -- На спавн в мире (?)
-- Этот пример будет работать в обратную сторону, указанные группы НЕ смогут спавнить указанные оружия.

local accessTable = {
    ['weapon_class_1'] = {
        ['admin'] = true,
        ['moderator'] = true
    },
    ['weapon_class_2'] = {
        ['superadmin'] = true,
        ['admin'] = true
    }
}

local function canSpawn(ply, class)
    if accessTable[class] and accessTable[class][ply:GetUserGroup()] then
        return false
    end

    return true
end

-- Два хука, потому-что это гмод.
hook.Add( 'PlayerGiveSWEP', 'BlockPlayerSWEPs', canSpawn ) -- На выдачу себе
hook.Add( 'PlayerSpawnSWEP', 'BlockPlayerSWEPs', canSpawn ) -- На спавн в мире (?)

Более подробно об хуках:

1 лайк

Хороший развернутый ответ. Спасибо

1 лайк