1

Тема: Призрачка и пауза в начале боя

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

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

2

Re: Призрачка и пауза в начале боя

Помню что anahronik делал что-то подобное. Не помню в какой теме.

(Please log in or register to see this URL)

3

Re: Призрачка и пауза в начале боя

Не помню такого hmm

Вот сейчас сел за пол часика набросал...есественно не проверено
Это плагин. Файл его назвать waiting.js и положить в папку Plugins.

var waitingStatus = false;    //Не трогать.
var priem = "spirit_block25" ;    //Сюда вписать приём, используемый в начале боя. Пофиг, маг или воин указаны в настройках бота.
var bt = 2;             //Количество минут для условия >= таймаут боя.
var btDo = 72000;        //Время ожидания(колличество секунд * 1000). Не забываем оставлять значительный временной резерв для действий бота.
 
function waiting(enabled)
{
    if(enabled)
    {
        PluginsOnLoad["waiting"] = "waitingHandler";
 
    }
    else
    {
        PluginsOnLoad["waiting"] = "";
    }
}
 
function waitingHandler(){
    if (!external.inBattle) waitingStatus = false;
    else{
        if(!waitingStatus){
            BattleTimeout = top.document.all[0].innerHTML.match(/Бой идет с таймаутом \<B\>([0-9]+)\<\/B\>/)[1];
            if(BattleTimeout>=bt){
                external.Stop();
                setTimeout("external.Start();", btDo);
                waitingStatus = true;
                if(external.SCharType.SelectedIndex == 0)
                    top.Battle.oBattle.Send( { special: priem } );
                esle
                    top.Battle.oBattle.Send( { special: priem, enemy: top.Battle.oBattle.sEnemy, login: top.Battle.oBattle.sEnemy } );
            }else{
                waitingStatus = true;
            }
        }
    }
}

Алгоритм работы:
1) Если мы в бою, то сперва вычисляется таймаут в бою.
2) Если таймаут больше или равен указанным в начале файла настройкам(bt), то бот останавливается(полностью) и прописывается, чтоб он запустился через указанный также в начале файла интервал(btDo).
3) Сразу после этого происходит применение приёма, который вы укажите в начале файла(priem).

Переменая waitingStatus является контролирующей процесс и не допускает прогона этого скрипта чаще, чем 1 раз за бой(в соответствии с поставленной задачей).

Работать может исключительно под 8.2. Не ниже. Только в 8.2 появился "external.Stop();".

Отредактировано anahronik (2010-01-08 15:12:48)

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

4

Re: Призрачка и пауза в начале боя

Спасибо, попробую - отпишусь. Бот нужной версии.

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

5

Re: Призрачка и пауза в начале боя

а прописать чтобы бот принимал заявки с тайм-аутом "2++" минут?

Ответы на большинство вопросов связанных с ботом, вы найдёте здесь: (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)

6

Re: Призрачка и пауза в начале боя

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

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

7

Re: Призрачка и пауза в начале боя

Такс.. Создал файл, кинул в плагинс, забил содержимым. Подправил list.txt, вписал туда новый плагин, отметил true. Перезапустил бота. В итоге в начале боя как обычно юзается активный приём "прикрыться", затем призрачка, затем делается удар и бот останавливается.. Короче всё не так как нужно. smile Буду ещё тестить.

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

8

Re: Призрачка и пауза в начале боя

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



  <Priem1>if(top.Battle.oBattle.arrRes["spirit"].innerHTML &gt; 15) // если больше 15 духа
_name = "spirit_13_prot_100"; //юзнуть призрачку чтобы меньше 16 стало
_name = "ждать 30 секунд";
  </Priem1>

Отредактировано pop-corn (2010-01-08 23:50:23)

БК - зло, БОТ - хорошо ™

9

Re: Призрачка и пауза в начале боя

pop-corn пишет:

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

Ты понимаешь что приём срабатывает не в тот момент когда исполняется его код, а после. То есть если ты прождёшь 30 секунд в приёме, то сделаешь это без призрачки. Потом призрачка и размен. Тебе так надо? smile

if(top.Battle.oBattle.arrRes["spirit"].innerHTML > 15) // если больше 15 духа
_name = "spirit_13_prot_100"; //юзнуть призрачку чтобы меньше 16 стало
_name = "ждать 30 секунд";

И какое значение по итогам примет переменная "name"? Тут вообще нет приёма призрачки smile

(Please log in or register to see this URL)

10

Re: Призрачка и пауза в начале боя

забудем о призрачке)

Можно просто сделать - если один из параметров (например дух) имеет какие-либо значение (например больше 15) - то ждать определенное время (например 30 секунд), а потом - в обычном порядке вести бой?

БК - зло, БОТ - хорошо ™

11

Re: Призрачка и пауза в начале боя

Для 8.2 можно написать.
Для младших - влом заморачивать на то, чтоб остановить бота.

Вписать приём в первый слот:

if(...тут условие...){
external.Stop();
setTimeout("external.Start();", 30000);//30000=30секунд
}
Software is like sex: it's better when it's free! © LinusTorvalds

12

Re: Призрачка и пауза в начале боя

Спасибо!

БК - зло, БОТ - хорошо ™

13

Re: Призрачка и пауза в начале боя

Понял - если духа больше 29, юзаем призрачку и на 30 сек останавливаемся. Затем продолжаем как обычно.
Не понял - куда в этом приёме прописать юз призрачки?

Так?

if(parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 29)){
_name="spirit_block25"
external.Stop();
setTimeout("external.Start();", 30000);
}

Или так?

if(parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 29))
_name="spirit_block25"
{
external.Stop();
setTimeout("external.Start();", 30000);
}

Отредактировано boltman (2010-01-09 00:41:53)

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

14

Re: Призрачка и пауза в начале боя

Первый вариант, но у тебя в первой строке лишняя закрывающая скобочка.
После 29 только одна ")"

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

15

Re: Призрачка и пауза в начале боя

При попытке прописать сие в приёмы, бот стоит + в окошке приёма оно вобще не отображается.  sad

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

16

Re: Призрачка и пауза в начале боя

Откуда мне знать, что ты прописал туда, если ты это сюда не скопировал в последний мессаг hmm
Как я могу искать косяк в воздухе? smile

И вобще, после _name="spirit_block25" у тебя ещё и ; оказалась пропущена smile

Отредактировано anahronik (2010-01-09 01:46:37)

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

17

Re: Призрачка и пауза в начале боя

Вы на верном пути.

Одно не учтено, после приема призрачки и остановки бота,
в том же слоте приема нужно прописать

_break = "true";

для того чтобы бот не использовал остальные приемы и не кастовал.

Будет работать только для мага. Для воина надо реализовать _break в Main.js.

18

Re: Призрачка и пауза в начале боя

Я просто предположил, что ему не критично будет 1 круг приёмов пробежать и можно будет без брэйка обойтись smile

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

19

Re: Призрачка и пауза в начале боя

anahronik пишет:

Откуда мне знать, что ты прописал туда, если ты это сюда не скопировал в последний мессаг hmm
Как я могу искать косяк в воздухе? smile

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

Сейчас попробую, учитывая ";" и совет zergnm

PS. Не хочет. sad Прописав следующее в приём

if(parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 29)){
_name="spirit_block25";
external.Stop();
_break = "true";
setTimeout("external.Start();", 30000);
}

бот в бою перестал подавать признаки жизни. smile Или _break = "true"; нужно было прописать после setTimeout, так?

if(parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 29)){
_name="spirit_block25";
external.Stop();
setTimeout("external.Start();", 30000);
_break = "true";
}

Отредактировано boltman (2010-01-09 22:58:09)

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

20

Re: Призрачка и пауза в начале боя

Ты скобочку снова забыл убрать:

if(parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 29){
_name="spirit_block25";
external.Stop();
_break = "true";
setTimeout("external.Start();", 30000);
}
Software is like sex: it's better when it's free! © LinusTorvalds

21

Re: Призрачка и пауза в начале боя

boltman пишет:
anahronik пишет:

Откуда мне знать, что ты прописал туда, если ты это сюда не скопировал в последний мессаг hmm
Как я могу искать косяк в воздухе? smile

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

Сейчас попробую, учитывая ";" и совет zergnm

PS. Не хочет. sad Прописав следующее в приём

if(parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 29)){
_name="spirit_block25";
external.Stop();
_break = "true";
setTimeout("external.Start();", 30000);
}

бот в бою перестал подавать признаки жизни. smile Или _break = "true"; нужно было прописать после setTimeout, так?

if(parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 29)){
_name="spirit_block25";
external.Stop();
setTimeout("external.Start();", 30000);
_break = "true";
}

Будет работать только если в программе выбран тип персонажа Маг.
Для воина нужно добавить _break в Modules\Main.js

22

Re: Призрачка и пауза в начале боя

А spirit_block25 - это приём чей хоть?
маг или воин? smile

вобще трудно писать что-то, в чём не разбираешься hmm

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

23

Re: Призрачка и пауза в начале боя

anahronik пишет:

А spirit_block25 - это приём чей хоть?
маг или воин? smile

вобще трудно писать что-то, в чём не разбираешься hmm

Это общий приём. Призрачная защита...

Интуиция - это способность головы чуять жопой.

24

Re: Призрачка и пауза в начале боя

Зашибись hmm
А я то думаю, зачем Зерг дважды акцентирова внимание на Брэйке hmm

boltman, у тебя в настройках бой в качестве мага или воина выставлен? smile

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

25

Re: Призрачка и пауза в начале боя

zergnm пишет:

Будет работать только если в программе выбран тип персонажа Маг.
Для воина нужно добавить _break в Modules\Main.js

В какой части main.js, если не секрет? smile

Нашёл такое на мага:

function DoWizardPriem(index)
{
    _name = "";
    _break = false;
    _target = top.Battle.oBattle.sEnemyLogin;
    eval("_priemCode = external.SPriem" + index + ".Text");

И такое на воина:

function DoWarriorPriem(index)
{
    _name = "";
    eval("_priemCode = external.SPriem" + index + ".Text");

Т.е. во втором варианте после _name в строке ниже вставить "_break = true;" ?

anahronik пишет:

boltman, у тебя в настройках бой в качестве мага или воина выставлен? smile

В кач. воина, коим чар и является.


PS. Внимание! Бой закончен. Всего вами нанесено урона: 3482 HP. Получено опыта: 21477 (250%).

Не знаю, верно ли чар использовал прописанный приём, но во всяком случае ходы не пропускал, хотя _break я ещё не прописывал.

Отредактировано boltman (2010-01-10 05:43:03)

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)