All pastes #607991 Raw Edit

Someone

public text v1 · immutable
·published 2007-07-08 00:34 UTC
rendered paste body
function showEzFeedMenub() {
//	document.getElementById("context-ezfeedb").hidden = gContextMenu.onImage;
}

function initEzFeedb() {
	//this.strings = document.getElementById("ezfeedb-strings");
	document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", showEzFeedMenub, false);
}

function ezFeedParseb(e) 
{
    var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
                                  .getService(Components.interfaces.nsIPromptService);
	var vrs_getWin = document.commandDispatcher.focusedWindow;
	var cur_fic =  vrs_getWin.location.href;
	/*if(cur_fic.indexOf("astroempires.com") == -1)
	{
		promptService.alert(window, "erreur",  "Vous n'etes pas sur astro empires");
		return;
	}*/
	
	var site_url = "beta.gazier.net";
	//var site_url = "localhost";
	var page_to_load = "", msg_err = "";
	var source = vrs_getWin.document.getElementsByTagName("body")[0].innerHTML;
	source = source.replace(/\r+|\n+/g,'');
	source = source.replace(/<br \/>/gi, "§");
	source = source.replace(/<br >/gi, "§");
	source = source.replace(/<br>/gi, "§");
	
	var reg, ar;
	
 	try{
		if(cur_fic.indexOf("/base.") != -1)
		{
			var location = null;
			var astro_type = null;
			var terrain = null;
			var base_name = null;
			var carac_name = new Array("construction", "production", "research", "economy");
			var carac_value = new Array();
			var owner_name = null;
			var owner_guild = null;
			var owner_id = null;
			var occupied_by = null;
			var structure_names = new Array();
			var structure_values = new Array();
			var defense_names = new Array();
			var defense_values = new Array();
			var ret = "";
			
			// location
			reg = /map\.aspx\?loc=(B[0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{2})/i;
			ar = reg.exec(source);
			if(ar) location = ar[1];
			ret += "location = "+location+";\n";
			if(location == null)
			{
				promptService.alert(window, "erreur",  "Impossible de recuperer les données de la page :\n-location introuvable");
				return;
			}
			
			// astro type + terrain
			reg = /<b>Astro Type\: \&nbsp\;<\/b>([a-z]*)§/i;
			ar = reg.exec(source);
			if(ar) astro_type = ar[1];
			ret += "astro_type = "+astro_type+";\n";
			reg = /<b>Terrain\: \&nbsp\;<\/b>([a-z]*)§/i;
			ar = reg.exec(source);
			if(ar) terrain = ar[1];
			ret += "terrain = "+terrain+";\n";
			if(terrain == null || astro_type == null)
			{
				promptService.alert(window, "erreur",  "Impossible de recuperer les données de la page :\n-type de planete introuvable");
				return;
			}
			
			// base_name
			reg = /<font size=\"\+1\">(.)<\/font>([^§]*)§/i;
			ar = reg.exec(source);
			if(ar) base_name = ar[1]+ar[2];
			ret += "base_name = "+base_name+";\n";
			if(base_name == null)
			{
				promptService.alert(window, "erreur",  "Impossible de recuperer les données de la page :\n-nom de la base trop long");
				return;
			}
			else if(base_name && base_name.length > 50)
			{
				promptService.alert(window, "erreur",  "Impossible de recuperer les données de la page :\n-nom de la base trop long (> 50 caracteres), probablement erreur");
				return;
			}
				
			
			// caracteristiques
			for(var i=0; i < carac_name.length; i++)
			{
				reg = new RegExp('<tr align=\"center\"><td>'+carac_name[i]+'<\/td><td>([0-9]*)<\/td>', "i");
				ar = reg.exec(source);
				if(ar) carac_value.push( ar[1]);
				else carac_value.push('0');
				ret += carac_name[i]+" = "+carac_value[i]+";\n";
			}
			
			//owner
			reg = /<td>Base Owner<\/td><td colspan=\"2\"><a href=\"profile.aspx\?player=([0-9]*)\">(\[[^\]]*\]|)\s*([^<]*)<\/a>/i;
			ar = reg.exec(source);
			if(ar){
				owner_id = ar[1];
				ret += "owner_id = "+owner_id+";\n";
				owner_guild = ar[2];
				ret += "owner_guild = "+owner_guild+";\n";
				owner_name = ar[3];
				ret += "owner_name = "+owner_name+";\n";
			}
			else
			{
				promptService.alert(window, "erreur",  "Impossible de recuperer les données de la page :\n-owner introuvable");
				return;
			}
			
			//occupant
			reg = /<td>Occupied by<\/td><td colspan=\"2\"><a href=\"profile.aspx\?player=([0-9]*)\">(\[[^\]]*\]|)\s*([^<]*)<\/a>/i;
			ar = reg.exec(source);
			if(ar){
				occupier_id = ar[1];
				ret += "occupier_id = "+occupier_id+";\n";
				occupier_guild = ar[2];
				ret += "occupier_guild = "+occupier_guild+";\n";
				occupier_name = ar[3];
				ret += "occupier_name = "+occupier_name+";\n";
			}
			
			// suppression de toute la partie avant les structures
			reg = /<tr><th>Structures<\/th><th>Level<\/th><th width=\"50\"><\/th>/;
			ar = reg.exec(source);
			if(ar && ar.index > 0)
			{
				source = source.substring(ar.index);
				reg = /<tr align=\"center\"><td>(.*)<\/td><td>(.*)<\/td><td><\/td><td>(.*)<\/td><td>(.*)<\/td><\/tr>/;
				ar = reg.exec(source);
				if(ar){
					structure_names = ar[1].split("§");
					structure_values = ar[2].split("§");
					defense_names = ar[3].split("§");
					defense_values = ar[4].split("§");
					for(i=0; i < defense_values.length; i++) // on nettoie les niveaux des défenses
					{
						def = defense_values[i];
						reg = /([0-9.,]*)\s\/\s([0-9.,]*)/;
						var ar2 = reg.exec(def);
						if(ar2)
							defense_values[i] = Math.ceil(parseInt(ar2[2])/5);
					}
					for(i=0; i < structure_names.length; i++)
						if(structure_names[i] != "")
							ret += "bat. : "+structure_names[i]+" = "+structure_values[i]+";\n";
					for(i=0; i < defense_names.length; i++)
						if(defense_names[i] != "")
							ret += "def. : "+defense_names[i]+" = "+defense_values[i]+";\n";
				}
			}
			page_to_load = "http://"+site_url+"/update_base.php?datas="+encodeURIComponent(ret);
		}
		// **************************************************************************************************************************
		// **************************************************************************************************************************
		// **************************************************************************************************************************
		else if(cur_fic.indexOf("/combat.") != -1)
		{
			var list_table = source.split("<table");
			if(list_table.length == 4)
			{
				var attaquant=-1, defenseur=-1;	att_cc = 0;	def_cc = 0;
				var p1=0; p2 = 0;
				// recuperation des id
				var tmp = list_table[1];
				reg = /<tr><th colspan=\"2\">Attack Force<\/th><\/tr><tr><td>Player<\/td><td><a href=\"profile.aspx\?player=([0-9]+)\">/i;
				ar = reg.exec(tmp);
				if(ar)
				{
					attaquant = ar[1];
					p1 = ar["index"];
				}
				reg = /<tr><th colspan=\"2\">Defensive Force<\/th><\/tr><tr><td>Player<\/td><td><a href=\"profile.aspx\?player=([0-9]+)\">/i;
				ar = reg.exec(tmp);
				if(ar)
				{
					defenseur = ar[1];
					p2 = ar["index"];
				}
				reg = /<tr><td>Command Centers<\/td><td>([0-9]+)<\/td><\/tr>/i;
				ar = reg.exec(tmp);
				if(ar)
				{
					if(ar["index"] < p2)
						att_cc = ar[1];
					else def_cc = ar[1];
				}
				
				
				if(attaquant > 0 && defenseur > 0)
				{
					page_to_load = "http://"+site_url+"/update_level.php?att="+attaquant+"&def="+defenseur+"&att_cc="+att_cc+"&def_cc="+def_cc;
					for(var player=1; player <= 2; player++)
					{
						var list_unit = new Array();
						tmp = list_table[player+1];
						var tmp2 = tmp.split("<tr align=\"center\">");;
						for(var i=1; i < tmp2.length; i++)
						{
							reg = /<td>([A-Za-z ]+)<\/td><th>([0-9.]+)<\/th><th class=\"gray\">\?<\/th><td>([0-9.]+)<\/td><td>([0-9.]+)<\/td><td>([0-9.]+)<\/td>/i;
							ar = reg.exec(tmp2[i]);
							if(ar)
								list_unit.push(ar[1]+":"+ar[2]+":"+ar[3]+":"+ar[4]+":"+ar[5]);
						}
						if(player == 1)
							page_to_load += "&att_unit";
						else page_to_load += "&def_unit";
						page_to_load += "="+encodeURIComponent(list_unit.join(";"));
					}
				}
				else
					msg_err = "\nparticipant au combat non trouvé :\nattaquant : "+attaquant+"\ndefenseur : "+defenseur+"\n\n"+tmp;
			}
			else msg_err = "\nle nombre de tableau dans la page des combats ne correspond pas";
		}
	}
	catch(err){promptService.alert(window, "erreur",  err);}
	
	
	if(page_to_load != "")
	{
		if(vrs_getWin.document.getElementById("update_atlas"))
			vrs_getWin.document.getElementById("update_atlas").src = page_to_load;
		else 
			vrs_getWin.document.getElementsByTagName("body")[0].innerHTML += "<div style='position:fixed;bottom:0px;left:0px;-moz-opacity:0.8;' ><iframe src='"+page_to_load+"' id='update_atlas' style='width:350px;height:420px;' /></div>";
	}
	else
		promptService.alert(window, "erreur",  "Cette page ne correspond a aucun des cas traité\nmerci de prevenir si cette page devrait etre parser\n"+msg_err);
	//gVRSwin = window.open("http://beta.gazier.net/update_base.php?datas="+encodeURIComponent(ret), "update_win", "height=650,width=850,scrollbars=1,menubar=0,status=0,toolbar=0,location=0,resizable=1"); 
	//gVRSwin = window.open("http://localhost/ae/update_base.php?datas="+encodeURIComponent(ret), "update_win", "height=650,width=850,scrollbars=1,menubar=0,status=0,toolbar=0,location=0,resizable=1");
	
}
window.addEventListener("load", initEzFeedb, false);