AddDownloadsTable for admins?

Тема в разделе "Программирование / Скриптинг", создана пользователем thedim, 1 фев 2013.

  1. thedim

    thedim

    Сообщения:
    23
    Симпатии:
    8
    Здравствуйте, возник такой вопрос, как можно осуществить загрузку файлов только администраторам из определенной директории?
    Прилагаю код: (Это загружает всем)

    Код:
    public OnPluginStart() 
    { 
         AddFolderToDownloadsTable("materials/mapige"); 
    } 
    
    stock AddFolderToDownloadsTable(const String:sDirectory[]) 
    { 
         decl String:sFile[64], String:sPath[512]; 
         new FileType:iType, Handle:hDir = OpenDirectory(sDirectory); 
         while(ReadDirEntry(hDir, sFile, sizeof(sFile), iType))                   
         { 
                if(iType == FileType_File) 
                { 
                     Format(sPath, sizeof(sPath), "%s/%s", sDirectory, sFile); 
                     AddFileToDownloadsTable(sPath); 
                 } 
          } 
    }
    
    ***********************************************************

    Ниже функция которая у меня получилась (не обращайте внимания на квары), работает, но до тех пор пока не зайдет администратор, после него начинает грузиться всем... из за добавление таблици на сервер AddFileToDownloadsTable(sPath);

    Код:
    #pragma semicolon 1 
    
    #include <sourcemod> 
    #include <sdktools> 
    
    new Handle:g_DownloadsType    = INVALID_HANDLE; 
    
    public OnPluginStart() 
    { 
       g_DownloadsType = CreateConVar("sm_downloadstype", "1", "1 = Загружать только Админам, 0 = Загружать всем."); 
    } 
    
    public OnClientAuthorized(client, const String:steamID[]) 
    { 
       if (GetConVarBool(g_DownloadsType)) { 
        new AdminId:admin = FindAdminByIdentity(AUTHMETHOD_STEAM, steamID); 
    
        if (admin != INVALID_ADMIN_ID) { 
         AddFolderToDownloadsTable("materials/mapige"); // Downloads Only Admins 
        } 
       } 
    
       if (!GetConVarBool(g_DownloadsType)) { 
        AddFolderToDownloadsTable("materials/mapige"); // Downloads All 
       } 
    } 
    
    stock AddFolderToDownloadsTable(const String:sDirectory[]) { 
       decl String:sFile[64], String:sPath[512]; 
       new FileType:iType, Handle:hDir = OpenDirectory(sDirectory); 
       while(ReadDirEntry(hDir, sFile, sizeof(sFile), iType))       
       { 
        if(iType == FileType_File) { 
         Format(sPath, sizeof(sPath), "%s/%s", sDirectory, sFile); 
         AddFileToDownloadsTable(sPath); 
        } 
       } 
    }
    
    Собственно это пример хода моих мыслей...
    **************************************************************

    И все таки как можно еще сделать, что бы файлы подгружались из materials/mapige директории ТОЛЬКО АДМИНАМ?! Ломаю голову 4й день, возможно есть какие то другие средства и ход действий в коде...
     
  2. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Никак. Таблица общая Единственный вариант - вручную скинуть файлы админам, ведь совсем не обязательно добавлять файлы в таблицу для их использования
     
  3. thedim

    thedim

    Сообщения:
    23
    Симпатии:
    8
    да к сожалению таблица общая но у меня есть мысль, таблицу можно ли в момент подключения администратора записать в буфер ее прошлое состояние, выполнить функцию с новыми добавлениями и перезаписать ту которую запомнили на исходную? Возможно ли попробовать использовать GetStringTableData и что бы вернуть SetStringTableData.? Включаем мозги парни, ведь эта хорошая пища для размышления и уверен что избавит многих от геморроя...
     
    Последнее редактирование: 1 фев 2013
  4. FrozDark

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    к сожалению требуется что-то вроде RemoveFromStringTable
     
  5. thedim

    thedim

    Сообщения:
    23
    Симпатии:
    8
    Такого параметра ведь даже не существует но мысль морали я понимаю. :nyam: хотелось бы)))

    думаю хватило бы GetDownloadsTable и SetDownloadsTable :-D . Как говорят, мечтать не вредно.
     
    Последнее редактирование: 2 фев 2013
  6. FrozDark

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    я как то открывал тему про это на оф. сайте, не помогли
     
    thedim нравится это.