Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Активные темы Темы без ответов
Настройки поиска (Страница 11 из 18)
Combots Бот для БК » Сообщения от Andy_SPB
Страницы Назад 1 … 9 10 11 12 13 … 18 Далее
Темы от Andy_SPB Расширенный поиск
Сообщений найдено [ с 251 по 275 из 445 ]
попробуй такой вариант
SPOILER
Showif (typeof(say) == "undefined") {var say = 0;} if (say < 2) { say = say + 1; $('area[title="Оборванец"]',get_mainframe().document).each(function() { this.click(); $('a[onclick*="tn3_poors_default_2"]',get_mainframe().document).each(function(){this.click()})}); } else { say = 0; Walk (XX); }if (say < 2) // - количество разговоров
XX - направление движения, измени... куда тебе нужно...
Должно получиться
Тогда лучше за аналог взять плагин покупки стрел.
Проще, наверное с нуля написать 
Ни фига в примере не понял.
Там только один вариант покупки? Как в магазине?
Tyom,
по приведенному диалогу
• А давай посмотрим, чем ты мне можешь помочь.
(Перейти к магазину и получению предметов)
• Ты похож на человека, у которого есть для меня задания.
(Получить задание)
• Ты же мне задания давал? Я по поводу них...
(Поговорить по поводу взятых заданий
• Кто ты вообще такой?
• Расскажи мне про это кладбище.
• Расскажи мне про население местное.
• Пугаешь ты меня что-то. Пойду я... (завершить разговор)
не могу понять последовательность кликов по сообщениям... как сказал otherway надо ввести отметку о выполнении определенного диалога...
я бы ввел бы переменную и после каждого диалога проверял бы ее
по типу..
кликнул на первую ссылку +1, по второй еще +1(и того 2)...
и проверял бы условие
if(a==1) {диалог уже нажимали проходим к следующему }else {кликаем линк; a=a+1;}как то так... единственный момент... надо продумать где переменную вводить и где обнулять...
if(typeof a == "undefined" || a == 6) {var a=0;} // 6 - это количество диалогов, которые надо перебирать...но надо подумать в какую часть кода воткнуть обнуление... что бы не зациклить...
З.Ы. Пишу с колена... могут быть ошибки...
Евжений,
попробуй такую конструкцию
$('area[coords="65,62,185,182"]',get_mainframe().document).each(function() { this.click(); } )не уверен, что за пашет... но всякое бывает 
как вариант...
если объекта два, то можно попробовать так...
var title_tmp = $('area',get_mainframe().document).filter('[title="Таинственный Круг"]');
if(title_tmp.length > 0) { title_tmp[X].click(); }где в место Х указать либо 0 либо 1... номер объекта, который нужен.
З.Ы. Какой то у меня косяк с форумом ?
как вариант собрать оба элемента в массив, а потом вызвать нужный...
можно через
или
getElementsByTagName('*')находишь нужные... они соберутся в массив... у тебя будет 2 элемента в массиве... один из них буден тот, который тебе нужен...
Я бы пошел бы этим путем... но это кривой и долгий... но других не знаю 
Как вариант посмотреть темы про диалоги... там тоже идет поиск нужных элементов и клик по ним.
не.. так не реализовать...
да и если в ручную делать размен... можно в ручную и прием использовать?
помог бы... но в диалогах сам еще не разобрался 
Nikita_KrM],
по цифрам следующий расклад
1 - переход по картинке(поиск именно функции перехода), не чувствителен к регистру;
2 - поиск по текстовой ссылке,чувствителен к регистру;
3 - по найденному в картинке тексту(outerHTML), не чувствителен к регистру;
4 - поиск по value среди input-элементов,чувствителен к регистру;
нет цифры - поиск везде.
Я так понимаю нужна - 2
ramzes, странно.. у меня косячит... надо будет проверить еще раз.
понял... надо подумать...
у приема задержка в разменах есть?
если есть то без размена не реализовать.
ramzes, Masterplut,
на самом деле не всегда корректно работает условия с точным значением "=="
есть подозрения, что при обновлении фрейма счетчик посещения + посещения.
т.е. пришли на клетку... бот установил "0", на нас напал моб, после боя уже второе посещение и т.д.
У меня не получилось точно прописать... использую "<" или ">"
+ можно расписать условия посещения соседних клеток...
не совсем понятна мысль 
нет.
Плагин одевает, только то, что подобрал бот.
Если бот не подобрал, то плагин не одел.
Если нечего подбирать... бот ни чего и не подберет. 
Стала вылетать ошибка.
"Недостаточно памяти в строке: 382"
Номер строки меняется.
можно подправить...
если они подбираются, то это просто...
если нет... то сложнее 
вопрос решил... пока обкатка
()
Плагин: Одевания свитков Восстановления. (любых)
Название файла: SetScrollHP.js
Размещение: \Combots\Plugins
Описание:
Подбирает и одевает любые свитки Восстановления ХП в пещере.
В случае подбора хотя бы одного свитка оденет все свитки ХП, которые найдет в инвентаре.
Код плагина:
SPOILER
Show// Одевание свитков Восстановление энергии
var Pause = false;
var setTimer = {};
var timePLmin = 2000; // default
var timePLmax = 3000; // default
var stepClick = 0;
var colScroll = 0;
function SetScrollHP(enabled) {
if(enabled) {
PluginsOnLoad["SetScrollHP"] = "TakeDropScroll";
} else {
PluginsOnLoad["SetScrollHP"] = "";
clearInterval(setTimer[mylogin]);
stepClick = 0;
if (Pause){
ChangeTime();
}
}
}
function TakeDropScroll() {
if (top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i)){
if (external.inBattle){
clearInterval(setTimer[mylogin]);
if (Pause) { ChangeTime(); }
} else {
var ParsDrop = top.frames[external.mainFrameIndex].document.documentElement.outerHTML;
if (ParsDrop.indexOf("подняли 'Восстановление энергии") > 0){
colScroll = colScroll + 1;
external.AddToChat("Подняли свиток! Свитков на руках = "+colScroll+" шт.");
}
var itemDrop = $('h4',get_mainframe().document).text();
if (!(itemDrop.indexOf("разбросаны")+1) && colScroll > 0){
setTimer[mylogin] = setInterval('setScroll()', getRndTime(timePLmin, timePLmax));
}
}
}
}
function setScroll(){
if (!Pause) { ChangeTime(); }
if (stepClick == 0){
$('img[title="Настройки/Инвентарь"]',top.frames["bottom"].document).each(function() { this.click(); } )
stepClick = 1;
} else if (stepClick == 1){
external.ClickLink("Фильтр",2);
stepClick = 2;
} else if (stepClick == 2) {
var filterText = top.frames[external.mainFrameIndex].document.getElementsByName("filter");
stepClick = 3;
if (filterText[0].value != "восс"){
filterText[0].value = "восс";
}
} else if (stepClick == 3){
$('input[name="subfilter"]',get_mainframe().document).each(function() { this.click(); });
stepClick = 4;
} else if (stepClick == 4){
if (get_mainframe().document.all[0].innerHTML.indexOf('main.pl?set=cureHP') > -1){
external.ClickLink("надеть",2);
} else {
stepClick = 5;
}
} else {
$('input[value="Вернуться"]',get_mainframe().document).each(function() { this.click(); });
clearInterval(setTimer[mylogin]);
stepClick = 0;
colScroll = 0;
if(Pause) { ChangeTime(); }
}
}
function ChangeTime(){
if (!Pause){
// тормозим бота
external.Stop();
Pause = true;
}else{
// возвращаем бота в нормальное состояни
external.Start();
Pause = false;
}
}
function getRndTime(timePLmin, timePLmax){
return Math.floor(Math.random() * (timePLmax - timePLmin + 1)) + timePLmin;
}
Update 1:
Код плагина переработан полностью.
Update 2:
Исправлен программный недочет.
SPOILER
ShowВ коде организованна проверка наличие дропа по наличию текста в теге h4
$('h4',get_mainframe().document).text();с точки зрения кода (строка выше) фразы:
В комнате разбросаны вещи:
Кол-во смертей: Х
одинаковы(текс то есть и там и там) и соответственно при хотя бы одной смерти, скрипт думал, что в клетке есть дроп и ждал пока бот его подберет, что бы в дальнейшем его одеть. А бот шел дальше, так как дропа нет.
Проще говоря в ситуации с наличием смертей - свитки собирались, но не одевались.
Доработано:
Подбирает/одевает все свитки
Исправлена схема подбора свитка (теперь вначале собирает весь дроп в клетке, а потом одевает).
Исправлена схема одевания (убраны прямые ссылки, теперь делает все последовательно, как "живой")
Теперь есть задержка между действиями (Random).
Организованна функция, продолжения процесса одевания свитков, если оно было прервано нападением моба.
Update 3: v.2.0
Добавлен парсинг чата на получение Свитков Восстановления по суточному заданию.
Важно: После парсинга свитка, в случае его обнаружения, идет очистка чата (целиком)
Update 4: v.2.1
Переписал парсилку чата, теперь нет необходимости в очистке чата и соответственно плагин не чистит чат.
Код v 2.1
SPOILER
Show// Одевание свитков Восстановление энергии v.2.1
var Pause = false;
var setTimer = {};
var timePLmin = 1500; // default
var timePLmax = 2500; // default
var stepClick = 0;
var colScroll = 0;
var messChat = 0;
var messArray = [];
var filterText;
function SetScrollHP(enabled) {
if (enabled) {
PluginsOnLoad["SetScrollHP"] = "TakeDropScroll";
} else {
PluginsOnLoad["SetScrollHP"] = "";
clearInterval(setTimer[mylogin]);
stepClick = 0;
if (Pause) { ChangeTime(); }
}
}
function TakeDropScroll() {
if (top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i)) {
if (external.inBattle) {
clearInterval(setTimer[mylogin]);
if (Pause) { ChangeTime(); }
} else {
var ParsDrop = top.frames[external.mainFrameIndex].document.documentElement.outerHTML;
if (ParsDrop.indexOf("подняли 'Восстановление энергии") > 0) {
colScroll = colScroll + 1;
external.AddToChat("Подняли свиток! Свитков на руках = "+colScroll+" шт.");
}
var itemDrop = $('h4',get_mainframe().document).text();
if (!(itemDrop.indexOf("разбросаны")+1) && colScroll > 0) {
setTimer[mylogin] = setInterval('setScroll()', getRndTime(timePLmin, timePLmax));
}
}
} else {
if (!external.inBattle && messChat == 0) {
// < - Парсилка чата - >
$(".Chat",top.Chat.Self.arrLogs.oChat.oFrame).each(function(){ var messTMP = this.innerText; if (messTMP.indexOf("Восст") > -1) { FindMess(messTMP); } });
}
}
}
function FindMess(messTMP){
if (messArray.indexOf(messTMP) < 0) {
messArray = messArray + messTMP+" // ";
setTimer[mylogin] = setInterval('setScroll()', getRndTime(timePLmin, timePLmax));
messChat = 1;
}
}
function setScroll(){
if (!Pause) { ChangeTime(); }
if (stepClick == 0) {
$('img[title="Настройки/Инвентарь"]',top.frames["bottom"].document).each(function(){ this.click(); });
stepClick = 1;
} else if (stepClick == 1) {
external.ClickLink("Фильтр",2);
stepClick = 2;
} else if (stepClick == 2) {
filterText = top.frames[external.mainFrameIndex].document.getElementsByName("filter");
if (filterText[0].value != "восс") {
filterText[0].value = "восс";
}
stepClick = 3;
} else if (stepClick == 3) {
$('input[name="subfilter"]',get_mainframe().document).each(function(){ this.click(); });
stepClick = 4;
} else if (stepClick == 4) {
if (get_mainframe().document.all[0].innerHTML.indexOf('main.pl?set=cureHP') > -1) {
external.ClickLink("надеть",2);
} else {
stepClick = 5;
}
} else {
$('input[value="Вернуться"]',get_mainframe().document).each(function(){ this.click(); });
clearInterval(setTimer[mylogin]);
stepClick = 0;
colScroll = 0;
messChat = 0;
if(Pause) { ChangeTime(); }
}
}
function ChangeTime(){
if (!Pause) {
external.Stop();
Pause = true;
} else {
external.Start();
Pause = false;
}
}
function getRndTime(timePLmin, timePLmax){
return Math.floor(Math.random() * (timePLmax - timePLmin + 1)) + timePLmin;
}
Доработано:
работаю над этим вопросом... ни как не могу выцепить ссылку на одевания свитка...
всю башку сломал... 
Ссылка имеет вид
http://dreamscity.combats.com/main.pl?set=cureHP45&n=ХХ&sd4=YYYYYYYY&tmp=RRRRRRR
не могу вытащить XX и YYYYYYYY
XX - порядковый номер свитка в инвентаре
YYYYYYYY - номер свитка (наверное ID)
так то линк такой
"http://" + external.SCity.Text + ".combats.com/main.pl?set=cureHP45&n=" + numScroll[1] + "&sd4=" + numScroll[2] + "&tmp=" + Math.random();
надо выцепить переменный numScroll[1] и numScroll[2]
Пытаюсь выцепить через регулярки в главном фрейме, когда там открыт инвентарь....
var ScanScroll = /\?set=cureHP45&n=(\d+)&sd4=(\d+)&/ig;
var numScroll = ScanScroll.exec(external.mainFrameIndex);
но пока что то ни как....
Alexander пишет: при этом варианте просто стоит перед оборванцем и все
в предыдущей клетке переменную задавал?
Вот код с текстовыми сообщениями.
2660b08d326e516137fd03509da085bb : if (typeof(say) == "undefined") { external.AddToChat("Создаю ключ для далога!"); var say = 0; external.AddToChat("Ключ = "+say); } if(say == 1) { external.AddToChat("Уже говорили! Уходим!"); Walk("rr"); } else { say = 1; external.AddToChat("Диалога не было! Начинаем!"); $('area[title="Оборванец"]',get_mainframe().document).each(function() { this.click(); $('a[onclick*="tn3_poors_default_2"]',get_mainframe().document).each(function(){this.click()})});}вставь и посмотри, что будет в чате выдавать.
попробуй так...
var hp_natisk = (typeof(top.Battle.oBattle.oEnemySlot.arrEffects["hp_natisk"]) != "object") ? null : top.Battle.oBattle.oEnemySlot.arrEffects["hp_natisk"].innerHTML.match(/<br><span[^>]*>.(\d)?<\/span><\/div><img[^"]*".+\/hp_natisk\.gif">/i);
hp_natisk = (hp_natisk != null) ? hp_natisk[1] : 0;
if((hp_natisk < 6) && (top.Battle.oBattle.sEnemyLogin.indexOf("Трупожор") > -1)){
_name = ""; // <- название усиленных
}
Первоисточник ()
Pokemon15 пишет:Andy_SPB пишет:проверить сам не могу, но должно работать 
с какого лвл доступ в низины?
к оборванцу только 11 могут пройти
Возможно косяк в экстерналах...
Могу предложить следующий вариант...
378f623a6ffd92a4219d1d25a6836e12 : if (say == 1) { Walk("rr"); } else { say = 1; $('area[title="Оборванец"]',get_mainframe().document).each(function() { this.click(); $('a[onclick*="tn3_poors_default_2"]',get_mainframe().document).each(function(){this.click()})}); }В клетке предыдущей 378f623a6ffd92a4219d1d25a6836e12, необходимо перед функцией Walk() задать переменную
P.S. У меня 7ки мне до 11 долго 
P.P.S. но мне все таки кажется, что код из 309 сообщения, должен работать... кто найдет ошибку поделитесь где не прав 
проверить сам не могу, но должно работать 
с какого лвл доступ в низины?
Сообщений найдено [ с 251 по 275 из 445 ]
Страницы Назад 1 … 9 10 11 12 13 … 18 Далее
Combots Бот для БК » Сообщения от Andy_SPB
На основе PunBB
Currently installed 13 official extensions. Copyright © 2003–2009 PunBB.