119 lines
3.9 KiB
SourcePawn
119 lines
3.9 KiB
SourcePawn
/*
|
|
* ============================================================================
|
|
*
|
|
* Zombie:Reloaded
|
|
*
|
|
* File: downloads.inc
|
|
* Type: Core
|
|
* Description: Download validation.
|
|
*
|
|
* Copyright (C) 2009-2013 Greyscale, Richard Helgeby
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* ============================================================================
|
|
*/
|
|
|
|
/**
|
|
* Array that stores a list of downloadable files.
|
|
*/
|
|
new Handle:arrayDownloads = INVALID_HANDLE;
|
|
|
|
/**
|
|
* Prepare all model/download data.
|
|
*/
|
|
DownloadsLoad()
|
|
{
|
|
// Register config file.
|
|
ConfigRegisterConfig(File_Downloads, Structure_List, CONFIG_FILE_ALIAS_DOWNLOADS);
|
|
|
|
// Get downloads file path.
|
|
decl String:pathdownloads[PLATFORM_MAX_PATH];
|
|
new bool:exists = ConfigGetCvarFilePath(CVAR_CONFIG_PATH_DOWNLOADS, pathdownloads);
|
|
|
|
// If file doesn't exist, then log and stop.
|
|
if (!exists)
|
|
{
|
|
// Log failure and stop plugin.
|
|
LogEvent(false, LogType_Fatal, LOG_CORE_EVENTS, LogModule_Downloads, "Config Validation", "Missing downloads file: \"%s\"", pathdownloads);
|
|
}
|
|
|
|
// Set the path to the config file.
|
|
ConfigSetConfigPath(File_Downloads, pathdownloads);
|
|
|
|
// Load config from file and create array structure.
|
|
new bool:success = ConfigLoadConfig(File_Downloads, arrayDownloads, PLATFORM_MAX_PATH);
|
|
|
|
// Unexpected error, stop plugin.
|
|
if (!success)
|
|
{
|
|
LogEvent(false, LogType_Fatal, LOG_CORE_EVENTS, LogModule_Downloads, "Config Validation", "Unexpected error encountered loading: %s", pathdownloads);
|
|
}
|
|
|
|
new downloadcount;
|
|
new downloadvalidcount;
|
|
|
|
decl String:downloadpath[PLATFORM_MAX_PATH];
|
|
|
|
new downloads = downloadcount = GetArraySize(arrayDownloads);
|
|
|
|
// x = download array index.
|
|
for (new x = 0; x < downloads; x++)
|
|
{
|
|
// Get download path
|
|
GetArrayString(arrayDownloads, x, downloadpath, sizeof(downloadpath));
|
|
|
|
// If file doesn't exist, then remove, log, and stop.
|
|
if (!FileExists(downloadpath, false))
|
|
{
|
|
// Remove client from array.
|
|
RemoveFromArray(arrayDownloads, x);
|
|
|
|
// Subtract one from count.
|
|
downloads--;
|
|
|
|
// Backtrack one index, because we deleted it out from under the loop.
|
|
x--;
|
|
|
|
LogEvent(false, LogType_Error, LOG_CORE_EVENTS, LogModule_Downloads, "Config Validation", "Missing file \"%s\"", downloadpath);
|
|
continue;
|
|
}
|
|
|
|
// Increment downloadvalidcount
|
|
downloadvalidcount++;
|
|
|
|
// Precache model file and add to downloads table.
|
|
AddFileToDownloadsTable(downloadpath);
|
|
}
|
|
|
|
// Log model validation info.
|
|
LogEvent(false, LogType_Normal, LOG_CORE_EVENTS, LogModule_Downloads, "Config Validation", "Total: %d | Successful: %d | Unsuccessful: %d", downloadcount, downloadvalidcount, downloadcount - downloadvalidcount);
|
|
|
|
// Set config data.
|
|
ConfigSetConfigLoaded(File_Downloads, true);
|
|
ConfigSetConfigReloadFunc(File_Downloads, GetFunctionByName(GetMyHandle(), "DownloadsOnConfigReload"));
|
|
ConfigSetConfigHandle(File_Downloads, arrayDownloads);
|
|
}
|
|
|
|
/**
|
|
* Called when configs are being reloaded.
|
|
*
|
|
* @param config The config being reloaded. (only if 'all' is false)
|
|
*/
|
|
public DownloadsOnConfigReload(ConfigFile:config)
|
|
{
|
|
// Reload download config.
|
|
DownloadsLoad();
|
|
}
|