Загрузка файлов клиентам
AddFileToDownloadsTable(const String:filename[]) - добавить файл в очередь для загрузки.
Если попытаться добавить в очередь один и тот же файл несколько раз, то ничего страшного, он просто не добавится, если он уже в списке.
Используйте эту команду в событии OnMapStart, пример:
Код
#include <sourcemod>
#include <sdktools_stringtables>
public OnMapStart()
{
AddFileToDownloadsTable("sound/admin_plugin/x.mp3");
AddFileToDownloadsTable("models/player/ics/ct_gign_fbi/ct_gign.mdl");
}
Загружать нужно только нестандартные файлы, которых нет по умолчанию в игре.
Скины, звуки, .txt и другие файлы (конечно есть какие-то ограничения).
Если файл уже есть у игрока, то новый он уже никак не скачает.
Будет игрок скачивать файл или нет - зависит еще и от его некоторых клиентских настроек:
Код
// all - разрешить скачивать с сервера все файлы
// nosounds - все, кроме звуков
// none - ничего не скачивать
cl_downloadfilter "all"
// 1 - загрузка файлов вкл, 0 - откл
cl_allowdownload "1"
И серверных (server.cfg)
Код
// 1 = игроки могут скачивать, 0 = не могут
sv_allowdownload "1"
// Если указана ссылка, то будут скачивать с вашего сайта, не указана = загрузка с самого сервера (это нехорошо).
// Ссылка должна вести туда, где у вас папки sound/cfg/maps/addons
// Пример: sv_downloadurl "http://site.ru/cstrike/"
sv_downloadurl ""
Так можно получить список файлов, которые должны загружаться клиенту:
Код
new tblidx = FindStringTable("downloadables"); // dumpstringtables в консоль
if (tblidx == INVALID_STRING_TABLE)
{
LogError("INVALID_STRING_TABLE");
return;
}
decl String:tmp[256];
new count = GetStringTableNumStrings(tblidx);
for (new i = 0; i < count; i++)
{
ReadStringTable(tblidx, i, tmp, sizeof(tmp));
LogError(tmp);
}