Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Установить время работы скрипта (https://javascript.ru/forum/misc/63487-ustanovit-vremya-raboty-skripta.html)

Allina 10.06.2016 09:09

Установить время работы скрипта
 
Здравствуйте.
Помогите, пожалуйста, установить время работы скрипта.
Хочу сделать так чтобы 5 минут работал, 15 минут “отдыхал”
Пыталась использовать Sleep(), но ничего не получилось.
Весь код:
var startValue = '0.00000001', // Don't lower the decimal point more than 4x of current balance
stopPercentage = 0.001, 
maxWait = 777,
stopped = false, // debugging
stopBefore = 1; // In minutes for timer before stopping redirect on webpage
var $loButton = $('#double_your_btc_bet_lo_button'),
$hiButton = $('#double_your_btc_bet_hi_button');
function multiply(){ 
var current = $('#double_your_btc_stake').val();
var multiply = (current * 2).toFixed(8);
$('#double_your_btc_stake').val(multiply);
}
function getRandomWait(){
var wait = Math.floor(Math.random() * maxWait ) + 100;
console.log('Waiting for ' + wait + 'ms before next bet.');
return wait ;
}
function startGame(){
console.log('Game started!');
reset();
$loButton.trigger('click');
}
function stopGame(){
console.log('Game will stop soon! Let me finish.');
stopped = true;
}
function reset(){
$('#double_your_btc_stake').val(startValue);
}
function deexponentize(number){
return number * 10000000;
}
function iHaveEnoughMoni(){
var balance = deexponentize(parseFloat($('#balance').text()));
var current = deexponentize($('#double_your_btc_stake').val());
return ((balance)*2/100) * (current*2) > stopPercentage/100;
}
function stopBeforeRedirect(){
var minutes = parseInt($('title').text());
if( minutes < stopBefore )
{
console.log('Approaching redirect! Stop the game so we don\'t get redirected while loosing.');
stopGame();
return true;
}
return false;
}
$('#double_your_btc_bet_lose').unbind();
$('#double_your_btc_bet_win').unbind();
$('#double_your_btc_bet_lose').bind("DOMSubtreeModified",function(event){
if( $(event.currentTarget).is(':contains("lose")') )
{
console.log('You LOST! Multiplying your bet and betting again.');
multiply();
setTimeout(function(){
$loButton.trigger('click');
}, getRandomWait());
}
});
$('#double_your_btc_bet_win').bind("DOMSubtreeModified",function(event){
if( $(event.currentTarget).is(':contains("win")') )
{
if( stopBeforeRedirect() )
                {
                        return;
                }
if( iHaveEnoughMoni() )
{
console.log('You WON! But don\'t be greedy. Restarting!');
reset();
if( stopped )
{
stopped = false;
return false;
}
}
else
{
console.log('You WON! Betting again');
}
setTimeout(function(){
$loButton.trigger('click');
}, getRandomWait());
}
});startGame()

Alex_63 10.06.2016 11:31

Allina,
Поясните, что делает скрипт, и какая часть его должна "отдыхать"

pureJS 10.06.2016 16:29

Allina,
Цитата:

Сообщение от Allina (Сообщение 418968)
Хочу сделать так чтобы 5 минут работал, 15 минут “отдыхал”
Пыталась использовать Sleep(), но ничего не получилось.


Вот приблизительно так можно это сделать:
Код:

<html>
<head>
<script type="text/javascript">
var последнее_Измерение_Времени = Number(new Date());
var сообщение = 'первое сообщение'; //Остальные сообщения будут выдаваться
//только при нажатии кнопки "Добавить сообщение" и только во время работы

function пять_Минут_Работать()
{
        //1 секунда = 1000 миллисекунд, отсюда 5 минут = 5 * 60 * 1000 = 300000
        if(Number(new Date()) - последнее_Измерение_Времени <= 300000)
        {
                if(сообщение != '')
                {
                        //что-то делает:
                        console.log(сообщение);
                        //сообщение выдано и поэтому его можно больше не выдавать:
                        сообщение = '';
                }

                //вызывает саму себя через 100 миллисекунд
                setTimeout(пять_Минут_Работать, 100);
        }
        else
        {
                последнее_Измерение_Времени = Number(new Date());
                console.log('5 минут работал. Пора бы теперь 15 минут и отдохнуть...');
                пятнадцать_Минут_Отдыхать()
        }
}

function пятнадцать_Минут_Отдыхать()
{
        //1 секунда = 1000 миллисекунд, отсюда 5 минут = 15 * 60 * 1000 = 900000
        if(Number(new Date()) - последнее_Измерение_Времени <= 900000)
        {

                //здесь при "отдыхе" можно что-то делать:
                //будет писать в console каждые 5000 миллисекунд (5 секунд)
                //'Отдыхаю...' в течение 15 минут
                console.log('Отдыхаю...');

                //вызывает саму себя через 5 секунд
                setTimeout(пятнадцать_Минут_Отдыхать, 5000);
        }
        else
        {
                последнее_Измерение_Времени = Number(new Date());
                console.log('15 минут отдохнул. Пора бы теперь 5 минут и поработать...');
                пять_Минут_Работать()
        }
}

//ЗАПУСКАЕМ:
пять_Минут_Работать();
</script>
</head><body>
<input type="button" value="Добавить сообщение" onclick="сообщение = new Date()">
</body></html>

Я не советую начинать изучение JavaScript через JQuery или других библиотек, иначе уровень знаний будет слишком низким.

Для новичка я советую начинать с основ:Эти 2 книги выпущены Netscape - создателями Javascript. Очень советую прочитать!

Как работают setTimeout и setInterval:

pureJS 10.06.2016 16:39

Подсказки:
Вопросы надо задавать так, чтобы другим было легко разобраться и прочитать:
1. Не писать сюда всё, а только самое важное (нужное для понимания)
2. Обязательно использовать [ code ]...[ /code ]
3. Следует прочитать:
Как спросить, чтобы вам ответили

Coriolan161 11.06.2016 00:07

pureJS,
Сам-то ты почему код не обрамляешь?)
Ты это...так подробно расписываешь всё...ты Дева по гороскопу?)

pureJS 11.06.2016 00:35

Coriolan161, обрамляю, но не так как многим бы, возможно, здесь хотелось. Нажми сюда и посмотри как у меня там всё обрамлено. "HTML run" имел наверно в виду? Может быть он здесь неуместен?!

Я не Дева по гороскопу, но кое-что в гороскопе моём от неё есть. Отвечай лучше в личку - не стоит здесь флудить!

рони 11.06.2016 00:51

Цитата:

Сообщение от pureJS
Может быть он здесь неуместен?!

можно же без run? кнопка
форум менее приспособлен для тегов code

Allina 01.07.2016 09:25

Цитата:

Сообщение от pureJS (Сообщение 419009)
Allina,

Очень советую прочитать!

Спасибо.
Извиняюсь за долгое отсутствие, форс-мажор.
Все мои попытки оказались тщетны, скрипт вообще перестаёт работать.

Цитата:

Сообщение от Alex_63 (Сообщение 418978)
Allina,
Поясните, что делает скрипт, и какая часть его должна "отдыхать"

Скрипт работает в консоли, “нажимает” всего одну кнопку на сайте, через рандомный промежуток времени. Задаётся переменной maxWait. Хочу сделать так чтобы функция getRandomWait() возвращала значение равное 15 минут, каждые 5 минут, но чтобы в течении этих 5- ти минут, функция возвращала те миллисекунды которые она возвращает сейчас. Помогите пожалуйста. Вот сама функция:
function getRandomWait(){
var wait = Math.floor(Math.random() * maxWait ) + 100;
console.log('Waiting for ' + wait + 'ms before next bet.');
return wait ;
}

Allina 03.07.2016 05:28

Пыталась сделать так.
Втечении 5-ти минут диапазон случайных чисел от полсекунды до секунды.
По прошествии пяти минут диапазон случайных чисел от 10- ти минут до 15- ти.
var последнее_Измерение_Времени = Number(new Date());
function пять_Минут_Работать()
{

	if(Number(new Date()) - последнее_Измерение_Времени <= 300000)
	{
		maxWait = 1000;//диапазон одна секунда
                start_diap= 500;// начиная с полсекунды
		setTimeout(пять_Минут_Работать, 100);
	}
	else
	{
		maxWait = 900000;//диапазон пятнадцать минут
                start_diap= 10 * 60 * 1000;// начиная  10-ти минут
		последнее_Измерение_Времени = Number(new Date());
		
	}
}

дальше
function getRandomWait(){
var wait = Math.floor(Math.random() * maxWait ) + start_diap;
console.log('Waiting for ' + wait + 'ms before next bet.');
return wait ;
}


и уже получить случайное число здесь:
setTimeout(function()
{
$loButton.trigger('click');
}, getRandomWait());


Подскажите, пожалуйста, что не правильно.


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