Godkendt Opaws bysøger

opaw

Elite medlem
Reaktionsscore
0
Så jeg jeg tilbage igen, men har måtte konstatere at flere af mine gamle scripts ikke virker mere fordi TW heldigvis udvikler sig hele tiden. Derfor kigger jeg nu på at få de af mine scripts som jeg ikke kan finde i bedre versioner andre steder til at virke igen.

Derfor kommer nu min bysøger til ære og værdighed igen - for dem der har savnet den. Fælles for alle de godkendte bysøgere der ligger her er at de ikke er opdateret, så de virker ikke. Den der kommer tættest på at virke er Kort Farm Finder. Jeg har ikke testet den i alle detaljer, men da jeg bad den om at finde ubeboede byer, tog den ikke bonusbyer med; men til gengæld byer med begynderbeskyttelse - det var ikke særligt imponerende.

Min bysøger gør ca. det samme som resten af bysøgerne burde gøre: laver en liste med koordinater på de valgte byer, der kan kopieres og bruges som input til et andet script; men der ud over laver den også en tabel i bb-code over de valgte byer, som man kan kopiere ind i forum, i en mail eller i notesbogen. Resultatet vise i et selvstændigt vindue i browseren (evt. nyt faneblad).

Desuden får man en kommandoprompt frem, som man kan skrive sine søgekriterier ind i. Dermed undgår man at skulle ændre i scriptet og kopiere det tilbage ind i kvikbaren, hver gang man vil ændre søgekriterier (Se User Guide).

Endelig virker scriptet og koden er åben, så alle der har lyst til det kan videreudvikle det, samt holde det uptodate, så det ikke holder op med at virke som de andre scripts.

Jeg må dog tage forbehold for et par bugs som jeg har fundet på TW-serveren, som jeg ikke kan gøre noget ved (se User Guide). Jeg kan se at de er diskuteret under enmet "Old Bugs" på testserveren, så jeg kunne godt tænke mig at høre fra support om udsigterne til at disse bugs rettes, samtidig med at jeg naturligvis søger om atter at få dette script godkendt i sin nye form.

Opaw

Kode:
javascript:
  var command = { 
    player : null,
    lt : null,
    gt : null,
    ally: null,
    mood: null
  };
  var win = (window.frames.length>0)?window.main:window;
  function isWindow(frame) {
    return win.game_data.screen==frame;
  }
  function coordString( col, row ) {
    return TWMap.map.coordByPixel(
	TWMap.map.pos[0]+(TWMap.tileSize[0]*col), TWMap.map.pos[1]+(TWMap.tileSize[1]*row));
  }
  var home=win.game_data.village.coord;
  
  function lt(village) {
    if(command.lt) {
      return parseInt(village.points.replace('.',''),10)<parseInt(command.lt,10);
    }
    else {
      return true;
    }
  }
  
  function gt(village) {
    if(command.gt) {
      return parseInt(village.points.replace('.',''),10)>parseInt(command.gt,10);
    }
    else {
      return true;
    }    
  }

  function mgt(village) {
    if(command.mood) {
      return parseInt(village.mood,10)>parseInt(command.mood,10);
    }
    else {
      return true;
    }    
  }


  function seekTowns(command) {
    var res ='';
    for(row=0;row<TWMap.size[1];row++){
      for(col=0;col<TWMap.size[0];col++){
	coord = coordString( col, row );      
	
	village=TWMap.villages[coord.join("")];
	if(village){
	  res = res+coord[0]+'|'+coord[1];
	  if(owner=TWMap.players[village.owner]){
	    res = res+'\tOwner: '+owner.name;
	    res = res+'\tAlly-id: '+owner.ally;
	    res = res+'\tSize: '+village.points;
	    res = res+'\tMood: '+village.mood;
	    if(command.player){if(command.player.indexOf(owner.name)!=-1&&lt(village)&&gt(village)) {
	      text = text+'<p>[*][coord]'+coord[0]+'|'+coord[1]+'[/coord][|]'+village.points+'</p>\n';
	      liste = liste+coord[0]+'|'+coord[1]+' ';
	      ally = owner.ally;
	    }}
	    else if(command.ally){if(parseInt(command.ally,10)==parseInt(owner.ally,10)
					&&lt(village)&&gt(village)&&mgt(village)) {
	      text = text
		+'<p>[*][player]'+owner.name+'[/player][|]'
		+'[coord]'+coord[0]+'|'+coord[1]+'[/coord][|]'+village.points
		+'[|]'+village.mood+'%'
		+'</p>\n';
	      liste = liste+coord[0]+'|'+coord[1]+' ';
	      ally = owner.ally;
	    }}
	  }
	  else if(command.ally==null) {
	    res = res+'\tOwner: NONE';
	    if(command.player==null&&lt(village)&&gt(village)) {
	      text = text+'<p>[*][coord]'+coord[0]+'|'+coord[1]+'[/coord][|]'+village.points+'</p>\n';
	      liste = liste+coord[0]+'|'+coord[1]+' ';
	    }
	  }
	  res = res +'\n';
	}
      }
    }
    return res;
  }
  
  var text='';
  var bbcode='<p><b>';
  var liste='';
  var ally=null;
  
  if(isWindow("map")) {
    cmd = prompt( 'Command','' );
    if((less=cmd.indexOf('<'))!=-1){
      command.lt=cmd.substring(less+1);
      if((end=command.lt.indexOf(' '))!=-1){
	command.lt = command.lt.substring(0,end);
      }
    }
    if((greate=cmd.indexOf('>'))!=-1){
      command.gt=cmd.substring(greate+1);
      if((end=command.gt.indexOf(' '))!=-1){
	command.gt = command.gt.substring(0,end);
      }
    }
    if((player=cmd.indexOf('player:'))!=-1){
      command.player=cmd.substring(player+7);
      if((end=command.player.indexOf(' '))!=-1){
	command.player = command.player.substring(0,end);
      }
    }
    if((allyindex=cmd.indexOf('ally:'))!=-1){
      command.ally=cmd.substring(allyindex+5);
      if((end=command.ally.indexOf(' '))!=-1){
	command.ally = command.ally.substring(0,end);
      }
      if((mood=cmd.indexOf('mood:'))!=-1){
	command.mood=cmd.substring(mood+5);
	if((end=command.mood.indexOf(' '))!=-1){
	  command.mood = command.mood.substring(0,end);
	}
      }
    }
    if(command.player){
      bbcode = bbcode + '[player]'+command.player+'[/player] ';
    }
    if(command.ally) {
      text = '<p>[table][**]Player[||]Village[||]points[||]Mood[/**]</p>';
    }
    else {
      text = '<p>[table][**]Village[||]points[/**]</p>';
    }
    /*alert(*/ seekTowns(command) /*)*/;
    if(ally) {
      bbcode = bbcode+'Ally-Id: '+ally;
    }
    bbcode = bbcode+'</b></p>';
    text = bbcode + text + '<p>[/table]</p>';
    var nw=window.open(); 
    nw.document.write(text+'<p><b>Koordinater</b></p><p>'+liste+'</p>');
    nw.document.close();
  }
  else{
    alert( 'Gå til kortside!');
  }
  end(0);javascript:
  var command = { 
    player : null,
    lt : null,
    gt : null,
    ally: null,
    mood: null
  };
  var win = (window.frames.length>0)?window.main:window;
  function isWindow(frame) {
    return win.game_data.screen==frame;
  }
  function coordString( col, row ) {
    return TWMap.map.coordByPixel(
	TWMap.map.pos[0]+(TWMap.tileSize[0]*col), TWMap.map.pos[1]+(TWMap.tileSize[1]*row));
  }
  var home=win.game_data.village.coord;
  
  function lt(village) {
    if(command.lt) {
      return parseInt(village.points.replace('.',''),10)<parseInt(command.lt,10);
    }
    else {
      return true;
    }
  }
  
  function gt(village) {
    if(command.gt) {
      return parseInt(village.points.replace('.',''),10)>parseInt(command.gt,10);
    }
    else {
      return true;
    }    
  }

  function mgt(village) {
    if(command.mood) {
      return parseInt(village.mood,10)>parseInt(command.mood,10);
    }
    else {
      return true;
    }    
  }


  function seekTowns(command) {
    var res ='';
    for(row=0;row<TWMap.size[1];row++){
      for(col=0;col<TWMap.size[0];col++){
	coord = coordString( col, row );      
	
	village=TWMap.villages[coord.join("")];
	if(village){
	  res = res+coord[0]+'|'+coord[1];
	  if(owner=TWMap.players[village.owner]){
	    res = res+'\tOwner: '+owner.name;
	    res = res+'\tAlly-id: '+owner.ally;
	    res = res+'\tSize: '+village.points;
	    res = res+'\tMood: '+village.mood;
	    if(command.player){if(command.player.indexOf(owner.name)!=-1&&lt(village)&&gt(village)) {
	      text = text+'<p>[*][coord]'+coord[0]+'|'+coord[1]+'[/coord][|]'+village.points+'</p>\n';
	      liste = liste+coord[0]+'|'+coord[1]+' ';
	      ally = owner.ally;
	    }}
	    else if(command.ally){if(parseInt(command.ally,10)==parseInt(owner.ally,10)
					&&lt(village)&&gt(village)&&mgt(village)) {
	      text = text
		+'<p>[*][player]'+owner.name+'[/player][|]'
		+'[coord]'+coord[0]+'|'+coord[1]+'[/coord][|]'+village.points
		+'[|]'+village.mood+'%'
		+'</p>\n';
	      liste = liste+coord[0]+'|'+coord[1]+' ';
	      ally = owner.ally;
	    }}
	  }
	  else if(command.ally==null) {
	    res = res+'\tOwner: NONE';
	    if(command.player==null&&lt(village)&&gt(village)) {
	      text = text+'<p>[*][coord]'+coord[0]+'|'+coord[1]+'[/coord][|]'+village.points+'</p>\n';
	      liste = liste+coord[0]+'|'+coord[1]+' ';
	    }
	  }
	  res = res +'\n';
	}
      }
    }
    return res;
  }
  
  var text='';
  var bbcode='<p><b>';
  var liste='';
  var ally=null;
  
  if(isWindow("map")) {
    cmd = prompt( 'Command','' );
    if((less=cmd.indexOf('<'))!=-1){
      command.lt=cmd.substring(less+1);
      if((end=command.lt.indexOf(' '))!=-1){
	command.lt = command.lt.substring(0,end);
      }
    }
    if((greate=cmd.indexOf('>'))!=-1){
      command.gt=cmd.substring(greate+1);
      if((end=command.gt.indexOf(' '))!=-1){
	command.gt = command.gt.substring(0,end);
      }
    }
    if((player=cmd.indexOf('player:'))!=-1){
      command.player=cmd.substring(player+7);
      if((end=command.player.indexOf(' '))!=-1){
	command.player = command.player.substring(0,end);
      }
    }
    if((allyindex=cmd.indexOf('ally:'))!=-1){
      command.ally=cmd.substring(allyindex+5);
      if((end=command.ally.indexOf(' '))!=-1){
	command.ally = command.ally.substring(0,end);
      }
      if((mood=cmd.indexOf('mood:'))!=-1){
	command.mood=cmd.substring(mood+5);
	if((end=command.mood.indexOf(' '))!=-1){
	  command.mood = command.mood.substring(0,end);
	}
      }
    }
    if(command.player){
      bbcode = bbcode + '[player]'+command.player+'[/player] ';
    }
    if(command.ally) {
      text = '<p>[table][**]Player[||]Village[||]points[||]Mood[/**]</p>';
    }
    else {
      text = '<p>[table][**]Village[||]points[/**]</p>';
    }
    /*alert(*/ seekTowns(command) /*)*/;
    if(ally) {
      bbcode = bbcode+'Ally-Id: '+ally;
    }
    bbcode = bbcode+'</b></p>';
    text = bbcode + text + '<p>[/table]</p>';
    var nw=window.open(); 
    nw.document.write(text+'<p><b>Koordinater</b></p><p>'+liste+'</p>');
    nw.document.close();
  }
  else{
    alert( 'Gå til kortside!');
  }
  end(0);

Hvis man ikke skriver noget i kommandolinjen får man en liste over samtlige ubeboede byer på kortet - Dvs. barbar- og Bonusbyer.

Hvis man skriver kommandoen <2000 får man kun byer med der er mindre end 2000p.
Hvis man skriver kommandoen >1000 får man kun byer med der er større end 1000p
Hvis man skriver kommanoen <2000 >1000 (adskilt af mellemrum) får man byerne mellem 1000p og 2000p.
Disse kommandoer kan bruges sammen med alle øvrige kommandoer.

Hvis man skrivr
Kode:
player:opaw
får man en liste over alle mine byer på kortet. Med mindre at du ønsker at sende opbakning til alle mine byer, anbefaler jeg at du skifter navnet ud med en anden bruger.:D

På siden med resultatet af søgningen står stammen angivet med et ID-nummer. Dette skyldes en af de ovennævnte bugs.
TWMap.allies er kun tilgængelig når TWMap.popup er blevet kaldt (det vil sige at man skal holde musen hen over en af byerne, mens man klikker på kvikbaren for at stammenavnene er tilgængelige for scriptet - hvilket ikke er praktisk muligt. Måske kan man komme om det ved at lave en virktuel aktivering af TWMap.popup.

Dette ID-nummer kan også bruges til at søge på alle byer på kortet fra den samme stamme ved at give kommandoen ally:705 eller andet passende IDnummer.
ally:0 giver alle byer, der ejes af spillere der er uden stamme.

Hvis man søger på en stamme skulle det være muligt også at søge på moral. Skriver man ally:0 mood:50 skulle den finde finde alle stammeløse spillerers byer på kortet, som har en moral på mere end 50%. Det gør den ikke pga. en bug på serveren.
Det lader til at moralen er 100% på alle byer på kortet ind til TWMap.popup er kaldt. Derfor kommer alle byer med. Men det skulle virke når og hvis Innogames får rettet den bug.

Det ville være smart om der var en variable der angav om en bruger var under begynderbeskyttelse, men en sådan har jeg ikke kunne finde.
Jeg er lige blevet opmærksom på at scriptet ikke er understøttet i IE, men virker fint i firefox, opera og google chrome.
 
Senest redigeret:

opaw

Elite medlem
Reaktionsscore
0
Det har ikke været muligt at kopiere dette script fra denne side et stykke tid - jeg ved ikke hvor længe - men det er rettet nu.
 
Top