1

Тема: Автопокупка стрел

Начал пробовать сделать сие чудо. Проверку на стрелы пока что не трогал (жду новой версии бота), с покупкой стрел за зубы вродь все понятно. Но вот интересно стало, как ботом покупать стрелы через красный плюсик? То есть не циклом, как для зубной покупки, а покупка одной операцией. Названия у кнопки нету, но как я понимаю, нажатие на неё вызывает функцию

function onclick()
{
AddCount('arrow_common100', 'Обычные стрелы для лука')
}

Пошел дальше, клацнул на плюсик. Поле, куда вставлять количество, и кнопка покупки - о них информации нету вообще через дебаг бар.

Можно ли, при наличии такого малого количества инфы, реализовать покупку таким методом?
Я думаю, что такой способ покупки нужен, так как когда в передачах будет видно, что покупалась сотня стрел по одной штуке, если есть возможность купить стразу все 100 - будет наводить подозрения.

2

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)

3

Re: Автопокупка стрел

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

Отредактировано Mr Blanco (2011-07-10 23:15:30)

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

4

Re: Автопокупка стрел

AddCount - лишь делает видимым окно для задания кол-ва покупаемых предметов, а ('arrow_common100', 'Обычные стрелы для лука') - параметры конструктора окна.

Чтобы задать кол-во стрел

top.frames[external.mainFrameIndex].document.getElementsByName("count")[0].value = ХХХ;

Чтобы купить

top.frames[external.mainFrameIndex].document.forms[0].submit();
Оставь надежду всяк сюда входящий ©

5

Re: Автопокупка стрел

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

Это я знаю) вот из-за этого и не хочу использовать данный метод)

6

Re: Автопокупка стрел

Exile пишет:

AddCount - лишь делает видимым окно для задания кол-ва покупаемых предметов, а ('arrow_common100', 'Обычные стрелы для лука') - параметры конструктора окна.

Чтобы задать кол-во стрел

top.frames[external.mainFrameIndex].document.getElementsByName("count")[0].value = ХХХ;

Чтобы купить

top.frames[external.mainFrameIndex].document.forms[0].submit();

В коде это пишется сразу, без ещё каких-либо операций?

Надо же ещё переключить в магазине закладку "амуниция", но это вроде понятно как делать, а вот как тогда выделить именно стрелы, чтобы потом использовать выше написанное? Как-то в ссылку на покупку добавлять?

7

Re: Автопокупка стрел

gorlum пишет:

В коде это пишется сразу, без ещё каких-либо операций?

Надо же ещё переключить в магазине закладку "амуниция", но это вроде понятно как делать, а вот как тогда выделить именно стрелы, чтобы потом использовать выше написанное? Как-то в ссылку на покупку добавлять?

var imgs = top.frames[external.mainFrameIndex].document.images;
        for(var i = 0; i<imgs.length;i++)
        {
            if(imgs[i].onclick && String(imgs[i].onclick).match(/AddCount/) && imgs[i].outerHTML.match(/bolt_common100/))
                {
                imgs[i].click();
                break;
                }
        }
        top.frames[external.mainFrameIndex].document.getElementsByName("count")[0].value = 2;
        top.frames[external.mainFrameIndex].document.forms[0].submit();

В голом виде - так.
Но это, повторюсь, голый вид, т.е. без проверок на закомменченность, видимость и т.д.

Ток что сделал для себя открытие:
оказывается, при получении коллекции объектов в неё не входят искомые объекты, находящиеся в закомменченном виде.

Отредактировано Exile (2011-07-11 00:18:50)

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

8

Re: Автопокупка стрел

Спасибо, попробую.

Это уже тогда, когда бот на странице амуниции, я правильно понял?

Отредактировано gorlum (2011-07-11 00:22:04)

9

Re: Автопокупка стрел

А покупка за зубы будет выглядеть без последних двух строчек? Так?

if(get_mainframe().location.toString().match(/shop\.pl/)){
    top.frames[external.mainFrameIndex].location = "http://"+ external.SCity.Text + ".combats.com/shop.pl?otdel6=1&sid=&" + Math.random();
    if("уровень ниже 8"){
    var x;
    for(x=0;x<=kol;x++)
    {   
    var imgs = top.frames[external.mainFrameIndex].document.images;
        for(var i = 0; i<imgs.length;i++)
        {
            if(imgs[i].onclick && imgs[i].outerHTML.match(/bolt_common100/)&& btn[i].style.visibility!="hidden" && btn[i].length > 0 && !get_mainframe().document.all[0].innerHTML.match(/Недостаточно места в рюкзаке/) && !get_mainframe().document.all[0].innerHTML.match(/Недостаточно денег/))
                {
                imgs[i].click();
                break;
                }
        }
 
    }

И ещё, какой екстернал отвечает за уровень перса? Пытался найти в выложных приёмах - но наверное плохо искал, подскажите пожалуйста)

10

Re: Автопокупка стрел

for(x=0;x<=kol;x++)
    {   
    var imgs = top.frames[external.mainFrameIndex].document.images;
        for(var i = 0; i<imgs.length;i++)
        {
             if(!get_mainframe().document.all[0].innerHTML.match(/Недостаточно места в рюкзаке/) && !get_mainframe().document.all[0].innerHTML.match(/Недостаточно места/))   
                {
                if(imgs[i].onclick && imgs[i].outerHTML.match(/bolt_common100/)&& btn[i].style.visibility!="hidden" && btn[i].length > 0 )
                    {
                    imgs[i].click();
                    break;
                    }
                }
        }
 
    }

Так наверное правильней.

Отредактировано gorlum (2011-07-19 10:36:43)

11

Re: Автопокупка стрел

Структура плохая какая-то hmm
В середине цикла проверка на перегруженность инвентаря, хотя она должна быть самой первой - так он гоняет на каждую итерацию for проверку эту.
Тоже самое про var imgs = ...

Не понимаю, что такое x - к нему ничего не привязано.... т.е. смысла в переборе x нету hmm

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

12

Re: Автопокупка стрел

anahronik пишет:

Структура плохая какая-то hmm
В середине цикла проверка на перегруженность инвентаря, хотя она должна быть самой первой - так он гоняет на каждую итерацию for проверку эту.
Тоже самое про var imgs = ...

Не понимаю, что такое x - к нему ничего не привязано.... т.е. смысла в переборе x нету hmm

Вот так правильней?

var x;
    for(x=0;x<=kol;x++)
    {   
        if(!get_mainframe().document.all[0].innerHTML.match(/Недостаточно места в рюкзаке/) && !get_mainframe().document.all[0].innerHTML.match(/Недостаточно места/))
        {
        var imgs = top.frames[external.mainFrameIndex].document.images;
            for(var i = 0; i<imgs.length;i++)
            {             
                if(imgs[i].onclick && imgs[i].outerHTML.match(/bolt_common100/)&& btn[i].style.visibility!="hidden" && btn[i].length > 0 )
                    {
                    imgs[i].click();
                    break;
                    }
 
            }
        }
    }

х - это количество стрел, которое надо купить, пока х меньше переменной kol (которой дается значение пользователем)  - то выполняется цикл покупки стрел. Я правильно мыслю?)

Или так?

if(!get_mainframe().document.all[0].innerHTML.match(/Недостаточно места в рюкзаке/) && !get_mainframe().document.all[0].innerHTML.match(/Недостаточно места/))
    {
    var imgs = top.frames[external.mainFrameIndex].document.images;
    var x;
    for(x=0;x<=kol;x++)
        {             
            for(var i = 0; i<imgs.length;i++)
            {             
                if(imgs[i].onclick && imgs[i].outerHTML.match(/bolt_common100/)&& btn[i].style.visibility!="hidden" && btn[i].length > 0 )
                    {
                    imgs[i].click();
                    break;
                    }
 
            }
 
        }
    }

Отредактировано gorlum (2011-07-19 14:40:01)

13

Re: Автопокупка стрел

В логике с x точно есть косяк - при покупке вещи каждый раз генерится контрольное число, которое не дает по одной ссылке покупать несколько раз. Т.е. если ты быстро-быстро тыкнешь по ссылке 10 раз - купишь в лучшем случае 1.

А по расположению строк - последний вариант smile

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

14

Re: Автопокупка стрел

anahronik пишет:

В логике с x точно есть косяк - при покупке вещи каждый раз генерится контрольное число, которое не дает по одной ссылке покупать несколько раз. Т.е. если ты быстро-быстро тыкнешь по ссылке 10 раз - купишь в лучшем случае 1.

А по расположению строк - последний вариант smile

Так я же не на ссылку клацаю, а на кнопку) Я так понимаю, что нужно сюда ещё таймер поставить на интервал 1-2 секунды?

15

Re: Автопокупка стрел

вопрос:
плагин привязан к обновлению фрейма или по таймеру?

если по тайму, то как-то так:

var needToBuy;
var leftToBuy;
 
leftToBuy = needToBuy;
 
if(!get_mainframe().document.all[0].innerHTML.match(/Недостаточно места в рюкзаке/) && !get_mainframe().document.all[0].innerHTML.match(/Недостаточно места/))
{
    if(leftToBuy <= 0)
    {
        clearInterval(...);
        return;
    }
    var imgs = top.frames[external.mainFrameIndex].document.images;
    for(var i = 0; i<imgs.length;i++)
    {             
        if(imgs[i].onclick && imgs[i].outerHTML.match(/bolt_common100/)&& btn[i].style.visibility!="hidden" && btn[i].length > 0 )
        {
            leftToBuy--;
            imgs[i].click();
            return;
        }
    }
}
else
{
    leftToBuy = 0;
    clearInterval(...);
}

Отредактировано Exile (2011-07-19 18:24:26)

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

16

Re: Автопокупка стрел

Exile пишет:

вопрос:
плагин привязан к обновлению фрейма или по таймеру?

если по тайму, то как-то так:

var needToBuy;
var leftToBuy;
 
leftToBuy = needToBuy;
 
if(!get_mainframe().document.all[0].innerHTML.match(/Недостаточно места в рюкзаке/) && !get_mainframe().document.all[0].innerHTML.match(/Недостаточно места/))
{
    if(leftToBuy <= 0)
    {
        clearInterval(...);
        return;
    }
    var imgs = top.frames[external.mainFrameIndex].document.images;
    for(var i = 0; i<imgs.length;i++)
    {             
        if(imgs[i].onclick && imgs[i].outerHTML.match(/bolt_common100/)&& btn[i].style.visibility!="hidden" && btn[i].length > 0 )
        {
            leftToBuy--;
            imgs[i].click();
            return;
        }
    }
}
else
{
    leftToBuy = 0;
    clearInterval(...);
}

Спасибо, делаю по таймеру, по другому пока что толком не умею)

И дайте всё-таки екстернал на проверку уровня)

Отредактировано gorlum (2011-07-19 19:00:00)

17

Re: Автопокупка стрел

Не хочет работать с клиринтервал

if(leftToBuy <= 0)
    {
        clearInterval("на вот этом вот символе видит синтаксическую ошибку"...);
        return;
    }

18

Re: Автопокупка стрел

gorlum пишет:

Не хочет работать с клиринтервал

if(leftToBuy <= 0)
    {
        clearInterval("на вот этом вот символе видит синтаксическую ошибку"...);
        return;
    }

ээээ. Ты что, вместо троеточия не вставил имя переменной от setInterval-а?

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

19

Re: Автопокупка стрел

Да, не понял сразу) Если плагин называется strelu, то переменная должна быть streluHandler, как и название основной функции, правильно же?

20

Re: Автопокупка стрел

gorlum пишет:

Да, не понял сразу) Если плагин называется strelu, то переменная должна быть streluHandler, как и название основной функции, правильно же?

Не.
Когда ты устанавливаешь таймер, метод setInterval возвращает идентификатор таймера, который нужен нам для остановки таймера, т.е.
var someVarName = setInterval(func() {...},time);

вот этот someVarName - и есть идентификатор установленного таймера. Его и надо юзать в clearInterval:
clearInterval(someVarName);

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

21

Re: Автопокупка стрел

Стоп, я изначально сделал функцию

function strelu(enabled)
{
    if(enabled)
    {
        streluTimer = setInterval("streluHandler()",2000);   
    }
    else
    {
        clearInterval(streluTimer);
    }

По идее мне вообще не надо ещё что-либо ставить? есть же выставленный интервал, или я туплю?

22

Re: Автопокупка стрел

gorlum пишет:

Стоп, я изначально сделал функцию

function strelu(enabled)
{
    if(enabled)
    {
        streluTimer = setInterval("streluHandler()",2000);   
    }
    else
    {
        clearInterval(streluTimer);
    }

По идее мне вообще не надо ещё что-либо ставить? есть же выставленный интервал, или я туплю?

Да, уже есть. Твой метод streluHandler будет выполняться каждые две секунды.

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

23

Re: Автопокупка стрел

Значит мне вообще не надо ставить clearInterval(streluTimer) в тот код, который ты написал выше?

24

Re: Автопокупка стрел

gorlum пишет:

Значит мне вообще не надо ставить clearInterval(streluTimer) в тот код, который ты написал выше?

Да, что-то я не подумал. clearInterval там не нужен. Плагин ж будет крутиться нон-стоп проверяя значение в ArrowsEnds

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

25

Re: Автопокупка стрел

Exile пишет:
gorlum пишет:

Значит мне вообще не надо ставить clearInterval(streluTimer) в тот код, который ты написал выше?

Да, что-то я не подумал. clearInterval там не нужен. Плагин ж будет крутиться нон-стоп проверяя значение в ArrowsEnds

Крутиться он будет постоянно, но вот в цикл покупки за зубы надо ещё добавить задержку на 1-2 сек, значит надо сделать ещё один счётчик времени?