Тема: Плагин автопродажи.
Ребят, кто разбирается, это может работать?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Чтобы отправить ответ, вы должны вход или регистрация
Ребят, кто разбирается, это может работать?
блин как вставить плагин?) Пишет вставление тега в самого себя не допустимо) Да! я нуб))
Отредактировано lenoxyx (2011-07-21 19:28:33)
var sellTimer = null;
var sold = false;
var done = false;
var sellInAction = false;
var itemsToSell = [];
itemsToSell.push("Пустая бутыль");
itemsToSell.push("и.т.д");
function SellInShop(enabled)
{
if(enabled)
{
sellTimer = setInterval("SellAction()", 3000);
}
else
{
clearInterval(sellTimer);
}
}
Array.prototype.inArray = function(item)
{
for (var i in this)
{
if (this[i] === item)
return true;
}
return false;
}
function SellAction()
{
if(external.dungeonEnabled)
{
var s = top.frames[external.mainFrameIndex].document.all[0].innerHTML;
if(IsMapVisible())
{
sold = false;
done = false;
}
if(s.indexOf("Вы можете посетить") > -1 || s.indexOf("Создать группу") > -1 || s.indexOf("Начать") > -1)
{
if(!sold)
{
sellInAction = true;
external.Stop();
}
else
{
if(!done)
{
sellInAction = false;
external.Start();
done = true;
}
}
}
if(sellInAction)
{
external.RequestInfoFromServer(mylogin, false);
external.SetHPStatusLabel("HP: " + external.hpCurrent + "/" + external.hpMaximum);
if(s.indexOf("Начать") > 0)
if(typeof(top.frames[external.mainFrameIndex].document.all.leave) == "object")
top.frames[external.mainFrameIndex].document.all.leave.click();
if(!sold)
{
if(external.room_name == "Магазин")
{
if(s.match(/Отдел \"Скупка\"/) != null)
{
var items = s.match(/<a\shref="(shop\.pl\?sl=[^"]*?)">продать за .*? кр.<\/a><\/td>[\s\n\r]*<td[^>]*><a\shref="[^"]*"[^>]*>([^<]+?)<\/a>/ig);
if(items != null)
{
for(i=0; i<items.length; i++)
{
items[i] = items[i].match(/<a\shref="(shop\.pl\?sl=[^"]*?)">продать за .*? кр.<\/a><\/td>[\s\n\r]*<td[^>]*><a\shref="[^"]*"[^>]*>([^<]+?)(?:\s*\(x\d+\)|)<\/a>/i);
items[i][1] = items[i][1].replace(/&/g, '&');
if(itemsToSell.inArray(items[i][2]))
{
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + items[i][1];
return;
}
}
}
sold = true;
}
else
if(top.frames[external.mainFrameIndex].document.getElementsByTagName("input")[2].value == "Продать вещи")
top.frames[external.mainFrameIndex].document.getElementsByTagName("input")[2].click();
}
else if(external.room_name == "Центральная площадь")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
else if(external.room_name == "Спуск в Катакомбы")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + top.frames[external.mainFrameIndex].location.href.match(/combats.com\/(.+?\.pl)/)[1] + "?path=1.100&rnd=" + Math.random();
}
else
{
if(external.room_name == "Магазин")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + top.frames[external.mainFrameIndex].location.href.match(/combats.com\/(.+?\.pl)/)[1] + "?path=1.100&rnd=" + Math.random();
else if(external.room_name == "Центральная площадь")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o14&rnd=" + Math.random();
}
}
}
}
судя по коду - плагин оч старый?
судя по коду - плагин оч старый?
проблема в том что новый никто писать не хочет.
Кажется этот давным-давно Зерг писал.
Exile пишет:судя по коду - плагин оч старый?
проблема в том что новый никто писать не хочет.
В этом плагине что-то не работает или работает не так, как надо?
Вроде как не работает вообще.
var sellTimer = {};
var done = false;
var room ='';
var itemsToSell = [];
itemsToSell.push("вещь");
function SellInShop(enabled)
{
if(enabled)
{
sellTimer[mylogin] = setInterval("SellAction()", 3000);
}
else
{
clearInterval(sellTimer[mylogin]);
}
}
Array.prototype.inArray = function(item)
{
for (var i in this)
{
if (this[i] === item)
return true;
}
return false;
}
function SellAction()
{
try
{
if(!external.dungeonEnabled) return;
if(top.Battle.bInBattle || top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i))
{
done = false;
return;
}
var s = top.frames[external.mainFrameIndex].document.all[0].innerHTML;
if(room = s.match(/<nobr>([^<]+)<\/nobr>/))
room = String(room[1]);
if(!done)
{
if (room == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Прилавки с товарами",3);
else if (room == "Грибница" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Грибная поляна",2);
else if (room == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Странное Место",3);
else if (room == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Грибная лужайка",3);
else if (room == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Центральная грибница",3);
else if (room == "Прилавки с товарами")
external.ClickLink("Илена",3);
else if (room == "Пещеры Мглы" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Внутренний двор",2);
else if (room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Последний Привал",3);
else if (room == "Последний Привал" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Цветочный Пустырь",3);
else if (room == "Цветочный Пустырь" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Центральный Оазис",3);
else if (room == "Центральный Оазис" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Базар",3);
else if (room == "Базар" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Лавка Бартоломея",3);
else if (room == "Лавка Бартоломея")
external.ClickLink("Бартоломей",3);
else if(!room)
{
if(s.match(/drwfl\("Илена",/i))
external.ClickLink("Ну да. Займемся торговлей.",2);
else if(s.match(/drwfl\("Бартоломей",/i))
external.ClickLink("Ознакомлюсь, пожалуй, с товарами.",2);
}
else if(room == "Магазин")
{
if(s.match(/Отдел \"Скупка\"/i) == null)
external.ClickLink("Продать вещи",4);
else
{
var items = s.match(/<a\shref="shop\.pl\?sl=[^"]*">продать за .*? кр.<\/a><\/td>[\s\n\r]*<td[^>]*><a [^>]*>[^&<]*/ig);
if(items != null)
for(var i = 0; i < items.length; i++)
{
items[i] = items[i].match(/<a\shref="(shop\.pl\?sl=[^"]*)">продать за .*? кр.<\/a><\/td>[\s\n\r]*<td[^>]*><a [^>]*>([^&<]*)/i);
items[i][1] = items[i][1].replace(/&/g, '&');
if(itemsToSell.inArray(items[i][2]))
{
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + items[i][1];
return;
}
}
done = true;
}
}
}
else
{
if (room == "Магазин" && top.frames[external.mainFrameIndex].is_accessible)
{
if(s.match(/Лавка Бартоломея/)) external.ClickLink("Лавка Бартоломея",2);
if(s.match(/Прилавки с товарами/)) external.ClickLink("Прилавки с товарами",2);
}
else if (room == "Лавка Бартоломея" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Базар",3);
else if (room == "Базар" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Центральный Оазис",3);
else if (room == "Центральный Оазис" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Цветочный Пустырь",3);
else if (room == "Цветочный Пустырь" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Последний Привал",3);
else if (room == "Последний Привал" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Внутренний двор",3);
else if (room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Пещеры Мглы",3);
else if (room == "Прилавки с товарами" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Центральная грибница",3);
else if (room == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Грибная лужайка",3);
else if (room == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Странное Место",3);
else if (room == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Грибная поляна",3);
else if (room == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Грибница",3);
}
}
catch(err)
{
external.AddToChat("error");
}
}
Теоретически, должно работать для санда и сана.
Отредактировано Exile (2011-07-26 21:12:35)
Проверю сегодня.
Проверю сегодня.
Ну как успехи? пытался переписать под свои города где нахожусь, не получилось пока что( надо будет ехать пробывать
так можно зайти в сам магазин и там плагин запустить...главное чтоб шмот продавал, а чтоб по локациям ходил- это уже пройденный этап.
так можно зайти в сам магазин и там плагин запустить...главное чтоб шмот продавал, а чтоб по локациям ходил- это уже пройденный этап.
Тогда мой шмот он не продавал(( писал мне error постоянно
ну он там еррор всегда писать будет, то видимо опечатка...а чтобы твой шмот продавал, тебе нужно его название дописать в плагин в самом начале вот таким образом.
var sellTimer = {};
var done = false;
var room ='';
var itemsToSell = [];
itemsToSell.push("вещь 1");
itemsToSell.push("вещь 2");
itemsToSell.push("вещь 3");
itemsToSell.push("вещь 4");
function SellInShop(enabled)
***********************
ну он там еррор всегда писать будет, то видимо опечатка...а чтобы твой шмот продавал, тебе нужно его название дописать в плагин в самом начале вот таким образом.
var sellTimer = {};
var done = false;
var room ='';
var itemsToSell = [];
itemsToSell.push("вещь 1");
itemsToSell.push("вещь 2");
itemsToSell.push("вещь 3");
itemsToSell.push("вещь 4");
function SellInShop(enabled)
***********************
не ну с этим я то разобрался, проверял вчера. не продает и пишет еррор( если я завожу в магазин уже в раздел продажи шмота, то он выходит в покупку и пишет еррор(((
Тогда остается ждать автора
Я в таком коде не силен еще...тут просто надо разобраться, при каких условиях он должен срабатывать и попытаться отладить его. Подобавлять после каждого условия надпись в чат, и посмотреть какая строка глючит.
else if (room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Последний Привал",3);
А зачем 3?
Если указать 1(кстати, 1-й какрас был создан для переходов по локациям...но не подходит для данжей, т.к. данжи только внешне схожи), то можно забить на top.frames[external.mainFrameIndex].is_accessible - у меня это предусмотрено...и даже чуть красивее
anahronik, ты нам помоги с автопродажей разобраться Как отладить сам момент сдачи шмоток в гос? Переход по локациям и задание условий на поход в магаз- это уже другая история
var sellTimer = {};
var done = false;
var room ='';
var itemsToSell = [];
itemsToSell.push("вещь");
function SellInShop(enabled)
{
if(enabled)
{
sellTimer[mylogin] = setInterval("SellAction()", 3000);
}
else
{
clearInterval(sellTimer[mylogin]);
}
}
Array.prototype.inArray = function(item)
{
for (var i in this)
{
if (this[i] === item)
return true;
}
return false;
}
function SellAction()
{
try
{
if(!external.dungeonEnabled) return;
if(top.Battle.bInBattle || top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i))
{
done = false;
return;
}
var s = top.frames[external.mainFrameIndex].document.all[0].innerHTML;
if(room = s.match(/<nobr>([^<]+)<\/nobr>/))
room = String(room[1]);
if(!done)
{
if(room == null && (s.match(/drwfl\("Илена",/i) || s.match(/drwfl\("Бартоломей",/i)))
external.ClickLink("подойти к прилавку",2);
else if (room == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Прилавки с товарами",3);
else if (room == "Грибница" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Грибная поляна",2);
else if (room == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Странное Место",3);
else if (room == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Грибная лужайка",3);
else if (room == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Центральная грибница",3);
else if (room == "Прилавки с товарами")
external.ClickLink("Илена",3);
else if (room == "Пещеры Мглы" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Внутренний двор",2);
else if (room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Последний Привал",3);
else if (room == "Последний Привал" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Цветочный Пустырь",3);
else if (room == "Цветочный Пустырь" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Центральный Оазис",3);
else if (room == "Центральный Оазис" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Базар",3);
else if (room == "Базар" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Лавка Бартоломея",3);
else if (room == "Лавка Бартоломея")
external.ClickLink("Бартоломей",3);
else if(room == "Магазин")
{
if(s.match(/Отдел \"Скупка\"/i) == null)
external.ClickLink("Продать вещи",4);
else
{
var items = s.match(/<a\shref="shop\.pl\?sl=[^"]*">продать за .*? кр.<\/a><\/td>[\s\n\r]*<td[^>]*><a [^>]*>[^&<]*/ig);
if(items != null)
for(var i = 0; i < items.length; i++)
{
items[i] = items[i].match(/<a\shref="(shop\.pl\?sl=[^"]*)">продать за .*? кр.<\/a><\/td>[\s\n\r]*<td[^>]*><a [^>]*>([^&<]*)/i);
items[i][1] = items[i][1].replace(/&/g, '&');
if(itemsToSell.inArray(items[i][2]))
{
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + items[i][1];
return;
}
}
done = true;
}
}
}
else
{
if (room == "Магазин" && top.frames[external.mainFrameIndex].is_accessible)
{
if(s.match(/Лавка Бартоломея/)) external.ClickLink("Лавка Бартоломея",2);
if(s.match(/Прилавки с товарами/)) external.ClickLink("Прилавки с товарами",2);
}
else if (room == "Лавка Бартоломея" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Базар",3);
else if (room == "Базар" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Центральный Оазис",3);
else if (room == "Центральный Оазис" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Цветочный Пустырь",3);
else if (room == "Цветочный Пустырь" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Последний Привал",3);
else if (room == "Последний Привал" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Внутренний двор",3);
else if (room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Пещеры Мглы",3);
else if (room == "Прилавки с товарами" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Центральная грибница",3);
else if (room == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Грибная лужайка",3);
else if (room == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Странное Место",3);
else if (room == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Грибная поляна",3);
else if (room == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Грибница",3);
}
}
catch(err)
{
external.AddToChat("error");
}
}
Отредактировано Exile (2011-07-26 18:46:46)
else if (room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
external.ClickLink("Последний Привал",3);А зачем 3?
Если указать 1(кстати, 1-й какрас был создан для переходов по локациям...но не подходит для данжей, т.к. данжи только внешне схожи), то можно забить на top.frames[external.mainFrameIndex].is_accessible - у меня это предусмотрено...и даже чуть красивее
А хрен с ним, уже в лом править.
Буду знать на будущее.
Да, кстати, не помешал бы экстернал для диалога типа external.InDialog (true - если ведется диалог с ботом);
т.е., если я правильно понял, можно писать так?:
else if (room == "Внутренний двор")
external.ClickLink("Последний Привал",1);
Лучше писать
if(external.room_name == "Внутренний двор")
external.ClickLink("Последний Привал",1);
и избавиться от переменной room с её определением нафиг
Я обычно пишу так:
var _myPath = "none";
var _myType = 1;
function ... привязка к обновлению
function выполнение()
{
var s = top.frames[external.mainFrameIndex].document.all[0].innerHTML;
if(s.indexOf("Текст диалога") > -1)
{
_myPath = "кусок ответа на диалог";
_myType = 2; // поиск по текстовой ссылке,чувствителен к регистру
}
else if(external.room_name == "Зал воинов 1")
_myPath = "Центр падения";
else if(external.room_name == "Центр падения")
_myPath = "Ремонтная мастерская";
//external.AddToChat("<b>Path:</b> "+_myPath+" <b>Type:</b>"+_myType);
if(_myPath != "none")
external.ClickLink(_myPath,_myType);
else
external.AddToChat("Путь не найден");
}
Оно как-то читаемее + можно раскомментить строку для контроля за переходами
так что, дальше никто не поможет?( а то мне не хватает знаний, могу как тестер только выступать(
drsn - хороший тестер Рекомендую
Кстати, забыл отразить, что можно ещё так писать:
if(!external.ClickLink(_myPath,_myType))
externa.AddToChat("Не найдена подходящая ссылка");
Чтобы отправить ответ, вы должны вход или регистрация