Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2015
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.00 KB | None | 0 0
  1. var admin = 'STEAM_0:0:144892474';
  2.  
  3. var logOnOptions = {
  4. accountName: 'xxxx',
  5. password: 'xxxx'
  6. };
  7. var GameTime = 120;
  8.  
  9.  
  10. ////
  11.  
  12. var authCode = 'B5C5B';
  13.  
  14. var globalSessionID;
  15. if (require('fs').existsSync('sentry_'+logOnOptions['accountName']+'.hash')) {
  16. logOnOptions['shaSentryfile'] = require('fs').readFileSync('sentry_'+logOnOptions['accountName']+'.hash');
  17. } else if(require('fs').existsSync('ssfn_'+logOnOptions['accountName'])) {
  18. var sha = require('crypto').createHash('sha1');
  19. sha.update(require('fs').readFileSync('ssfn_'+logOnOptions['accountName']));
  20. var sentry = new Buffer(sha.digest(), 'binary');
  21. logOnOptions['shaSentryfile'] = sentry;
  22. require('fs').writeFileSync('sentry_'+logOnOptions['accountName']+'.hash', sentry);
  23. console.log('Converting ssfn to sentry file!');
  24. console.log('Now you can remove ssfn_'+logOnOptions['accountName']);
  25. } else if (authCode != '') {
  26. logOnOptions['authCode'] = authCode;
  27. }
  28.  
  29. var sitename;
  30.  
  31. sitename = "csgohelp24.pl";
  32. var Steam = require('steam');
  33. var SteamTradeOffers = require('steam-tradeoffers');
  34. var mysql = require('mysql');
  35. var request = require("request");
  36.  
  37. var apik = "xxx";
  38.  
  39. var mysqlInfo;
  40. mysqlInfo = {
  41. host : 'xxxx',
  42. user : 'xxxx',
  43. password : 'xxxx',
  44. database : 'xxxx_jack',
  45. charset : 'utf8_general_ci'
  46. };
  47.  
  48. var mysqlConnection = mysql.createConnection(mysqlInfo);
  49.  
  50. var steam = new Steam.SteamClient();
  51. var offers = new SteamTradeOffers();
  52.  
  53. var recheck = true;
  54.  
  55. steam.logOn(logOnOptions);
  56.  
  57. steam.on('debug', function(text){
  58. console.log(text);
  59. require('fs').appendFile('debug.log', text+'\n');
  60. });
  61.  
  62. function getUserName(steamid) {
  63. getUserInfo(steamid, function(error, data){
  64. if(error) throw error;
  65. var datadec = JSON.parse(JSON.stringify(data.response));
  66. return (datadec.players[0].personaname);
  67. });
  68. }
  69.  
  70. function proceedWinners() {
  71. var url = 'http://'+sitename+'/getwinner34634f.php';
  72. request(url, function(error, response, body){});
  73. }
  74.  
  75. function getUserInfo(steamids,callback) {
  76. var url = 'http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='+apik+'&steamids='+ steamids + '&format=json';
  77. request({
  78. url: url,
  79. json: true
  80. }, function(error, response, body){
  81. if(!error && response.statusCode === 200){
  82. callback(null, body);
  83. } else if (error) {
  84. getUserInfo(steamids,callback);
  85. }
  86. });
  87. }
  88.  
  89. function addslashes(str) {
  90. str=str.replace(/\\/g,'\\\\');
  91. str=str.replace(/\'/g,'\\\'');
  92. str=str.replace(/\"/g,'\\"');
  93. str=str.replace(/\0/g,'\\0');
  94. return str;
  95. }
  96.  
  97. var locked=false,proceeded;
  98. var itemscopy;
  99. var detected=false;
  100. var detected2=false;
  101. var endtimer = -1;
  102. function weblogon() {
  103. steam.webLogOn(function(newCookie) {
  104. offers.setup({
  105. sessionID: globalSessionID,
  106. webCookie: newCookie
  107. }, function(err) {
  108. if (err) {
  109. }
  110. });
  111. });
  112. }
  113.  
  114. function sendoffers(){
  115. detected2 = false;
  116. offers.loadMyInventory({
  117. appId: 730,
  118. contextId: 2
  119. }, function(err, itemx) {
  120. if(err) {
  121. weblogon();
  122. setTimeout(sendoffers,2000);
  123. return;
  124. }
  125. if(detected2 == true) {
  126. return;
  127. }
  128. detected2 = true;
  129. itemscopy = itemx;
  130. detected = false;
  131. mysqlConnection.query('SELECT * FROM `queue` WHERE `status`=\'active\'', function(err, row, fields) {
  132. if(err) {
  133. return;
  134. }
  135. if(detected == true) {
  136. return;
  137. }
  138. detected = true;
  139. for(var i=0; i < row.length; i++) {
  140. var gameid = row[i].id;
  141. var sendItems = (row[i].items).split('/');
  142. var item=[],num=0;
  143. for (var x = 0; x < itemscopy.length; x++) {
  144. for(var j=0; j < sendItems.length; j++) {
  145. if (itemscopy[x].tradable && (itemscopy[x].market_name).indexOf(sendItems[j]) == 0) {
  146. sendItems[j] = "hgjhgnhgjgnjghjjghjghjghjhgjghjghjghngnty";
  147. itemscopy[x].market_name = "fgdfgdfgdfgdfgfswfewefewrfewrewrewr";
  148. item[num] = {
  149. appid: 730,
  150. contextid: 2,
  151. amount: itemscopy[x].amount,
  152. assetid: itemscopy[x].id
  153. }
  154. num++;
  155. }
  156. }
  157. }
  158. if (num > 0) {
  159. var gamenum = row[i].id;
  160. offers.makeOffer ({
  161. partnerSteamId: row[i].userid,
  162. itemsFromMe: item,
  163. accessToken: row[i].token,
  164. itemsFromThem: [],
  165. message: 'Gratulacje! Wygrales jackpota o numerze #'+gamenum
  166. }, function(err, response){
  167. if (err) {
  168. return;
  169. }
  170. mysqlConnection.query('UPDATE `queue` SET `status`=\'sent '+response+'\' WHERE `id`=\''+gameid+'\'', function(err, row, fields) {});
  171. console.log('Trade offer for queue '+gamenum+' sent!');
  172. });
  173. }
  174. }
  175. });
  176. })}
  177.  
  178. (function() {
  179. /**
  180. * Decimal adjustment of a number.
  181. *
  182. * @param {String} type The type of adjustment.
  183. * @param {Number} value The number.
  184. * @param {Integer} exp The exponent (the 10 logarithm of the adjustment base).
  185. * @returns {Number} The adjusted value.
  186. */
  187. function decimalAdjust(type, value, exp) {
  188. // If the exp is undefined or zero...
  189. if (typeof exp === 'undefined' || +exp === 0) {
  190. return Math[type](value);
  191. }
  192. value = +value;
  193. exp = +exp;
  194. // If the value is not a number or the exp is not an integer...
  195. if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
  196. return NaN;
  197. }
  198. // Shift
  199. value = value.toString().split('e');
  200. value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
  201. // Shift back
  202. value = value.toString().split('e');
  203. return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
  204. }
  205.  
  206. // Decimal round
  207. if (!Math.round10) {
  208. Math.round10 = function(value, exp) {
  209. return decimalAdjust('round', value, exp);
  210. };
  211. }
  212. // Decimal floor
  213. if (!Math.floor10) {
  214. Math.floor10 = function(value, exp) {
  215. return decimalAdjust('floor', value, exp);
  216. };
  217. }
  218. // Decimal ceil
  219. if (!Math.ceil10) {
  220. Math.ceil10 = function(value, exp) {
  221. return decimalAdjust('ceil', value, exp);
  222. };
  223. }
  224. })();
  225. function EndGame() {
  226. endtimer = -1;
  227. proceedWinners();
  228. setTimeout(sendoffers,1000);
  229. }
  230.  
  231. steam.on('loggedOn', function(result) {
  232. console.log('Logged in!');
  233. steam.setPersonaState(Steam.EPersonaState.LookingToTrade);
  234. steam.addFriend(admin);
  235. steam.sendMessage(admin,"I'm online now.");
  236. });
  237.  
  238. steam.on('webSessionID', function(sessionID) {
  239. globalSessionID = sessionID;
  240. weblogon();
  241. setTimeout(function(){
  242. mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'current_game\'', function(err, rows, fields) {
  243. if(err) return;
  244. mysqlConnection.query('SELECT `starttime` FROM `games` WHERE `id`=\''+rows[0].value+'\'', function(errs, rowss, fieldss) {
  245. if(errs) return;
  246. var timeleft;
  247. if(rowss[0].starttime == 2147483647) timeleft = GameTime;
  248. else {
  249. var unixtime = Math.round(new Date().getTime()/1000.0);
  250. timeleft = rowss[0].starttime+GameTime-unixtime;
  251. if(timeleft < 0) timeleft = 0;
  252. }
  253. if(timeleft != GameTime) {
  254. setTimeout(EndGame,timeleft*1000);
  255. console.log('Restoring game on '+timeleft+'second');
  256. }
  257. });
  258. });
  259. },1500);
  260. });
  261.  
  262. steam.on('friendMsg', function(steamID, message, type) {
  263. if(type != Steam.EChatEntryType.ChatMsg) return;
  264. if(steamID == admin) {
  265. if(message.indexOf("/sendallitems") == 0) {
  266. offers.loadMyInventory({
  267. appId: 730,
  268. contextId: 2
  269. }, function(err, items) {
  270. if(err) {
  271. steam.sendMessage(steamID, 'Trying to send items');
  272. weblogon();
  273. return;
  274. }
  275. var item=[],num=0;
  276. for (var i = 0; i < items.length; i++) {
  277. if (items[i].tradable) {
  278. item[num] = {
  279. appid: 730,
  280. contextid: 2,
  281. amount: items[i].amount,
  282. assetid: items[i].id
  283. }
  284. num++;
  285. }
  286. }
  287. if (num > 0) {
  288. offers.makeOffer ({
  289. partnerSteamId: steamID,
  290. itemsFromMe: item,
  291. itemsFromThem: [],
  292. message: ''
  293. }, function(err, response){
  294. if (err) {
  295. throw err;
  296. }
  297. steam.sendMessage(steamID, 'Offer has been send with all items!');
  298. });
  299. }
  300. });
  301. } else if(message.indexOf("/send") == 0) {
  302. var params = message.split(' ');
  303. if(params.length == 1) return steam.sendMessage(steamID, 'Use /send itemname]');
  304. offers.loadMyInventory({
  305. appId: 730,
  306. contextId: 2
  307. }, function(err, items) {
  308. if(err) {
  309. steam.sendMessage(steamID, 'Could not load your inventory, try again');
  310. weblogon();
  311. return;
  312. }
  313. var item=0;
  314. for (var i = 0; i < items.length; i++) {
  315. if((items[i].market_name).indexOf(params[1]) != -1) {
  316. item = items[i].id;
  317. break;
  318. }
  319. }
  320. if (item != 0) {
  321. offers.makeOffer ({
  322. partnerSteamId: steamID,
  323. itemsFromMe: [
  324. {
  325. appid: 730,
  326. contextid: 2,
  327. amount: 1,
  328. assetid: item
  329. }
  330. ],
  331. itemsFromThem: [],
  332. message: ''
  333. }, function(err, response){
  334. if (err) {
  335. throw err;
  336. }
  337. steam.sendMessage(steamID, 'Offer has been send!');
  338. });
  339. }
  340. });
  341. } else if(message.indexOf("/show") == 0) {
  342. var params = message.split(' ');
  343. offers.loadMyInventory({
  344. appId: 730,
  345. contextId: 2
  346. }, function(err, items) {
  347. if(err) {
  348. steam.sendMessage(steamID, 'Nothing to show');
  349. weblogon();
  350. return;
  351. }
  352. steam.sendMessage(steamID,'look: ');
  353. for (var i = 0; i < items.length; i++) {
  354. steam.sendMessage(steamID,'http://steamcommunity.com/id/csgohelp24/inventory/#'+items[i].appid+'_'+items[i].contextid+'_'+items[i].id);
  355. }
  356. });
  357. } else if(message.indexOf("/end") == 0) {
  358. steam.sendMessage(steamID,'Game has been ENDED offers will be send to winner!');
  359. if(endtimer != -1) clearTimeout(endtimer);
  360. EndGame();
  361. } else if(message.indexOf("/so") == 0) {
  362. steam.sendMessage(steamID,'Outstanding Offers will be send now!');
  363. sendoffers();
  364. }
  365. }
  366. getUserInfo(steamID, function(error, data){
  367. if(error) throw error;
  368. var datadec = JSON.parse(JSON.stringify(data.response));
  369. var name = datadec.players[0].personaname;
  370. console.log(name + ': ' + message); // Log it
  371. });
  372. //steam.sendMessage(steamID, 'I\'m a bot that accepts all your unwanted items. If you would like to grab a few crates from me, please request a trade.');
  373. });
  374.  
  375. function in_array(needle, haystack, strict) {
  376. var found = false, key, strict = !!strict;
  377.  
  378. for (key in haystack) {
  379. if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
  380. found = true;
  381. break;
  382. }
  383. }
  384.  
  385. return found;
  386. }
  387.  
  388.  
  389.  
  390. function checkoffers(number) {
  391. if (number > 0) {
  392. offers.getOffers({
  393. get_received_offers: 1,
  394. active_only: 1,
  395. get_sent_offers: 0,
  396. get_descriptions: 1,
  397. time_historical_cutoff: Math.round(Date.now() / 1000),
  398. language: "en_us"
  399. }, function(error, body) {
  400. if(error) return;
  401. if(body.response.trade_offers_received){
  402. console.log('Trade offer incomming');
  403. body.response.trade_offers_received.forEach(function(offer) {
  404. if (offer.trade_offer_state == 2){
  405. if(offer.items_to_give) {
  406. console.log('Declining offer for because already send 2 offers');
  407. offers.declineOffer({tradeOfferId: offer.tradeofferid});
  408. return;
  409. }
  410. if(offer.items_to_receive == undefined) return;
  411. mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'maxitems\'', function(err, row, fields) {
  412. if(offer.items_to_receive.length > row[0].value) {
  413. offers.declineOffer({tradeOfferId: offer.tradeofferid});
  414. offer.items_to_receive = [];
  415. var unixtime = Math.round(new Date().getTime()/1000.0);
  416. mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`, `win`, `system`, `time`) VALUES (\''+offer.steamid_other+'\',\'too much items\',\'System\', \'0\', \'1\', \''+unixtime+'\')', function(err, row, fields) {});
  417. return;
  418. }
  419. });
  420. var delock = false;
  421. offers.loadPartnerInventory({partnerSteamId: offer.steamid_other, appId: 730, contextId: 2, tradeOfferId: offer.tradeofferid, language: "en"}, function(err, hitems) {
  422. if(err) {
  423. weblogon();
  424. recheck = true;
  425. return;
  426. }
  427. if(delock == true) return;
  428. delock = true;
  429. var items = offer.items_to_receive;
  430. var wgg=[],num=0;
  431. for (var i = 0; i < items.length; i++) {
  432. for(var j=0; j < hitems.length; j++) {
  433. if(items[i].assetid == hitems[j].id) {
  434. wgg[num] = hitems[j];
  435. num++;
  436. break;
  437. }
  438. }
  439. }
  440. var price=[];
  441. for(var i=0; i < num; i++) {
  442. if(wgg[i].appid != 730) {
  443. offers.declineOffer({tradeOfferId: offer.tradeofferid});
  444. var unixtime = Math.round(new Date().getTime()/1000.0);
  445. mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`, `win`, `system`, `time`) VALUES (\''+offer.steamid_other+'\',\'only csgo items\',\'System\', \'0\', \'1\', \''+unixtime+'\')', function(err, row, fields) {});
  446. return;
  447. }
  448. if(wgg[i].market_name.indexOf("Souvenir") != -1) {
  449. var unixtime = Math.round(new Date().getTime()/1000.0);
  450. offers.declineOffer({tradeOfferId: offer.tradeofferid});
  451. mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`, `win`, `system`, `time`) VALUES (\''+offer.steamid_other+'\',\'You can\'\t bet souvenir weapons\',\'System\', \'0\', \'1\', \''+unixtime+'\')', function(err, row, fields) {});
  452. return;
  453. }
  454. var itemname = wgg[i].market_name;
  455. var url = 'http://'+sitename+'/cost.php?item='+encodeURIComponent(itemname);
  456. (function(someshit) {
  457. request(url, function(error, response, body){
  458. if(!error && response.statusCode === 200){
  459. var unixtime = Math.round(new Date().getTime()/1000.0);
  460. if(body == "notfound") { offers.declineOffer({tradeOfferId: offer.tradeofferid}); mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`, `win`, `system`, `time`) VALUES (\''+offer.steamid_other+'\',\'Item not available \',\'System\', \'0\', \'1\', \''+unixtime+'\')', function(err, row, fields) {}); }
  461. else {
  462. wgg[someshit].cost = parseFloat(body);
  463. }
  464. } else offers.declineOffer({tradeOfferId: offer.tradeofferid});
  465. });})(i)
  466. }
  467. setTimeout(function() {
  468. var sum=0;
  469. for(var i=0; i < num; i++) {
  470. sum += wgg[i].cost;
  471. }
  472. mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'minbet\'', function(err, row, fields) {
  473. if(sum < row[0].value) {
  474. num = 0;
  475. var unixtime = Math.round(new Date().getTime()/1000.0);
  476. offers.declineOffer({tradeOfferId: offer.tradeofferid});
  477. mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`, `win`, `system`, `time`) VALUES (\''+offer.steamid_other+'\',\'Value is too small.\',\'System\', \'0\', \'1\', \''+unixtime+'\')', function(err, row, fields) {});
  478. return;
  479. }
  480. });
  481. getUserInfo(offer.steamid_other, function(error, data){
  482. if(error) throw error;
  483. var datadec = JSON.parse(JSON.stringify(data.response));
  484. var name = addslashes(datadec.players[0].personaname);
  485. var avatar = (datadec.players[0].avatarfull);
  486. if(num == 0) return;
  487. offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, response) {
  488. if(err != null) return;
  489. mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'current_game\'', function(err, row, fields) {
  490. var current_game = (row[0].value);
  491. mysqlConnection.query('SELECT `cost`,`itemsnum` FROM `games` WHERE `id`=\''+current_game+'\'', function(err, row, fields) {
  492. var current_bank = parseFloat(row[0].cost);
  493. var itemsnum = row[0].itemsnum;
  494.  
  495. for(var j=0; j < num; j++) {
  496. 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) {});
  497. mysqlConnection.query('UPDATE `games` SET `itemsnum`=`itemsnum`+1, `cost`=`cost`+\''+wgg[j].cost+'\' WHERE `id` = \'' + current_game + '\'', function(err, row, fields) {});
  498. current_bank = parseFloat(current_bank + wgg[j].cost);
  499. itemsnum++;
  500. }
  501.  
  502. mysqlConnection.query('SELECT COUNT(DISTINCT userid) AS playersCount FROM `game' + current_game, function(err, rows){
  503. someVar = rows[0].playersCount;
  504. console.log('Current Players: ' +someVar);
  505. if(someVar == 2 && items.length > 1) {
  506. console.log('Found 2 Players');
  507. endtimer = setTimeout(EndGame,GameTime*1000);
  508. mysqlConnection.query('UPDATE `games` SET `starttime`=UNIX_TIMESTAMP() WHERE `id` = \'' + current_game + '\'', function(err, row, fields) {});
  509. }
  510. });
  511. if(itemsnum > 50) {
  512. clearTimeout(endtimer);
  513. endtimer = -1;
  514. EndGame();
  515. }
  516. console.log('Accepted trade offer #'+offer.tradeofferid+' by '+name+' ('+offer.steamid_other+')');
  517. });
  518. });
  519. });
  520. });
  521. },3000);
  522. });
  523. }
  524. });
  525. }
  526. });
  527. }
  528. }
  529.  
  530. var pew;
  531. steam.on('tradeOffers', checkoffers);
  532.  
  533. steam.on('sentry', function(data) {
  534. require('fs').writeFileSync('sentry_'+logOnOptions['accountName']+'.hash', data);
  535. });
  536.  
  537. setInterval(function () {
  538. mysqlConnection.query('SELECT 1');
  539. }, 5000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement