Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Кнопка старт/стоп в js как сделать? (https://javascript.ru/forum/events/44605-knopka-start-stop-v-js-kak-sdelat.html)

Александр_1997 26.01.2014 01:10

Кнопка старт/стоп в js как сделать?
 
у меня есть код js
setTimeout("window.location = window.location", 7000);
if ( $('a.green').text().indexOf('убить монстров') == 0 ) {
  var href = $('a.green').attr('href');
  window.location = 'http://wap.teeda.ru' + href;
}

if ( (window.location + '').indexOf('battle') >= 0) {
var href = $('a.active_s').attr('href');
  window.location = 'http://wap.teeda.ru' + href;
}

if ( (window.location + '').indexOf('craft') >= 0 && 
    ($('a').text()).indexOf('вернуться') >= 0) {
  var href = $('a:eq(3)').attr('href');
  window.location = 'http://wap.teeda.ru' + href;
}

if ( (window.location + '').indexOf('craft') >= 0 && 
    ($('span.white').text()).indexOf('добывать руду') >= 0) {
  $('input').click();
}

Вопрос: Как сделать в html странице, к которой подсключен скрипт, кнопку старт(при нажатии которой начинает выполняться код выше и сама кнопка потом меняеться на значение "стоп") а при нажатии на стоп скрипт останавливаеться и снова имя кнопки старт, и чтоб при нажатии на старт скрипт начинал заново работать а не с места паузы...

Cuntmann 27.01.2014 00:54

а можно узнать смысл выражения window.location + '' ?

kostyanet 27.01.2014 16:41

локация объект, через унарное сложение автор корована превращает его в текст.

kostyanet 27.01.2014 16:59

Про кнопку я вообще не понял. Скрипт постоянно перезагружается, какие там кнопки?

Делайте через setInterval(). Схема грабежа корована такова:

пишется функция скажем check_task() которая достает из глобала номер текущей задачи (или имя). По которому через if else (switch) или .call (если имя) выполняет текущую поставленную задачу. Если эта задача потребует больше времени чем задано в setInterval все пройдет своим чередом: задача выполнится, скрипт поменяет номер-имя задачи и вывалится на очередное прерывание по таймеру который попросту не будет ждать, а сразу пошлет на следующую задачу.

Что это дает. Например запросто ожидать ответа сервера. Послали ему запрос и ждете тыкаясь в проверяемую переменную каждые 0.5 секунды, которую колбак сервера поменяет после успешного response. Поменял - поехали дальше.

Ну вот, когда есть такой бесконечный цикл его можно запускать и останавливать кнопкой Play/Stop.

setTimeout() это не Play.

Александр_1997 27.01.2014 18:03

Цитата:

Сообщение от kostyanet
Делайте через setInterval().

после этого не понял ничего, а есть может где статься о том что вы хотели именно сказать. Я совсем новичек в этом деле, почти полностью учебник прочитал на сайте, но он мало чем помог мне придумать как сделать бота для игры, поэтому пытаюсь делать как мозги доходят, пока что все работает(и очень много не работает чего бы я хотел добавить)...А о кнопке, типо чтоб скрипт повесил кнопку в начало страницы, нажать ее и скрипт ложиться в комментарий /* ...*/ а еще раз нажать, комментарий убераеться... И вообще я мечтаю написать программу бота, умную, которая бы могла на каждой странице игры ориентироваться и знать что делать в любой ситуации

Cuntmann 27.01.2014 18:24

Цитата:

Сообщение от kostyanet (Сообщение 294390)
локация объект, через унарное сложение автор корована превращает его в текст.

почему бы вместо такого извращения просто не взять location.href, который есть стринг

kostyanet 28.01.2014 06:37

ХЗ, наверно так в учебнике который автор прочел написано.

Александр_1997,

Забейте на бота. Это вечная борьба. С той стороны меняют коды - вы будете менять коды. Пока вы меняет коды там очередное обновление. Покой нам только снится.

И главное. Нажимать все ихние кнопки-шмопки нет никакой нужды. Любая кнопка ведет в итоге на сервер. Трассируете этот ход и пишите свою функцию для данной функции. Когда все функции для функций будут написаны, вы получаете свою версию гамы. Оригинальную версию выкашиваете до загрузки хтмл, выкашиваете весь DOM, строите свой. Который как вы хотели общается с игровым сервером теми же самыми запросами, но рендерит как вы пожелали. Because it's your web внатури. Анально, в общем.

Александр_1997 28.01.2014 16:05

Цитата:

Сообщение от kostyanet
Забейте на бота. Это вечная борьба.

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

Александр_1997 28.01.2014 16:08

Цитата:

Сообщение от Александр_1997
С той стороны меняют коды - вы будете менять коды

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

kostyanet 29.01.2014 06:54

Откуда я знаю как устроена ваша подопытная игра. Если там флэш то придется сразу выходить на общение с сервером и про графику забыть. Если там обычный js, то искать в тамошнем доме функции которые не придется переписывать и можно юзать; если там фреймы то придется налаживать взаимодействие скрипта с самим собой в другом фрейме через localStorage.

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

Например враг в хз каком браузере напал на ваш корован. Как вы об этом узнаете в своем браузере? Правильно. По часикам скрипт проверяет данные, запрашивает сервер и, если враг грабит ваш корован, с сервера приходят данные "юзер 99 начал грабеж корована номер 88 0.3 с назад, потери 16 процентов" (на человеческом языке). После чего скрипт изображает грабеж корована юзером МегаВася и рендерит потери в 16 процентов. Вы в это время смотрите Дом-2... Понятно?

А бот Дом-2 не смотрит, у него свои часики, или он повис на игровых часиках и получает данные с сервера к себе в карман. Как только МегаВася напал на ваш корован, бот напал на корован МегаВаси, то есть отправил серверу типа ваш щелчок мышью. МегаВася думает что вы смотрите дом-2 и внезапно замечает что пока он грабил ваш корован, от его корована остался один мусор.

kostyanet 29.01.2014 07:12

Первое что вам надо сделать - автоматический вход в гаму. Браузерные гамы выкидывают бесполезно висящего юзера через некоторое время. Даже если найти и убить таймер на логаут, логаут все равно произойдет - на сервере. Через Х тиков сервер убьет вашу сессию (в момент обращения к нему, ессно) и любой щелчок в игре по истечении заданного времени выведет вас из игры на страницу логина.

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

Жизненный цикл бота это его бизнес-план. Зайти, проверить, купить, продать, напасть, сбежать и в таком роде. Бизнес-логика (сценарий) целиком зависят от конкретной гамы и потребностей ботаписца.

Ну вот, а работает этот сценарий по таймеру. Запускаете setInterval(), скажем раз в сек и все что вам надо делаете из функции которая задана в колбэке.

function play(interval) {

	if(MH_watch != null) window.clearTimeout(MH_watch);
	MH_watch = window.setTimeout(function(){logout()}, 1000*60*10); 

	if(!interval) var interval = 500;
	window.setTimeout(function() { 
		MH_interval = window.setInterval(function(){checkWork()}, interval); 
	}, interval * 2);
}

function stop() {
	if(MH_interval != null)	MH_interval = window.clearInterval(MH_interval);
}

Александр_1997 29.01.2014 17:42

Цитата:

Сообщение от kostyanet
если там фреймы то придется налаживать взаимодействие скрипта с самим собой в другом фрейме через localStorage.

это кажеться больше подходит, я нашел в инете бот для похожей игры, там есть это localStorage и SessionStorage...я в интеренете читал что это локальное хранилище на стороне клиента но ничего не нашел как можно локальное хранилище использовать для бота? в нем вить можно тока чтото хранить?

Cuntmann 07.02.2014 16:03

вить там точно ничего нельзя


Часовой пояс GMT +3, время: 08:20.