Fixed amb729, implemented amb778. Admin needs ADMFLAG_CHANGEMAP to use sm_setnextmap

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401372
This commit is contained in:
Michael McKoy 2007-08-22 01:19:10 +00:00
parent 4441de43f4
commit b24a28d834

View File

@ -53,20 +53,17 @@ new Handle:g_Cvar_Mapcycle;
new g_MapPos = -1;
new Handle:g_MapList = INVALID_HANDLE;
#if 0
new bool:g_INS = false;
#endif
public OnPluginStart()
{
LoadTranslations("common.phrases");
LoadTranslations("nextmap.phrases");
g_VGUIMenu = GetUserMessageId("VGUIMenu");
if (g_VGUIMenu == INVALID_MESSAGE_ID)
{
LogMessage("FATAL: Cannot find VGUIMenu user message id. Nextmap not loaded.");
return;
LogError("FATAL: Cannot find VGUIMenu user message id. Nextmap not loaded.");
SetFailState("VGUIMenu Not Found");
}
g_Cvar_Chattime = FindConVar("mp_chattime");
@ -76,10 +73,10 @@ public OnPluginStart()
decl String:mapCycle[64];
GetConVarString(g_Cvar_Mapcycle, mapCycle, 64);
if (LoadMaps(mapCycle) == 0)
if (LoadMaps(mapCycle) < 1)
{
LogMessage("FATAL: Cannot load map cycle. Nextmap not loaded.");
return;
LogError("FATAL: Cannot load map cycle. Nextmap not loaded.");
SetFailState("Mapcycle Not Found");
}
HookUserMessage(g_VGUIMenu, UserMsg_VGUIMenu);
@ -89,21 +86,11 @@ public OnPluginStart()
RegConsoleCmd("say", Command_Say);
RegConsoleCmd("say_team", Command_Say);
#if 0
decl String:modname[64];
GetGameFolderName(modname, sizeof(modname));
if (strcmp(modname, "ins") == 0)
{
RegConsoleCmd("say2", Command_SayChat);
g_INS = true;
}
#endif
RegAdminCmd("sm_setnextmap", Command_SetNextmap, ADMFLAG_CHANGEMAP, "sm_setnextmap <map>");
RegConsoleCmd("listmaps", Command_List);
/* Set to the current map so OnMapStart() will know what to do */
// Set to the current map so OnMapStart() will know what to do
decl String:currentMap[64];
GetCurrentMap(currentMap, 64);
SetConVarString(g_Cvar_Nextmap, currentMap);
@ -133,7 +120,13 @@ public ConVarChange_Mapcyclefile(Handle:convar, const String:oldValue[], const S
{
if (strcmp(oldValue, newValue, false) != 0)
{
LoadMaps(newValue);
if (LoadMaps(newValue) < 1)
{
LogError("FATAL: Cannot load map cycle. Nextmap not loaded.");
SetFailState("Mapcycle Not Found");
}
FindAndSetNextMap();
}
}
@ -149,13 +142,6 @@ public Action:Command_Say(client, args)
startidx = 1;
}
#if 0
if (g_INS)
{
startidx += 4;
}
#endif
decl String:message[8];
BreakString(text[startidx], message, sizeof(message));
@ -169,6 +155,46 @@ public Action:Command_Say(client, args)
return Plugin_Continue;
}
public Action:Command_SetNextmap(client, args)
{
if (args < 1)
{
ReplyToCommand(client, "[SM] Usage: sm_setnextmap <map>");
return Plugin_Handled;
}
decl String:map[64];
GetCmdArg(1, map, sizeof(map));
if (!IsMapValid(map))
{
ReplyToCommand(client, "[SM] %t", "Map was not found", map);
return Plugin_Handled;
}
ShowActivity(client, "%t", "Cvar changed", "sm_nextmap", map);
LogMessage("\"%L\" changed sm_nextmap to \"%s\"", client, map);
SetConVarString(g_Cvar_Nextmap, map);
return Plugin_Handled;
}
public Action:Command_List(client, args)
{
PrintToConsole(client, "Map Cycle:");
new mapCount = GetArraySize(g_MapList);
decl String:mapName[32];
for (new i = 0; i < mapCount; i++)
{
GetArrayString(g_MapList, i, mapName, sizeof(mapName));
PrintToConsole(client, "%s", mapName);
}
return Plugin_Handled;
}
public Action:UserMsg_VGUIMenu(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)
{
@ -215,21 +241,6 @@ public Action:Timer_ChangeMap(Handle:timer, Handle:dp)
return Plugin_Stop;
}
public Action:Command_List(client, args)
{
PrintToConsole(client, "Map Cycle:");
new mapCount = GetArraySize(g_MapList);
decl String:mapName[32];
for (new i = 0; i < mapCount; i++)
{
GetArrayString(g_MapList, i, mapName, sizeof(mapName));
PrintToConsole(client, "%s", mapName);
}
return Plugin_Handled;
}
LoadMaps(const String:path[])
{
if (!FileExists(path))