89 lines
2.7 KiB
SourcePawn
89 lines
2.7 KiB
SourcePawn
#pragma semicolon 1
|
|
#define PLUGIN_AUTHOR "jenz"
|
|
#define PLUGIN_VERSION "1.0"
|
|
#include <sourcemod>
|
|
|
|
public Plugin myinfo =
|
|
{
|
|
name = "plugin_loader_unloader",
|
|
author = PLUGIN_AUTHOR,
|
|
description = "prevents slow map switches by loading and unloading plugins after map switching",
|
|
version = PLUGIN_VERSION,
|
|
url = "www.unloze.com"
|
|
};
|
|
|
|
public void OnMapStart()
|
|
{
|
|
CreateTimer(10.0, init_plugins_global);
|
|
CreateTimer(17.0, init_plugins_map);
|
|
}
|
|
|
|
public Action init_plugins_map(Handle hTimer)
|
|
{
|
|
char sConfigFile[PLATFORM_MAX_PATH];
|
|
BuildPath(Path_SM, sConfigFile, sizeof(sConfigFile), "configs/plugins_loading_unloading.cfg");
|
|
if(!FileExists(sConfigFile))
|
|
{
|
|
LogMessage("Could not find config: \"%s\"", sConfigFile);
|
|
return Plugin_Handled;
|
|
}
|
|
char map[PLATFORM_MAX_PATH];
|
|
GetCurrentMap(map, PLATFORM_MAX_PATH);
|
|
|
|
//for some reason keyvalues did not play along so just reading file instead.
|
|
new Handle:fileHandle = OpenFile(sConfigFile, "r" );
|
|
char lineBuffer[256];
|
|
bool found_nextmap = false;
|
|
while( !IsEndOfFile( fileHandle ) && ReadFileLine( fileHandle, lineBuffer, sizeof( lineBuffer ) ) )
|
|
{
|
|
TrimString( lineBuffer );
|
|
ReplaceString(lineBuffer, sizeof(lineBuffer), "\"", "");
|
|
if (StrEqual(lineBuffer, map))
|
|
{
|
|
found_nextmap = true;
|
|
}
|
|
if (StrContains(lineBuffer, "sm plugins") != -1 && found_nextmap)
|
|
{
|
|
ServerCommand(lineBuffer);
|
|
}
|
|
if (StrEqual(lineBuffer, "}") && found_nextmap)
|
|
{
|
|
break; //we found our specific next map and finished all plugins loading/unloading.
|
|
}
|
|
}
|
|
CloseHandle( fileHandle );
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
public Action init_plugins_global(Handle hTimer)
|
|
{
|
|
char sConfigFile[PLATFORM_MAX_PATH];
|
|
BuildPath(Path_SM, sConfigFile, sizeof(sConfigFile), "configs/plugins_loading_unloading.cfg");
|
|
if(!FileExists(sConfigFile))
|
|
{
|
|
LogMessage("Could not find config: \"%s\"", sConfigFile);
|
|
return Plugin_Handled;
|
|
}
|
|
char map[PLATFORM_MAX_PATH];
|
|
GetCurrentMap(map, PLATFORM_MAX_PATH);
|
|
|
|
//for some reason keyvalues did not play along so just reading file instead.
|
|
new Handle:fileHandle = OpenFile(sConfigFile, "r" );
|
|
char lineBuffer[256];
|
|
while( !IsEndOfFile( fileHandle ) && ReadFileLine( fileHandle, lineBuffer, sizeof( lineBuffer ) ) )
|
|
{
|
|
TrimString( lineBuffer );
|
|
ReplaceString(lineBuffer, sizeof(lineBuffer), "\"", "");
|
|
if (StrContains(lineBuffer, "sm plugins") != -1)
|
|
{
|
|
ServerCommand(lineBuffer);
|
|
}
|
|
if (StrEqual(lineBuffer, "}"))
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
CloseHandle( fileHandle );
|
|
return Plugin_Handled;
|
|
}
|