// .----------------------------------------------------------.
// .                ___________________                       .
// .               /   _____/\______   \                      .
// .               \_____  \  |    |  _/                      .
// .               /        \ |    |   \                      .
// .              /_______  / |______  /                      .
// .                      \/         \/                       .
// .               [ Advanced Scripts ]                       .
// .                                                    v1.2  .
// .----------------------------------------------------------.
// ;               https:github.com/SoulBlaker/               ;
// .----------------------------------------------------------.
// . Script:                                                  .
// .  Death Arena                                             .
// .----------------------------------------------------------.
// . Por: SoulBlaker   Comptivel: eAthena Based         v1.0 .
// .----------------------------------------------------------.
// . Descrio:                                               .
// .  Descrio do npc no arquivo Readme.txt na seo 1.0.    .
// .----------------------------------------------------------.
// . Changelog da Verso:                                     .
// .  * 1.0 [SoulBlaker]                                      .
// .	- Iniciado NPC.                                       .
// *----------------------------------------------------------*

// [Nota 1]: Ponha 0 para desabilitar esta opo.
// [Nota 2]: Sistema de configuraes de avisos na arena.
//			 [0]: Desabilita avisos na arena.
//			 [1]: Habilita somente mensagem global no mapa da arena ao matar um jogador.
//			 [2]: Habilita somente sons de eventos ao matar um jogador.
//			 [3]: Habilita mensagem global no mapa da arena e sons de eventos ao matar um jogador.
// [Nota 3]: O valor mximo  120.
// [Nota 4]: As configuraes de sons so feito atravs de uma matriz, quando o jogador chega a
//			 quantidade de mortes o som  tocado, lembre-se que a matriz que seja configurada
//			 na indice '0' ser a que repetir quando o jogador ultrapassar a quantidade mxima 
//			 de mortes feita sobre os jogadores.
-	script	DeathArena#Main::DeathArena	-1,{

OnInit:
	// *---------------------------------------------*
	// *               Configuraes                 *
	// *---------------------------------------------*
	setarray $@da_BasicSettings$[0],
						99,					// Nvel de GM para Configuraes.
						3,					// Sistema de eventos de avisos na arena. [Nota 2]
						1,					// Habilitar janela de chat em cima do npc? [Nota 1]
						"Death Arena",				// Mensagem a ser exibida na janela de chat do npc ou referncia sobre o npc.
						"^8A2BE2[Death Arena]^000000",		// Nome do npc que ser exibido nas janelas de dialogo do npc.
						1,					// Checar se caso um item na restrio seja carta se ele est equipada em um equipamento?
						10,					// Total de resultados exibidos por ranking. [Nota 3]
						0					// Nvel de GM para utilizar o comando de acessar raking.
	;
	
	setarray $@da_Color$[0],
						"FF0000",				// Cor hexadecimal para opes de menus com a funo de Cancelar.
						"FFA500",				// Cor hexadecimal para opes de menus com a funo de Voltar.
						"FFA500",				// Cor hexadecimal para opes de menus com a funo de Prximo/Anterior.
						"0000FF",				// Cor hexadecimal para uma referncia um objeto para funo.
						"0000FF",				// Cor hexadecimal para opo do menu de administrador.
						"0000FF",				// Cor hexadecimal para referncia sobre o npc.
						"0000FF" 				// Cor hexadecimal parao cabealho do rank.
	;
						
	setarray $@da_DataBase$[0],
						"da_arena",				// Banco de Dados de arenas.
						"da_group",				// Banco de Dados do Grupo de restries.
						"da_restrictions",			// Banco de Dados das restries.
						"da_ranking"				// Banco de Dados do Ranking.
	;

	// Configuraes dos sons da arena. [Nota 4]
	//	<quantidade_morte>, "<wav>"
	setarray $@da_SoundEffect$[0],
						0, "death_arena_15.wav",	// Monster Kill
						1, "death_arena_01.wav",	// First Blood
						2, "death_arena_02.wav",	// Double Kill
						3, "death_arena_03.wav",	// Triple Kill
						4, "death_arena_04.wav",	// Mega Kill
						5, "death_arena_05.wav",	// Ultra Kill
						6, "death_arena_06.wav",	// Killing Spree
						7, "death_arena_07.wav",	// Ownage
						8, "death_arena_08.wav",	// Holy Shit
						9, "death_arena_09.wav",	// Good Like
						10, "death_arena_10.wav",	// Dominating
						11, "death_arena_11.wav",	// Unstoppable
						12, "death_arena_12.wav",	// Combowhore
						13, "death_arena_14.wav"	// Whicked Sick
	;
						
	bindatcmd "damanager", "da_arena::OnManagerScript", atoi($@da_BasicSettings$[0]), atoi($@da_BasicSettings$[0]);
	bindatcmd "daranking", "da_arena::OnRanking", atoi($@da_BasicSettings$[7]);
	donpcevent "DeathArena::OnLoadMapFlags";
	
	if( atoi($@da_BasicSettings$[2]) )
		donpcevent "da_arena::OnWaitingRoom";
	end;
	
OnPCKillEvent:
	if( callfunc("getArenaInfo", 0, strcharinfo(3)) )
	{
		set da_kill_count, da_kill_count + 1;
	
		// Sistemas de sons.
		if( atoi($@da_BasicSettings$[1]) >= 2 )
		{
			if( da_kill_count >= atoi($@da_SoundEffect$[(getarraysize($@da_SoundEffect$)-2)]) )
				soundeffectall $@da_SoundEffect$[1], 0, strcharinfo(3);
			else {
				for( set .@i, 2; .@i < getarraysize($@da_SoundEffect$); set .@i, .@i + 2 )
				{
					if( da_kill_count == atoi($@da_SoundEffect$[.@i]) )
					{
						soundeffectall $@da_SoundEffect$[(.@i+1)], 0, strcharinfo(3);
						break;
					}
				}
			}
		}

		set .@type, callfunc("getArenaInfo", 1, strcharinfo(3));
		
		// Nome dos personagens
		set .@killed_name$, rid2name(killedrid);
		set .@killer_name$, strcharinfo(0);
		
		// Id dos personagens
		set .@killed_id, getcharid(0, .@killed_name$);
		set .@killer_id, getcharid(0);
		
		// Id dos grupos
		set .@killed_party_id, getcharid(1, .@killed_name$);
		set .@killer_party_id, getcharid(1);
		
		// Nome dos grupos
		set .@killed_party_name$, getpartyname(.@killed_party_id);
		set .@killer_party_name$, getpartyname(.@killer_party_id);
		
		// Id dos clns
		set .@killed_guild_id, getcharid(2, .@killed_name$);
		set .@killer_guild_id, getcharid(2);
		
		// Nome dos clns
		set .@killed_guild_name$, getguildname(.@killed_guild_id);
		set .@killer_guild_name$, getguildname(.@killer_guild_id);
		
		callfunc "UpdateRanking", 0, .@killer_id, .@killer_name$, .@killed_id, .@killed_name$;
		
		if( .@type == 1 )
			callfunc "UpdateRanking", 1, .@killer_guild_id, .@killer_guild_name$, .@killed_guild_id, .@killed_guild_name$;
		else if( .@type == 2)
			callfunc "UpdateRanking", 2, .@killer_party_id, .@killer_party_name$, .@killed_party_id, .@killed_party_name$;
		
		if( atoi($@da_BasicSettings$[1]) == 1 || atoi($@da_BasicSettings$[1]) == 3 )
			mapannounce strcharinfo(3), "O jogador [" + .@killer_name$ + "] derrotou o jogador [" + .@killed_name$ + "] e  a " + da_kill_count + " cabea consecutiva que ele cortou!", bc_all, "0x00FF00";
	
		message strcharinfo(0), "Voc derrotou " + da_kill_count + " jogadores.";
	}
	end;
	
OnLoadMapFlags:
	for( set .@type, 0; .@type < 2; set .@type, .@type + 1 )
	{
		query_sql "SELECT `map_index`, `group_id` FROM `" + $@da_DataBase$[0] + "` WHERE `type`='" + .@type + "'", .@mapindex$, .@group_id;
		
		for( set .@i, 0; .@i < getarraysize(.@mapindex$); set .@i, .@i + 1 )
		{
			setmapflag .@mapindex$[.@i], mf_nosave;
			setmapflag .@mapindex$[.@i], mf_nomemo;
			setmapflag .@mapindex$[.@i], mf_noteleport;
			setmapflag .@mapindex$[.@i], mf_nowarp;
			setmapflag .@mapindex$[.@i], mf_nowarpto;
			setmapflag .@mapindex$[.@i], mf_pvp;
			
			if( .@type == 1 )
				setmapflag .@mapindex$[.@i], mf_pvp_noguild;
			else if( .@type == 2 )
				setmapflag .@mapindex$[.@i], mf_pvp_noparty;
				
			if( callfunc("GetGroupInfo", 2, .@group_id[.@i]) )
				setmapflag .@mapindex$[.@i], mf_nocommand;
		}
	}
	end;
}

prontera,162,185,3	script	Death Arena#da_arena01::da_arena	4_F_NFDEADKAFRA,{

	set .@loop_1, 1;
	while(.@loop_1)
	{
		cutin "death_arena", 2;
		mes $@da_BasicSettings$[4];
		mes "Bem-vindo a ^" + $@da_Color$[5] + $@da_BasicSettings$[3] + "^000000.";
		mes "Em que posso ajudar?";
		next;
		switch( select("- r para uma arena.", "- Ranking.", (getgmlevel()>=atoi($@da_BasicSettings$[0])?"^"+ $@da_Color$[4] + "- Gerenciar.^000000":""), "^" + $@da_Color$[0] + "- Cancelar.^000000") )
		{
			case 1:
				// r para um arena.
				set .@loop_2, 1;
				while(.@loop_2)
				{
					mes $@da_BasicSettings$[4];
					mes "Muito bem, escolha o tipo de arena que deseja entrar.";
					next;
					set .@type, select("- Jogadores vs Jogadores.", "- Clns vs Clns.", "- Grupos vs Grupos.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
					switch(.@type)
					{
						default:
							set .@loop_3, 1;
							while(.@loop_3)
							{
								setarray .@mask_name$[0], "Jogadores vs Jogadores", "Clns vs Clns", "Grupos vs Grupos";
								mes $@da_BasicSettings$[4];
								mes "Escolha ^" + $@da_Color$[3] + "arena de " + .@mask_name$[.@type] + "^000000 que deseja entrar.";
								next;
								query_sql "SELECT `auto_id`, `map_index`, `coord_x`, `coord_y`, `name`, `max_player`, `min_level`, `max_level`, `group_id` FROM `" + $@da_DataBase$[0] + "` WHERE `type`='" + .@type + "' ORDER BY `name` ASC", .@auto_id, .@map_index$, .@coord_x, .@coord_y, .@name$, .@max_player, .@min_level, .@max_level, .@group_id;
								
								set .@BuildArenaMenu$, "";
								for( set .@i, 0; .@i < getarraysize(.@auto_id); set .@i, .@i + 1 )
									set .@BuildArenaMenu$, .@BuildArenaMenu$ + "- " + .@name$[.@i]  + ". [" + getmapusers(.@map_index$[.@i]) + (.@max_player[.@i]?"/"+.@max_player[.@i]:"") + "]:";
									
								set .@chooseArena, select(.@BuildArenaMenu$+"^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
																
								if( .@chooseArena == getarraysize(.@auto_id) )
									set .@loop_3, 0;
								else if( .@chooseArena > getarraysize(.@auto_id) )
								{
									set .@loop_3, 0;
									set .@loop_2, 0;
									set .@loop_1, 0;
								}
								else {
									set .@loop_4, 1;
									while(.@loop_4)
									{
										mes $@da_BasicSettings$[4];
										mes "Deseja entrar na arena ^" + $@da_Color$[3] + .@name$[.@chooseArena] + "^000000?";
										next;
										switch( select("- Sim, por favor.", "- Informaes.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
										{
											case 1:
												// Entrar na arena.
												set .@item_id, 0;
												set .@class_id, 0;
												
												for( set .@t, 0; .@t < 2; set .@t, .@t + 1 )
												{
													cleararray .@object_id[0], 0, getarraysize(.@object_id);
													query_sql "SELECT `auto_id`, `value` FROM `" + $@da_DataBase$[2] + "` WHERE `type`='" + .@t + "' AND `group_id`='" + .@group_id[.@chooseArena] + "'", .@object_id, .@object_value;
													
													for( set .@i, 0; .@i < getarraysize(.@object_id); set .@i, .@i + 1 )
													{
														if( .@t == 0 )
														{
															if( countitem(.@object_value[.@i]) || (atoi($@da_BasicSettings$[5]) && checkequipedcard(.@object_value[.@i])) )
																set .@item_id, .@object_value[.@i];
														}
														else if( Class == .@object_value[.@i] )
																set .@class_id, .@object_value[.@i];
													}	
												}
													
												if( .@item_id )
												{
													mes $@da_BasicSettings$[4];
													mes "Voc no pode entrar na arena com o item ^" + $@da_Color$[3] + getitemname(.@item_id) + "^000000,  saiba os requisitos no menu de ^" + $@da_Color$[3] + "Informaes^000000.";
													next;
												}
												else if( .@class_id )
												{
													mes $@da_BasicSettings$[4];
													mes "Voc no pode entrar na arena com a classe ^" + $@da_Color$[3] + jobname(.@class_id) + "^000000,  saiba os requisitos no menu de ^" + $@da_Color$[3] + "Informaes^000000.";
													next;
												}
												else if( .@max_player[.@chooseArena] && getmapusers(.@map_index$[.@chooseArena]) >= .@max_player[.@chooseArena] )
												{
													mes $@da_BasicSettings$[4];
													mes "A quantidade mxima de jogadores na arena j foi atingida, tente novamente mais tarde!";
													next;
												}
												else if( .@min_level[.@chooseArena] && BaseLevel < .@min_level[.@chooseArena] )
												{
													mes $@da_BasicSettings$[4];
													mes "Voc no tem o nvel minimo para entrar na arena, saiba os requisitos no menu de ^" + $@da_Color$[3] + "Informaes^000000.";
													next;
												}
												else if( .@max_level[.@chooseArena] && BaseLevel > .@max_level[.@chooseArena] )
												{
													mes $@da_BasicSettings$[4];
													mes "Voc ultrapassou do nvel mximo para entrar na arena, saiba os requisitos no menu de ^" + $@da_Color$[3] + "Informaes^000000.";
													next;
												}
												else if( .@type == 1 && !getcharid(2) )
												{
													mes $@da_BasicSettings$[4];
													mes " necessrio estar em um cl para entrar na arena!";
													next;
												}
												else if( .@type == 2 && !getcharid(1) )
												{
													mes $@da_BasicSettings$[4];
													mes " necessrio estar em um grupo para entrar na arena!";
													next;
												}
												else {
													// Levar para a arena.
													mes $@da_BasicSettings$[4];
													mes "Vou te mandar para arena ^" + $@da_Color$[3] + .@name$[.@chooseArena] + "^000000, tenha uma boa batalha!";
													close2;
													set da_kill_count, 0;
													cutin "", 255;
													warp .@map_index$[.@chooseArena], .@coord_x[.@chooseArena], .@coord_y[.@chooseArena];
													end;
												}
												break;
											case 2:
												// Informaes.
												// Entrar na arena.
												mes "^" + $@da_Color$[3] + "Arena:^000000 " + .@name$[.@chooseArena];
												mes "^" + $@da_Color$[3] + "Tipo: ^000000" + .@mask_name$[.@type];
												mes "^" + $@da_Color$[3] + "Mapa: ^000000" + .@map_index$[.@chooseArena] + (.@coord_x[.@chooseArena]&&.@coord_y[.@chooseArena]?"x["+.@coord_x[.@chooseArena]+"] - y["+.@coord_y[.@chooseArena]+"]":"");
												mes "^" + $@da_Color$[3] + "Mximo de Jogadores: ^000000" + (.@max_playe[.@chooseArena]?.@max_player[.@chooseArena]:"ilimitado");
												mes "^" + $@da_Color$[3] + "Nvel Minimo de Base: ^000000" + (.@min_level[.@chooseArena]?.@min_level[.@chooseArena]:"qualquer");
												mes "^" + $@da_Color$[3] + "Nvel Mximo de Base: ^000000" + (.@max_level[.@chooseArena]?.@max_level[.@chooseArena]:"qualquer");
												
												set .@item_list$, "";
												set .@class_list$, "";
												
												for( set .@t, 0; .@t < 2; set .@t, .@t + 1 )
												{
													cleararray .@object_id[0], 0, getarraysize(.@object_id);
													query_sql "SELECT `auto_id`, `value` FROM `" + $@da_DataBase$[2] + "` WHERE `type`='" + .@t + "' AND `group_id`='" + .@group_id[.@chooseArena] + "'", .@object_id, .@object_value;
													
													for( set .@i, 0; .@i < getarraysize(.@object_id); set .@i, .@i + 1 )
													{
														if( !.@t )
															set .@item_list$, .@item_list$ + getitemname(.@object_value[.@i]) + ((.@i+1)==getarraysize(.@object_id)?".":", ");
														else
															set .@class_list$, .@class_list$ + jobname(.@object_value[.@i]) + ((.@i+1)==getarraysize(.@object_id)?".":", ");
													}	
												}
												
												if( .@item_list$ != "" )
													mes "^" + $@da_Color$[3] + "Itens restritos:^000000 " + .@item_list$;
												if( .@class_list$ != "" )
													mes "^" + $@da_Color$[3] + "Classes restritas:^000000 " + .@class_list$;
												
												next;
												break;
											case 3:
												set .@loop_4, 0;
												break;
											case 4:
												set .@loop_4, 0;
												set .@loop_3, 0;
												set .@loop_2, 0;
												set .@loop_1, 0;
												break;
										}
									}
								}
							}
							break;
						case 3:
							set .@loop_2, 0;
							break;
						case 4:
							set .@loop_1, 0;
							set .@loop_2, 0;
							break;
					}
				}
				break;
			case 2:
				// Ranking.
				OnRanking: //atcmd_func
				set .@loop_2, 1;
				while(.@loop_2)
				{
					mes $@da_BasicSettings$[4];
					mes "Qual o ^" + $@da_Color$[3] + "Ranking^000000 deseja visualizar?";
					next;
					set .@type, select("- Ranking de Jogadores.", "- Ranking de Clns.", "- Ranking de Grupos.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
					switch(.@type)
					{
						default:
							set .@loop_3, 1;
							setarray .@mask_name$, "Jogadores", "Grupos", "Clns";
							while(.@loop_3)
							{
								mes $@da_BasicSettings$[4];
								mes "Como deseja filtrar o ^" + $@da_Color$[3] + "Rank de " + .@mask_name$[.@type] + "^000000?";
								next;
								set .@filter, select("- Filtrar por Vitrias.", "- Filtrar por Derrotas.", "- Filtrar Proporcionalmente.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
								switch(.@filter)
								{
									default:
										set .@row_init, 0;
										set .@row_end, atoi($@da_BasicSettings$[6])-1;
										set .@row_position, 1;
										set .@loop_4, 1;
										while(.@loop_4)
										{
											mes "^"+$@da_Color$[6] + "[Rank: " + .@mask_name$[.@type] + "]^000000";
											mes "";
											
											query_sql "SELECT `object_id`, `object_name`, `wins`, `loss`, `ration` FROM `" + $@da_DataBase$[3] + "` WHERE `type`='" + .@type + "' ORDER BY `" + (.@filter==1?"loss":(.@filter==2?"ration":"wins")) + "` DESC LIMIT " + .@row_init + "," + atoi($@da_BasicSettings$[6]) + "", .@object_id, .@object_name$, .@wins, .@loss, .@ration;
											
											if( getarraysize(.@object_id) )
											{
												for( set .@i, 0; .@i < getarraysize(.@object_id)&&.@loop_4; set .@i, .@i + 1 )
												{
													mes "^"+$@da_Color$[3] + "Posio:^000000 " + .@row_position;
												
													if( .@type == 1 )
														mes "^"+$@da_Color$[3] + "Cl:^000000 " + .@object_name$[.@i];
													else if( .@type == 2 )
														mes "^"+$@da_Color$[3] + "Grupo:^000000 " + .@object_name$[.@i];
													else
													{
														mes "^"+$@da_Color$[3] + "Jogador:^000000 " + .@object_name$[.@i];
														mes "^"+$@da_Color$[3] + "Cl:^000000 " + callfunc("GetInfoName", 0, .@object_id[.@i]);
														mes "^"+$@da_Color$[3] + "Grupo:^000000 " + callfunc("GetInfoName", 1, .@object_id[.@i]);
													}
												
													mes "^"+$@da_Color$[3] + "Vitrias:^000000 " + .@wins[.@i];
													mes "^"+$@da_Color$[3] + "Derrotas:^000000 " + .@loss[.@i];
													mes "^"+$@da_Color$[3] + "Proporo:^000000 " + .@ration[.@i];
													mes "";
													mes " ";
												
													set .@row_position, .@row_position + 1;
												}
											
												set .@tmp_row_init, .@row_init;
												set .@tmp_row_end, .@row_end;
												set .@row_init, .@row_end + 1;
												set .@row_end, .@row_end + atoi($@da_BasicSettings$[6]);
											
												query_sql "SELECT `object_id` FROM `" + $@da_DataBase$[3] + "` WHERE `type`='" + .@filter + "' ORDER BY `" + (.@filter==1?"loss":(.@filter==2?"ration":"wins")) + "` ASC LIMIT " + (.@row_end+1) + "," + (.@row_end+atoi($@da_BasicSettings$[6])) + "", .@tmp_object_next;
												next;
												switch( select((.@row_init>atoi($@da_BasicSettings$[6])?"^"+$@da_Color$[2]+"- Anterior.^000000":""), (getarraysize(.@tmp_object_next)?"^"+$@da_Color$[2]+"- Prximo.^000000":""), "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
												{
													case 1:
														set .@row_init, .@tmp_row_init;
														set .@row_end, .@tmp_row_end;
														break;
													case 2:
														break;
													case 3:
														set .@loop_4, 0;
														break;
													case 4:
														set .@loop_4, 0;
														set .@loop_3, 0;
														set .@loop_2, 0;
														set .@loop_1, 0;
														break;
												}
											}
											else {
												mes "Nenhum resultado a ser exibido.";
												set .@loop_4, 0;
											}
										}
										break;
									case 3:
										set .@loop_3, 0;
										break;
									case 4:
										set .@loop_3, 0;
										set .@loop_2, 0;
										set .@loop_1, 0;
										break;
								}
							}
							break;
						case 3:
							set .@loop_2, 0;
							break;
						case 4:
							set .@loop_1, 0;
							set .@loop_2, 0;
							break;
					}
				}
				break;
			case 3:
				// Gerenciar.
				OnManagerScript: //atcmd_func
				set .@loop_2, 1;
				while(.@loop_2)
				{
					mes $@da_BasicSettings$[4];
					mes "O que deseja gerenciar na ^" + $@da_Color$[5] + $@da_BasicSettings$[3] + "^000000?";
					next;
					switch( select("- Gerenciar Grupos de Restries.", "- Gerenciar Arenas.", "- Gerenciar Ranking.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
					{
						case 1:
							// Gerenciar Grupos de Restries.
							set .@loop_3, 1;
							while(.@loop_3)
							{
								mes $@da_BasicSettings$[4];
								mes "O que deseja gerenciar no ^" + $@da_Color$[3] + "Grupos de Restries^000000?";
								next;
								switch( select("- Adicionar Grupo.", "- Remover Grupo.", "- Alterar nome de um Grupo.", "- Gerenciar Regras de Restries.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
								{
									case 1:
										// Adicionar Grupo.
										if( callfunc("GetGroupInfo", 0) >= 120 )
										{
											mes $@da_BasicSettings$[4];
											mes "O limite mximo de ^" + $@da_Color$[3] + "Grupos de Restries^000000 j foi atingido.";
											next;
											break;
										}
										
										set .@loop_4, 1;
										while(.@loop_4)
										{
											mes $@da_BasicSettings$[4];
											mes "Por favor, digite o nome para o novo ^" + $@da_Color$[3] + "Grupo de Restries^000000.";
											next;
											input .@GroupName$;
										
											if( .@GroupName$ == "" )
											{
												mes $@da_BasicSettings$[4];
												mes "Voc tem que digitar um nome para o novo ^" + $@da_Color$[3] + "Grupo de Restries^000000!";
												mes "Deseja tentar novamente?";
												next;
												switch( select("- Sim, por favor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
												{
													case 1:
														break;
													case 2:
														set .@loop_4, 0;
														break;
													case 3:
														set .@loop_4, 0;
														set .@loop_3, 0;
														set .@loop_2, 0;
														set .@loop_1, 0;
														break;
												}
											}
											else {
												mes $@da_BasicSettings$[4];
												mes "Voc tem certeza que deseja adicionar ^" + $@da_Color$[3] + "'" + .@GroupName$ + "'^000000 ao ^" + $@da_Color$[3] + "Grupos de Restries^000000?";
												next;
												switch( select("- Sim, por favor.", "- No, desejo adicionar outro.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
												{
													case 1:
														// Adicionar ao grupo de restries.
														query_sql "INSERT INTO `" + $@da_DataBase$[1] + "` (name) VALUES ('" + .@GroupName$ + "')";
														mes $@da_BasicSettings$[4];
														mes "O Grupo ^" + $@da_Color$[3] + "'" + .@GroupName$ + "'^000000 foi adicionado!";
														mes "Para adicionar restries a este grupo, v at ao menu de ^" + $@da_Color$[3] + "Gerenciar Regras de Restries^000000.";
														next;
														set .@loop_4, 0;
														break;
													case 2:
														break;
													case 3:
														set .@loop_4, 0;
														break;
													case 4:
														set .@loop_4, 0;
														set .@loop_3, 0;
														set .@loop_2, 0;
														set .@loop_1, 0;
														break;
												}
											}
										}
										break;
									case 2:
										// Remover Grupo.
										if( !callfunc("GetGroupInfo", 0) )
										{
											mes $@da_BasicSettings$[4];
											mes "No h ^" + $@da_Color$[3] + "Grupos de Restries^000000 para ser removido.";
											next;
											break;
										}
										
										set .@loop_4, 1;
										while(.@loop_4)
										{
											mes $@da_BasicSettings$[4];
											mes "Selecione um ^" + $@da_Color$[3] + "Grupo de Restries^000000 para ser removido.";
											next;
											
											set .@BuildGroupMenu$, "";
											query_sql "SELECT `auto_id`, `name` FROM `" + $@da_DataBase$[1] + "` ORDER BY `name` ASC", .@groups_id, .@groups_name$;
											
											for( set .@i, 0; .@i < getarraysize(.@groups_id); set .@i, .@i + 1 )
												set .@BuildGroupMenu$, .@BuildGroupMenu$ + "- " + .@groups_name$[.@i] + ".:";
												
											set .@chooseGroup, select(.@BuildGroupMenu$+"^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
											
											if( .@chooseGroup == getarraysize(.@groups_id) )
												set .@loop_4, 0;
											else if( .@chooseGroup > getarraysize(.@groups_id) )
											{
												set .@loop_4, 0;
												set .@loop_3, 0;
												set .@loop_2, 0;
												set .@loop_1, 0;
											}
											else {
												mes $@da_BasicSettings$[4];
												mes "Tem certeza que deseja remover o Grupo ^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000?";
												next;
												switch( select("- Sim, por favor.", "- No, desejo remover outro.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
												{
													case 1:
														// Remover do grupo de restries.
														set .@loop_5, 1;
														while(.@loop_5)
														{
															set .@total_arena, callfunc("GetGroupInfo", 1, .@groups_id[.@chooseGroup]);
															if( .@total_arena )
															{
																mes $@da_BasicSettings$[4];
																mes "H ^" + $@da_Color$[3] + "'" + .@total_arena + "'^000000 arenas cadastrada nesse grupo, o que deseja fazer com elas?";
																next;
																switch( select("- Mover para outro grupo.", "- Remover todas as arenas.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																{
																	case 1:
																		// Selecionar outro grupo.
																		set .@loop_6, 1;
																		while(.@loop_6)
																		{
																			mes $@da_BasicSettings$[4];
																			mes "Por favor, selecione o ^" + $@da_Color$[3] + "novo grupo^0000000 em que deseja mover as arenas!";
																			mes $@da_BasicSettings$[4];
																			next;
																			set .@nBuildGroupMenu$, "";
																			for( set .@i, 0; .@i < getarraysize(.@groups_id); set .@i, .@i + 1 )
																				set .@nBuildGroupMenu$, (.@groups_id[.@i]==.@groups_id[.@chooseGroup]?"":.@groups_name$[.@i]) + ":";
																				
																			set .@nchooseGroup, select(.@nBuildGroupMenu$+"^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
																			
																			if( .@nchooseGroup == getarraysize(.@groups_id) )
																					set .@loop_6, 0;
																			else if( .@nchooseGroup > getarraysize(.@groups_id) )
																			{
																					set .@loop_6, 0;
																					set .@loop_5, 0;
																					set .@loop_4, 0;
																					set .@loop_3, 0;
																					set .@loop_2, 0;
																					set .@loop_1, 0;
																			}
																			else {
																				mes $@da_BasicSettings$[4];
																				mes "Tem certeza que deseja mover as arenas do Grupo ^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 para o Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@nchooseGroup] + "'^000000?";
																				next;
																				switch( select("- Sim, por favor.", "- No, desejo mover para outro grupo.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																				{
																					case 1:
																						// Mover para outro grupo.
																						query_sql "UPDATE `" + $@da_DataBase$[0] + "` SET `group_id`='" + .@groups_id[.@nchooseGroup] + "' WHERE `group_id`='" + .@groups_id[.@chooseGroup] + "'";
																						set .@loop_6, 0;
																						break;
																					case 2:
																						break;
																					case 3:
																						set .@loop_6, 0;
																						break;
																					case 4:
																						set .@loop_6, 0;
																						set .@loop_5, 0;
																						set .@loop_4, 0;
																						set .@loop_3, 0;
																						set .@loop_2, 0;
																						set .@loop_1, 0;
																						break;
																				}
																			}
																		}
																		break;
																	case 2:
																		// Remover todas as arenas.
																		query_sql "DELETE FROM `" + $@da_DataBase$[0] + "` WHERE `group_id`='" + .@groups_id[.@chooseGroup] + "'";
																		break;
																	case 3:
																		set .@loop_5, 0;
																		break;
																	case 4:
																		set .@loop_5, 0;
																		set .@loop_4, 0;
																		set .@loop_3, 0;
																		set .@loop_2, 0;
																		set .@loop_1, 0;
																		break;
																}
															}
															else {
																// Remover o grupo.
																query_sql "DELETE FROM `" + $@da_DataBase$[1] + "` WHERE `auto_id`='" + .@groups_id[.@chooseGroup] + "'";
																
																mes $@da_BasicSettings$[4];
																mes "O Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 foi removido.";
																next;
																set .@loop_5, 0;
																set .@loop_4, 0;
															}
														}
														break;
													case 2:
														break;
													case 3:
														set .@loop_4, 0;
														break;
													case 4:
														set .@loop_4, 0;
														set .@loop_3, 0;
														set .@loop_2, 0;
														set .@loop_1, 0;
														break;
												}
											}
										}
										break;
									case 3:
										// Alterar nome de um Grupo.
										if( !callfunc("GetGroupInfo", 0) )
										{
											mes $@da_BasicSettings$[4];
											mes "No h ^" + $@da_Color$[3] + "Grupos de Restries^000000 para ser removido.";
											next;
											break;
										}
										
										set .@loop_4, 1;
										while(.@loop_4)
										{
											mes $@da_BasicSettings$[4];
											mes "Por favor, selecione o '^" + $@da_Color$[3] + "'" + "Grupo de Restries'^000000 que deseja alterar o nome.";
											next;
											set .@BuildGroupMenu$, "";
											query_sql "SELECT `auto_id`, `name` FROM `" + $@da_DataBase$[1] + "` ORDER BY `name` ASC", .@groups_id, .@groups_name$;
											
											for( set .@i, 0; .@i < getarraysize(.@groups_id); set .@i, .@i + 1 )
												set .@BuildGroupMenu$, .@BuildGroupMenu$ + "- " + .@groups_name$[.@i] + ".:";
												
											set .@chooseGroup, select(.@BuildGroupMenu$+"^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
			
											if( .@chooseGroup == getarraysize(.@groups_id) )
												set .@loop_4, 0;
											else if( .@chooseGroup > getarraysize(.@groups_id) )
											{
												set .@loop_4, 0;
												set .@loop_3, 0;
												set .@loop_2, 0;
												set .@loop_1, 0;
											}
											else
											{
												set .@loop_5, 1;
												while(.@loop_5)
												{
													mes $@da_BasicSettings$[4];
													mes "Por favor, digite um novo nome para o Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000.";
													next;
													input .@GroupName$;
											
													if( .@GroupName$ == "" || .@GroupName$ == .@groups_name$[.@chooseGroup] )
													{
														mes $@da_BasicSettings$[4];
														mes "Voc deve digitar um novo nome para o Grupo '^" + $@da_Color$[3] + "'"+ .@groups_name$[.@chooseGroup] + "'^000000.";
														mes "Deseja tentar novamente?";
														next;
														switch( select("- Sim, por favor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
														{
															case 1:
																break;
															case 2:
																set .@loop_5, 0;
																break;
															case 3:
																set .@loop_5, 0;
																set .@loop_4, 0;
																set .@loop_3, 0;
																set .@loop_2, 0;
																set .@loop_1, 0;
																break;
														}
													}
													else {
														mes $@da_BasicSettings$[4];
														mes "Tem certeza que deseja mudar o nome do Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 para '^" + $@da_Color$[3] + "'" + .@GroupName$ + "'^000000?";
														next;
														switch( select("- Sim, por favor.", "- No, digitar outro.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
														{
															case 1:
																// Alterar nome do grupo.
																query_sql "UPDATE `" + $@da_DataBase$[1] + "` SET `name`='" + .@GroupName$ + "' WHERE `auto_id`='" + .@groups_id[.@chooseGroup] + "'";
																mes $@da_BasicSettings$[4];
																mes "Nome do Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 foi alterado para '^" + $@da_Color$[3] + "'" + .@GroupName$ + "'^000000.";
																next;
																set .@loop_5, 0;
																set .@loop_4, 0;
																break;
															case 2:
																break;
															case 3:
																set .@loop_5, 0;
																break;
															case 4:
																set .@loop_5, 0;
																set .@loop_4, 0;
																set .@loop_3, 0;
																set .@loop_2, 0;
																set .@loop_1, 0;
																break;
														}
													}
												}
											}
										}
										break;
									case 4:
										// Gerenciar Regras de Restries.
										if( callfunc("GetGroupInfo", 0) >= 120 )
										{
											mes $@da_BasicSettings$[4];
											mes "O limite mximo de ^" + $@da_Color$[3] + "Grupos de Restries^000000 j foi atingido.";
											next;
											break;
										}
										
										set .@loop_4, 1;
										while(.@loop_4)
										{
											mes $@da_BasicSettings$[4];
											mes "Selecione o ^" + $@da_Color$[3] + "Grupo de Restries^000000 que deseja gerenciar.";
											next;
											set .@BuildGroupMenu$, "";
											query_sql "SELECT `auto_id`, `name` FROM `" + $@da_DataBase$[1] + "` ORDER BY `name` ASC", .@groups_id, .@groups_name$;
											
											for( set .@i, 0; .@i < getarraysize(.@groups_id); set .@i, .@i + 1 )
												set .@BuildGroupMenu$, .@BuildGroupMenu$ + "- " + .@groups_name$[.@i] + ".:";
												
											set .@chooseGroup, select(.@BuildGroupMenu$ + "^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
											
											if( .@chooseGroup == getarraysize(.@groups_id) )
												set .@loop_4, 0;
											else if( .@chooseGroup > getarraysize(.@groups_id) )
											{
												set .@loop_4, 0;
												set .@loop_3, 0;
												set .@loop_2, 0;
												set .@loop_1, 0;
											}
											else
											{
												set .@loop_5, 1;												
												while(.@loop_5)
												{
													mes $@da_BasicSettings$[4];
													mes "O que deseja gerenciar nas Regras do Grupo ^" + $@da_Color$[3] + .@groups_name$[.@chooseGroup] + "^000000?";
													next;
													switch( select("- Gerenciar Classes ou Itens.", "- Copiar restries para outro Grupo.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
													{
														case 1:
															// Gerenciar Classes ou Itens.
															set .@loop_6, 1;
															while(.@loop_6)
															{
																mes $@da_BasicSettings$[4];
																mes "O que deseja gerenciar de classes e itens nas Regras do Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000?";
																next;
																set .@countItem, callfunc("GetGroupInfo", 2, .@groups_id[.@chooseGroup]);
																set .@countClass, callfunc("GetGroupInfo", 3, .@groups_id[.@chooseGroup]);
																set .@choosetype, select((.@countItem<120?"- Adicionar Itens as Regras de Restries.":""), (.@countClass<120?"- Adicionar Classes as Regras de Restries.":""), (.@countItem?"- Remover Itens das Regras de Restries.":""), (.@countClass?"- Remover Classes das Regras de Restries.":""), "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
																switch(.@choosetype)
																{
																	case 0:
																	case 1:
																		// Adicionar itens ou classes as Regras de Restries.
																		set .@loop_7, 1;
																		while(.@loop_7)
																		{
																			mes $@da_BasicSettings$[4];
																			mes "Por favor, digite o ^" + $@da_Color$[3] + (.@choosetype?"id da classe":"id do item") + "^000000 que deseja adicionar ao Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 de Restries.";
																			next;
																			input .@object_id;
																			if( (.@choosetype == 0 && !.@object_id && getitemname(.@object_id) == "") || (jobname(.@object_id) == "") )
																			{
																				mes $@da_BasicSettings$[4];
																				mes "Voc deve digitar o ^" + $@da_Color$[3] + "id " + (.@choosetype?"da classe":"do item") + " vlido^000000 que deseja adicionar ao Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 de Restries.";
																				mes "Deseja tentar novamente?";
																				next;
																				switch( select("- Sim, por favor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																				{
																					case 1:
																						break;
																					case 2:
																						set .@loop_7, 0;
																						break;
																					case 3:
																						set .@loop_7, 0;
																						set .@loop_6, 0;
																						set .@loop_5, 0;
																						set .@loop_4, 0;
																						set .@loop_3, 0;
																						set .@loop_2, 0;
																						set .@loop_1, 0;
																						break;
																				}
																			}
																			else if( callfunc("checkRestriction", .@groups_id[.@chooseGroup], .@object_id) )
																			{
																				mes $@da_BasicSettings$[4];
																				mes (.@choosetype?"A classe":"O item") + " ^" + $@da_Color$[3] + (.@choosetype?jobname(.@object_id):getitemname(.@object_id)) + "^000000 j existe no Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 de Restries.";
																				mes "Deseja tentar novamente?";
																				next;
																				switch( select("- Sim, por favor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																				{
																					case 1:
																						break;
																					case 2:
																						set .@loop_7, 0;
																						break;
																					case 3:
																						set .@loop_7, 0;
																						set .@loop_6, 0;
																						set .@loop_5, 0;
																						set .@loop_4, 0;
																						set .@loop_3, 0;
																						set .@loop_2, 0;
																						set .@loop_1, 0;
																						break;
																				}
																			}
																			else {
																				mes $@da_BasicSettings$[4];
																				mes "Tem certeza que deseja adicionar " + (.@choosetype?"a classe":"o item") + " ^" + $@da_Color$[3] + "'" + (.@choosetype?jobname(.@object_id):getitemname(.@object_id)) + "'^000000 no Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 de Restries?";
																				next;
																				switch( select("- Sim, por favor.", "- No, desejo adicionar outro.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																				{
																					case 1:
																						// Adicionar item ou classe no grupo de restrio.
																						query_sql "INSERT INTO `" + $@da_DataBase$[2] + "` (group_id, value, type) VALUES (" + .@groups_id[.@chooseGroup] + ", " + .@object_id + ", " + .@choosetype + ")";
																						mes $@da_BasicSettings$[4];
																						mes (.@choosetype?"A classe":"O item") + " '^" + $@da_Color$[3] + "'" + (.@choosetype?jobname(.@object_id):getitemname(.@object_id)) + "'^000000 foi adicionado ao Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 de Restries.";
																						next;
																						set .@loop_7, 0;
																						break;
																					case 2:
																						break;
																					case 3:
																						set .@loop_7, 0;
																						break;
																					case 4:
																						set .@loop_7, 0;
																						set .@loop_6, 0;
																						set .@loop_5, 0;
																						set .@loop_4, 0;
																						set .@loop_3, 0;
																						set .@loop_2, 0;
																						set .@loop_1, 0;
																						break;
																				}
																			}
																		}
																		break;
																	case 2:
																	case 3:
																		set .@choosetype, (.@choosetype==2?0:1);
																		// Remover Itens das Regras de Restries.
																		set .@loop_7, 1;
																		while(.@loop_7)
																		{
																			mes $@da_BasicSettings$[4];
																			mes "Por favor, selecione " + (.@choosetype?"a classe":"o item") + " que deseja remover do Grupo ^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 de Restries.";
																			next;
																			query_sql "SELECT `auto_id`, `value` FROM `" + $@da_DataBase$[2] + "` WHERE `type`='" + .@choosetype + "' AND `group_id`='" + .@groups_id[.@chooseGroup] + "' ORDER BY `value` ASC", .@object_id, .@object_value;
																		
																			set .@BuildObjectMenu$, "";
																			for( set .@i, 0; .@i < getarraysize(.@object_id); set .@i, .@i + 1 )
																				set .@BuildObjectMenu$, .@BuildObjectMenu$ + "- " + (.@choosetype?jobname(.@object_value[.@i]):getitemname(.@object_value[.@i])) + ".:";
																			
																			set .@chooseObject, select(.@BuildObjectMenu$+"^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
											
																			if( .@chooseObject == getarraysize(.@object_id) )
																				set .@loop_7, 0;
																			else if( .@chooseObject > getarraysize(.@object_id) )
																			{
																				set .@loop_7, 0;
																				set .@loop_6, 0;
																				set .@loop_5, 0;
																				set .@loop_4, 0;
																				set .@loop_3, 0;
																				set .@loop_2, 0;
																				set .@loop_1, 0;
																			}
																			else {
																				mes $@da_BasicSettings$[4];
																				mes "Tem certeza que deseja remover " + (.@choosetype?"a classe":"o item") + " ^" + $@da_Color$[3] + (.@choosetype?jobname(.@object_value[.@chooseObject]):getitemname(.@object_value[.@chooseObject])) + "^000000 do Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 de Restries?";
																				next;
																				switch( select("- Sim, por favor.", "- No, desejo remover outro item.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																				{
																					case 1:
																						// Remover o item ou classe do Grupo de Restrio
																						query_sql "DELETE FROM `" + $@da_DataBase$[2] + "` WHERE `auto_id`='" + .@object_id[.@chooseObject] + "'";
																						
																						mes $@da_BasicSettings$[4];
																						mes (.@choostype?"A classe":"O item") + " ^" + $@da_Color$[3] + (.@choosetype?jobname(.@object_value[.@chooseObject]):getitemname(.@object_value[.@chooseObject])) + "^000000 foi removido do Grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "'^000000 de Restries.";
																						next;
																						set .@loop_7, 0;
																						break;
																					case 2:
																						break;
																					case 3:
																						set .@loop_7, 0;
																						break;
																					case 4:
																						set .@loop_7, 0;
																						set .@loop_6, 0;
																						set .@loop_5, 0;
																						set .@loop_4, 0;
																						set .@loop_3, 0;
																						set .@loop_2, 0;
																						set .@loop_1, 0;
																						break;
																				}
																			}
																		}
																		break;
																	case 4:
																		set .@loop_6, 0;
																		break;
																	case 5:
																		set .@loop_6, 0;
																		set .@loop_5, 0;
																		set .@loop_4, 0;
																		set .@loop_3, 0;
																		set .@loop_2, 0;
																		set .@loop_1, 0;
																		break;
																}
															}
															break;
														case 2:
															// Copiar restries para outro Grupo.
															set .@loop_6, 1;
															while(.@loop_6)
															{
																mes $@da_BasicSettings$[4];
																mes "Selecione o ^" + $@da_Color$[3] + "Grupo de Restries^000000 no qual voc deseja que as restries do Grupo ^" + $@da_Color$[3] + .@groups_name$[.@chooseGroup] + "^000000 seja copiada.";
																next;
																set .@BuildtoGroupMenu$, "";
																
																for( set .@i, 0; .@i < getarraysize(.@groups_id); set .@i, .@i + 1 )
																	set .@BuildtoGroupMenu$, .@BuildtoGroupMenu$ + (.@groups_id[.@i]!=.@groups_id[.@chooseGroup]?"- " + .@groups_name$[.@i] + ".":"") + ":";
																	
																set .@choosetoGroup, select(.@BuildtoGroupMenu$+"^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
																
																if( .@choosetoGroup == getarraysize(.@groups_id) )
																	set .@loop_6, 0;
																else if( .@choosetoGroup > getarraysize(.@groups_id) )
																{
																	set .@loop_6, 0;
																	set .@loop_5, 0;
																	set .@loop_4, 0;
																	set .@loop_3, 0;
																	set .@loop_2, 0;
																	set .@loop_1, 0;
																}
																else {
																	setarray .@copy[0], 0, callfunc("GetGroupInfo", 2, .@groups_id[.@choosetoGroup]), callfunc("GetGroupInfo", 2, .@groups_id[.@chooseGroup]), 0, callfunc("GetGroupInfo", 1, .@groups_id[.@choosetoGroup]), callfunc("GetGroupInfo", 1, .@groups_id[.@chooseGroup]);
																	set .@loop_7, 1;
																	while(.@loop_7)
																	{
																		if( !.@copy[0] && (.@copy[1]+.@copy[2]) > 120 )
																		{
																			mes $@da_BasicSettings$[4];
																			mes "A quantidade de item cadastrado no grupo no qual voc deseja adicionar a cpia com a quantidade de item cadastrado no grupo aonde deseja ser copiado  maior que 120.";
																			mes "No  possvel mover os valores do item, deseja continuar sem copiar os itens?";
																			next;
																			switch( select("- Sim, por favor.",  "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																			{
																				case 1:
																					set .@copy[0], 1;
																					break;
																				case 2:
																					set .@loop_7, 0;
																					break;
																				case 3:
																					set .@loop_7, 0;
																					set .@loop_6, 0;
																					set .@loop_5, 0;
																					set .@loop_4, 0;
																					set .@loop_3, 0;
																					set .@loop_2, 0;
																					set .@loop_1, 0;
																					break;
																			}
																		}
																		else if( !.@copy[3] && (.@copy[4]+.@copy[5]) > 120 )
																		{
																			mes $@da_BasicSettings$[4];
																			mes "A quantidade de classe cadastrada no grupo no qual voc deseja adicionar a cpia com a quantidade de classe cadastrada no grupo aonde deseja ser copiado  maior que 120.";
																			mes "No  possvel mover os valores das classes, deseja continuar sem copiar as classes?";
																			next;
																			switch( select("- Sim, por favor.",  "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																			{
																				case 1:
																					set .@copy[3], 1;
																					break;
																				case 2:
																					set .@loop_7, 0;
																					break;
																				case 3:
																					set .@loop_7, 0;
																					set .@loop_6, 0;
																					set .@loop_5, 0;
																					set .@loop_4, 0;
																					set .@loop_3, 0;
																					set .@loop_2, 0;
																					set .@loop_1, 0;
																					break;
																			}
																		}
																		else if( .@copy[0] && .@copy[3] )
																		{
																			mes $@da_BasicSettings$[4];
																			mes "No h nada a ser copiado.";
																			next;
																			set .@loop_7, 0;
																			break;
																		}
																		else {
																			mes $@da_BasicSettings$[4];
																			mes "Tem certeza que deseja copiar as restries do Grupo ^" + $@da_Color$[3] + .@groups_name$[.@chooseGroup] + "^000000 para o Grupo ^" + $@da_Color$[3] + .@groups_name$[.@choosetoGroup] + "^000000?";
																			next;
																			switch( select("- Sim, por favor.", "- No, desejo selecionar outro grupo.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																			{
																				case 1:
																					for( set .@i, 0; .@i < 2; set .@i, .@i + 1 )
																					{
																						if( (.@i==0&&!.@copy[0]) || (.@i==1&&!.@copy[3]) )
																						{
																							query_sql "SELECT `value`, `type` FROM `" + $@da_DataBase$[2] + "` WHERE `group_id`='" + .@groups_id[.@chooseGroup] + "' AND `type`='" + .@i + "'", .@c_value, .@c_type;
																							
																							for( set .@c, 0; .@c < getarraysize(.@c_value); set .@c, .@c + 1 )
																							{
																								if( !callfunc("checkRestriction", .@groups_id[.@choosetoGroup], .@c_value[.@c]) )
																									query_sql "INSERT INTO `" + $@da_DataBase$[2] + "` (group_id, value, type) VALUES (" + .@groups_id[.@choosetoGroup] + ", " + .@c_value[.@c] + ", " + .@c_type[.@c] + ")";
																							}
																						}
																					}
																					mes $@da_BasicSettings$[4];
																					mes "Foi feito uma copia das restries do Grupo ^" + $@da_Color$[3] + .@groups_name$[.@chooseGroup] + "^000000 para o Grupo ^" + $@da_Color$[3] + .@groups_name$[.@choosetoGroup] + "^000000?";
																					next;
																					set .@loop_7, 0;
																					break;
																				case 2:
																					break;
																				case 3:
																					set .@loop_7, 0;
																					break;
																				case 4:
																					set .@loop_7, 0;
																					set .@loop_6, 0;
																					set .@loop_5, 0;
																					set .@loop_4, 0;
																					set .@loop_3, 0;
																					set .@loop_2, 0;
																					set .@loop_1, 0;
																					break;
																			}
																		}
																	}
																}
															}
															break;
														case 3:
															set .@loop_5, 0;
															break;
														case 4:
															set .@loop_5, 0;
															set .@loop_4, 0;
															set .@loop_3, 0;
															set .@loop_2, 0;
															set .@loop_1, 0;
															break;
													}
												}
											}
										}
										break;
									case 5:
										set .@loop_3, 0;
										break;
									case 6:
										set .@loop_3, 0;
										set .@loop_2, 0;
										set .@loop_1, 0;
										break;
								}
							}
							break;
						case 2:
							// Gerenciar Arenas.
							set .@loop_3, 1;
							while(.@loop_3)
							{
								mes $@da_BasicSettings$[4];
								mes "O que deseja gerenciar nas ^" + $@da_Color$[3] + "Arenas^000000?";
								next;
								switch( select("- Adicionar uma Arena.", "- Remover uma Arena.", "- Alterar uma Arena.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
								{
									case 1:
										// Adicionar uma Arena.
										if( !callfunc("GetGroupInfo", 0) )
										{
											mes $@da_BasicSettings$[4];
											mes "No h grupos de restries cadastrado,";
											mes "por favor cadastre um grupo de restries no menu ^" + $@da_Color$[3] + "'Gerenciar Grupos de Restries'^000000.";
											next;
											break;
										}
										
										set .@loop_4, 1;
										while(.@loop_4)
										{
											mes $@da_BasicSettings$[4];
											mes "Por favor, escolha um tipo para a nova ^" + $@da_Color$[3] + "Arenas^000000?";
											next;
											set .@type, select("- Jogadores vs Jogadores.", "- Clns vs Clns.", "- Grupos vs Grupos.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
											switch(.@type)
											{
												default:
													setarray .@mask_name$, "Jogadores", "Clns", "Grupos";
													
													set .@loop_5, 1;
													while(.@loop_5)
													{
														mes $@da_BasicSettings$[4];
														mes "Por favor, digite o nome para a nova arena de ^" + $@da_Color$[3] + .@mask_name$[.@type] + "^000000.";
														next;
														input .@Name$;
														if( .@Name$ == "" )
														{
															mes $@da_BasicSettings$[4];
															mes "Voc tem que digitar um nome para a nova arena de ^" + $@da_Color$[3] + .@mask_name$[.@type] + "^000000.";
															mes "Deseja tentar novamente?";
															next;
															switch( select("- Sim, por favor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
															{
																case 1:
																	break;
																case 2:
																	set .@loop_5, 0;
																	break;
																case 3:
																	set .@loop_5, 0;
																	set .@loop_4, 0;
																	set .@loop_3, 0;
																	set .@loop_2, 0;
																	set .@loop_1, 0;
																	break;
															}
														}
														else {
															set .@loop_6, 0;
															mes $@da_BasicSettings$[4];
															mes "Por favor, digite o mapa aonde vai ser a arena ^" + $@da_Color$[3] + .@Name$ + "^000000.";
															next;
															input .@MapIndex$;
															if( .@MapIndex$ == "" )
															{
																mes $@da_BasicSettings$[4];
																mes "Voc tem que digitar o mapa aonde vai ser a arena ^" + $@da_Color$[3] + .@Name$ + "^000000.";
																mes "Deseja tentar novamente?";
																next;
																switch( select("- Sim, por favor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																{
																	case 1:
																		break;
																	case 2:
																		set .@loop_6, 0;
																		break;
																	case 3:
																		set .@loop_6, 0;
																		set .@loop_5, 0;
																		set .@loop_4, 0;
																		set .@loop_3, 0;
																		set .@loop_2, 0;
																		set .@loop_1, 0;
																		break;
																}
															}
															else if( callfunc("getArenaInfo", 0, .@MapIndex$) )
															{
																mes $@da_BasicSettings$[4];
																mes "J existe uma arena cadastra com o mapa ^" + $@da_Color$[3] + .@MapIndex$ + "^000000.";
																mes "Deseja tentar novamente?";
																next;
																switch( select("- Sim, por favor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																{
																	case 1:
																		break;
																	case 2:
																		set .@loop_6, 0;
																		break;
																	case 3:
																		set .@loop_6, 0;
																		set .@loop_5, 0;
																		set .@loop_4, 0;
																		set .@loop_3, 0;
																		set .@loop_2, 0;
																		set .@loop_1, 0;
																		break;
																}
															}
															else {
																set .@loop_7, 1;
																while(.@loop_7)
																{
																	mes $@da_BasicSettings$[4];
																	mes "Por favor, digite a coordenada x aonde os jogadores sero teleportados no mapa ^" + $@da_Color$[3] + .@MapIndex$ + "^000000.";
																	mes "Digite 0 para os jogadores serem teleportado aleatriamente e as coordenadas y sero configurada para 0.";
																	next;
																	input .@CoordX;
																	
																	if( .@CoordX )
																	{
																		mes $@da_BasicSettings$[4];
																		mes "Por favor, digite a coordenada y aonde os jogadores sero teleportados no mapa ^" + $@da_Color$[3] + .@MapIndex$ + "^000000.";
																		mes "Digite 0 para os jogadores serem teleportado aleatriamente e as coordenadas x sero configurada para 0.";
																		next;
																		input .@CoordY;
																		if( !.@CoordY ) set .@CoordX, 0;
																	}
																	else
																		set .@CoordY, 0;
																		
																	mes $@da_BasicSettings$[4];
																	mes "Tem certeza que deseja adicionar as coordenadas ^" + $@da_Color$[3] +"x[" + (.@CoordX?.@CoordX:"aleatrio") + "] y[" + (.@CoordY?.@CoordY:"alterrio") + "]^000000 para o mapa ^" + $@da_Color$[3] + .@MapIndex$ + "^000000?";
																	next;
																	switch( select("- Sim, por favor.", "- No, desejo adicionar outras coordenadas.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																	{
																		case 1:
																			set .@loop_8, 1;
																			while(.@loop_8)
																			{
																				mes $@da_BasicSettings$[4];
																				mes "Por favor, digite o mximo de jogadores que podem acessar a arena ^" + $@da_Color$[3] + .@Name$ + "^000000.";
																				mes "Digite 0 para que o acesso a a arena seja ilimitado.";
																				next;
																				input .@MaxPlayer;
																				
																				mes $@da_BasicSettings$[4];
																				mes "Por favor, digite o nvel minimo de base para jogadores poderem acessar a arena ^" + $@da_Color$[3] + .@Name$ + "^000000.";
																				mes "Digite 0 para que o nvel minimo de base seja desabilitado.";
																				next;
																				input .@MinBaseLevel;
																				
																				mes $@da_BasicSettings$[4];
																				mes "Por favor, digite o nvel mximo de base para jogadores poderem acessar a arena ^" + $@da_Color$[3] + .@Name$ + "^000000.";
																				mes "Digite 0 para que o nvel mximo de base seja desabilitado.";
																				next;
																				input .@MaxBaseLevel;
																				
																				mes $@da_BasicSettings$[4];
																				mes "Tem certeza que o mximo de jogadores a entrar na arena seja ^" + $@da_Color$[3] + (.@MaxPlayer?.@MaxPlayer:"ilimitado") + "^000000, o nvel minimo de base seja ^" + $@da_Color$[3] + (.@MinBaseLevel?.@MinBaseLevel:"desabilitado") + "^000000 e o nvel mximo de base seja ^" + $@da_Color$[3] + (.@MaxBaseLevel?.@MaxBaseLevel:"desabilitado") + "^000000?";
																				next;
																				switch( select("- Sim, por favor.", "- No, desejo mudar.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																				{
																					case 1:
																						set .@loop_9, 1;
																						while(.@loop_9)
																						{
																							mes $@da_BasicSettings$[4];
																							mes "Por favor, selecione o ^" + $@da_Color$[3] + "'Grupo de Restries'^000000 que deseja adicionar a arena ^" + $@da_Color$[3] + .@Name$ + "^000000.";
																							next;
																							query_sql "SELECT `auto_id`, `name` FROM `" + $@da_DataBase$[1] + "` ORDER BY `name` ASC", .@groups_id, .@groups_name$;

																							set .@BuildGroupMenu$, "";
																							for( set .@i, 0; .@i < getarraysize(.@groups_id); set .@i, .@i + 1 )
																								set .@BuildGroupMenu$, .@BuildGroupMenu$ + (callfunc("GetGroupInfo", 1, .@groups_id$[.@i])<120?"- " + .@groups_name$[.@i] + ".":"") + ":";
																								
																							set .@chooseGroup, select(.@BuildGroupMenu$+"^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
																							
																							if( .@chooseGroup == getarraysize(.@groups_id) )
																								set .@loop_9, 0;
																							else if( .@chooseGroup > getarraysize(.@groups_id) )
																							{
																								set .@loop_9, 0;
																								set .@loop_8, 0;
																								set .@loop_7, 0;
																								set .@loop_6, 0;
																								set .@loop_5, 0;
																								set .@loop_4, 0;
																								set .@loop_3, 0;
																								set .@loop_2, 0;
																								set .@loop_1, 0;
																							}
																							else {
																								mes $@da_BasicSettings$[4];
																								mes "Tem certeza que deseja adicionar o grupo '^" + $@da_Color$[3] + "'" + .@groups_name$[.@chooseGroup] + "^000000' de restries na arena '^" + $@da_Color$[3] + .@Name$ + "^000000'?";
																								next;
																								switch( select("- Sim, por favor.", "- No, desejo selecionar outro grupo.", "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																								{
																									case 1:
																										mes $@da_BasicSettings$[4];
																										mes "Por favor, confirme as informaes abaixo para conclur o cadastrado da arena:";
																										mes " ";
																										mes "^"+$@da_Color$[3] + "Arena:^000000 " + .@Name$;
																										mes "^"+$@da_Color$[3] + "Tipo:^000000 " + .@mask_name$[.@type];
																										mes "^"+$@da_Color$[3] + "Grupo de Restries:^000000 "+ .@groups_name$[.@chooseGroup];
																										mes "^"+$@da_Color$[3] + "Mapa:^000000 " + .@MapIndex$;
																										mes "^"+$@da_Color$[3] + "Coordenadas:^000000 " + (.@CoordX&&.@CoordY?"x[" + .@CoordX + "] - y[" + .@CoordY + "]":"aleatria");
																										mes "^"+$@da_Color$[3] + "Mximo de Jogadores:^000000 " + (.@MaxPlayer?.@MaxPlayer:"ilimitado");
																										mes "^"+$@da_Color$[3] + "Nvel Minimo:^000000 " + (.@MinBaseLevel?.@MinBaseLevel:"desabilitado");
																										mes "^"+$@da_Color$[3] + "Nvel Mximo:^000000 " + (.@MaxBaseLevel?.@MaxBaseLevel:"desabilitado");
																										next;
																										switch( select("- Sim, est tudo correto.", "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																										{
																											case 1:
																												// Adicionar arena.
																												query_sql "INSERT INTO `" + $@da_DataBase$[0] + "` (map_index, coord_x, coord_y, name, type, max_player, max_level, min_level, group_id) VALUES('" + .@MapIndex$ + "', " + .@CoordX + ", " + .@CoordY + ", '" + .@Name$ + "', " + .@type + ", " + .@MaxPlayer + ", " + .@MaxBaseLevel + ", " + .@MinBaseLevel + ", " + .@groups_id[.@chooseGroup] + ")";
																												mes $@da_BasicSettings$[4];
																												mes "A arena '^" + $@da_Color$[3] + .@Name$ + "'^000000 foi adicionada.";
																												next;
																												donpcevent "DeathArena::OnLoadMapFlags";
																												set .@loop_9, 0;
																												set .@loop_8, 0;
																												set .@loop_7, 0;
																												set .@loop_6, 0;
																												set .@loop_5, 0;
																												set .@loop_4, 0;
																												break;
																											case 2:
																												set .@loop_9, 0;
																												break;
																											case 3:
																												set .@loop_9, 0;
																												set .@loop_8, 0;
																												set .@loop_7, 0;
																												set .@loop_6, 0;
																												set .@loop_5, 0;
																												set .@loop_4, 0;
																												set .@loop_3, 0;
																												set .@loop_2, 0;
																												set .@loop_1, 0; 
																												break;
																										}
																										break;
																									case 2:
																										break;
																									case 3:
																										set .@loop_9, 0;
																										break;
																									case 4:
																										set .@loop_9, 0;
																										set .@loop_8, 0;
																										set .@loop_7, 0;
																										set .@loop_6, 0;
																										set .@loop_5, 0;
																										set .@loop_4, 0;
																										set .@loop_3, 0;
																										set .@loop_2, 0;
																										set .@loop_1, 0;
																										break;
																								}
																							}
																						}
																						break;
																					case 2:
																						break;
																					case 3:
																						set .@loop_8, 0;
																						break;
																					case 4:
																						set .@loop_8, 0;
																						set .@loop_7, 0;
																						set .@loop_6, 0;
																						set .@loop_5, 0;
																						set .@loop_4, 0;
																						set .@loop_3, 0;
																						set .@loop_2, 0;
																						set .@loop_1, 0;
																						break;
																				}
																			}
																			break;
																		case 2:
																			break;
																		case 3:
																			set .@loop_7, 0;
																			break;
																		case 4:
																			set .@loop_7, 0;
																			set .@loop_6, 0;
																			set .@loop_5, 0;
																			set .@loop_4, 0;
																			set .@loop_3, 0;
																			set .@loop_2, 0;
																			set .@loop_1, 0;
																			break;
																	}
																}
															}
														}
													}
													break;
												case 3:
													set .@loop_4, 0;
													break;
												case 4:
													set .@loop_4, 0;
													set .@loop_3, 0;
													set .@loop_2, 0;
													set .@loop_1, 0;
													break;
											}
										}
										break;
									case 2:
										// Remover uma Arena.
										set .@loop_4, 1;
										while(.@loop_4)
										{
											mes $@da_BasicSettings$[4];
											mes "Por favor, selecione o ^" + $@da_Color$[3] + "tipo da arena^000000 que deseja remover uma arena.";
											next;
											set .@type, select("- Jogadores vs Jogadores.", "- Clns vs Clns.", "- Grupos vs Grupos.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
											switch( .@type )
											{
												default:
													set .@loop_5, 1;
													while(.@loop_5)
													{
														setarray .@mask_name$[0], "Jogadores vs Jogadores", "Clns vs Clns", "Grupos vs Grupos";
														mes $@da_BasicSettings$[4];
														mes "Por favor, selecione uma arena de ^" + $@da_Color$[3] + .@mask_name$[.@type] + "^000000.";
														next;
														cleararray .@a_auto_id, 0, getarraysize(.@a_auto_id);
														cleararray .@a_name$, "", getarraysize(.@a_name$);
														cleararray .@a_mapindex$, "", getarraysize(.@a_mapindex$);
														query_sql "SELECT `auto_id`, `name`, `map_index` FROM `" + $@da_DataBase$[0] + "` WHERE `type`='" + .@type + "' ORDER BY `name`", .@a_auto_id, .@a_name$, .@a_mapindex$;
														set .@BuildArenaMenu$, "";
														for( set .@i, 0; .@i < getarraysize(.@a_auto_id); set .@i, .@i + 1 )
															set .@BuildArenaMenu$, .@BuildArenaMenu$ + "- " + .@a_name$[.@i] + ".:";
															
														set .@chooseArena, select(.@BuildArenaMenu$+"^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
																							
														if( .@chooseArena == getarraysize(.@a_auto_id) )
															set .@loop_5, 0;
														else if( .@chooseArena > getarraysize(.@a_auto_id) )
														{
															set .@loop_5, 0;
															set .@loop_4, 0;
															set .@loop_3, 0;
															set .@loop_2, 0;
															set .@loop_1, 0;
														}
														else {
															mes $@da_BasicSettings$[4];
															mes "Tem certeza que deseja remover a arena '^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000?";
															next;
															switch( select("- Sim, por favor.", "- No, desejo selecionar outra.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
															{
																case 1:
																	// Remover arena.
																	query_sql "DELETE FROM `" + $@da_DataBase$[0] + "` WHERE `auto_id`='" + .@a_auto_id[.@chooseArena] + "'";
																	mes $@da_BasicSettings$[4];
																	mes "A arena '^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 foi removida.";
																	next;
																	// remover mapflags do sistema
																	callfunc("ReloadMapFlags", .@map_index$[.@chooseArena], 0);
																	set .@loop_5, 0;
																	break;
																case 2:
																	break;
																case 3:
																	set .@loop_5, 0;
																	break;
																case 4:
																	set .@loop_5, 0;
																	set .@loop_4, 0;
																	set .@loop_3, 0;
																	set .@loop_2, 0;
																	set .@loop_1, 0;
																	break;
															}
														}
													}	
													break;
												case 3:
													set .@loop_4, 0;
													break;
												case 4:
													set .@loop_4, 0;
													set .@loop_3, 0;
													set .@loop_2, 0;
													set .@loop_1, 0;
													break;
											}
										}
										break;
									case 3:
										// Alterar uma Arena.
										set .@loop_4, 1;
										while(.@loop_4)
										{
											mes $@da_BasicSettings$[4];
											mes "Por favor, selecione o ^" + $@da_Color$[3] + "tipo da arena^000000 que deseja alterar uma arena.";
											next;
											set .@type, select("- Jogadores vs Jogadores.", "- Clns vs Clns.", "- Grupos vs Grupos.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
											switch( .@type )
											{
												default:
													set .@loop_5, 1;
													while(.@loop_5)
													{
														setarray .@mask_name$[0], "Jogadores vs Jogadores", "Clns vs Clns", "Grupos vs Grupos";
														mes $@da_BasicSettings$[4];
														mes "Por favor, selecione uma arena de ^" + $@da_Color$[3] + .@mask_name$[.@type] + "^000000.";
														next;
														cleararray .@a_auto_id, 0, getarraysize(.@a_auto_id);
														query_sql "SELECT `auto_id`, `name`, `type`, `map_index`, `coord_x`, `coord_y`, `max_player`, `min_level`, `max_level`, `group_id` FROM `" + $@da_DataBase$[0] + "` WHERE `type`='" + .@type + "' ORDER BY `name`", .@a_auto_id, .@a_name$, .@a_type, .@a_map_index$, .@a_coord_x, .@a_coord_y, .@a_max_player, .@a_min_level, .@a_max_level, .@a_group_id;
														set .@BuildArenaMenu$, "";
														for( set .@i, 0; .@i < getarraysize(.@a_auto_id); set .@i, .@i + 1 )
															set .@BuildArenaMenu$, .@BuildArenaMenu$ + "- " + .@a_name$[.@i] + ".:";
															
														set .@chooseArena, select(.@BuildArenaMenu$+"^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
																							
														if( .@chooseArena == getarraysize(.@a_auto_id) )
															set .@loop_5, 0;
														else if( .@chooseArena > getarraysize(.@a_auto_id) )
														{
															set .@loop_5, 0;
															set .@loop_4, 0;
															set .@loop_3, 0;
															set .@loop_2, 0;
															set .@loop_1, 0;
														}
														else {
															set .@loop_6, 1;
															while( .@loop_6 )
															{
																mes $@da_BasicSettings$[4];
																mes "O que deseja alterar na arena '^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000?";
																next;
																switch( select("- Alterar nome.", "- Alterar tipo.", "- Alterar mapa e coordenadas.", "- Alterar nveis e limites.", "- Alterar Grupo de Restries.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																{
																	case 1:
																		// Alterar nome.
																		set .@loop_7, 1;
																		while(.@loop_7)
																		{
																			mes $@da_BasicSettings$[4];
																			mes "Por favor, digite um novo nome para a arena '^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																			next;
																			input .@Name$;
																			if( .@Name$ == "" || .@Name$ == .@a_name$[.@chooseArena] )
																			{
																				mes $@da_BasicSettings$[4];
																				mes "Voc deve digitar um novo nome para a arena '^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																				mes "Deseja tentar novamente?";
																				next;
																				switch( select("- Sim, por favor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																				{
																					case 1:
																						break;
																					case 2:
																						set .@loop_7, 0;
																						break;
																					case 3:
																						set .@loop_7, 0;
																						set .@loop_6, 0;
																						set .@loop_5, 0;
																						set .@loop_4, 0;
																						set .@loop_3, 0;
																						set .@loop_2, 0;
																						set .@loop_1, 0;
																						break;
																				}
																			}
																			else {
																				mes $@da_BasicSettings$[4];
																				mes "Voc tem certeza que deseja alterar o nome da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 para ^" + $@da_Color$[3] + "'" + .@Name$ + "'^000000?";
																				next;
																				switch( select("- Sim, por favor.", "- No, desejo digitar outro nome.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																				{
																					case 1:
																						// Alterar o nome.
																						query_sql "UPDATE `" + $@da_DataBase$[0] + "` SET `name`='" + .@Name$ + "' WHERE `auto_id`='" + .@a_auto_id[.@chooseArena] + "'";
																						mes $@da_BasicSettings$[4];
																						mes "O nome da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 foi alterado para ^" + $@da_Color$[3] + "'" + .@Name$ + "'^000000.";
																						next;
																						set .@a_name$[.@chooseArena], .@Name$;
																						set .@loop_7, 0;
																						break;
																					case 2:
																						break;
																					case 3:
																						set .@loop_7, 0;
																						break;
																					case 4:
																						set .@loop_7, 0;
																						set .@loop_6, 0;
																						set .@loop_5, 0;
																						set .@loop_4, 0;
																						set .@loop_3, 0;
																						set .@loop_2, 0;
																						set .@loop_1, 0;
																						break;
																				}
																			}
																		}
																		break;
																	case 2:
																		// Alterar tipo.
																		set .@loop_7, 1;
																		while(.@loop_7)
																		{
																			mes $@da_BasicSettings$[4];
																			mes "Por favor, selecione um novo tipo para a arena '^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																			next;
																			set .@type, select("- Jogadores vs Jogadores.", "- Clns vs Clns.", "- Grupos vs Grupos.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
																			switch(.@type)
																			{
																				default:
																					setarray .@mask_name$[0], "Jogadores vs Jogadores", "Clns vs Clns", "Grupos vs Grupos";
																					mes $@da_BasicSettings$[4];
																					mes "Tem certeza que deseja alterar o tipo da arena '^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 de ^" + $@da_Color$[3] + "'" + .@mask_name$[.@a_type[.@chooseArena]] + "'^000000 para ^" + $@da_Color$[3] + "'" + .@mask_name$[.@type] + "'^000000?";
																					next;
																					switch( select("- Sim, por favor.", "- No, desejo mudar o tipo.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																					{
																						case 1:
																							// Alter o tipo da arena.
																							query_sql "UPDATE `" + $@da_DataBase$[0] + "` SET `type`='" + .@type + "' WHERE `auto_id`='" + .@a_auto_id[.@chooseArena] + "'";
																							mes $@da_BasicSettings$[4];
																							mes "O tipo da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 foi alterado de ^" + $@da_Color$[3] + "'" + .@mask_name$[.@a_type[.@chooseArena]] + "'^000000 para ^" + $@da_Color$[3] + "'" + .@mask_name$[.@type ] + "'^000000.";
																							next;
																							set .@a_type[.@chooseArena], .@type;
																							callfunc "ReloadMapFlags", .@a_map_index$[.@chooseArena], 0;
																							callfunc "ReloadMapFlags", .@a_map_index$[.@chooseArena], 1, .@a_map_index$[.@chooseArena], .@type;
																							set .@loop_7, 0;
																							break;
																						case 2:
																							break;
																						case 3:
																							set .@loop_7, 0;
																							break;
																						case 4:
																							set .@loop_7, 0;
																							set .@loop_6, 0;
																							set .@loop_5, 0;
																							set .@loop_4, 0;
																							set .@loop_3, 0;
																							set .@loop_2, 0;
																							set .@loop_1, 0;
																							break;
																					}
																					break;
																				case 3:
																					set .@loop_7, 0;
																					break;
																				case 4:
																					set .@loop_7, 0;
																					set .@loop_6, 0;
																					set .@loop_5, 0;
																					set .@loop_4, 0;
																					set .@loop_3, 0;
																					set .@loop_2, 0;
																					set .@loop_1, 0;
																					break;
																			}
																		}
																		break;
																	case 3:
																		// Alterar mapa e coordenadas.
																		set .@loop_7, 1;
																		while(.@loop_7)
																		{
																			mes $@da_BasicSettings$[4];
																			mes "O que deseja alterar no mapa da arena '^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000?";
																			next;
																			switch( select("- Alterar mapa.", "- Alterar coordenadas.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																			{
																				case 1:
																					// Alterar mapa.
																					set .@loop_8, 1;
																					while(.@loop_8)
																					{
																						mes $@da_BasicSettings$[4];
																						mes "Por favor, digite um novo mapa para a arena '^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																						next;
																						input .@MapIndex$;
																						if( .@MapIndex$ == "" || .@MapIndex$ == .@a_map_index$[.@chooseArena] )
																						{
																							mes $@da_BasicSettings$[4];
																							mes "Voc tem que digitar um novo mapa para a arena '^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																							mes "Deseja tentar novamente?";
																							next;
																							switch( select("- Sim, por favor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																							{
																								case 1:
																									break;
																								case 2:
																									set .@loop_8, 0;
																									break;
																								case 3:
																									set .@loop_8, 0;
																									set .@loop_7, 0;
																									set .@loop_6, 0;
																									set .@loop_5, 0;
																									set .@loop_4, 0;
																									set .@loop_3, 0;
																									set .@loop_2, 0;
																									set .@loop_1, 0;
																									break;
																							}
																						}
																						else {
																							mes $@da_BasicSettings$[4];
																							mes "Voc tem que certeza que deseja alterar o mapa da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 de ^" + $@da_Color$[3] + "'" + .@a_map_index$[.@chooseArena] + "'^000000 para ^" + $@da_Color$[3] + "'" + .@MapIndex$ + "'^000000?";
																							next;
																							switch( select("- Sim, por favor.", "- No, desejo alterar para outro mapa.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																							{
																								case 1:
																									// Alterar mapindex.
																									query_sql "UPDATE `" + $@da_DataBase$[0] + "` SET `map_index`='" + .@MapIndex$ + "' WHERE `auto_id`='" + .@a_auto_id[.@chooseArena] + "'";
																									mes $@da_BasicSettings$[4];
																									mes "O mapa da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 foi alterado de ^" + $@da_Color$[3] + "'" + .@a_map_index$[.@chooseArena] + "^000000 para ^" + $@da_Color$[3] + "'" + .@MapIndex$ + "'^000000.";																									
																									next;
																									callfunc "ReloadMapFlags", .@a_map_index$[.@chooseArena], 0;
																									callfunc "ReloadMapFlags", .@a_map_index$[.@chooseArena], 1, .@MapIndex$, .@a_type[.@chooseArena];
																									set .@a_map_index$[.@chooseArena], .@MapIndex$;
																									set .@loop_8, 0;
																									break;
																								case 2:
																									break;
																								case 3:
																									set .@loop_8, 0;
																									break;
																								case 4:
																									set .@loop_8, 0;
																									set .@loop_7, 0;
																									set .@loop_6, 0;
																									set .@loop_5, 0;
																									set .@loop_4, 0;
																									set .@loop_3, 0;
																									set .@loop_2, 0;
																									set .@loop_1, 0;
																									break;
																							}
																						}
																					}
																					break;
																				case 2:
																					// Alterar coordenadas.
																					set .@loop_8, 1;
																					while(.@loop_8)
																					{
																						mes $@da_BasicSettings$[4];
																						mes "Por favor, digite uma nova coordenada x aonde os jogadores sero teleportados para o mapa ^" + $@da_Color$[3] + "'" + .@a_map_index$[.@chooseArena] + "'^000000 da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																						mes "Digite 0 para os jogadores serem teleportado aleatriamente e as coordenadas y sero configurada para 0.";
																						next;
																						input .@CoordX;
																						if( .@CoordX )
																						{
																							mes $@da_BasicSettings$[4];
																							mes "Por favor, digite a coordenada y aonde os jogadores sero teleportados no mapa ^" + $@da_Color$[3] + "'" + .@a_map_index$[.@chooseArena] + "'^000000 da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																							mes "Digite 0 para os jogadores serem teleportado aleatriamente e as coordenadas x sero configurada para 0.";
																							next;
																							input .@CoordY;
																							if( !.@CoordY ) set .@CoordX, 0;
																						}
																						else
																							set .@CoordY, 0;
																						
																						mes $@da_BasicSettings$[4];
																						mes "Tem certeza que deseja alterar as coordenadas do mapa ^" + $@da_Color$[3] + "'" + .@a_map_index$[.@chooseArena] + "'^000000 da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 de ^" + $@da_Color$[3] + "'" + (.@a_coord_x[.@chooseArena]&&.@a_coord_y[.@chooseArena]?"x[" + .@a_coord_x[.@chooseArena] + "] - y[" + .@a_coord_y[.@chooseArena] + "]":"aleatrio") + "'^000000 para ^" + $@da_Color$[3] + "'" + (.@CoordX&&.@CoordY?"x[" + .@CoordX + "] - y[" + .@CoordY + "]":"aleatrio") + "'^000000?";
																						next;
																						switch( select("- Sim, por favor.", "- No, desejo alterar para outras coordenadas.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																						{
																							case 1:
																								// Alterar coordenadas.
																								query_sql "UPDATE `" + $@da_DataBase$[0] + "` SET `coord_x`='" + .@CoordX + "', `coord_y`='" + .@CoordY + "' WHERE `auto_id`='" + .@a_auto_id[.@chooseArena] + "'";
																								mes $@da_BasicSettings$[4];
																								mes "As coordenadas do mapa ^" + $@da_Color$[3] + "'" + .@a_map_index$[.@chooseArena] + "'^000000 da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 foi alterada de ^" + $@da_Color$[3] + "'" + (.@a_coord_x[.@chooseArena]&&.@a_coord_y[.@chooseArena]?"x[" + .@a_coord_x[.@chooseArena] + "] - y[" + .@a_coord_y[.@chooseArena] + "]":"aleatrio") + "'^000000 para ^" + $@da_Color$[3] + "'" + (.@CoordX&&.@CoordY?"x[" + .@CoordX + "] - y[" + .@CoordY + "]":"aleatrio") + "'^000000.";
																								next;
																								set .@a_coord_x[.@chooseArena], .@CoordX;
																								set .@a_coord_y[.@chooseArena], .@CoordY;
																								set .@loop_8, 0;
																								break;
																							case 2:
																								break;
																							case 3:
																								set .@loop_8, 0;
																								break;
																							case 4:
																								set .@loop_8, 0;
																								set .@loop_7, 0;
																								set .@loop_6, 0;
																								set .@loop_5, 0;
																								set .@loop_4, 0;
																								set .@loop_3, 0;
																								set .@loop_2, 0;
																								set .@lopp_1, 0;
																								break;
																						}
																					}
																					break;
																				case 3:
																					set .@loop_7, 0;
																					break;
																				case 4:
																					set .@loop_7, 0;
																					set .@loop_6, 0;
																					set .@loop_5, 0;
																					set .@loop_4, 0;
																					set .@loop_3, 0;
																					set .@loop_2, 0;
																					set .@loop_1, 0;
																					break;
																			}
																		}
																		break;
																	case 4:
																		// Alterar limites
																		set .@loop_7, 1;
																		while(.@loop_7)
																		{
																			mes $@da_BasicSettings$[4];
																			mes "O que deseja alterar nos nveis e limites da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000?";
																			next;
																			switch( select("- Alterar mximo de jogadores.", "- Alterar nvel minimo de Base.", "- Alterar nvel mximo de Base.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																			{
																				case 1:
																					// Mximo de jogadores.
																					set .@loop_8, 1;
																					while(.@loop_8)
																					{
																						mes $@da_BasicSettings$[4];
																						mes "Por favor, digite um novo limite de jogadores que pode acessar a arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																						mes "Digite 0 para desabilitar o limite de jogadores na arena.";
																						next;
																						input .@max_player;
																						
																						mes $@da_BasicSettings$[4];
																						mes "Voc tem certeza que deseja alterar o limite de jogadores que pode acessar a arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 de ^" + $@da_Color$[3] + "'" + (.@a_max_player[.@chooseArena]?.@a_max_player[.@chooseArena]:"ilimitado") + "'^000000 para ^" + $@da_Color$[3] + "'" + (.@max_player?.@max_player:"ilimitado") + "'^000000?";
																						next;
																						switch( select("- Sim, por favor.", "- No, desejo alterar para outro limite.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																						{
																							case 1:
																								// Alterar limite de jogadores.
																								query_sql "UPDATE `" + $@da_DataBase$[0] + "` SET `max_player`='" + .@max_player + "' WHERE `auto_id`='" + .@a_auto_id[.@chooseArena] + "'";
																								mes $@da_BasicSettings$[4];
																								mes "O limite de jogadores que pode acessar a arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 foi alterado de ^" + $@da_Color$[3] + "'" + (.@a_max_player[.@chooseArena]?.@a_max_player[.@chooseArena]:"ilimitado") + "'^000000 para ^" + $@da_Color$[3] + "'" + (.@max_player?.@max_player:"ilimitado") + "'^000000.";
																								next;
																								set .@a_max_player[.@chooseArena], .@max_player;
																								set .@loop_8, 0;
																								break;
																							case 2:
																								break;
																							case 3:
																								set .@loop_8, 0;
																								break;
																							case 4:
																								set .@loop_8, 0;
																								set .@loop_7, 0;
																								set .@loop_6, 0;
																								set .@loop_5, 0;
																								set .@loop_4, 0;
																								set .@loop_3, 0;
																								set .@loop_2, 0;
																								set .@loop_1, 0;
																								break;
																						
																						}
																					}
																					break;
																				case 2:
																					// Minimo de base.
																					set .@loop_8, 1;
																					while(.@loop_8)
																					{
																						mes $@da_BasicSettings$[4];
																						mes "Por favor, digite um novo minimo de base que jogadores que pode acessar a arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																						mes "Digite 0 para desabilitar o nvel minimo de base para os jogadores adentrar a arena.";
																						next;
																						input .@min_level;
																						
																						mes $@da_BasicSettings$[4];
																						mes "Voc tem certeza que deseja alterar o minimo de base dos jogadore da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 de ^" + $@da_Color$[3] + "'" + (.@a_min_level[.@chooseArena]?.@a_min_level[.@chooseArena]:"desabilitado") + "'^000000 para ^" + $@da_Color$[3] + "'" + (.@min_level?.@min_level:"desabilitado") + "'^000000?";
																						next;
																						switch( select("- Sim, por favor.", "- No, desejo alterar para outro nvel.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																						{
																							case 1:
																								// Alterar base minima de jogadores.
																								query_sql "UPDATE `" + $@da_DataBase$[0] + "` SET `min_level`='" + .@min_level + "' WHERE `auto_id`='" + .@a_auto_id[.@chooseArena] + "'";
																								mes $@da_BasicSettings$[4];
																								mes "O nvel minimo de base dos jogadores que pode acessar a arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 foi alterado de ^" + $@da_Color$[3] + "'" + (.@a_min_level[.@chooseArena]?.@a_min_level[.@chooseArena]:"desabilitado") + "'^000000 para ^" + $@da_Color$[3] + "'" + (.@min_level?.@min_level:"desabilitado") + "'^000000.";
																								next;
																								set .@a_min_level[.@chooseArena], .@min_level;
																								set .@loop_8, 0;
																								break;
																							case 2:
																								break;
																							case 3:
																								set .@loop_8, 0;
																								break;
																							case 4:
																								set .@loop_8, 0;
																								set .@loop_7, 0;
																								set .@loop_6, 0;
																								set .@loop_5, 0;
																								set .@loop_4, 0;
																								set .@loop_3, 0;
																								set .@loop_2, 0;
																								set .@loop_1, 0;
																								break;
																						
																						}
																					}
																					break;
																				case 3:
																					// Mximo de base.
																					set .@loop_8, 1;
																					while(.@loop_8)
																					{
																						mes $@da_BasicSettings$[4];
																						mes "Por favor, digite um novo mximo de base que jogadores que pode acessar a arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																						mes "Digite 0 para desabilitar o nvel mximo de base para os jogadores adentrar a arena.";
																						next;
																						input .@max_level;
																						
																						mes $@da_BasicSettings$[4];
																						mes "Voc tem certeza que deseja alterar o mximo de base dos jogadore da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 de ^" + $@da_Color$[3] + "'" + (.@a_max_level[.@chooseArena]?.@a_max_level[.@chooseArena]:"desabilitado") + "'^000000 para ^" + $@da_Color$[3] + "'" + (.@max_level?.@max_level:"desabilitado") + "'^000000?";
																						next;
																						switch( select("- Sim, por favor.", "- No, desejo alterar para outro nvel.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																						{
																							case 1:
																								// Alterar base mximo de jogadores.
																								query_sql "UPDATE `" + $@da_DataBase$[0] + "` SET `max_level`='" + .@max_level + "' WHERE `auto_id`='" + .@a_auto_id[.@chooseArena] + "'";
																								mes $@da_BasicSettings$[4];
																								mes "O nvel mximo de base dos jogadores que pode acessar a arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 foi alterado de ^" + $@da_Color$[3] + "'" + (.@a_max_level[.@chooseArena]?.@a_max_level[.@chooseArena]:"desabilitado") + "'^000000 para ^" + $@da_Color$[3] + "'" + (.@max_level?.@max_level:"desabilitado") + "'^000000.";
																								next;
																								set .@a_max_level[.@chooseArena], .@max_level;
																								set .@loop_8, 0;
																								break;
																							case 2:
																								break;
																							case 3:
																								set .@loop_8, 0;
																								break;
																							case 4:
																								set .@loop_8, 0;
																								set .@loop_7, 0;
																								set .@loop_6, 0;
																								set .@loop_5, 0;
																								set .@loop_4, 0;
																								set .@loop_3, 0;
																								set .@loop_2, 0;
																								set .@loop_1, 0;
																								break;
																						
																						}
																					}
																					break;
																				case 4:
																					set .@loop_7, 0;
																					break;
																				case 5:
																					set .@loop_8, 0;
																					set .@loop_7, 0;
																					set .@loop_6, 0;
																					set .@loop_5, 0;
																					set .@loop_4, 0;
																					set .@loop_3, 0;
																					set .@loop_2, 0;
																					set .@loop_1, 0;
																					break;
																			}
																		}
																		break;
																	case 5:
																		// Alterar grupo de restries.
																		set .@loop_7, 1;
																		while(.@loop_7)
																		{
																			mes $@da_BasicSettings$[4];
																			mes "Por favor selecione um novo grupo de restries para arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000.";
																			next;
																			query_sql "SELECT `auto_id`, `name` FROM `" + $@da_DataBase$[1] + "` ORDER BY `name`", .@a_groups_id, .@a_groups_name$;
																			set .@BuildtoGroupMenu$, "";
																			for( set .@i, 0; .@i < getarraysize(.@a_groups_id); set .@i, .@i + 1 )
																				set .@BuildtoGroupMenu$, .@BuildtoGroupMenu$+((.@a_groups_id[.@i]==.@a_group_id[.@chooseArena])||(callfunc("GetGroupInfo", 1, .@a_groups_id[.@i])>=120)?"":"- " + .@a_groups_name$[.@i] + ".") + ":";

																			set .@choosetoGroup, select(.@BuildtoGroupMenu$+"^" + $@da_Color$[1] + "- Voltar.^000000:^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
																							
																			if( .@choosetoGroup == getarraysize(.@a_groups_id) )
																				set .@loop_7, 0;
																			else if( .@choosetoGroup > getarraysize(.@a_groups_id) )
																			{
																				set .@loop_7, 0;
																				set .@loop_6, 0;
																				set .@loop_5, 0;
																				set .@loop_4, 0;
																				set .@loop_3, 0;
																				set .@loop_2, 0;
																				set .@loop_1, 0;
																			}
																			else {
																				mes $@da_BasicSettings$[4];
																				mes "Tem certeza que deseja alterar o grupo de restries da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 de ^" + $@da_Color$[3] + "'" + callfunc("GetGroupInfo", 4, .@a_group_id[.@chooseArena]) + "'^000000 para ^" + $@da_Color$[3] + "'" + .@a_groups_name$[.@choosetoGroup] + "'^000000?";
																				next;
																				switch( select("- Sim, por favor.", "- No, desejo alterar para outro grupo.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																				{
																					case 1:
																						// Alterar o grupo de restrioes
																						query_sql "UPDATE `" + $@da_DataBase$[0] + "` SET `group_id`='" + .@a_groups_id[.@choosetoGroup] + "' WHERE `auto_id`='" + .@a_auto_id[.@chooseArena] + "'";
																						mes $@da_BasicSettings$[4];
																						mes "O grupo de restries da arena ^" + $@da_Color$[3] + "'" + .@a_name$[.@chooseArena] + "'^000000 foi alterada de ^" + $@da_Color$[3] + "'" + callfunc("GetGroupInfo", 4, .@a_group_id[.@chooseArena]) + "'^000000 para ^" + $@da_Color$[3] + "'" + .@a_groups_name$[.@choosetoGroup] + "'^000000.";
																						next;
																						set .@a_group_id[.@chooseArena], .@a_groups_id[.@choosetoGroup];
																						set .@loop_7, 0;
																						break;
																					case 2:
																						break;
																					case 3:
																						set .@loop_7, 0;
																						break;
																					case 4:
																						set .@loop_7, 0;
																						set .@loop_6, 0;
																						set .@loop_5, 0;
																						set .@loop_4, 0;
																						set .@loop_3, 0;
																						set .@loop_2, 0;
																						set .@loop_1, 0;
																						break;
																				}
																			}
																		}
																		break;
																	case 6:
																		set .@loop_6, 0;
																		break;
																	case 7:
																		set .@loop_6, 0;
																		set .@loop_5, 0;
																		set .@loop_4, 0;
																		set .@loop_3, 0;
																		set .@loop_2, 0;
																		set .@loop_1, 0;
																		break;
																		
																}
															}
														}
													}	
													break;
												case 3:
													set .@loop_4, 0;
													break;
												case 4:
													set .@loop_4, 0;
													set .@loop_3, 0;
													set .@loop_2, 0;
													set .@loop_1, 0;
													break;
											}
										}
									case 4:
										set .@loop_3, 0;
										break;
									case 5:
										set .@loop_3, 0;
										set .@loop_2, 0;
										set .@loop_1, 0;
										break;
								}
							}
							break;
						case 3:
							// Gerenciar Ranking.
							set .@loop_3, 1;
							{
								mes $@da_BasicSettings$[4];
								mes "O que deseja gerenciar no ^" + $@da_Color$[3] + "Ranking^000000?";
								next;
								switch( select("- Resetar um Ranking.", "- Alterar pontos.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
								{
									case 1:
										// Resetar um Ranking.
										set .@loop_4, 1;
										while(.@loop_4)
										{
											mes $@da_BasicSettings$[4];
											mes "Selecione o tipo de ^" + $@da_Color$[3] + "Rank^000000 que deseja resetar.";
											next;
											set .@type, select("- Jogadores vs Jogadores.", "- Clns vs Clns.", "- Grupos vs Grupos.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
											switch(.@type)
											{
												default:
													setarray .@mask_name$[0], "Jogadores vs Jogadores", "Clns vs Clns", "Grupos vs Grupos";
													mes $@da_BasicSettings$[4];
													mes "Tem certeza que deseja resetar o ^" + $@da_Color$[3] + "'Rank de " + .@mask_name$[.@type] + "'^000000?";
													next;
													switch( select("- Sim, por favor.", "- No, desejo resetar outro.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
													{
														case 1:
															// Resetar Ranking
															query_sql "DELETE FROM `" + $@da_DataBase$[3] + "` WHERE `type`='" + .@type + "'";
															mes $@da_BasicSettings$[4];
															mes "O ^" + $@da_Color$[3] + "'Rank de " + .@mask_name$[.@type] + "'^000000 foi resetado!";
															next;
															set .@loop_4, 0;
															break;
														case 2:
															break;
														case 3:
															set .@loop_4, 0;
															break;
														case 4:
															set .@loop_4, 0;
															set .@loop_3, 0;
															set .@loop_2, 0;
															set .@loop_1, 0;
															break;
													}
													break;
												case 3:
													set .@loop_4, 0;
													break;
												case 4:
													set .@loop_4, 0;
													set .@loop_3, 0;
													set .@loop_2, 0;
													set .@loop_1, 0;
													break;
											}
										}
										break;
									case 2:
										// Alterar pontos.
										set .@loop_4, 1;
										while(.@loop_4)
										{
											mes $@da_BasicSettings$[4];
											mes "O que voc deseja ^" + $@da_Color$[3] + "alterar de pontos^000000?";
											next;
											set .@type, select("- Jogador.", "- Cl.", "- Grupo.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
											switch(.@type)
											{
												default:
													set .@loop_5, 1;
													while(.@loop_5)
													{
														setarray .@mask_name$[0], "Jogador", "Cl", "Grupo";
														mes $@da_BasicSettings$[4];
														mes "Por favor, digite o ^" + $@da_Color$[3] + "'ID do " + .@mask_name$[.@type] + "'^000000 que deseja alterar pontos?";
														next;
														input .@object_id;
														set .@rank_id, callfunc("getRankInfo", 0, .@type, .@object_id );
														if( !.@object_id || !.@rank_id )
														{
															mes $@da_BasicSettings$[4];
															if( !.@object_id )
																mes "Voc deve digitar o ^" + $@da_Color$[3] + "'ID do " + .@mask_name$[.@type] + "'^000000 que deseja alterar pontos!";
															else
																mes "Nenhum ^" + $@da_Color$[3] + "'" + .@mask_name$[.@type] + "'^000000 foi encontrado com o id " + .@object_id + " no rank.";
																
															mes "Deseja tentar novamente?";
															next;
															switch( select("- Sim, por favor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
															{
																case 1:
																	break;
																case 2:
																	set .@loop_5, 0;
																	break;
																case 3:
																	set .@loop_5, 0;
																	set .@loop_4, 0;
																	set .@loop_3, 0;
																	set .@loop_2, 0;
																	set .@loop_1, 0;
																	break;
															}
														}
														else {
															set .@loop_6, 1;
															while(.@loop_6)
															{
																setarray .@rank_points[0], callfunc("getRankInfo", 1, .@type, .@object_id ), callfunc("getRankInfo", 2, .@type, .@object_id ), callfunc("getRankInfo", 3, .@type, .@object_id );
																set .@name$, callfunc("getRankInfo", 4, .@type, .@object_id);
																mes $@da_BasicSettings$[4];
																mes "O que deseja alterar no ^" + $@da_Color$[3] + "'" + .@mask_name$[.@type] + " " + .@name$ + "'^000000?";
																next;
																set .@change, select("- Pontos de vitrias [" + .@rank_points[0] + " pnts].", "- Pontos de derrotas [" + .@rank_points[1] + " pnts].", "- Pontos proporcionais [" + .@rank_points[2] + " pnts].", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000")-1;
																switch(.@change)
																{
																	default:
																		// Alterar pontos.
																		setarray .@p_mask$[0], "vitrias", "derrotas", "proporcionais";
																		set .@loop_7, 1;
																		while(.@loop_7)
																		{
																			mes $@da_BasicSettings$[4];
																			mes "Por favor, digite a quantidade de ^" + $@da_Color$[3] + "pontos " + .@p_mask$[.@change] + "^000000 que deseja alterar.";
																			next;
																			input .@points;
																			
																			mes $@da_BasicSettings$[4];
																			mes "Tem certeza que deseja alterar os ^" + $@da_Color$[3] + "pontos de " + .@p_mask$[.@change] + "^000000 do ^" + $@da_Color$[3] +"'"+ .@p_mask_name$[.@change] + " " + .@name$ + "'^000000 de ^" + $@da_Color$[3] + .@rank_points[.@change] + "'^000000 para ^" + $@da_Color$[3] + .@points + "'^000000?";
																			next;
																			switch( select("- Sim, por favor.", "- No, desejo digitar outro valor.", "^" + $@da_Color$[1] + "- Voltar.^000000", "^" + $@da_Color$[0] + "- Cancelar.^000000") )
																			{
																				case 1:
																					// Alterar pontos.
																					query_sql "UPDATE `" + $@da_DataBase$[3] + "` SET `" + (.@change==1?"loss":(.@change==2?"ration":"wins")) + "`='" + .@points + "' WHERE `type`='" + .@type + "' AND `auto_id`='" + .@rank_id + "'";
																					mes $@da_BasicSettings$[4];
																					mes "Os pontos de ^" + $@da_Color$[3] + "pontos de " + .@p_mask$[.@change] + "^000000 do ^" + $@da_Color$[3] +"'"+ .@p_mask_name$[.@change] + " " + .@name$ + "'^000000 de ^" + $@da_Color$[3] + .@rank_points[.@change] + "'^000000 para ^" + $@da_Color$[3] + .@points + "'^000000.";
																					next;
																					set .@loop_7, 0;
																					break;
																				case 2:
																					break;
																				case 3:
																					set .@loop_7, 0;
																					break;
																				case 4:
																					set .@loop_7, 0;
																					set .@loop_6, 0;
																					set .@loop_5, 0;
																					set .@loop_4, 0;
																					set .@loop_3, 0;
																					set .@loop_2, 0;
																					set .@loop_1, 0;
																					break;
																			}
																		}
																		break;
																	case 3:
																		set .@loop_6, 0;
																		break;
																	case 4:
																		set .@loop_6, 0;
																		set .@loop_5, 0;
																		set .@loop_4, 0;
																		set .@loop_3, 0;
																		set .@loop_2, 0;
																		set .@loop_1, 0;
																		break;
																}
															}
														}
													}
													break;
												case 3:
													set .@loop_4, 0;
													break;
												case 4:
													set .@loop_4, 0;
													set .@loop_3, 0;
													set .@loop_2, 0;
													set .@loop_1, 0;
													break;
											}
										}
									case 3:
										set .@loop_3, 0;
										break;
									case 4:
										set .@loop_3, 0;
										break;
								}
							}
							break;
						case 4:
							set .@loop_2, 0;
							break;
						case 5:
							set .@loop_1, 0;
							set .@loop_2, 0;
							break;
					}
				}
				break;
			case 4:
				set .@loop_1, 0;
				break;
		}
	}
	
	mes $@da_BasicSettings$[4];
	mes "Volte quando desejar batalhar em uma arena!";
	close2;
	cutin "", 255;
	end;
	
OnWaitingRoom:
	waitingroom $@da_BasicSettings$[3], 20;
	end;
}

// Funes

// * getGroupInfo(type {,id})
//		type: Tipo da informao que deseja adquirir.
//				[0]: Total de grupos cadastrado.
//				[1]: Total de arenas cadastrada de um grupo.
//					id: Identificao do grupo.
//				[2]: Total de itens cadastrado na restrio de um grupo.
//					id: Identificao do grupo.
//				[3]: Total de classes cadastrada na restrio de um grupo.
//					id: Identificao do grupo.
//				[4]: Nome de um grupo.
//					id: Identificao do grupo.
function	script	GetGroupInfo	{
	if( getarg(0) == 0 )
	{
		query_sql "SELECT `auto_id` FROM `" + $@da_DataBase$[1] + "`", .@id;
		return (getarraysize(.@id)?getarraysize(.@id):0);
	}
	else if( getarg(0) == 4 )
	{
		query_sql "SELECT `auto_id`, `name` FROM `" + $@da_DataBase$[1] + "` WHERE `auto_id`='" + getarg(1) + "'", .@id, .@name$;
		return (!getarraysize(.@id)?0:.@name$[0]);
	}
	else if( getarg(0) == 1 )
	{
		query_sql "SELECT `auto_id` FROM `" + $@da_DataBase$[0] + "` WHERE `group_id`='" + getarg(1) + "'", .@id;
		return (getarraysize(.@id)?.@id[0]:0);
	}
	else if( getarg(0) == 2 || getarg(0) == 3 )
	{
		query_sql "SELECT `auto_id` FROM `" + $@da_DataBase$[2] + "` WHERE `type`='" + (getarg(0)==2?0:1) + "' AND `group_id`='" + getarg(1) + "'", .@id;
		return (getarraysize(.@id)?.@id[0]:0);
	}
	else
		return 0;
}
	
// * checkRestriction(id, value)
//		id: Id do grupo a ser checado.
//		value: Id do item ou classe que deseja checar se existe nas restries.
function	script	checkRestriction	{
	query_sql "SELECT `auto_id` FROM `" + $@da_DataBase$[2] + "` WHERE `value`='" + getarg(1) + "' AND `group_id`='" + getarg(0) + "'", .@id;
	return (getarraysize(.@id)?.@id[0]:0);
}

// * getRankInfo(type_1, type_2, object_id)
//		type_1: Tipo de retorno de referncia.
//				[0]: Checa se o objeto(type_2) est cadastrado no Rank e retorna com a id do objeto no rank.
//				[1]: Retorna com as vitrias de um objeto(type_2).
//				[2]: Retorna com as derrotas de um objeto(type_2).
//				[3]: Retorna com o proporcional de vitrias sobre derrotas de um objeto(type_2).
//				[4]: Retorna com o nome do objeto(type_2).
//		type_2: Tipo do objeto.
//				[0]: Jogador.
//				[1]: Cl.
//				[2]: Grupo.
//		object_id: Id do objeto a ser consultado.
function	script	getRankInfo	{
	query_sql "SELECT `auto_id`, `wins`, `loss`, `ration`, `object_name` FROM `" + $@da_DataBase$[3] + "` WHERE `object_id`='" + getarg(2) + "' AND `type`='" + getarg(1) + "'", .@id, .@wins, .@loss, .@ration, .@name$;
	return (!getarraysize(.@id)?0:(getarg(0)==0?.@id[0]:(getarg(0)==1?.@wins[0]:(getarg(0)==2)?.@loss[0]:(getarg(0)==3?.@ration[0]:.@name$[0]))));
}

// * getArenaInfo(type, map_index)
//		type: Retorna com uma informao da arena.
//			[0]: Retorna com o id da arena.
//			[1]: Retorna com o tipo da arena.
//			[2]: Retorna com o nome da arena.
//		map_index: Mapa oande se encontra a arena.
function	script	getArenaInfo	{
	query_sql "SELECT `auto_id`, `name`, `type` FROM `" + $@da_DataBase$[0] + "` WHERE `map_index`='" + getarg(1) + "'", .@id, .@name$, .@type;
	return (!getarraysize(.@id)?0:(getarg(0)==0?.@id[0]:(getarg(0)==1?.@type[0]:.@name$[0])));
}

// * UpdateRanking(type, object_killer_id, object_killer_name, object_killed_id, object_killed_name)
//		type: Tipo de computao do ranking.
//				[0]: Computar em jogadores.
//				[1]: Computar em clns.
//				[2]: Computar em Grupos.
//		object_killer_id: Id do jogador/cl/grupo que derrotou.
//		object_killer_name: Nome do jogador/cl/grupo que derrotou.
//		object_killed_id: Id do jogador/cl/grupo derrotado.
//		object_killed_name: Nome do jogador/cl/grupo derrotado.
//
//	Observaes: Os nomes so modo de depuramento, caso o jogador/cl/grupo troque de nome.
function	script	UpdateRanking	{
	for( set .@i, 0; .@i < 2; set .@i, .@i + 1 )
	{
		if( (.@i==0 && getarg(1)) || (.@i==1 && getarg(3)) )
		{
			query_sql "SELECT `auto_id` FROM `" + $@da_DataBase$[3] + "` WHERE `object_id`='" + (.@i==0?getarg(1):getarg(3)) + "' AND `type`='" + getarg(0) + "'", .@u_auto_id;
			
			if( !getarraysize(.@u_auto_id) )
				query_sql "INSERT INTO `" + $@da_DataBase$[3] + "` (object_id, object_name, type) VALUES (" + (.@i==0?getarg(1):getarg(3)) + ", '" + (.@i==0?getarg(2):getarg(4)) + "', " + getarg(0) + ")";

			query_sql "UPDATE `" + $@da_DataBase$[3] + "` SET " + (.@i==0?"`wins`=`wins`+":"`loss`=`loss`+") + "'1', `ration`=`ration`" + (.@i==0?"+":"-") + "'1', `object_name`='" + (.@i==0?getarg(2):getarg(4)) + "' WHERE `object_id`='" + (.@i==0?getarg(1):getarg(3)) + "' AND `type`='" + getarg(0) + "'";
		}
	}

	return;
}

// * ReloadMapFlags(map_index, type,{,map_index2, type2}
//		map_index: mapa que ser removido os mapflags.
//		type: Tipo da operao.
//			[0]: Remover mapflags.
//			[1]: Adiciona mapflags.
//				map_index2: Mapa novo para adicionar os mapflags.
//				type2: Tipo da arena.
function	script	ReloadMapFlags	{
	setarray .@map_flags[0], mf_nosave, mf_nomemo, mf_noteleport, mf_nowarp, mf_nowarpto, mf_pvp, mf_nocommand, mf_pvp_noguild, mf_pvp_noparty;
	if( getarg(1) == 0 )
	{
		for( set .@i, 0; .@i < getarraysize(.@map_flags); set .@i, .@i + 1 )
			removemapflag getarg(0), .@map_flags[.@i];
			
	}
	else {
		for( set .@i, 0; .@i < getarraysize(.@map_flags); set .@i, .@i + 1 )
		{
			if( (.@i <= 6) || (.@i == 6 && getarg(3) == 1) || (.@i == 7 && getarg(3) == 2) )
				setmapflag getarg(2), .@map_flags[.@i];
		}
	}
	
	return;
}

// * GetInfoName(<type>, <char_id>)
//		type: Retorna com o nome do cl ou grupo, caso o jogador no este em um deles retorna com N/a.
//			[0]: Nome do cl se o jogador estiver em um.
//			[1]: Nome do grupo se o jogador estiver em um.
//		char_id: Id do personagem.
function	script	GetInfoName	{
	query_sql "SELECT `guild_id`, `party_id` FROM `char` WHERE `char_id`='" + getarg(1) + "'", .@gid, .@pid;
	
	if( (getarg(0) == 0 && getarraysize(.@gid)) || (getarg(0) == 1 && getarraysize(.@pid)) )
		query_sql "SELECT `name` FROM `" + (getarg(0)==0?"guild":"party") + "` WHERE `" + (getarg(0)==0?"guild":"party") + "_id`='" + (getarg(0)==0?.@gid[0]:.@pid[0]) + "'", .@object_name$;

	return (getarraysize(.@object_name$)?.@object_name$[0]:"N/a");
}