Вопрос спавн меню вопрос ограничить

хочу сделать сервер сандбокс. но столкунлся с проблемой что не могу ограничить спавн админ предметов. как ограничить их?
 
  • 66
  • 2
  • 4
хочу сделать сервер сандбокс. но столкунлся с проблемой что не могу ограничить спавн админ предметов. как ограничить их?
function GM:SpawnMenuOpen()
if not LocalPlayer():IsAdmin() then
return
end

-- GAMEMODE:SuppressHint( "OpeningMenu" )
-- GAMEMODE:AddHint( "OpeningContext", 20 )

return true
end
 
  • 24
  • 3
Простой скрипт, который ложится в lua/autorun/server/sv_spawn_restrict.lua и режет спавн по имени энтити/оружия. У меня вот так реализовано, если я не так понял уточни вопрос.

Lua
Lua:
Развернуть Свернуть Копировать
-- Предметы, которые можно спавнить только админам

local restricted_entities = {

    ["gmod_admin_suitcase"] = true,

    ["weapon_physgun"] = true,

    ["npc_strider"] = true,

    ["prop_dynamic"] = true,

}



-- Проверка: можно ли спавнить

local function CanSpawnRestricted(ply, class)

    if ply:IsAdmin() then return true end



    if restricted_entities[class] then

        ply:ChatPrint("[Сервер] Этот предмет доступен только администраторам.")

        return false

    end



    return true

end



-- Хуки под разные типы спавна

hook.Add("PlayerSpawnSENT", "Restrict_Admin_Spawn_SENT", function(ply, class)

    return CanSpawnRestricted(ply, class)

end)



hook.Add("PlayerGiveSWEP", "Restrict_Admin_GiveSWEP", function(ply, class, swep)

    return CanSpawnRestricted(ply, class)

end)



hook.Add("PlayerSpawnSWEP", "Restrict_Admin_SpawnSWEP", function(ply, class)

    return CanSpawnRestricted(ply, class)

end)



hook.Add("PlayerSpawnNPC", "Restrict_Admin_SpawnNPC", function(ply, class)

    return CanSpawnRestricted(ply, class)

end)



hook.Add("PlayerSpawnVehicle", "Restrict_Admin_SpawnVehicle", function(ply, class, tbl)

    return CanSpawnRestricted(ply, class)

end)



-- Пример ограничения пропов по модели

hook.Add("PlayerSpawnProp", "Restrict_Admin_SpawnProp", function(ply, model)

    if not ply:IsAdmin() and string.find(model:lower(), "combine") then

        ply:ChatPrint("[Сервер] Этот проп доступен только администраторам.")

        return false

    end

end)


Работает стабильно, даёт игроку сообщение и просто отменяет спавн. Если нужно ограничить по группам ULX — можно заменить ply:IsAdmin() на ply:IsUserGroup("moderator").


Если надо — могу позже запилить админ-меню для управления этими ограничениями прямо с сервера, но первыми его получат участники моего сообщества.
 
Назад
Сверху Снизу