// ==UserScript==
// @name Небоскреб
// @namespace Игры
// @include http://nebo.mobi/*
// @version 1.8.1
// @description Бот для игры Небоскребы
// @match http://nebo.mobi/*
// @copyright BaNru (2014-2016)
// @author BaNru
// ==/UserScript==
var BOT = {};
BOT.version = '1.8.1';
console.log('НебоБот Запущен '+BOT.version);
/* Функции */
function debuglog(){
// console.log(arguments);
}
/**
*
* end_xhr
*
* Последний запрос - выполнение действия и вывод ответа на экран
*
* @param {string} url - страница действия
* @param {string} text - сообщение для вывода на экран
* @param {string} time - вреия ожидания перед действие
* @param {string} ref - реферал, если разрешено в браузере
* @param {function} callback function, необязательный параметр
*
* TODO переписать функцию: заменить аргументы на объект и добавить передачу CLASS в AddTable
*
*/
function end_xhr(url, text, time, ref, callback) {
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
// Раскомментировать строчку, если разрешены рефералы в браузере,
// немного повышает защиту бота
// xhr2.setRequestHeader('Referer', ref);
xhr.onload = function() {
AddTable(text);
debuglog(url, xhr.responseURL);
};
xhr.onerror = function() {
debuglog(xhr);
};
xhr.send();
if(callback)callback();
}, time);
}
/**
*
* rand_time
* Случайное время
*
* По умолчанию возвращает от 2000 до 5000 (мс);
* Задавать в секундах. Необязательные параметры
* @param {number} min secunds
* @param {number} max secunds
*
* @default min = 2s, max = 5s
*
* @returns {number} random millseconds
*
*/
function rand_time(min, max) {
min = ( min || 2 ) *1000;
max = ( max || 5 ) *1000;
return Math.floor(Math.random() * (max - min + 1)) + min;
}
/* Лифтер */
function liftFN() {
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://nebo.mobi/lift', true);
// Раскомментировать строчку, если разрешены рефералы в браузере,
// немного повышает защиту бота
// xhr.setRequestHeader('Referer', 'http://nebo.mobi/lift');
xhr.onload = function() {
var parser = new DOMParser(),
doc = parser.parseFromString(xhr.responseText, "text/html"),
lift = doc.getElementsByClassName('lift')[0],
ttime;
if (lift && lift.getElementsByClassName('tdu')[0]) {
end_xhr(
lift.getElementsByClassName('tdu')[0].href ||
'http://nebo.mobi/'+lift.getElementsByClassName('tdu')[0].getAttribute('href'),
lift.innerHTML.replace('
',''),
rand_time(1,3),
'http://nebo.mobi/lift',
liftFN
);
} else {
ttime = getTime(doc.querySelector('[id^=time]').innerHTML);
AddTable(lift.innerHTML.replace('',''));
AddMessTable('Ждем посетителя!','',function(){
timer(ttime, document.getElementById('log_table_2'), false);
});
setTimeout(function(){
AddMessTable('Развозим дальше','');
liftFN();
}, getSecond(ttime)*1000);
}
};
xhr.onerror = function() {
debuglog(xhr);
AddTable('Лифт сломался, но не отчаивайся - мастера уже на месте!');
AddMessTable('Ошибка! Перезапуск через','',function(){
timer([0, 0, 0, 10], document.getElementById('log_table_2'), false);
});
setTimeout(function(){
liftFN();
}, 10000);
};
xhr.send();
}, rand_time(3,6));
}
/* Закупаем товар */
function productBuy() {
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://nebo.mobi/floors/0/2', true);
// Раскомментировать строчку, если разрешены рефералы в браузере,
// немного повышает защиту бота
// xhr.setRequestHeader('Referer', 'http://nebo.mobi/floors/0/2');
xhr.onload = function() {
var parser = new DOMParser();
var doc = parser.parseFromString(xhr.responseText, "text/html");
var tower = doc.getElementsByClassName('tower')[0];
var links = tower.getElementsByClassName('tdu');
var l = links.length;
var i = 0, golink = "";
var interval = setInterval(function(){
if (links[i]) {
golink = links[i].href || 'http://nebo.mobi/'+links[i].getAttribute('href');
if (/nebo\.mobi\/(?:\.\.\/)*floor\//.exec(golink)) {
var xhr2 = new XMLHttpRequest();
xhr2.open('GET', golink, true);
// xhr2.setRequestHeader('Referer', 'http://nebo.mobi/floors/0/2');
xhr2.onload = function() {
productAction(xhr2.responseText, xhr2.responseURL);
};
xhr2.onerror = function() {
debuglog(xhr2);
};
xhr2.send();
}
}
i++;
if (i == l){
clearInterval(interval);
}
}, 3000);
productBuy();
};
xhr.onerror = function() {
debuglog(xhr);
AddTable('Закупка не получилась!');
AddMessTable('Ошибка! Перезапуск через','',function(){
timer([0, 0, 0, 10], document.getElementById('log_table_2'), false);
});
setTimeout(function(){
productBuy();
}, 10000);
};
xhr.send();
}, rand_time(25,30));
}
/* Функция закупки */
function productAction(text,ref){
var parser = new DOMParser();
var doc = parser.parseFromString(text, "text/html");
var prd = doc.getElementsByClassName('prd')[0];
var links = prd.getElementsByClassName('tdu');
var l = links.length;
var i = 0, golink = "";
var intl = setInterval(function(){
if (links[i]) {
golink = links[i].href || 'http://nebo.mobi/'+links[i].getAttribute('href');
if (/wicket:interface=:\d+:floorPanel:product[A-Z]:emptyState:action:link::ILinkListener::/.exec(golink)) {
// TODO Сделать вывод закупаемого товара
// Сейчас выводится первый, если в магазине 1 товар на закупку
end_xhr(golink, prd.querySelectorAll('li')[i].innerHTML, 100, ref);
}
}
i++;
if (i == l){
clearInterval(intl);
}
}, 1000);
}
/* Сбор выручки */
function collectRevenue() {
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://nebo.mobi/floors/0/5', true);
// xhr.setRequestHeader('Referer', 'http://nebo.mobi/floors/0/5');
xhr.onload = function() {
var parser = new DOMParser();
var doc = parser.parseFromString(xhr.responseText, "text/html");
var tower = doc.getElementsByClassName('tower')[0];
var links = tower.getElementsByClassName('tdu');
var l = links.length;
var i = 0, golink = "";
var interval = setInterval(function(){
if (links[i]) {
golink = links[i].href || 'http://nebo.mobi/'+links[i].getAttribute('href');
if (/wicket:interface=:\d+:floors:\d+:floorPanel:state:action::ILinkListener::/.exec(golink)) {
end_xhr(golink, tower.querySelectorAll('li')[i].innerHTML, 100, 'http://nebo.mobi/floors/0/5');
}
}
i++;
if (i == l){
clearInterval(interval);
}
}, 3000);
collectRevenue();
};
xhr.onerror = function() {
debuglog(xhr);
AddTable('Сбор выручки не получился!');
AddMessTable('Ошибка! Перезапуск через','',function(){
timer([0, 0, 0, 10], document.getElementById('log_table_2'), false);
});
setTimeout(function(){
collectRevenue();
}, 10000);
};
xhr.send();
}, rand_time(25,30));
}
/* Выложить товар */
function putProduct() {
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://nebo.mobi/floors/0/3', true);
// xhr.setRequestHeader('Referer', 'http://nebo.mobi/floors/0/3');
xhr.onload = function() {
var parser = new DOMParser();
var doc = parser.parseFromString(xhr.responseText, "text/html");
var tower = doc.getElementsByClassName('tower')[0];
var links = tower.getElementsByClassName('tdu');
var l = links.length;
var i = 0, golink = "";
var interval = setInterval(function(){
if (links[i]) {
golink = links[i].href || 'http://nebo.mobi/'+links[i].getAttribute('href');
if (/wicket:interface=:\d+:floors:\d+:floorPanel:state:action::ILinkListener::/.exec(golink)) {
end_xhr(golink, tower.querySelectorAll('li')[i].innerHTML, 100, "http://nebo.mobi/floors/0/3");
}
}
i++;
if (i == l){
clearInterval(interval);
}
}, 3000);
putProduct();
};
xhr.onerror = function() {
debuglog(xhr);
AddTable('Выложить товар не получилось!');
AddMessTable('Ошибка! Перезапуск через','',function(){
timer([0, 0, 0, 10], document.getElementById('log_table_2'), false);
});
setTimeout(function(){
putProduct();
}, 10000);
};
xhr.send();
}, rand_time(25,30));
}
/* Выселение жителей */
// TODO не всегда выселяет с первого раза, когда-нибудь найти ошибку и исправить
function humansFN() {
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://nebo.mobi/humans', true);
xhr.onload = function() {
var link, lvl, amount,
parser = new DOMParser(),
doc = parser.parseFromString(xhr.responseText, "text/html"),
human = doc.querySelectorAll('.rsd li'),
tl = human.length,
time_ = 0;
for (var i = 0; i < tl; i++) {
link = human[i].querySelector('a'),
lvl = human[i].querySelector('.abstr'),
amount = human[i].querySelector('.amount');
if (link && parseInt(lvl.innerText) < 9 && !amount) {
time_ = rand_time()+time_;
debuglog(link, parseInt(lvl.innerText));
AddTable(''+human[i].innerHTML+'
');
!function(t,l) {
setTimeout(function(){
evict(l);
},t);
}(time_, link.getAttribute('href'));
}
}
};
xhr.onerror = function() {
debuglog(xhr);
};
xhr.send();
humansFN();
}, rand_time(180,300));// Раз в 3-5 минут
}
/* Функция выселения выбранного жителя */
function evict(url) {
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onload = function() {
var parser = new DOMParser(),
doc = parser.parseFromString(xhr.responseText, "text/html"),
name = doc.querySelector('.wrk strong.stat'),
link = doc.querySelector('a.btnr').getAttribute('href');
end_xhr(link, name.innerText+' выселен(а)', rand_time(), url);
};
xhr.onerror = function() {
debuglog(xhr);
};
xhr.send();
}, rand_time());
}
/* Задания */
function quests(){
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://nebo.mobi/quests', true);
xhr.onload = function() {
var parser = new DOMParser(),
doc = parser.parseFromString(xhr.responseText, "text/html"),
link = doc.querySelectorAll('.nfl .btng'),
tl = link.length,
time_ = 0;
for (var i = 0; i < tl; i++) {
time_ = rand_time()+time_;
//TODO не забыть: когда изменю nd_xhr - убрать тут и в других местах оборачивающий DIV
end_xhr('http://nebo.mobi/'+link[i].getAttribute('href'), ''+link[i].closest('.nfl').innerHTML+'
', time_, 'http://nebo.mobi/quests');
}
};
xhr.onerror = function() {
debuglog(xhr);
};
xhr.send();
quests();
}, rand_time(180,300));// Раз в 3-5 минут
}
/* Задания города */
function questsCity(){
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://nebo.mobi/city/quests/', true);
xhr.onload = function() {
var parser = new DOMParser(),
doc = parser.parseFromString(xhr.responseText, "text/html"),
link = doc.querySelector('.nfl .btng[href*="myQuest:getAwarLink"') ||
doc.querySelector('.nfl .btnr[href*="myQuest:getAwarLink"'),
stop = false;
// Если нет ссылок сбора
if(!link){
var setting = JSON.parse(localStorage.getItem('setting_bot_quests')) || {},
easyMoney = localStorage.getItem('setting_bot_easy_money'),
hour = (new Date).getHours(),
links = doc.querySelectorAll('.nfl .btng[href*="freeQuests"');
// Баксы в полночь
if(easyMoney && easyMoney >= 0 && hour >= easyMoney){
setting[0] = 'Легкие деньги';
}
for(var cur in setting){
if(stop)break;
for (var i = 0, l = links.length; i < l; i++) {
if(setting[cur] === links[i].parentNode.parentNode.querySelector('div:nth-child(1) > strong').textContent){
link = links[i];
stop = true;
break;
}
}
}
}
// Сбор задания или выбор нового
if(link){
end_xhr(
'http://nebo.mobi/'+link.getAttribute('href'),
''+link.closest('.nfl').innerHTML+'
',
rand_time(),
'http://nebo.mobi/city/quests/'
);
}
};
xhr.onerror = function() {
debuglog(xhr);
};
xhr.send();
questsCity();
}, rand_time(180,300));// Раз в 3-5 минут
}
/* Выбор задания города (вывод инпутов) */
function questsCitySelect(){
var elements = document.querySelectorAll('div.nfl > div:nth-child(1) > strong'),
setting = JSON.parse(localStorage.getItem('setting_bot_quests')) || {},
easyMoney = localStorage.getItem('setting_bot_easy_money'),
inputMoney;
// Поле для Легких денег
inputMoney = document.createElement('input');
inputMoney.className = 'easy_money';
inputMoney.type="number";
inputMoney.size='2';
inputMoney.min = '0';
inputMoney.max = '23';
inputMoney.value = easyMoney;
inputMoney.addEventListener('input', function(){
localStorage.setItem('setting_bot_easy_money', parseInt(this.value));
});
for (var i = 0, l = elements.length, input; i < l; i++) {
input = document.createElement('input');
input.addEventListener('input', questsCitySelectChange);
input.className = 'input_bot_quests';
input.type="number";
input.size='2';
input.min = '0';
input.max = '19';
input.value = 0;
input.setAttribute('value', 0);
for(var cur in setting){
if (setting[cur] === elements[i].textContent){
input.value = cur;
input.setAttribute('value', cur);
}
if(elements[i].textContent === 'Легкие деньги'){
elements[i].appendChild(inputMoney);
}
}
elements[i].appendChild(input);
}
}
/* Изменение приоритета заданий города */
function questsCitySelectChange(){
var thisInput = this,
thisInputValue = this.value,
thisText = thisInput.parentNode.textContent,
setting = JSON.parse(localStorage.getItem('setting_bot_quests')) || {},
inputD = document.querySelector('div.nfl > div:nth-child(1) > strong input[value="'+thisInputValue+'"]');
// Удаялем/обнуляем другие значения с таким же приоритетом
if(thisInputValue > 0 && inputD){
inputD.value = 0;
inputD.setAttribute('value', 0);
}
// Удаляем текущее, чтобы записать новое
for(var cur in setting){
if(setting[cur] === thisText){
delete setting[cur];
}
}
// Устанавливаем value, чтобы сработал querySelector на удаление
thisInput.setAttribute('value', thisInputValue);
// Пишем новое значение
if(thisInputValue.length > 0){
setting[thisInputValue] = thisText;
}
// Удаляем пустышки
delete setting[""];
delete setting[0];
// Пишем в localStorage
localStorage.setItem('setting_bot_quests', JSON.stringify(setting));
}
/*
* Инвесторы
*
* @param {String} url, необязательный параметр
* @param {Number} millseconds - время ожидания, необязательный параметр
*
*/
function boss(url,time){
// TODO Сделать ожидание дня
var day = (new Date()).getDay();
url = url || "http://nebo.mobi/boss/";
if(day == 6){
time = time || rand_time();
}
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onload = function() {
var parser = new DOMParser(),
doc = parser.parseFromString(xhr.responseText, "text/html"),
link = doc.querySelector('.btng[href*="startCombatLink"]'),
time0 = doc.querySelector('.cntr > div > div.amount span'),
time1 = doc.querySelector('.m5 > .cntr.amount .hr + span'),
time2 = doc.querySelector('.cntr span[id^=time]');
// Инициируем запуск переговоров
if(link){
AddTable(''+link.closest('.m5').innerHTML+'
');
setTimeout(function(){
debuglog(link, link.innerHTML);
boss('http://nebo.mobi/'+link.getAttribute('href'));
},rand_time());
} else {
// Ожидание начала
link = doc.querySelector('.btng[href*="actionLink"]');
if(time0){
boss('http://nebo.mobi/'+link.getAttribute('href'),parseInt(time0.textContent)*1000);
AddTable(''+time0.closest('.cntr').innerHTML+'
');
}
// Перерыв
else if(time1){
boss('http://nebo.mobi/'+link.getAttribute('href'),getSecond(('0:'+time1.textContent).split(':'))*1000);
AddTable(''+time1.closest('.m5').innerHTML+'
');
}
// Переговоры уже идут
else if(time2){
boss('http://nebo.mobi/'+link.getAttribute('href'),parseInt(time2.textContent)*1000);
AddTable(''+time2.closest('.cntr').parentNode.innerHTML+'
');
}
// Скорее всего начало переговоров
else {
if(link){
AddTable(''+link.closest('.cntr').parentNode.innerHTML+'
');
boss('http://nebo.mobi/'+link.getAttribute('href'),500);
}
// Вероятно ошибка
else{
boss();
}
}
}
};
xhr.onerror = function() {
boss();
debuglog(xhr);
};
xhr.send();
}, time);
}
/* Задания вестибюля */
function lobby(){
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://nebo.mobi/lobby', true);
xhr.onload = function() {
var parser = new DOMParser(),
doc = parser.parseFromString(xhr.responseText, "text/html"),
link = doc.querySelector('.btng[href*="questPanel:getAwarLink"]') ||
doc.querySelector('.btng[href*="questPanel:getQuest"]'),
thisText= doc.querySelector('.nfl .admin').textContent,
setting = JSON.parse(localStorage.getItem('setting_bot_lobby')) || {};
if(link && setting[thisText]){
end_xhr(
'http://nebo.mobi/'+link.getAttribute('href'),
''+link.closest('.nfl').innerHTML+'
',
rand_time(),
'http://nebo.mobi/lobby'
);
}
};
xhr.onerror = function() {
debuglog(xhr);
};
xhr.send();
lobby();
}, rand_time(180,300));// Раз в 3-5 минут
}
/* Инпуты в вестибюле */
function lobbySelect(){
var element = document.querySelector('div.nfl:not(.m5)'),
setting = JSON.parse(localStorage.getItem('setting_bot_lobby')) || {},
input = document.createElement('input');
input.addEventListener('change', function(){
setting[element.querySelector('.admin').textContent] = this.checked;
localStorage.setItem('setting_bot_lobby', JSON.stringify(setting));
});
input.className = 'input_bot_check';
input.type="checkbox";
if (setting[element.querySelector('.admin').textContent]){
input.checked = true;
}
element.insertBefore(input, element.firstChild);
}
/*
* Функция добавления в "логи"
*
* @param {String} текст сообщения
* @param {String} class, необязательный параметр
*/
function AddTable(e,c){
var d = new Date();
var t = addZero(d.getHours())+':'+addZero(d.getMinutes())+':'+addZero(d.getSeconds());
document.getElementById('lift_table').insertAdjacentHTML('afterbegin',
''+t+' | '+e+' |
');
}
function AddMessTable(f,s,callback){
document.getElementById('log_table_1').innerHTML = f;
document.getElementById('log_table_2').innerHTML = s;
if(callback)callback();
}
/*
*
* Функция извлечения времени из строки
*
* @param {String} t - время со страницы формата "39 ч 59 мин"
* @returns {Array} [days, hours, minutes, seconds]
*
*/
function getTime(t) {
var d = 0, h = 0, m = 0, s = 0,
parsetime = t.split(/\s/);
if (parsetime[1] == 'д') {
d = Math.round(parsetime[0]);
h = Math.round(parsetime[2]);
}
if (parsetime[1] == 'ч') {
h = Math.round(parsetime[0]);
m = Math.round(parsetime[2]);
}
if (parsetime[1] == 'м') {
m = Math.round(parsetime[0]);
s = Math.round(parsetime[2]);
}
if (parsetime[1] == 'сек') {
s = Math.round(parsetime[0]);
}
return [d, h, m, s];
}
/*
*
* Функция получения секунд из массива времени getTime()
*
* @param {Array} [days, hours, minutes, seconds]
* @returns {Number} seconds
*
*/
function getSecond(t) {
return (((parseInt(t[0])*24+parseInt(t[1]))*60)+parseInt(t[2]))*60+parseInt(t[3]);
}
function firstMess(e) {
if( e != "granted" ) return false;
new Notification("Уведомления и таймер включены.", {
tag : "nebo.mobi",
body : "Перезагрузите страницу!",
icon : "http://static.nebo.mobi/images/icons/home.png"
});
}
/*
*
* Функция добавления ведущео нуля у элемента времени,
* если требуется
*
* @param {Number}
* @returns {Number}
*
*/
function addZero(int_) {
if ((int_+"").length == 1){
int_ = "0"+int_;
}
return int_;
}
/*
* Функция создания таймера на месте времени,
* с последующим уведомлением
*
* @param {String} time - время
* @param {String} id - элемент
* @param {String} notice - текст уведомления
* @param {Function} callback функция, необязательный параметр
*
*/
function timer(time, id, notice, callback) {
var seconds_left = getSecond(time);
var int_ = setInterval(function () {
var seconds_left_d, seconds_left_h,
days, hours, minutes, seconds, tpmcl, notifyD = {};
seconds_left--;
days = parseInt(seconds_left / 86400);
seconds_left_d = seconds_left % 86400;
hours = parseInt(seconds_left_d / 3600);
seconds_left_h = seconds_left % 3600;
minutes = parseInt(seconds_left_h / 60);
seconds = parseInt(seconds_left % 60);
id.innerHTML = days + " д, " + addZero(hours) + ":"
+ addZero(minutes) + ":" + addZero(seconds);
if(days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0){
clearInterval(int_);
if(callback)callback();
if (notice) {
tpmcl = id.closest('.flbdy') || false;
if(tpmcl){
notifyD.name = tpmcl.parentNode.querySelector('.flhdr > span').innerText.trim();
notifyD.body = tpmcl.querySelector('.state').innerText.trim();
notifyD.icon = tpmcl.querySelector('img').src;
} else if (id.closest('.flr.small.amount')) {
notifyD.name = id.parentNode.parentNode.querySelector('.lift .ctrl').innerText.trim();
notifyD.body = id.parentNode.parentNode.querySelector('.lift .nshd').innerText.trim();
notifyD.icon = id.parentNode.parentNode.querySelector('.lift img').src;
} else {
notifyD.name = 'Неизвестный таймер';
notifyD.body = 'Какой-то таймер завершился';
notifyD.icon = 'http://igrotop.mobi/images/game7.png';
}
new Notification(notifyD.name, {
tag : "nebo.mobi",
body : notifyD.body,
icon : notifyD.icon
});
}
}
}, 1000);
}
/*
* Проверка на менеджера
*
* @param {Function} callback
*
* @returns true or false
*/
function checkingManager(callback) {
var els = document.querySelectorAll('.tdn .buff'),
l = els.length,
chM;
for (var i = 0; i < l; i++) {
if(/Менеджер*/.exec(els[i].innerText)){
chM = els[i].querySelector('span').innerText;
AddMessTable(
'Работает менеджер', chM,
function(){
timer(
getTime(chM.trim()),
document.getElementById('log_table_2'),
false,
callback
);
}
);
return true;
}
}
return false;
}
/*
* Если скрипт не запускается, то необходимо
* раскомментировать (удалить в начале строки //)
* и закомментировать (добавить в начале строки // или удалить строку)
* строки ниже и в самом конце файла.
*/
//document.addEventListener("DOMContentLoaded", function(){ // Раскомментировать 1 из 2
window.onload = function() { // Закомментировать 1 из 2
/* Создаём таблицу логов */
document.body.insertAdjacentHTML('beforeend',
''
+''
+''
+ "Спасибо что воспользовались ботом для игры в Небоскрёбы! "
+ "Если у вас есть вопросы или пожелания, вы можете их оставить на "
+ "странице проекта"
+ ' |
');
AddMessTable('Небобот запущен', BOT.version);
if (/nebo.mobi\/lift/.exec(window.location)) {
liftFN();
AddTable('Лифтёр скоро приступит к работе.','rc');
} else if (/nebo.mobi\/humans/.exec(window.location)) {
humansFN();
AddTable('Скоро начнётся выселение.','rc');
} else if (/nebo.mobi\/quests/.exec(window.location)) {
quests();
AddTable('Задания скоро начнут собираться.','rc');
} else if (/nebo.mobi\/city\/quests*/.exec(window.location)) {
questsCity();
questsCitySelect();
AddTable('Задания города скоро начнут собираться.','rc');
} else if (/nebo.mobi\/floors\/0\/2/.exec(window.location)) {
if(!checkingManager(productBuy)){
productBuy();
}
AddTable('Закупки скоро начнутся.','rc');
} else if (/nebo.mobi\/floors\/0\/3/.exec(window.location)) {
if(!checkingManager(collectRevenue)){
collectRevenue();
}
AddTable('Раскладывание товара уже скоро.','rc');
} else if (/nebo.mobi\/floors\/0\/5/.exec(window.location)) {
if(!checkingManager(putProduct)){
putProduct();
}
AddTable('Сбор выручки скоро начнётся.','rc');
} else if (/nebo.mobi\/boss*/.exec(window.location)) {
boss();
AddTable('Ожидаем инвесторов.','rc');
} else if (/nebo.mobi\/lobby/.exec(window.location)) {
lobbySelect();
lobby();
AddTable('Ждём задания в вестибюле.','rc');
}
/* Таймеры */
var time = document.querySelectorAll('[id^=time]');
var tl = time.length;
for (var i = 0; i < tl; i++) {
time[i].title = time[i].innerHTML;
timer(getTime(time[i].innerHTML), time[i],true);
}
switch ( Notification.permission.toLowerCase() ) {
case "granted" : break;
case "denied" :
document.body.insertAdjacentHTML('beforeend','У вас запрещены уведомления!');
break;
case "default" :
document.body.insertAdjacentHTML('beforeend',' Включить уведомления');
break;
}
/* Очищаем раз в час */
setInterval(function() {
if(document.querySelectorAll('#lift_table tr td')[1].className !== 'clear_log'){
var els = document.querySelectorAll('#lift_table tr'),
ell = els.length,
lt = document.getElementById('lift_table');
lt.innerHTML = '';
for (var i = 0; i < ell; i++) {
lt.insertAdjacentHTML("beforeEnd",els[i].innerHTML);
if (i > 3) {
break;
}
}
if(ell > 4){
AddTable('Логи очищены!','clear_log');
}
}
console.clear();
}, 3600000);
}; // Закомментировать 2 из 2
//}); // Раскомментировать 2 из 2