plugins/basecommands/map.sp
author David Anderson <dvander@alliedmods.net>
Sun Dec 02 02:10:37 2007 +0000 (2007-12-02)
changeset 1738 cb3be0b31d99
parent 1658 2a449596c3a8
child 1740 e5f6bd502cb7
permissions -rw-r--r--
- added beefy new ReadMapList() native
- admin menu now uses ReadMapList()
- added UTIL_TrimWhitespace() to stringutils
- moved GetFileTime() implementation to ILibrarySys
- cleaned up sorting include a bit
- removed adminmenu_maplist.ini, since it's specified by maplists.cfg
- added maplists.cfg
pred@1536
     1
pred@1536
     2
public MenuHandler_ChangeMap(Handle:menu, MenuAction:action, param1, param2)
pred@1536
     3
{
pred@1536
     4
	if (action == MenuAction_Cancel)
pred@1536
     5
	{
pred@1536
     6
		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
pred@1536
     7
		{
pred@1536
     8
			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
pred@1536
     9
		}
pred@1536
    10
	}
pred@1536
    11
	else if (action == MenuAction_Select)
pred@1536
    12
	{
pred@1536
    13
		decl String:map[64];
pred@1536
    14
		
pred@1536
    15
		GetMenuItem(menu, param2, map, sizeof(map));
pred@1536
    16
	
dvander@1623
    17
		ShowActivity2(param1, "[SM] ", "%t", "Changing map", map);
pred@1536
    18
pred@1536
    19
		LogAction(param1, -1, "\"%L\" changed map to \"%s\"", param1, map);
pred@1536
    20
pred@1536
    21
		new Handle:dp;
pred@1536
    22
		CreateDataTimer(3.0, Timer_ChangeMap, dp);
pred@1536
    23
		WritePackString(dp, map);
pred@1536
    24
pred@1536
    25
	}
pred@1536
    26
}
pred@1536
    27
pred@1536
    28
public AdminMenu_Map(Handle:topmenu, 
pred@1536
    29
							  TopMenuAction:action,
pred@1536
    30
							  TopMenuObject:object_id,
pred@1536
    31
							  param,
pred@1536
    32
							  String:buffer[],
pred@1536
    33
							  maxlength)
pred@1536
    34
{
pred@1536
    35
	if (action == TopMenuAction_DisplayOption)
pred@1536
    36
	{
pred@1536
    37
		Format(buffer, maxlength, "%T", "Choose Map", param);
pred@1536
    38
	}
pred@1536
    39
	else if (action == TopMenuAction_SelectOption)
pred@1536
    40
	{
pred@1536
    41
		DisplayMenu(g_MapList, param, MENU_TIME_FOREVER);
pred@1536
    42
	}
pred@1536
    43
}
pred@1536
    44
pred@1536
    45
public Action:Command_Map(client, args)
pred@1536
    46
{
pred@1536
    47
	if (args < 1)
pred@1536
    48
	{
pred@1536
    49
		ReplyToCommand(client, "[SM] Usage: sm_map <map>");
pred@1536
    50
		return Plugin_Handled;
pred@1536
    51
	}
pred@1536
    52
pred@1536
    53
	decl String:map[64];
pred@1536
    54
	GetCmdArg(1, map, sizeof(map));
pred@1536
    55
pred@1536
    56
	if (!IsMapValid(map))
pred@1536
    57
	{
pred@1536
    58
		ReplyToCommand(client, "[SM] %t", "Map was not found", map);
pred@1536
    59
		return Plugin_Handled;
pred@1536
    60
	}
pred@1536
    61
dvander@1623
    62
	ShowActivity2(client, "[SM] ", "%t", "Changing map", map);
pred@1536
    63
pred@1536
    64
	LogAction(client, -1, "\"%L\" changed map to \"%s\"", client, map);
pred@1536
    65
pred@1536
    66
	new Handle:dp;
pred@1536
    67
	CreateDataTimer(3.0, Timer_ChangeMap, dp);
pred@1536
    68
	WritePackString(dp, map);
pred@1536
    69
pred@1536
    70
	return Plugin_Handled;
pred@1536
    71
}
pred@1536
    72
pred@1536
    73
public Action:Timer_ChangeMap(Handle:timer, Handle:dp)
pred@1536
    74
{
pred@1536
    75
	decl String:map[65];
pred@1536
    76
pred@1536
    77
	ResetPack(dp);
pred@1536
    78
	ReadPackString(dp, map, sizeof(map));
pred@1536
    79
pred@1536
    80
	ServerCommand("changelevel \"%s\"", map);
pred@1536
    81
pred@1536
    82
	return Plugin_Stop;
pred@1536
    83
}
pred@1536
    84
dvander@1738
    85
new Handle:g_map_array = INVALID_HANDLE;
dvander@1738
    86
new g_map_serial = -1;
dvander@1738
    87
ferret99gt@1606
    88
LoadMapList(Handle:menu)
pred@1536
    89
{
dvander@1738
    90
	new Handle:map_array;
pred@1536
    91
	
dvander@1738
    92
	if ((map_array = ReadMapList(g_map_array,
dvander@1738
    93
			g_map_serial,
dvander@1738
    94
			"admin menu",
dvander@1738
    95
			MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_NO_DEFAULT|MAPLIST_FLAG_MAPSFOLDER))
dvander@1738
    96
		!= INVALID_HANDLE)
pred@1536
    97
	{
dvander@1738
    98
		g_map_array = map_array;
pred@1536
    99
	}
pred@1536
   100
	
dvander@1738
   101
	if (g_map_array == INVALID_HANDLE)
pred@1536
   102
	{
pred@1580
   103
		return 0;
pred@1580
   104
	}
pred@1580
   105
	
dvander@1738
   106
	RemoveAllMenuItems(menu);
pred@1580
   107
	
dvander@1738
   108
	decl String:map_name[64];
dvander@1738
   109
	new map_count = GetArraySize(g_map_array);
dvander@1738
   110
	
dvander@1738
   111
	for (new i = 0; i < map_count; i++)
pred@1580
   112
	{
dvander@1738
   113
		GetArrayString(g_map_array, i, map_name, sizeof(map_name));
dvander@1738
   114
		AddMenuItem(menu, map_name, map_name);
dvander@1738
   115
	}
dvander@1738
   116
	
dvander@1738
   117
	return map_count;
dvander@1592
   118
}