AddDownloadsTable for admins?

thedim

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

C-подобный:
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);

C-подобный:
#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й день, возможно есть какие то другие средства и ход действий в коде...
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Никак. Таблица общая Единственный вариант - вручную скинуть файлы админам, ведь совсем не обязательно добавлять файлы в таблицу для их использования
 

thedim

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

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
да к сожалению таблица общая но у меня есть мысль, таблицу можно ли в момент подключения администратора записать в буфер ее прошлое состояние, выполнить функцию с новыми добавлениями и перезаписать ту которую запомнили на исходную? Возможно ли попробовать использовать GetStringTableData и что бы вернуть SetStringTableData.? Включаем мозги парни, ведь эта хорошая пища для размышления и уверен что избавит многих от геморроя...

к сожалению требуется что-то вроде RemoveFromStringTable
 

thedim

Участник
Сообщения
23
Реакции
8
к сожалению требуется что-то вроде RemoveFromStringTable

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

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

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
я как то открывал тему про это на оф. сайте, не помогли
 
Сверху Снизу