Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.09.2015, 15:21
Новичок на форуме
Отправить личное сообщение для Димитрий Посмотреть профиль Найти все сообщения от Димитрий
 
Регистрация: 30.09.2015
Сообщений: 4

Определение параметра на html странице
Я в ява-скриптинге не силён. Поэтому попросил бы простейший пример бота для игры http://godville.net/superhero
Чтобы, когда мало здоровья - нажималась кнопка(если есть) "сделать хорошо".

Я так понимаю алгоритм:
1) Ищем здоровье текущее и здоровье максимальное.
2)Если текущее меньше максимального на 10%(например), то происходит нажатие на "лечение"

Хоть подскажите от чего отталкиваться?
Здоровье в html выглядит так:
Код:
<div class="l_val">267 / 368</div>
Ссылка на лечение проста:
Код:
<a href="#" class="no_link div_link enc_link" title="Одарить героя благодатью
 и сделать ему что-то хорошее">Сделать хорошо</a>
Скрин
Буду очень признателен.

Последний раз редактировалось Димитрий, 30.09.2015 в 15:23.
Ответить с цитированием
  #2 (permalink)  
Старый 30.09.2015, 16:18
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Как то так, но клика не будет, если подобных ссылок несколько, а нужная стоит не первой в DOM. Вернее, клик то произойдет, но куда,...

var link = document.querySelector('.no_link.div_link.enc_link');
    
setInterval(function() {
    var hp = document.querySelector('.l_val').innerHTML.match(/\d+/g);
	if (hp[1] <= hp[2] - hp[2] / 100 * 10) {
		link.click();
    }
}, 100);


p.s не тестил.

Последний раз редактировалось Lemme, 30.09.2015 в 17:05.
Ответить с цитированием
  #3 (permalink)  
Старый 30.09.2015, 16:35
Аватар для sanmihan
Аспирант
Отправить личное сообщение для sanmihan Посмотреть профиль Найти все сообщения от sanmihan
 
Регистрация: 28.05.2015
Сообщений: 54

Lemme, можно и без регулярки
и да там элементов с классом l_val выше крыши
var link = document.querySelector('#actions .enc_link');
     
setInterval(function() {
    var hp = document.querySelector('#hk_health .l_val').innerHTML.split(" / ");
    if ( hp[0] / hp[1] * 100 <= 10) {
        link.click();
    }
}, 3000);

Последний раз редактировалось sanmihan, 01.10.2015 в 08:03.
Ответить с цитированием
  #4 (permalink)  
Старый 30.09.2015, 16:40
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

sanmihan, можно =)
Ответить с цитированием
  #5 (permalink)  
Старый 30.09.2015, 16:59
Новичок на форуме
Отправить личное сообщение для Димитрий Посмотреть профиль Найти все сообщения от Димитрий
 
Регистрация: 30.09.2015
Сообщений: 4

Что-то не получается... Как этот скрипт запустить? Пытаюсь запустить с помощью расширения - толку 0. Даже "окно" не появляется.
Скрин

var link = document.querySelector('#actions .enc_link');
    var hp = document.querySelector('#hk_health .l_val').innerHTML.split(" / ");
    alert( hp[1] );

setInterval(function() {
    var hp = document.querySelector('#hk_health .l_val').innerHTML.split(" / ");
    alert( hp );
    if (hp[1] <= hp[2] - hp[2] / 100 * 10) {
        link.click();
    }
}, 100);

Последний раз редактировалось Димитрий, 30.09.2015 в 17:06.
Ответить с цитированием
  #6 (permalink)  
Старый 30.09.2015, 17:07
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Димитрий, в консоль.
Ответить с цитированием
  #7 (permalink)  
Старый 30.09.2015, 17:13
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Димитрий
Что-то не получается...
замени hp[1] на hp[0], а hp[2] на hp[1]
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 30.09.2015, 17:15
Новичок на форуме
Отправить личное сообщение для Димитрий Посмотреть профиль Найти все сообщения от Димитрий
 
Регистрация: 30.09.2015
Сообщений: 4

Также ошибки выводит:
Uncaught SyntaxError: Unexpected token var
at Object.InjectedScript._evaluateOn (<anonymous>:904:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:837:34)
at Object.InjectedScript.evaluate (<anonymous>:693:21)
Ответить с цитированием
  #9 (permalink)  
Старый 30.09.2015, 17:30
Новичок на форуме
Отправить личное сообщение для Димитрий Посмотреть профиль Найти все сообщения от Димитрий
 
Регистрация: 30.09.2015
Сообщений: 4

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

var godville = {
    delay: 3000,
    init: function() {
        $('body').append('<aside id="autobot">');
        $('#autobot').append('<p>Select an option from below to start botting</p>');
        $('#autobot').append('<input type="radio" id="auto_encourage" name="autobot"><label for="auto_encourage">Automatically encourage</label>');
        $('#autobot').append('<input type="radio" id="auto_punish" name="autobot"><label for="auto_punish">Automatically punish</label>');
        $('#autobot').append('<button>Stop autoing</button>');
        $('#autobot').css({
            background: 'rgba(255,255,255,.45)',
            width: '330px',
            padding: '15px 0 15px 20px',
            border: '1px solid #CCC',
            'border-radius': '10px',
            'box-sizing': 'border-box',
            'font-size': '12px',
            position: 'absolute',
            top: '40px',
            right: '10px'
        });
        $('#autobot input[type="radio"],#autobot label').css({float: 'left', margin: '3px 0'});
        $('#autobot input[type="radio"]').css({clear: 'left', 'margin-right': '5px'}).change(function() {
            var selection = $(this).prop('id');
            if(godville.interval) godville.stop(true);
            godville.run(selection);
        });
        $('#autobot button').hide().css({margin: '15px 0 0', float: 'left', clear: 'both'}).click(godville.stop);
    },
    interval: '',
    run: function(selection) {
        var godpower = Number($('.gp_val').text().replace(/%/,'')),
        action;
        if(selection === 'auto_punish') {
            action = $('.enc_link');
        } else {
            action = $('.pun_link');
        }
        godville.interval = setInterval(function() {
            if(godpower > 25) {
                action.click();
            } else {
                $('#autobot p').html('You don\'t have enough Godpower.<br>Checking again in '+ (godville.delay / 1000) +' seconds.');
            }
        },godville.delay);
        $('#autobot button').show();
    },
    stop: function(instant) {
        if(godville.interval) {
            clearInterval(godville.interval);
            godville.interval = '';
        }
        if(!instant) {
            $('#autobot p').empty().text('Bot has been stopped.').css('color','red');
            setTimeout(function() {
                $('#autobot p').fadeOut(1000,function() {
                    $(this).text('Select an option from below to start botting').css('color','#555').show();
                });
            },5000);
            $('#autobot input[type="radio"]').prop('checked',false);
            $('#autobot button').hide();
        }
    }
};
godville.init();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с помощью JS изменить description и keywords в HTML странице ? MSDeveloper Элементы интерфейса 1 05.08.2015 16:07
Создать на странице элемент HTML mort_ Общие вопросы Javascript 2 29.03.2015 23:10
Автоматическое присваивание параметра с адресной строки всем ссылкам на странице Енот Работа 2 19.01.2015 15:47
Вывод данных из XML файла на странице HTML с помощью JavaScript. MSDeveloper Общие вопросы Javascript 3 20.08.2014 22:11
JS меню работает на обычной html странице, а на юкозовском движке нет. adware Я не знаю javascript 10 16.05.2009 16:48