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

@ -54,19 +54,16 @@ new Handle:g_Cvar_Mapcycle;
new g_MapPos = -1; new g_MapPos = -1;
new Handle:g_MapList = INVALID_HANDLE; new Handle:g_MapList = INVALID_HANDLE;
#if 0
new bool:g_INS = false;
#endif
public OnPluginStart() public OnPluginStart()
{ {
LoadTranslations("common.phrases");
LoadTranslations("nextmap.phrases"); LoadTranslations("nextmap.phrases");
g_VGUIMenu = GetUserMessageId("VGUIMenu"); g_VGUIMenu = GetUserMessageId("VGUIMenu");
if (g_VGUIMenu == INVALID_MESSAGE_ID) if (g_VGUIMenu == INVALID_MESSAGE_ID)
{ {
LogMessage("FATAL: Cannot find VGUIMenu user message id. Nextmap not loaded."); LogError("FATAL: Cannot find VGUIMenu user message id. Nextmap not loaded.");
return; SetFailState("VGUIMenu Not Found");
} }
g_Cvar_Chattime = FindConVar("mp_chattime"); g_Cvar_Chattime = FindConVar("mp_chattime");
@ -76,10 +73,10 @@ public OnPluginStart()
decl String:mapCycle[64]; decl String:mapCycle[64];
GetConVarString(g_Cvar_Mapcycle, 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."); LogError("FATAL: Cannot load map cycle. Nextmap not loaded.");
return; SetFailState("Mapcycle Not Found");
} }
HookUserMessage(g_VGUIMenu, UserMsg_VGUIMenu); HookUserMessage(g_VGUIMenu, UserMsg_VGUIMenu);
@ -90,20 +87,10 @@ public OnPluginStart()
RegConsoleCmd("say", Command_Say); RegConsoleCmd("say", Command_Say);
RegConsoleCmd("say_team", Command_Say); RegConsoleCmd("say_team", Command_Say);
#if 0 RegAdminCmd("sm_setnextmap", Command_SetNextmap, ADMFLAG_CHANGEMAP, "sm_setnextmap <map>");
decl String:modname[64];
GetGameFolderName(modname, sizeof(modname));
if (strcmp(modname, "ins") == 0)
{
RegConsoleCmd("say2", Command_SayChat);
g_INS = true;
}
#endif
RegConsoleCmd("listmaps", Command_List); 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]; decl String:currentMap[64];
GetCurrentMap(currentMap, 64); GetCurrentMap(currentMap, 64);
SetConVarString(g_Cvar_Nextmap, currentMap); 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) 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; startidx = 1;
} }
#if 0
if (g_INS)
{
startidx += 4;
}
#endif
decl String:message[8]; decl String:message[8];
BreakString(text[startidx], message, sizeof(message)); BreakString(text[startidx], message, sizeof(message));
@ -170,6 +156,46 @@ public Action:Command_Say(client, args)
return Plugin_Continue; 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) public Action:UserMsg_VGUIMenu(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)
{ {
if (g_IntermissionCalled) if (g_IntermissionCalled)
@ -215,21 +241,6 @@ public Action:Timer_ChangeMap(Handle:timer, Handle:dp)
return Plugin_Stop; 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[]) LoadMaps(const String:path[])
{ {
if (!FileExists(path)) if (!FileExists(path))