1

Тема: Плагин автопродажи.

Ребят, кто разбирается, это может работать?

2

Re: Плагин автопродажи.

блин как вставить плагин?) Пишет вставление тега в самого себя не допустимо) Да! я нуб))

Отредактировано lenoxyx (2011-07-21 19:28:33)

3

Re: Плагин автопродажи.

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(/&amp;/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();
            }
        }
    }
}

4

Re: Плагин автопродажи.

судя по коду - плагин оч старый?

Оставь надежду всяк сюда входящий ©

5

Re: Плагин автопродажи.

Exile пишет:

судя по коду - плагин оч старый?

проблема в том что новый никто писать не хочет.

6

Re: Плагин автопродажи.

Кажется этот давным-давно Зерг писал.

Software is like sex: it's better when it's free! © LinusTorvalds

7

Re: Плагин автопродажи.

lenoxyx пишет:
Exile пишет:

судя по коду - плагин оч старый?

проблема в том что новый никто писать не хочет.

В этом плагине что-то не работает или работает не так, как надо?

Оставь надежду всяк сюда входящий ©

8

Re: Плагин автопродажи.

Вроде как не работает вообще.

Вранье.Вранье.Вранье.Правда.(с)Rand

9

Re: Плагин автопродажи.

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(/&amp;/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)

Оставь надежду всяк сюда входящий ©

10

Re: Плагин автопродажи.

Проверю сегодня.

Вранье.Вранье.Вранье.Правда.(с)Rand

11

Re: Плагин автопродажи.

Mr Blanco пишет:

Проверю сегодня.

Ну как успехи? пытался переписать под свои города где нахожусь, не получилось пока что( надо будет ехать пробывать

12

Re: Плагин автопродажи.

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

У меня все работает, что я делаю не так ?

13

Re: Плагин автопродажи.

ZhEkA_BK пишет:

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

Тогда мой шмот он не продавал(( писал мне error постоянно

14

Re: Плагин автопродажи.

ну он там еррор всегда писать будет, то видимо опечатка...а чтобы твой шмот продавал, тебе нужно его название дописать в плагин в самом начале вот таким образом.

var sellTimer = {};
var done = false;
var room ='';
var itemsToSell = [];
itemsToSell.push("вещь 1");
itemsToSell.push("вещь 2");
itemsToSell.push("вещь 3");
itemsToSell.push("вещь 4");
 
 
function SellInShop(enabled)
***********************
У меня все работает, что я делаю не так ?

15

Re: Плагин автопродажи.

ZhEkA_BK пишет:

ну он там еррор всегда писать будет, то видимо опечатка...а чтобы твой шмот продавал, тебе нужно его название дописать в плагин в самом начале вот таким образом.

var sellTimer = {};
var done = false;
var room ='';
var itemsToSell = [];
itemsToSell.push("вещь 1");
itemsToSell.push("вещь 2");
itemsToSell.push("вещь 3");
itemsToSell.push("вещь 4");
 
 
function SellInShop(enabled)
***********************

не ну с этим я то разобрался, проверял вчера. не продает и пишет еррор( если я завожу в магазин уже в раздел продажи шмота, то он выходит в покупку и пишет еррор(((

16

Re: Плагин автопродажи.

Тогда остается ждать автора smile
Я в таком коде не силен еще...тут просто надо разобраться, при каких условиях он должен срабатывать и попытаться отладить его. Подобавлять после каждого условия надпись в чат, и посмотреть какая строка глючит.

У меня все работает, что я делаю не так ?

17

Re: Плагин автопродажи.

else if (room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
                external.ClickLink("Последний Привал",3);

А зачем 3?
Если указать 1(кстати, 1-й какрас был создан для переходов по локациям...но не подходит для данжей, т.к. данжи только внешне схожи), то можно забить на top.frames[external.mainFrameIndex].is_accessible - у меня это предусмотрено...и даже чуть красивее smile

Software is like sex: it's better when it's free! © LinusTorvalds

18

Re: Плагин автопродажи.

anahronik, ты нам помоги с автопродажей разобраться smile Как отладить сам момент сдачи шмоток в гос? Переход по локациям и задание условий на поход в магаз- это уже другая история smile

У меня все работает, что я делаю не так ?

19

Re: Плагин автопродажи.

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(/&amp;/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)

Оставь надежду всяк сюда входящий ©

20

Re: Плагин автопродажи.

anahronik пишет:
else if (room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
                external.ClickLink("Последний Привал",3);

А зачем 3?
Если указать 1(кстати, 1-й какрас был создан для переходов по локациям...но не подходит для данжей, т.к. данжи только внешне схожи), то можно забить на top.frames[external.mainFrameIndex].is_accessible - у меня это предусмотрено...и даже чуть красивее smile

А хрен с ним, уже в лом править.
Буду знать на будущее.

Да, кстати, не помешал бы экстернал для диалога типа external.InDialog (true - если ведется диалог с ботом);

Оставь надежду всяк сюда входящий ©

21

Re: Плагин автопродажи.

т.е., если я правильно понял, можно писать  так?:

else if (room == "Внутренний двор")
                external.ClickLink("Последний Привал",1);
Ответы на большинство вопросов связанных с ботом, вы найдёте здесь: (Please log in or register to see this URL)
(Please log in or register to see this URL) - проверил лично! Подробнее (Please log in or register to see this URL)

22

Re: Плагин автопродажи.

Лучше писать

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("Путь не найден");
}

Оно как-то читаемее + можно раскомментить строку для контроля за переходами smile

Software is like sex: it's better when it's free! © LinusTorvalds

23

Re: Плагин автопродажи.

благодарю)

Ответы на большинство вопросов связанных с ботом, вы найдёте здесь: (Please log in or register to see this URL)
(Please log in or register to see this URL) - проверил лично! Подробнее (Please log in or register to see this URL)

24

Re: Плагин автопродажи.

так что, дальше никто не поможет?( а то мне не хватает знаний, могу как тестер только выступать(

25

Re: Плагин автопродажи.

drsn - хороший тестер smile Рекомендую smile


Кстати, забыл отразить, что можно ещё так писать:

if(!external.ClickLink(_myPath,_myType))
externa.AddToChat("Не найдена подходящая ссылка");
Software is like sex: it's better when it's free! © LinusTorvalds