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
     1 
     2 public MenuHandler_ChangeMap(Handle:menu, MenuAction:action, param1, param2)
     3 {
     4 	if (action == MenuAction_Cancel)
     5 	{
     6 		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
     7 		{
     8 			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
     9 		}
    10 	}
    11 	else if (action == MenuAction_Select)
    12 	{
    13 		decl String:map[64];
    14 		
    15 		GetMenuItem(menu, param2, map, sizeof(map));
    16 	
    17 		ShowActivity2(param1, "[SM] ", "%t", "Changing map", map);
    18 
    19 		LogAction(param1, -1, "\"%L\" changed map to \"%s\"", param1, map);
    20 
    21 		new Handle:dp;
    22 		CreateDataTimer(3.0, Timer_ChangeMap, dp);
    23 		WritePackString(dp, map);
    24 
    25 	}
    26 }
    27 
    28 public AdminMenu_Map(Handle:topmenu, 
    29 							  TopMenuAction:action,
    30 							  TopMenuObject:object_id,
    31 							  param,
    32 							  String:buffer[],
    33 							  maxlength)
    34 {
    35 	if (action == TopMenuAction_DisplayOption)
    36 	{
    37 		Format(buffer, maxlength, "%T", "Choose Map", param);
    38 	}
    39 	else if (action == TopMenuAction_SelectOption)
    40 	{
    41 		DisplayMenu(g_MapList, param, MENU_TIME_FOREVER);
    42 	}
    43 }
    44 
    45 public Action:Command_Map(client, args)
    46 {
    47 	if (args < 1)
    48 	{
    49 		ReplyToCommand(client, "[SM] Usage: sm_map <map>");
    50 		return Plugin_Handled;
    51 	}
    52 
    53 	decl String:map[64];
    54 	GetCmdArg(1, map, sizeof(map));
    55 
    56 	if (!IsMapValid(map))
    57 	{
    58 		ReplyToCommand(client, "[SM] %t", "Map was not found", map);
    59 		return Plugin_Handled;
    60 	}
    61 
    62 	ShowActivity2(client, "[SM] ", "%t", "Changing map", map);
    63 
    64 	LogAction(client, -1, "\"%L\" changed map to \"%s\"", client, map);
    65 
    66 	new Handle:dp;
    67 	CreateDataTimer(3.0, Timer_ChangeMap, dp);
    68 	WritePackString(dp, map);
    69 
    70 	return Plugin_Handled;
    71 }
    72 
    73 public Action:Timer_ChangeMap(Handle:timer, Handle:dp)
    74 {
    75 	decl String:map[65];
    76 
    77 	ResetPack(dp);
    78 	ReadPackString(dp, map, sizeof(map));
    79 
    80 	ServerCommand("changelevel \"%s\"", map);
    81 
    82 	return Plugin_Stop;
    83 }
    84 
    85 new Handle:g_map_array = INVALID_HANDLE;
    86 new g_map_serial = -1;
    87 
    88 LoadMapList(Handle:menu)
    89 {
    90 	new Handle:map_array;
    91 	
    92 	if ((map_array = ReadMapList(g_map_array,
    93 			g_map_serial,
    94 			"admin menu",
    95 			MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_NO_DEFAULT|MAPLIST_FLAG_MAPSFOLDER))
    96 		!= INVALID_HANDLE)
    97 	{
    98 		g_map_array = map_array;
    99 	}
   100 	
   101 	if (g_map_array == INVALID_HANDLE)
   102 	{
   103 		return 0;
   104 	}
   105 	
   106 	RemoveAllMenuItems(menu);
   107 	
   108 	decl String:map_name[64];
   109 	new map_count = GetArraySize(g_map_array);
   110 	
   111 	for (new i = 0; i < map_count; i++)
   112 	{
   113 		GetArrayString(g_map_array, i, map_name, sizeof(map_name));
   114 		AddMenuItem(menu, map_name, map_name);
   115 	}
   116 	
   117 	return map_count;
   118 }