Заполнение предложений на рынке

DeletedUser

Гость
Выставление предложений на рынке

Скрипт для балансировки наибольших и наименьших ресурсов. Заполняет предложение на рынке ресурсами в пропорции 1:1, также заполняется нужное количество торговцев для балансировки.

Поддерживает браузеры:
icochrome.png
icofirefox.png
icoopera.png


Огромное спасибо Артаксеркс за доработку скрипта.

Код:
javascript: doc=(window.frames.length>0)?document.main:document;url=doc.URL;if(url.indexOf('screen=market')==-1||url.indexOf('mode=own_offer')==-1)location.search='?screen=market&mode=own_offer&village='+game_data.village.id;else{var%20wood=new%20Number($('#wood').html());var%20clay=new%20Number($('#stone').html());var%20iron=new%20Number($('#iron').html());var%20forms=doc.getElementsByTagName('form');var%20table="";for(i=0;i<forms.length&&table=="";i++){if(forms[i].action.indexOf('action=modify_offers')!=-1){table=forms[i].getElementsByTagName('table')[0];break;}}for(i=1;table!=""&&i<table.rows.length-1;i++){child=table.rows[i].cells[1].childNodes;res=child[0].title;num="";for(j=0;j<child.length;j++){value=child[j].nodeValue;if(value!=null)num+=value;}num=num.substring(0,num.length-1);num*=new%20Number(table.rows[i].cells[2].innerHTML);if(res=='Дерево')wood+=num;if(res=='Глина')clay+=num;if(res=='Металл')iron+=num;}$("#res_sell_wood").attr('id',"res_sell_wood_");$("#res_buy_wood").attr('id',"res_buy_wood_");$("#res_sell_stone").attr('id',"res_sell_stone_");$("#res_buy_stone").attr('id',"res_buy_stone_");$("#res_sell_iron").attr('id',"res_sell_iron_");$("#res_buy_iron").attr('id',"res_buy_iron_");doc.getElementById('res_sell_wood').checked=wood>clay&&wood>iron;doc.getElementById('res_sell_stone').checked=clay>wood&&clay>iron;doc.getElementById('res_sell_iron').checked=iron>clay&&iron>wood;doc.getElementById('res_buy_wood').checked=wood<clay&&wood<iron;doc.getElementById('res_buy_stone').checked=clay<wood&&clay<iron;doc.getElementById('res_buy_iron').checked=iron<clay&&iron<wood;wood=Math.round(wood/1000);clay=Math.round(clay/1000);iron=Math.round(iron/1000);offers=Math.max(Math.max(wood,clay),iron)-Math.min(Math.min(wood,clay),iron);offers=Math.round(offers/2);tables=doc.getElementsByTagName('table');for(i=0;i<tables.length;i++){cell=tables[i].rows[0].cells[0].innerHTML;if(cell.indexOf('Купцы:')==0){offers=Math.min(offers,new%20Number(cell.substring(cell.indexOf('%20')+1,cell.indexOf('/'))));}}inputs=doc.getElementsByTagName('input');for(i=0;i<inputs.length;i++){if(inputs[i].value=='Создать')inputs[i].focus();}doc.getElementsByName('multi')[0].value=110;doc.getElementsByName('max_time')[0].value=96;doc.getElementsByName('sell')[1].value=1000;doc.getElementsByName('buy')[1].value=1000;}end();
Код:
javascript: doc=(window.frames.length>0)?document.main:document;
url=doc.URL;
if(url.indexOf('screen=market')==-1||url.indexOf('mode=own_offer')==-1)location.search='?screen=market&mode=own_offer&village='+game_data.village.id;
else
{
  var wood=new Number($('#wood').html());
  var clay=new Number($('#stone').html());
  var iron=new Number($('#iron').html());
  var forms=doc.getElementsByTagName('form');
  var table="";
  for(i=0;i<forms.length&&table=="";i++)
  {
    if(forms[i].action.indexOf('action=modify_offers')!=-1)
    {
      table=forms[i].getElementsByTagName('table')[0];
      break;
    }
  }
  for(i=1;table!=""&&i<table.rows.length-1;i++)
  {
    child=table.rows[i].cells[1].childNodes;
    res=child[0].title;
    num="";
    for(j=0;j<child.length;j++)
    {
      value=child[j].nodeValue;
      if(value!=null)num+=value;
    }
    num=num.substring(0,num.length-1);
    num*=new Number(table.rows[i].cells[2].innerHTML);
    if(res=='Дерево')wood+=num;
    if(res=='Глина')clay+=num;
    if(res=='Металл')iron+=num;
  }
  $("#res_sell_wood").attr('id',"res_sell_wood_");$("#res_buy_wood").attr('id',"res_buy_wood_");
  $("#res_sell_stone").attr('id',"res_sell_stone_");$("#res_buy_stone").attr('id',"res_buy_stone_");
  $("#res_sell_iron").attr('id',"res_sell_iron_");$("#res_buy_iron").attr('id',"res_buy_iron_");
  doc.getElementById('res_sell_wood').checked=wood>clay&&wood>iron;
  doc.getElementById('res_sell_stone').checked=clay>wood&&clay>iron;
  doc.getElementById('res_sell_iron').checked=iron>clay&&iron>wood;
  doc.getElementById('res_buy_wood').checked=wood<clay&&wood<iron;
  doc.getElementById('res_buy_stone').checked=clay<wood&&clay<iron;
  doc.getElementById('res_buy_iron').checked=iron<clay&&iron<wood;
  wood=Math.round(wood/1000);
  clay=Math.round(clay/1000);
  iron=Math.round(iron/1000);
  offers=Math.max(Math.max(wood,clay),iron)-Math.min(Math.min(wood,clay),iron);
  offers=Math.round(offers/2);
  tables=doc.getElementsByTagName('table');
  for(i=0;i<tables.length;i++)
  {
    cell=tables[i].rows[0].cells[0].innerHTML;
    if(cell.indexOf('Купцы:')==0)
    {
      offers=Math.min(offers,new Number(cell.substring(cell.indexOf(' ')+1,cell.indexOf('/'))));
    }
  }
  inputs=doc.getElementsByTagName('input');
  for(i=0;i<inputs.length;i++)
  {
    if(inputs[i].value=='Создать')inputs[i].focus();
  }
  doc.getElementsByName('multi')[0].value=110;
  doc.getElementsByName('max_time')[0].value=96;
  doc.getElementsByName('sell')[1].value=1000;
  doc.getElementsByName('buy')[1].value=1000;
}
end();


Источник
 
Последнее редактирование модератором:

DeletedUser30781

Гость
Артаксеркс, спасибо за работу
 

DeletedUser

Гость
я так понимаю это про балансер... пока занят форумом, но как разберусь переделаю его что бы работал.
Да, про него. Взял поправленный Вами скрипт из соседней темы. Теперь все работает так же как и раньше. Спасибо!
 

DeletedUser

Гость
можно сделать лайт-версию данного скрипта, убрав всю "балансирующую логику".

т.е. чтобы был скрипт, используя который можно быстро выставить заявки на рынок с необходимыми параметрами (по аналогии с фарм-скриптом)
 

DeletedUser

Гость
Такой скрипт уже имеется, вроде бы.
 

DeletedUser

Гость
скорее всего, можете выложить его текст?
 
Верх