Why don't you try:
Code:
#pragma semicolon 1
#include <sourcemod>
#define Version "0.1"
new Handle:Allowed = INVALID_HANDLE;
new RoundEndCounter = 0;
new MaxPlayers = 0;
new String:Map[64];
public Plugin:myinfo =
{
name = "L4D Auto Map Changer",
author = "Dionys",
description = "Force changelevel when mission end (For Farm VS and Hospital VS).",
version = Version,
url = "[email protected]"
};
public OnPluginStart()
{
decl String:ModName[50];
GetGameFolderName(ModName, sizeof(ModName));
if(!StrEqual(ModName, "left4dead", false))
SetFailState("Use this for Left 4 Dead only.");
HookEvent("round_end", Event_RoundEnd);
Allowed = CreateConVar("sm_l4dvs_mapchangeforce", "1", "Enables Force changelevel when mission end.");
AutoExecConfig(true, "sm_l4dvs_mapchanger");
}
public OnMapStart()
{
RoundEndCounter = 0;
MaxPlayers = GetMaxClients();
GetCurrentMap(Map, sizeof(Map));
}
stock ChangeMap(String:NextMap[])
{
for(new player=1; player<=MaxPlayers; player++)
{
if(IsClientInGame(player) && IsFakeClient(player))
KickClient(player);
}
ServerCommand("changelevel %s", NextMap);
}
public Action:Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
RoundEndCounter += 1; //What if admin enables at last second?
if(GetConVarInt(Allowed) && RoundEndCounter >= 4)
{
if(StrEqual(Map, "l4d_vs_farm05_cornfield"))
ChangeMap("l4d_vs_hospital01_apartment");
else if(StrEqual(Map, "l4d_vs_hospital05_rooftop"))
ChangeMap("l4d_vs_farm01_hilltop");
}
}
I suggest you read
http://wiki.alliedmods.net/Optimizing_Plugins_(SourceMod_Scripting)
PM me for any questions.