281 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
			
		
		
	
	
			281 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
| public void TimerAdminMenu(int client)
 | |
| {
 | |
| 	char buffer[16];
 | |
| 	Menu menu = new Menu(TimerAdminMenuHandler);
 | |
| 	menu.SetTitle("Timer Control Panel");
 | |
| 	if (g_iEditor != -1)
 | |
| 		menu.AddItem("zone", "Zones (Currently in use)", ITEMDRAW_DISABLED);
 | |
| 	else
 | |
| 		menu.AddItem("zone", "Zones");
 | |
| 	menu.AddItem("tier", "Set Map Tier");
 | |
| 	Format(buffer, sizeof(buffer), "%s map", g_bActive ? "Deactivate":"Activate");
 | |
| 	menu.AddItem("active", buffer);
 | |
| 	menu.ExitButton = true;
 | |
| 	menu.Display(client, MENU_TIME_FOREVER);
 | |
| }
 | |
| 
 | |
| public int TimerAdminMenuHandler(Handle menu, MenuAction action, int client, int choice)
 | |
| {
 | |
| 	switch(action)
 | |
| 	{
 | |
| 		case MenuAction_Select:
 | |
| 		{
 | |
| 			switch(choice)
 | |
| 			{
 | |
| 				case 0:
 | |
| 				{
 | |
| 					if (g_iEditor != -1)
 | |
| 					{
 | |
| 						PrintToChat(client, "Zone menu currently unavailable");
 | |
| 						TimerAdminMenu(client);
 | |
| 					}
 | |
| 					else
 | |
| 					{
 | |
| 						g_iEditor = client;
 | |
| 						g_iActivity[client] = -1;
 | |
| 						g_bEditorComesFromMenu = true;
 | |
| 						ZoneMenu(client, g_bEditorComesFromMenu);
 | |
| 					}
 | |
| 					
 | |
| 				}
 | |
| 				case 1:
 | |
| 				{
 | |
| 					TierMenu(client);
 | |
| 				}
 | |
| 				case 2:
 | |
| 				{
 | |
| 					g_bActive = !g_bActive;
 | |
| 					SetMapState(view_as<int>(g_bActive));
 | |
| 					PrintToChat(client, "%s the map...", g_bActive ? "Activating":"Deactivating");
 | |
| 					CS_TerminateRound(1.0, CSRoundEnd_Draw, true);
 | |
| 					TimerAdminMenu(client);
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		case MenuAction_End:
 | |
| 		{
 | |
| 			delete menu;
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| public void ZoneMenu(int client, bool comesFromMenu)
 | |
| {
 | |
| 	Menu menu = new Menu(ZoneMenuHandler);
 | |
| 	menu.SetTitle("Zone Menu");
 | |
| 	menu.AddItem("start", "Set Start Zone");
 | |
| 	menu.AddItem("end", "Set End Zone");
 | |
| 	menu.AddItem("rr", "Respawn Zones");
 | |
| 	menu.AddItem("save", "Save Zones");
 | |
| 	menu.ExitButton = true;
 | |
| 	if (comesFromMenu)
 | |
| 		menu.ExitBackButton = true;
 | |
| 	menu.Display(client, MENU_TIME_FOREVER);
 | |
| }
 | |
| 
 | |
| public int ZoneMenuHandler(Handle menu, MenuAction action, int client, int choice)
 | |
| {
 | |
| 	switch(action)
 | |
| 	{
 | |
| 		case MenuAction_Select:
 | |
| 		{
 | |
| 			switch(choice)
 | |
| 			{
 | |
| 				case 0:
 | |
| 					CreateZoneMenu(client, STARTZONE, false);
 | |
| 					
 | |
| 				case 1:
 | |
| 					CreateZoneMenu(client, ENDZONE, false);
 | |
| 					
 | |
| 				case 2:
 | |
| 				{
 | |
| 					CS_TerminateRound(1.0, CSRoundEnd_Draw, true);
 | |
| 					ZoneMenu(client, g_bEditorComesFromMenu);
 | |
| 				}
 | |
| 				case 3:
 | |
| 				{
 | |
| 					SaveZones(client);
 | |
| 					ZoneMenu(client, g_bEditorComesFromMenu);
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		case MenuAction_Cancel:
 | |
| 		{
 | |
| 			g_iEditor = -1;
 | |
| 			g_bEditorComesFromMenu = false;
 | |
| 			if (choice == MenuCancel_ExitBack)
 | |
| 			{
 | |
| 				TimerAdminMenu(client);
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		case MenuAction_End:
 | |
| 		{
 | |
| 			delete menu;
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| public void CreateZoneMenu(int client, int zone, bool point)
 | |
| {
 | |
| 	char buffer[32], zonePoint[5];
 | |
| 	Menu menu = new Menu(CreateZoneMenuHandler);
 | |
| 	Format(buffer, sizeof(buffer), "Set the %s position", point ? "second":"first");
 | |
| 	//Format(zonePoint, sizeof(zonePoint), "%i|%s", zone, view_as<int>(point));
 | |
| 	Format(zonePoint, sizeof(zonePoint), "%i|%s", zone, point ? "1":"0");
 | |
| 	menu.AddItem(zonePoint, buffer);
 | |
| 	menu.ExitBackButton = false;
 | |
| 	menu.ExitButton = false;
 | |
| 	menu.Display(client, MENU_TIME_FOREVER);
 | |
| }
 | |
| 
 | |
| public int CreateZoneMenuHandler(Menu menu, MenuAction action, int client, int choice)
 | |
| {
 | |
| 	if (action == MenuAction_Select)
 | |
| 	{
 | |
| 		char buffer[5], array[2][2];
 | |
| 		int zone, point;
 | |
| 		menu.GetItem(0, buffer, sizeof(buffer));	
 | |
| 		ExplodeString(buffer, "|", array, 2, 2);
 | |
| 		zone = StringToInt(array[0]);
 | |
| 		point = StringToInt(array[1]);
 | |
| 		//PrintToChatAll("%s - %s %s - %i %i", buffer, array[0], array[1], zone, point);
 | |
| 		
 | |
| 		if (point == 0)
 | |
| 		{
 | |
| 			GetClientAbsOrigin(client, g_fStartOrigins[zone]);
 | |
| 			g_iSnapToClient = zone;
 | |
| 			CreateZoneMenu(client, zone, true);
 | |
| 		}
 | |
| 		if (point == 1)
 | |
| 		{
 | |
| 			GetClientAbsOrigin(client, g_fEndOrigins[zone]);
 | |
| 			g_iSnapToClient = -1;
 | |
| 			CreateTrigger(zone);
 | |
| 			ZoneMenu(client, g_bEditorComesFromMenu);
 | |
| 		}
 | |
| 	}
 | |
| 	if (action == MenuAction_End)
 | |
| 	{
 | |
| 		delete menu;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| public void TierMenu(int client)
 | |
| {
 | |
| 	Menu menu = new Menu(TierMenuHandler);
 | |
| 	menu.SetTitle("Choose a tier");
 | |
| 	menu.AddItem("1", "Tier 1");
 | |
| 	menu.AddItem("2", "Tier 2");
 | |
| 	menu.AddItem("3", "Tier 3");
 | |
| 	menu.AddItem("4", "Tier 4");
 | |
| 	menu.AddItem("5", "Tier 5");
 | |
| 	menu.AddItem("6", "Tier 6");
 | |
| 	menu.ExitButton = true;
 | |
| 	menu.ExitBackButton = true;
 | |
| 	menu.Display(client, MENU_TIME_FOREVER);
 | |
| }
 | |
| 
 | |
| public int TierMenuHandler(Handle menu, MenuAction action, int client, int choice)
 | |
| {
 | |
| 	switch(action)
 | |
| 	{
 | |
| 		case MenuAction_Select:
 | |
| 		{
 | |
| 			g_iTier = choice + 1;
 | |
| 			SetMapTier(g_iTier);
 | |
| 			PrintToChat(client, "Setting the maps tier to %i", g_iTier);
 | |
| 			TimerAdminMenu(client);
 | |
| 		}	
 | |
| 		case MenuAction_Cancel:
 | |
| 		{
 | |
| 			if (choice == MenuCancel_ExitBack)
 | |
| 			{
 | |
| 				TimerAdminMenu(client);
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		case MenuAction_End:
 | |
| 		{
 | |
| 			delete menu;
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| public void SQL_RequestTop(Database db, int userid, int numQueries, DBResultSet[] results, any[] queryData)
 | |
| {
 | |
| 	if (db == null)
 | |
| 	{
 | |
| 		SetFailState("Lost connection to the database, will attempt to reconnect on map change");
 | |
| 		return;
 | |
| 	}
 | |
| 	
 | |
| 	int client = GetClientOfUserId(userid);
 | |
| 	
 | |
| 	if (!isValidClient(client))
 | |
| 		return;
 | |
| 	
 | |
| 	if (results[0].RowCount == 0)
 | |
| 	{	
 | |
| 		TimerPrintToChat(client, false, "%T", "MapNotFound", LANG_SERVER);
 | |
| 		return;
 | |
| 	}
 | |
| 	
 | |
| 	char cMap[64];
 | |
| 	results[0].FetchRow();
 | |
| 	results[0].FetchString(0, cMap, sizeof(cMap));
 | |
| 	
 | |
| 	if (results[1].RowCount == 0)
 | |
| 	{	
 | |
| 		TimerPrintToChat(client, false, "%T", "TimesNotFound", LANG_SERVER, cMap);
 | |
| 		return;
 | |
| 	}
 | |
| 	
 | |
| 	char cBuffer[128], cTime[16], cTimeToWR[16], cName[64];
 | |
| 	float fTime, fTimeToWR, fWR;
 | |
| 	int timescompleted;
 | |
| 	
 | |
| 	Menu menu = new Menu(TopTimeMenuHandler);
 | |
| 	
 | |
| 	Format(cBuffer, sizeof(cBuffer), "Top Times for %s", cMap);
 | |
| 	menu.SetTitle(cBuffer);
 | |
| 	
 | |
| 	results[1].FetchRow();
 | |
| 	results[1].FetchString(0, cName, sizeof(cName));
 | |
| 	fTime = fWR = results[1].FetchFloat(1);
 | |
| 	timescompleted = results[1].FetchInt(2);
 | |
| 	
 | |
| 	TimerFormat(fTime, cTime, sizeof(cTime), true, false);
 | |
| 	Format(cBuffer, sizeof(cBuffer), "%s\n%s (+00:00.00) (%i)", cName, cTime, timescompleted);
 | |
| 	
 | |
| 	menu.AddItem("", cBuffer);
 | |
| 	
 | |
| 	while (results[1].FetchRow())
 | |
| 	{
 | |
| 		results[1].FetchString(0, cName, sizeof(cName));
 | |
| 		fTime = results[1].FetchFloat(1);
 | |
| 		fTimeToWR = fTime - fWR;
 | |
| 		timescompleted = results[1].FetchInt(2);
 | |
| 		
 | |
| 		TimerFormat(fTime, cTime, sizeof(cTime), true, false);
 | |
| 		TimerFormat(fTimeToWR, cTimeToWR, sizeof(cTimeToWR), true, true);
 | |
| 		Format(cBuffer, sizeof(cBuffer), "%s\n%s (%s) (%i)", cName, cTime, cTimeToWR, timescompleted);
 | |
| 		
 | |
| 		menu.AddItem("", cBuffer);
 | |
| 	}
 | |
| 	menu.ExitButton = true;
 | |
| 	menu.Display(client, MENU_TIME_FOREVER);
 | |
| 	
 | |
| }
 | |
| 
 | |
| public int TopTimeMenuHandler(Handle menu, MenuAction action, int client, int choice)
 | |
| {
 | |
| 	switch(action)
 | |
| 	{
 | |
| 		case MenuAction_End:
 | |
| 		{
 | |
| 			delete menu;
 | |
| 		}
 | |
| 	}
 | |
| } |