1

Тема: МОД: Ремонт вещей почти везде и без учёта карманов.

Совместимость: версия 8.4+
Города: нубские города, Ангелс, Кэп, Сансити, Мун, Сэнд.
Изменения:
1) бот возвращается в ту комнату, откуда ушёл.
Список поддерживаемых комнат: Секретная Комната ,Будуар, ЗВ-ЗВ3, Рыцарский зал, Торговый зал, Башня рыцарей-магов, комнаты третьего этажа(не проверены, но проблем быть не должно).
2) В настройках теперь указывать надо не износ вещи, а разницу между максимальным износом и текущим.
Т.е. если выставить 1, то бот пойдёт чиниться только при 18/19, или 49/50...или 47/48 и т.д.
При 2, соответственно, 18/19 или 17/19, 47/49 или 48/49 и т.п.
3) Чинит только те вещи, которые отвечают условию. Т.е. разница между максимальным износом и текущим меньше или равна указанной в настройках
*NEW*4) не учитывает одетые в карманы предметы(во всяком случае те, картинки которых начинаются на invoke)
Установка:
Перед началом правки делаем резервную копию файла Repair.js (на случай голода во время ядерной зимы).

Новое содержание для файла Repair.js

var repaired = false;
var room_return = '';
 
function RepairMain()
{
 
    var curDurability;
    var mask = /Долговечность\:\s(\d+)\/(\d+)\,/g;
    var temp_objects = external.objects.replace(/invoke[^,]*,/g,'');
    while(curDurability = mask.exec(temp_objects)){
        if(curDurability != null){
            if((curDurability[2]-curDurability[1]) <= parseInt(external.SRepairNumber.Text) && curDurability[1]>0 && curDurability[2]>1)
            {
                external.SetStatusLabel("Ремонт");
                external.repairEnabled = true;
                repaired = false;
                external.healWeared = false;
                external.battleWeared = false;
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?setdown=all&sd4="+sd4+"&"+Math.random();
                return true;
            }
        }
    }
 
 
    if(external.repairEnabled)
    {
        external.SetStatusLabel("Ремонт");
        if(!repaired)
        {
            if(external.room_name == "Ремонтная мастерская")
            {
    repairing();
            }
            else if(external.room_name == "Центральная грибница" && external.SCity.Text=='suncity')
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random(); //suncity
            else if(external.room_name == "Центральная Площадь" && external.SCity.Text=='capitalcity')
                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/main.pl?path=o4&rnd=" + Math.random();
            else if(external.room_name == "Центральная Площадь" || external.room_name == "Центральный утес")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o4&rnd=" + Math.random();
            else if(external.room_name == "Центр падения")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random();
            else if(external.room_name == "Бойцовский Клуб")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o6&rnd=" + Math.random();
            else if(external.room_name == "Секретная Комната"){
                room_return = "Секретная Комната";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?rnd=" + Math.random()+"&path=1.100.1.6.5";
            }
            else if(external.room_name == "Будуар"){
                room_return = "Будуар";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            }
            else if(external.room_name == "Зал воинов"){
                room_return = "Зал воинов";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            }
            else if(external.room_name == "Зал воинов 2"){
                room_return = "Зал воинов 2";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            }
            else if(external.room_name == "Зал воинов 3"){
                room_return = "Зал воинов 3";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            }
            else if(external.room_name == "Этаж 2")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o4&rnd=" + Math.random();
            else if(external.room_name == "Этаж 3")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o4&rnd=" + Math.random();
            else if(external.room_name == "Огненный мир"){
                room_return = "Огненный мир";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o5&rnd=" + Math.random();
            }
            else if(external.room_name == "Колдовской мир"){
                room_return = "Колдовской мир";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o5&rnd=" + Math.random();
            }
            else if(external.room_name == "Астральные миры"){
                room_return = "Астральные миры";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o5&rnd=" + Math.random();
            }
            else if(external.room_name== "Башня рыцарей-магов"){
                room_return = "Башня рыцарей-магов";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
            }
            else if(external.room_name== "Рыцарский зал"){
                if(room_return==='')room_return = "Рыцарский зал";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            }
            else if(external.room_name.match(/Торговый\sЗал/) != null){
                room_return = "Торговый Зал";
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            }
            else if (top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Кто\sздесь?/) || top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Бронзо \- чинить/))
                 top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=2&" + Math.random();
            else if(external.room_name == "Ремонтный цех" && external.SCity.Text=='suncity')
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random(); //suncity
            else if(external.room_name == "Мастерская Удивительного Бронзо")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random(); //sandcity
 
            else if(external.room_name == "Ремонтный цех" && external.SCity.Text=="mooncity"){
                    if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/грязно\sругается/i)){
                        top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=2&" + Math.random();
                    }
                    else if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Масса/)){
                        repairing();
                    }
          else
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=&" + Math.random();
 
            }
            else if(external.room_name == "Ремонтный цех"){   
                    if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Хочу/)){
                        top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=1&" + Math.random();
                    }
                    else if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Масса/)){
                        repairing();
                    }
                    else
                        top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=&" + Math.random();
 
            }
            else
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?homeworld=" + Math.random();
        }
        else
        {
            if(external.room_name == "Ремонтная мастерская" && external.SCity.Text!="angelscity" && external.SCity.Text!="suncity" && external.SCity.Text!="sandcity")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/repare.pl?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=o0&rnd=" + Math.random(); //suncity
            else if(external.room_name == "Ремонтный цех" && external.SCity.Text=="suncity")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random(); //suncity
            else if(external.room_name == "Ремонтная мастерская" && external.SCity.Text=="suncity")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/repare.pl?rnd=" + Math.random()+"&path=1.100.4"; //suncity
            else if(external.room_name == "Ремонтная мастерская" && external.SCity.Text=="sandcity")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/repare.pl?rnd=" + Math.random()+"&path=1.100.2"; //sandcity
            else if(external.room_name == "Мастерская Удивительного Бронзо")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random(); //sandcity
            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 == "Ремонтная мастерская" && external.SCity.Text=="angelscity")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/repare.pl?rnd=" + Math.random()+"&path=1.100.2";
            else if(external.room_name == "Центральная Площадь" && external.SCity.Text=='capitalcity')
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random();
            else if(external.room_name == "Центральная Площадь")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o6&rnd=" + Math.random();
            else if(external.room_name == "Центральный утес")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random();
            else if(external.room_name == "Центральный Оазис")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random();
            else if(external.room_name == "Центр падения")
                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
            else if(external.room_name == room_return){
                room_return='';
                external.repairEnabled = false;
                repaired = false;
            }
            else if(external.room_name == "Бойцовский Клуб"){
                if(room_return=="Зал воинов")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
                else if(room_return=="Зал воинов 2")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
                else if(room_return=="Зал воинов 3")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random();
                else if(room_return=="Будуар")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random();
                else if(room_return=="Секретная Комната")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?rnd=" + Math.random()+"&path=1.100.1.50";
                else if(room_return==""){
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
                    room_return="Зал воинов 2";
                }
                else
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o4&rnd=" + Math.random();
            }
            else if(external.room_name == "Этаж 2"){
                if(room_return=="Рыцарский зал" || room_return=="Башня рыцарей-магов")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
                else if(room_return=="Торговый Зал")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
                else
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random();
            }
            else if(external.room_name == "Рыцарский зал")
                if(room_return=="Башня рыцарей-магов")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o5&rnd=" + Math.random();
            else if(external.room_name == "Этаж 3"){
                if(room_return=="Огненный мир")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
                else if(room_return=="Астральные миры")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random();
                else if(room_return=="Колдовской мир")
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
            }
        }
 
        return true;
    }
 
    return false;
}
 
function repairing(){
    var s = top.frames[external.mainFrameIndex].document.all[0];
    var x=4;
    var item ='';
    var maskA = /Долговечность\:\s(\<FONT\scolor\=\#990000\>)?(\d+)\/(\d+)\</;
    while(s.getElementsByTagName('TR')[x] && s.getElementsByTagName('TR')[x].innerHTML.match(/Ремонт\s1/)){
        var iznos = maskA.exec(s.getElementsByTagName('TR')[x].innerHTML);
        if((iznos[3]-iznos[2]) <= parseInt(external.SRepairNumber.Text)){
            if(external.SRepairType.SelectedIndex == 1)
                item = s.getElementsByTagName('TR')[x].innerHTML.match(/repare.pl\?rp=[A-Za-z_0-9]+?\&amp;full=1\&amp;n=\d+\&amp;tooth=1\&amp;0\.\d+/);
            else
                item = s.getElementsByTagName('TR')[x].innerHTML.match(/repare.pl\?rp=[A-Za-z_0-9]+?\&amp;full=0\.\d+&amp;n=\d+/);
                if(item != '')
                    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + item;
                return;
        }
        x++;
    }
    if(item == '')
        repaired = true;
}

Выражаю благодарность Мунгу за предоставленную базовую информацию для изменения и особенно Петро за помощь в тестировании и поиске багов smile

Выражаю благодарность Петро, за создание маршрута для Suncity

Выражаю благодарность Anton2009, за предоставление возможности составить маршрут для Муна

Отредактировано anahronik (2010-04-11 23:04:47)

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

2

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

бдуем тестить, спасибо)

3

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

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

З.Ы. Да кстати, как ты с диалогом разобрался? Может получится по этому же принципу наладить диалоги в подземельях?

Отредактировано МунГ (2009-11-13 01:40:21)

Ушел.

4

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

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

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

5

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

С помощью этого можно будет чинить вещи и в нуб городах в 8.2 ?

6

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

В версии 8.2. вложен маршрут только под один город(специфический маршрут, отличающийся от остальных городов)....ориентировочно Демонс...
кстати, буду крайне благодарен, если кто-нить подтвердит, что это именно демонс, чтоб я со спокойной совестью смог его сюда вписать.

А в здесь выложенный маршрут - это старый маршрут от версии 8.1 с добавленным ангелсом.
Такчто ответ: Да. Этим маршрутом можно ремонтироваться в нубо-городах.

Отредактировано anahronik (2009-12-13 16:32:28)

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

7

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

UP.
ато народ забывать начал, что такое есть...

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

8

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Ну раз пошла такая пьянка. Приколотил темку.

(Please log in or register to see this URL)

9

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Update.
См. первый пост.

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

10

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

такс ... я недавно проснулся , если что сильно не пинать ....
заменил полностью файл тем что дано - кнопка старт неактивна

Искать в реале smile

11

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Тоже самое(((Поменял файл на старый, вещи отремонтировал вручную

12

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

3 раза заменил свой текущий файл выложенным здесь.
Дважды просто выходил из БК, один раз полностью бота перезапускал.
Ниодин раз не было неактивного старта.
И если включить ремонт - он сразу бежал в мастерскую...

Удобнее всего копировать код через цитирование моего сообщения...это для тех, кто не в курсе....мало ли...

Отредактировано anahronik (2010-02-04 01:16:26)

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

13

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Перезагрузил комп ,ибо какой то лаг был с ботом , заменил еще раз - заработало , но появился другой вопрос: был в ЗВ1 , отремонтировал абсолютно все вещи даже те у которых 3\33 , хотя значение стоит "10" и поперся биться головой об стенку на 2ом этаже "Перехода не существует"
город Олд

Искать в реале smile

14

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Ремонт всегда так работа, что если на тебе одета шмотка с износом выше указанной, то он всё снимает, прёт в мастерскую и чинит всё, что есть в инвентаре.
Биться он у тебя головой начал не знаю почему, но думается мне, что ты бота останавливал...он мог от этого потерять комнату, откуда пошел ремонтироваться....

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

15

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Не думал, что комната сумеет потеряться - я его гонял туда-сюда из разных комнат часа два....ниразу не было.
Но раз уж такая пъянка, то если вдруг потеряет - попрётся теперь в ЗВ2, ибо ЗВ1 мне надоел:)

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

16

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

вроде все пашет ,фенк

Искать в реале smile

17

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Update.
Читаем Изменения и радуемся.

PS - написано бетта(1.9b), значит ночью протестировал на 3 своих шмотках...но не всё успел заметить....но вроде даже работает smile

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

18

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Попробовал - не работает  sad 
Выставлено "чинить при дол-ти 2" , шмотки на мне все 0\** , стоит в ЗВ1 со статусом Ремонт , заявки не подает
UPD:похоже был лаг , полет нормальный

Отредактировано lLOrDl (2010-02-05 04:03:51)

Искать в реале smile

19

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

у меня в кепе бот бегает в комок чиниться(

20

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

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

21

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Я только что тестил, и перезаливал репаир.джс тоже только что.

22

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Крайне странно. Все вещи в целости и сохранности. Бот снял все, куда то пошел. В результате пришел в комиссионку. С его это он вдруг...

ЗЫ: Было в столице.

Отредактировано Panov (2010-02-05 08:49:51)

23

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

ну а что вы ожидалии от мода, написанного в пол второго ночи))))
сегодня маршрут для кэпа переделаю...
У кого ещё проблемы со снятием абсолютно целого комплекта?

Noreas, с тобой отдельный сеанс будет, такчто сейчас ничего не предлагаю.
Дома буду ближе к вечеру. ну там 18...17 часов по Москве...

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

24

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

Внёс поправки на маршрут для  Кэпа.
И добавил мелочь, которая должна улучшить правильность определение износа у вещи перед тем, как идти в ремонтку.

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

25

Re: МОД: Ремонт вещей почти везде и без учёта карманов.

В кэпе работает с глюками! Не обращая на состояние вещей раздевается, идет в починку, возвращается обратно, одевается, после чего выдает в чат сообщение типа: 14:25:40 Долговечность: 0/34,,0,34
после чего опять снимает все, и идет в ремонт по новой. И так по кругу.