Петро пишет:

сколько ты сообщений понаизменял то, ужс))) я уже и твоё скопировать успел, оно красивее выполнено smile ты не против если я его поставлю?)

Я отпостил, потом заметил что ты исправил свое.
Удалил.
Потом заметил ошибку что ты вынес проверку на живность не туда и снова отпостил. Пока отправлял, ты её уже исправил.
Снова удалил)


Проверка на живность\стража тебе нужна в любом случае или только когда противников более 2?
А то в твоей последней версии кода она была для любого случая, а в моей только при n > 2

Да, вот теперь условия правильные.

1.

if((top.Battle.oBattle.oEnemySlot.oLayer.innerHTML.match(/axe[\d]+.gif/) || top.Battle.oBattle.oEnemySlot.oLayer.innerHTML.match(/sword[\d]+.gif/) || top.Battle.oBattle.oEnemySlot.oLayer.innerHTML.match(/knife[\d]+.gif/) || top.Battle.oBattle.oEnemySlot.oLayer.innerHTML.match(/bow[\d]+.gif/))

Если перед тобой арб\танк\зверь\страж - конструкция выше вернет false и выставится залп.

2. Проверку на зверя\стража лучше выносить на самый верх, чтобы не делать её на каждой ветви условий.

ПС.  Не уверен в валидности, но...

top.Battle.oBattle.oEnemySlot.oLayer.innerHTML.match(/(?:axe|sword|knife|bow)[\d]+.gif/)

разве не красивее, чем награмождение проверок выше?)

29

(40 ответов, оставленных в Настройки / Плагины)

Вроде никто не писал

И отвечая на первый пост:
Разработчик заниматься этим не будет. Инфа 99%


я бы сказал инфа 100%. Петро

И при этом надо и там на боте висеть?
Имхо, ностальгируйте пока можете, а не занимайтесь хуйнёй.

32

(33 ответов, оставленных в Настройки / Плагины)

Расположение цветов на этажах статическое чтоль?
Если так - попробуй забить клики в плагин через external.CurrentCell()

anahronik пишет:

опера до сих пор в жопе

На самом деле туда ей и дорога.
На текущий момент этот браузер считается самым ущербным и держится на плаву только из-за того, что его пихают и пропихивают везде, где и куда можно. Ну тобишь топ ужаса для web-разработчика теперь 1) IE6 2) IE7 3) IE8 4) Opera

Остальных надеюсь докрутят smile

Как разработчик - ничего сказать не могу, не приходилось верстать что-то сложнее одной табличной странички)
Как пользователь - в плане юзабилити очень опера приятна. Быстрая и нет ничего лишнего. Но нам не привыкать иметь второй браузер под БК smile Значит, вместо ИЕ это будет хром.

anahronik пишет:

Ну так что там с кроссбраузерностью? smile
Всё ещё только в IE работает? Или другие браузеры подтянулись?
Раньше другие тоже работали, вроде, но только с дополнительными плагинами/настройками - это не подходит smile

хром и лиса подтчгиваются к ие, опера до сих пор в жопе

35

(281 ответов, оставленных в Общий)

Пардон, такой экстерлан, как оказалось, уже есть:
external.CurrentCell()

36

(40 ответов, оставленных в Настройки / Плагины)

Во первых, лишняя закрывающая скобка.
Для написания кода лучше вместо стандартного блокнота юзать например notepad++. У него есть подстветка синтаксиса и можно визуально увидеть, если есть что-то лишнее.

Во вторых:
зачем такая каша с функциями.

function Svetlyak(enabled)
{
    if(enabled)
    {
        PluginsOnLoad["Svetlyak"] = "SvetlyakHandler";
    }
    else
    {
        PluginsOnLoad["Svetlyak"] = "";
    }
}
 
function SvetlyakHandler()
{
    try
    {
        if(top.Battle.bInBattle) return;
 
        if(get_mainframe().document.all[0].innerHTML.match(/Благодарность - это хорошо./))
            external.ClickLink("Благодарность - это хорошо.",2);
 
        top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName  + "?rnd=" + Math.random() +"&path=rl";
    }
    catch(err)
    {
        external.AddToChat("Ошибка в скрипте");
    }
}

37

(40 ответов, оставленных в Настройки / Плагины)

Понятно.
Тогда примерный план действия

Допустим, это начальная клетка грибницы. Инициализируем переменные:

f4966143f4468f2db28fbcf4f87645a6 : external. SetVal("svetlyak1",false); external. SetVal("svetlyak2",false); ... external. SetVal("svetlyakN",false); Walk("rr");

Допустим это клетка перед светляком

2cfb0fd61a6c70ca600a8055f3088b10 : UseObjects(); Walk("rr");

Тогда чтобы кликнуть и пойти дальше, должно быть что-то типа такого:

2cfb0fd61a6c70ca600a8055f3088b10 : if(!external.GetVal("svetlyakN")) for(var j=0; j<top.frames[external.mainFrameIndex].document.getElementById("ObjectsMap").getElementsByTagName("AREA").length; j++) if(top.frames[external.mainFrameIndex].document.getElementById("ObjectsMap").getElementsByTagName("AREA")[j].title && top.frames[external.mainFrameIndex].document.getElementById("ObjectsMap").getElementsByTagName("AREA")[j].title.indexOf("Светляк") > -1) { top.frames[external.mainFrameIndex].document.getElementById("ObjectsMap").getElementsByTagName("AREA")[j].click(); external.SetVal("svetlyakN",true); break;} Walk("rr");

38

(40 ответов, оставленных в Настройки / Плагины)

Вопрос намбер уан:
чем плох метод, предложенный ZhEkA_BK по переходу в диалог прямой ссылкой?

Вопрос намбер ту:
с каким именно светляком и клеткой (по координатам subway.in.ua) у тебя проблемы? что бот должен на этой клетке сделать?

39

(40 ответов, оставленных в Настройки / Плагины)

через час буду дома - набросаю в чертах код

40

(40 ответов, оставленных в Настройки / Плагины)

через цикл на светляка не кликает чтоль?

41

(40 ответов, оставленных в Настройки / Плагины)

RIF17 пишет:

Не получается, голова уже кипит. Доделаю маршрут для 3го этажа, позже продолжу думать о кликах, чтоб её.

сука как специально, сделали на одной клетке Светляка и диалогового бота. 3й день уже сижу над этим.

что именно не получается?
кинь код с которым проблемы

42

(40 ответов, оставленных в Настройки / Плагины)

Что это ?  Клетка?

нет, тут указывается имя твоей переменной

43

(40 ответов, оставленных в Настройки / Плагины)

RIF17 пишет:
Exile пишет:

в начале маршрута инициализируй через initval по переменной на каждого светляка.


Можешь подробнее рассказать?

2) Для сохранения значений переменных при перелетах и подобных случаях, когда глобальные переменные обнуляются, создано 3 external функции:


external.InitVal(key,val) - если не существует переменной с именем key, то она создается и ей присваивается значение val. Если переменная уже есть - оставляет её значение без изменения


external.SetVal(key,val) - как и InitVal, но присваивает значение в любом случае


external.GetVal(key) - возвращает значение переменной key

key - строковый параметры, val - по идее, объект любого типа.

я эти методы применял в плагине для плавки пуршмота. в качестве примера можешь в нем поковыряться

44

(40 ответов, оставленных в Настройки / Плагины)

RIF17 пишет:

короче жопа. Так я и застопорился на это клетке

ничего жопного здесь нет. в начале маршрута инициализируй через initval по переменной на каждого светляка.
затем на клетке перед светляком: if external.getval(светляк1) == false
кликаешь по светляку и делаешь external.setval(свеьляк1)=true
итак для каждого светляка

45

(40 ответов, оставленных в Настройки / Плагины)

anahronik сказал, "Контрольную переменную надо ещё сделать, которая будет говорить, нажал ты на светляка/колодец или нет. Ну и проверку проводить соответственно."

Не уверен, но в маршруте поидее объявлять глобальные переменные нельзя.
Значит, скорее всего он имел ввиду задание переменных через external.initval
Если это так - то да, можно такое сделать.
Но это сделает малость трудночитаемым файл маршрута.

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

46

(40 ответов, оставленных в Настройки / Плагины)

RIF17 пишет:

UseObjects()

Как прописать конкретный цель для клика?

У этого метода нету перегрузок

ZhEkA_BK пишет:

Так сейчас куча экстерналов есть, в которые заносятся временные переменные. Можно немного доработать плагин задание, чтоб он в какой нибудь экстернал заносил два значения (1-собирался, 2-убивалка), а потом этот экстернал вписывать в IF в маршрут.

Кстати, хорошая идея. Плагином определяется тип задания и заносится в коллекцию через SetVal.
А в самом маршруте уже дергать GetVal и по результату выбирать условие

48

(281 ответов, оставленных в Общий)

Хотелось бы список экстерналов для контролов пополнить, да и вообще получить весь его текущий)

А еще меня вот всегда интересовало, как вообще работают подключаемые плагины. Неужели через eval?


Список...будет когда-нибудь smile
Подключение и выполнение идет через библиотечные функции.

Rapidshe пишет:

If (задание собралка) Walk(в одно место); else Walk(в другое место);

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

Средствами маршрута такое не сделать.
Только плагином, который будет подменять маршруты

50

(12 ответов, оставленных в Общий)

Самый большой дроп пур-шмота, наверное, в демонсе. Т.е. за поход с полной зачисткой можно иметь кредов 30.
Но 10кой... ответ очевиден