Форум программистов, компьютерный форум, киберфорум
JavaScript: Node.js
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Barbados
0 / 0 / 0
Регистрация: 28.08.2015
Сообщений: 1
1

Как добавить вторую игру на сайт лотереи steam

28.08.2015, 13:34. Просмотров 1199. Ответов 2
Метки нет (Все метки)

Доброго времени суток. Есть сайт лотереи csgo steam. Бот написан на nodejs. Работает нормально, игра длится около 2-х минут, после чего определяется победитель и производится рассчет. Появилась задача добавить еще одну игру на сайт. Все то же самое, только игра длится 24 часа, по окончании которой также определяется победитель. Проблема в том, как заставить бота различать какие вещи он собирает для 2-х минутной игры и какие для 24-часовой? Есть Варианты? Возможно кто-то уже сталкивался с подобной задачей? Привожу код бота:

/*********************** Функция проверки новых предложений для добавления вещей в игру и обмена ************************/
function checkoffers(number) {
//Если переданный параметр больше нуля
if (number > 0) {
//загружает список торговых предложений
offers.getOffers({
get_received_offers: 1,//список предложений, которые Вы получили от других людей
active_only: 1,//предложения, которые еще не были приняты
get_sent_offers: 0,//возвратит список предложений, которые Вы отправили другим людям
get_descriptions: 1,//Описание
language: "en_us"//На английском
}, function(error, body) {
if(error) return;//При ошибке выходим
if(body.response.trade_offers_received){
//форычим все торговые предложения
body.response.trade_offers_received.forEach(function(offer) {
//Это торговое предложение было отправлено, никакая сторона еще не действовала на него.
if (offer.trade_offer_state == 2){
//массив CEcon_Asset, элементы, которые Вы бросите в торговле (независимо от того, кто создал предложение),
//Убираем предложения
if(offer.items_to_give) {
offers.declineOffer({tradeOfferId: offer.tradeofferid});
return;
}
//Если это последнее предложение выходим
if(lastoffer == offer.steamid_other) return;
lastoffer = offer.steamid_other;//В lastoffer записываем ID текущих предложений
//Получаем значение настройки максимального количества предметов в игре
mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'maxitems\'', function(err, row, fields) {
//массив CEcon_Asset, элементы, которые Вы получите в торговле (независимо от того, кто создал предложение)
if(offer.items_to_receive.length > row[0].value) {//если количество эл-в в массиве больше максимального кол-ва вещей в игре
offers.declineOffer({tradeOfferId: offer.tradeofferid});//Убираем предложение
offer.items_to_receive = [];//очистим массив элементов для приема и запишем сообщение
mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`) VALUES (\''+offer.steamid_other+'\',\'toomuch\',\'System\')', function(err, row, fields) {});
return;//Выходим из функции
}
});

var delock = false;//Заводим переменную delock
//Загружаем инвентарь юзера
offers.loadPartnerInventory({partnerSteamId: offer.steamid_other, appId: 730, contextId: 2, tradeOfferId: offer.tradeofferid, language: "en"}, function(err, hitems) {
//обрабатываем ошибки
if(err) {
steam.webLogOn(function(newCookie) {
offers.setup({
sessionID: globalSessionID,
webCookie: newCookie
}, function(err) {
if (err) {
}
});
});
recheck = true;
return;
}
//Исключаем повторное срабатываем
if(delock == true) return;
delock = true;
//Сохраняем в переменную предметы, передаваемые юзером
var items = offer.items_to_receive;
var wgg=[],num=0;//Заводим массив и счетчик
//Проходим в цикле по передаваемым предметам
for (var i = 0; i < items.length; i++) {
//Проходим в цикле по инвентарю юзера
for(var j=0; j < hitems.length; j++) {
//Если ID вещей совпадают
if(items[i].assetid == hitems[j].id) {
wgg[num] = hitems[j];//Пишем данные вещи в массив
num++;
break;
}
}
}
var price=[];//Заводим массив с ценами
//Проходим по массиву с вещами
for(var i=0; i < num; i++) {
//Если вещь не относится к игре контрстрайк
//Удаляем ее из предложений и пишем письмо для юзера в базу
if(wgg[i].appid != 730) {
offers.declineOffer({tradeOfferId: offer.tradeofferid});
mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`) VALUES (\''+offer.steamid_other+'\',\'onlycsgo\',\'System\')', function(err, row, fields) {});
return;
}
//Если в названии вещи присутствует метка Souvenir
//Удаляем ее из предложений и пишем письмо для юзера в базу
if(wgg[i].market_name.indexOf("Souvenir") != -1) {
offers.declineOffer({tradeOfferId: offer.tradeofferid});
mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`) VALUES (\''+offer.steamid_other+'\',\'souvenir\',\'System\')', function(err, row, fields) {});
return;
}
//Получаем имя вещи
var itemname = wgg[i].market_name;
//Фомируем урл с вещью
var url = 'http://'+sitename+'/cost.php?item='+encodeURIComponent(itemname);
(function(someshit) {
//Делаем запрос
request(url, function(error, response, body){
if(!error && response.statusCode === 200){
//Если предмет не найден, удаляем его из предложений и сохраняем письмо для юзера
if(body == "notfound") { offers.declineOffer({tradeOfferId: offer.tradeofferid}); mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`) VALUES (\''+offer.steamid_other+'\',\'notavailable\',\'System\')', function(err, row, fields) {}); }
else {
//Записываем цену предмета
wgg[someshit].cost = parseFloat(body);
}
//Если статус ответа не 200 удаляем предложение
} else offers.declineOffer({tradeOfferId: offer.tradeofferid});
});})(i)
}
//Устанавливаем интервал
setTimeout(function() {
var sum=0;//Заводим переменную для суммы
//Вычисляем сумму всех предметов
for(var i=0; i < num; i++) {
sum += wgg[i].cost;
}
//Выбираем из базы настройку минимальной ставки
mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'minbet\'', function(err, row, fields) {
//Если сумма всех предметов меньше мин.ставки удаляем предложение полностью и записываем сообщение. Выходим из функции
if(sum < row[0].value) {
num = 0;
offers.declineOffer({tradeOfferId: offer.tradeofferid});
mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`) VALUES (\''+offer.steamid_other+'\',\'toosmall!\',\'System\')', function(err, row, fields) {});
return;
}
});
//Получаем данные пользователя
steamuserinfo.getUserInfo(offer.steamid_other, function(error, data){
if(error) throw error;//Обрабатываем ошибки
//Получаем имя
var datadec = JSON.parse(JSON.stringify(data.response));
var name = addslashes(datadec.players[0].personaname);
//Получаем аватарку
var avatar = (datadec.players[0].avatarfull);
if(num == 0) return;//Если предложений нет выходим
//Выбираем номер текущей игры
mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'current_game\'', function(err, row, fields) {
var current_game = (row[0].value);
//Выбираем количество вещей и сумму выигрыша в текущей игре
mysqlConnection.query('SELECT `cost`,`itemsnum` FROM `games` WHERE `id`=\''+current_game+'\'', function(err, row, fields) {
var current_bank = parseFloat(row[0].cost);//Запоминаем сумму выигрыша
var itemsnum = row[0].itemsnum;//Запоминаем количество вещей в игре
//Если сумма выигрыша 0 и предметов больше 0 Обновляем время начала в игре на текущее
if(current_bank == "0" && items.length > 0) {
mysqlConnection.query('UPDATE `games` SET `starttime`=UNIX_TIMESTAMP() WHERE `id` = \'' + current_game + '\'', function(err, row, fields) {});
}
Прощодим по массиву с вещами
for(var j=0; j < num; j++) {
//Вставляем в таблицу game1 данные (`userid`,`username`,`item`,`color`,`value`,`avatar`,`image`,`from`,`to`)
mysqlConnection.query('INSERT INTO `game' + current_game + '` (`userid`,`username`,`item`,`color`,`value`,`avatar`,`image`,`from`,`to`) VALUES (\'' + offer.steamid_other + '\',\'' + name + '\',\'' + wgg[j].market_name + '\',\'' + wgg[j].name_color + '\',\'' + wgg[j].cost + '\',\'' + avatar + '\',\'' + wgg[j].icon_url + '\',\''+current_bank+'\'+\'0\',\''+current_bank+'\'+\''+wgg[j].cost+'\')', function(err, row, fields) {});
//Обновляем инфо о количестве вещей и сумме выигрыша в таблице games
mysqlConnection.query('UPDATE `games` SET `itemsnum`=`itemsnum`+1, `cost`=`cost`+\''+wgg[j].cost+'\' WHERE `id` = \'' + current_game + '\'', function(err, row, fields) {});
current_bank = parseFloat(current_bank + wgg[j].cost);//Обновляем сумму выигрыша
itemsnum++;//Увеличиваем количество вещей в игре
}
//Если количество вещей в игре стало больше 50 запускаем функцию расчета победителя
if(itemsnum > 50) {
proceedWinners();
}
offers.acceptOffer({tradeOfferId: offer.tradeofferid});//Подтверждаем предложение
//Выводим инфо в консоль
console.log('Accepted trade offer #'+offer.tradeofferid+' by '+name+' ('+offer.steamid_other+')');
});
});
});
},3000);//Повтор каждые 3 секунды
});
}
});
}
});
}
}
/*********************** Функция проверки лоттереи и обмена ************************/
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2015, 13:34
Ответы с готовыми решениями:

Как добавить в Steam давно купленную игру?
Здравствуйте. У меня есть лицензионный Fallout 3 на диске. Игра была куплена лет 7-8 назад. И...

Добавить на сайт flash-игру
КАК НА САИТ КИНУТЬ ФЛЕШ ИГРУ...ИЛИ ЕТО ВООБЩЕ ВОЗМОЖНО? КАКУЮ ПРОГРАММУ ПО СОЗДАЧИ СТРАНИЦ МОЖЕТЕ...

Как запустить игру Steam?
Решил попробовать поиграть в игру из Steam. Установил Steam из Ubuntu Software Center, в Steam...

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

2
dedsec1337
0 / 0 / 0
Регистрация: 18.10.2015
Сообщений: 29
21.10.2015, 16:51 2
как вариант использовать 2 сервера ну или хотя бы разные функции и чтоб каждая лотерея использовала свои функции
0
Totoro
47 / 23 / 3
Регистрация: 28.05.2012
Сообщений: 150
Записей в блоге: 1
08.11.2015, 17:12 3
Сначала наверное отформатировать код.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2015, 17:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Купить игру через Steam
Вопрос в следующем: если я куплю игру через steam, то при переустановке игры, windows и т.д не...

Оцените игру (Steam and Metal)
Я вот недавно игру закончил делать. Это 2д шмап в стимпанк сеттинге. Игра сейчас на гринлайте...

Как добавить вторую переменную по id
Добрый день, помогите, пожалуйста кто знает. Есть тема wordpress, там выводится такой код: &lt;?php...

Как добавить кнопки на вторую форму?
Всем привет!=) Начинаю знакомиться с Windows Forms. На первую форму добавляю кнопочки (&quot;Русские&quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.