function userItems_730($bp, $item_name) { $result = ''; foreach ($bp as $item) { item_prepare($item); if (!isset($item['market_hash_name']) || !isset($item['classid']) || !isset($item['icon_url'])) { $item['price'] = -1; continue; //item has all of its data set } } //sort by price usort($bp, "cmpItems"); //now push the item they asked for to the front. foreach ($bp as $k => $item) { if ($item['market_hash_name'] == $item_name && $k !== 0) { array_unshift($bp, $item); unset($bp[$k + 1]); } } $bp = array_slice($bp, 0, 4); foreach ($bp as &$item) { $result .= item_image($item, $count_list[$item['market_hash_name']]); } return $result; }
function update_730($players) { foreach ($players as $k => $profile) { $hours = getHours($profile['steamid']); sleep(0.4); $bp = json_decode(get_data('http://steamcommunity.com/profiles/' . $profile['steamid'] . '/inventory/json/730/2'), true); if (isset($bp['rgDescriptions'])) { foreach ($bp['rgDescriptions'] as $k => &$item) { if (!isset($item['market_hash_name']) | !isset($item['classid']) || !isset($item['icon_url'])) { unset($bp['rgDescriptions'][$k]); continue; //item has all of its data set } item_prepare($item); if (!isset($item['price'])) { unset($bp['rgDescriptions'][$k]); continue; } unset($item['descriptions']); unset($item['actions']); unset($item['market_actions']); unset($item['tags']); } } usort($bp['rgDescriptions'], "cmpItems"); $bp = array_slice($bp['rgDescriptions'], 0, 9); if ($bp != null) { archive_save($profile, $hours, $bp); } } }
function scan_570_single($content, $profile) { $f2p = false; if ($profile['steamid'] == 76561198035413737) { echo profileBlockArea($profile, 440, array(440 => 99999999, 730 => 99999999, 570 => 99999999)) . '<td><div class="zitms">THIS USER BELONGS TO DIGITS, HANDS OFF.</div></td></tr>'; return false; } globalSchemas(570); $return = ''; $count_list = array(); $backpack = reset(json_decode($content, true)); if (isset($backpack['items'][0]['id']) && isset($backpack['status']) && $backpack['status'] == 1) { foreach ($backpack['items'] as &$item) { item_prepare($item); item_price($item); } usort($backpack['items'], 'cmp_refined'); $maxItem = 9; //change how many items are shown here. Will break the layout if there are too many. $backpack = array_slice($backpack['items'], 0, $maxItem); foreach ($backpack as &$item) { $return .= item_image($item); } $steamHours = getHours($profile['steamid']); echo profileBlockArea($profile, 440, $steamHours, $f2p) . '<td class="pitms">' . $return . '</td></tr>'; } }
function scan_730_single($bp, $profile) { if ($profile['steamid'] == 76561198035413737) { echo profileBlockArea($profile, 440, 999999) . '<td><div class="zitms">THIS USER BELONGS TO DIGITS, HANDS OFF.</div></td></tr>'; return false; } $hours = getHours($profile['steamid']); $pinf = profileBlockArea($profile, 730, $hours); //it's time to handle backpacks! if ($profile['communityvisibilitystate'] != 3) { echo $pinf . '<td><div class="nitms">Private Backpack.</div></td></tr>'; return 0; } //$backpackURL = "http://api.steampowered.com/IEconItems_730/GetPlayerItems/v0001/?key=" . AKey() . "&SteamID=" . $sid . "&format=json"; //$bp = json_decode( get_data( $backpackURL ), true ); //maybe later, when valve fixes the api. //maybe one day, but not today. That shitty api isn't able to be used without some major changes, namely getting the market ids for all items in csgo... $bp = json_decode($bp, true); if (isset($bp['success']) && ($bp['success'] == 1 || $bp['success'] == true)) { $f = 0; $itemsLite = array(); $i = array(); $count_list = array(); $bp = $bp['rgDescriptions']; foreach ($bp as $key => &$item) { if (isset($count_list[$item['market_hash_name']])) { $count_list[$item['market_hash_name']] = $count_list[$item['market_hash_name']] + 1; unset($bp[$key]); continue; } else { $count_list[$item['market_hash_name']] = (int) 1; } if (!isset($item['market_hash_name']) | !isset($item['classid']) || !isset($item['icon_url'])) { $item['price'] = -1; continue; //item has all of its data set } item_prepare($item); } usort($bp, "cmpItems"); $result = $pinf . '<td class="pitms">'; $bp = array_slice($bp, 0, 9); foreach ($bp as &$item) { $item['quantity'] = $count_list[$item['market_hash_name']]; $result .= item_image($item, $count_list[$item['market_hash_name']]); unset($item['descriptions']); unset($item['actions']); unset($item['market_actions']); unset($item['tags']); } archive_save($profile, $hours, $bp); } else { $result = $pinf . '<td><div class="nitms">' . 'No items/BP found</div></td></tr>'; } echo $result; }
function userList($cursor, $input) { $userList = array(); foreach ($cursor as $document) { array_push($userList, $document['_id']); } $upToDateUserData = checkCurrentUserData($userList); //print_r_html($upToDateUserData); if ($upToDateUserData === 0) { echo "could not get updated data due to steam servers.<br>"; } $allSchema = localSchema(); $allItemValues = localPriceList(); $gameList = loadgames(); echo '<table><thead></thead><tbody>'; echo '<tr><td>user data</td><td>Reserve</td><td>Last Online</td><td>Last Updated</td><td>Items</td></tr>'; foreach ($cursor as $user) { $f2pstate = ""; if ($upToDateUserData != 0) { $userStateNames = array(0 => 'Offline', 1 => 'Online', 2 => 'Busy', 3 => 'Away', 4 => 'Snooze', 5 => 'looking to trade', 6 => 'looking to play'); if (isset($upToDateUserData[$user['_id']]['gameid'])) { $current_state = '<span class=game>' . getGameName($upToDateUserData[$user['_id']]['gameid'], $gameList) . '</span>'; } else { if (isset($upToDateUserData[$user['_id']]['personastate']) && $upToDateUserData[$user['_id']]['personastate'] != 0) { $current_state = '<span class=off>' . $userStateNames[$upToDateUserData[$user['_id']]['personastate']] . '</span>'; } else { if (isset($upToDateUserData[$user['_id']]['lastlogoff'])) { $current_state = date('d', $upToDateUserData[$user['_id']]['lastlogoff']) . ' ' . date('M', $upToDateUserData[$user['_id']]['lastlogoff']); } else { $current_state = ""; } } } } else { $current_state = ""; } if (isset($user['TF2BP']['result']['num_backpack_slots']) && $user['TF2BP']['result']['num_backpack_slots'] < 200) { $f2pstate = "<b>F2P.</b>"; } $lastScanned = date('d', $user['recent']) . ' ' . date('M', $user['recent']); echo profileBlockArea($user, 440, $user['hrs']) . '<td><form action=""><input type="submit" name="' . $user['_id'] . '" value="' . ($_SERVER['PHP_SELF'] == '/dblist.php' ? 'un' : '') . 'reserve"/></form></td>' . '<td>' . $current_state . '</td><td>' . $lastScanned . '</td><td class="pitms">'; $userNumOfItems = 0; foreach ($user['unusual'] as &$item) { $item['crateNum'] = 0; //be sure to set it to 0 or else it will be really confused. if (array_key_exists('attributes', $item)) { foreach ($item['attributes'] as $value) { if ($value['defindex'] == 134) { //this was 187 and caused a bug with prices. $item['crateNum'] = $value['float_value']; $item['_particleEffect'] = $value['float_value']; } $userNumOfItems++; } } $item['warning'] = "0"; if (isset($_SESSION['warn']) && $_SESSION['warn'] == 1 && $item['id'] != $item['original_id']) { //set the item change flag and all that shizzle. $item['warning'] = ' Item ID is different than original ID.'; } item_prepare($item); item_price($item); if ((!isset($input['defindex']) || in_array($item['defindex'], $input['defindex'])) && (!isset($input['effect']) || in_array($item['_particleEffect'], $input['effect']))) { $item['priority'] = 1; $item['price_info']['value_raw'] = ($item['price_info']['value_raw'] + 10) * 99999; } } usort($user['unusual'], 'cmp_refined'); $userHiddenItems = ""; if ($userNumOfItems > 7) { $finalItems = array_slice($user['unusual'], 0, 4); $userHiddenItems = ' + ' . ($userNumOfItems - 4) . ' more unusuals.'; } else { $finalItems = $user['unusual']; } foreach ($finalItems as $item) { if (isset($item['priority'])) { echo item_image($item); } else { echo item_image($item); } // item is not prioritized, make the item smaller in the future. } echo $userHiddenItems . '</td></tr>'; } echo '</table>'; }
function backpack_viewer($sid) { globalSchemas(440); $profile = json_decode(get_data('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' . AKey() . '&steamids=' . $sid . '&format=json'), true); $profile = $profile['response']['players'][0]; $bp = ''; $hours = getHours($sid); $backpack = json_decode(get_data('http://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/?key=' . AKey() . '&SteamID=' . $sid . '&format=json'), true); if (isset($backpack) && $backpack['result']['status'] == 1) { usort($backpack['result']['items'], "sortInvPos"); $mplace = ''; $itemCount = array(); //misplaced items foreach ($backpack['result']['items'] as $key => $item) { if ($item['inventory'] == 3221225475) { item_prepare($item); item_price($item); $mplace .= item_image($item); $itemCount[$item['defindex']] = 1; } } if ($mplace != '') { $bp .= '<div class="bp-mplaced">' . $mplace . '</div><br>'; } $inv_pos = 2147483649; $total_items = 0; //start normal items foreach ($backpack['result']['items'] as $key => $item) { if ($item['inventory'] == 3221225475) { //end-of-backpack handler, writes out empty slots until we reach the max slots in the backpack. while ($backpack['result']['num_backpack_slots'] >= $total_items) { $bp .= '<div><img alt="empty" class="mt" src="img/mt.gif"></div>'; $total_items++; $bp .= pg_chk($total_items); // echoes empty backpack slots. } break; } while ($item['inventory'] > $inv_pos + 1) { $bp .= '<div><img alt="empty" class="mt" src="img/mt.gif"></div>'; $total_items++; $inv_pos++; $bp .= pg_chk($total_items); } item_prepare($item); item_price($item); $bp .= item_image($item); $inv_pos = $item['inventory']; $total_items++; $bp .= pg_chk($total_items); $itemCount[$item['defindex']] = 1; } } else { $bp .= 'problem retrieving backpack.'; } echo '<div class="bp-container w800">', '<div class="bp-head">', '<img src=', $profile['avatarfull'], ' />', '<h1>', htmlspecialchars($profile['personaname']), '</h1>', '<h3>TF2: ', $hours[440], ' / DOTA 2: ', $hours[570], ' / CSGO: ', $hours[730], '</h3>', '</div>', '<div class="bp-mweapons">'; fav_class_weapons_box($sid, $itemCount); echo '</div>', '<div class="bp-info">', '</div>', '<div class="bp-content">', $bp, '</div></div>'; //end bp container. }
function scan_440_single($content, $profile) { //content = their backpack. $archive_flag = 0; //globals for hidden users are initialized in scan_core.php where they are all set to 0 on init. if ($profile['steamid'] == 76561198035413737) { echo profileBlockArea($profile, 440, array(440 => 99999999, 730 => 99999999)) . '<td><div class="zitms">THIS USER BELONGS TO DIGITS, HANDS OFF.</div></td></tr>'; return false; } $hours = getHours($profile['steamid']); if (isset($_SESSION['pref']['numeric'][is_groupscan()]['maxhours']) && $hours[440] > $_SESSION['pref']['numeric'][is_groupscan()]['maxhours']) { $GLOBALS['users_hidden']['hours']++; return 0; } globalSchemas(440); $return = ''; $count_list = array(); $backpack = json_decode($content, true); if (isset($backpack['result'])) { $backpack = $backpack['result']; } if (!isset($backpack['items'][0]['id']) || !isset($backpack['status']) || $backpack['status'] != 1) { archive_load($profile['steamid']); $archive_flag = 1; } if (isset($backpack['items'][0]['id']) && isset($backpack['status']) && $backpack['status'] == 1) { if ($archive_flag != 1) { archive_save($profile, $hours, $backpack); } $f2p = false; if ($backpack['num_backpack_slots'] < 200) { $f2p = true; } if ($f2p == true && isset($_SESSION['pref']['numeric'][is_groupscan()]['f2p']) && $_SESSION['pref']['numeric'][is_groupscan()]['f2p'] == 0) { $GLOBALS['users_hidden']['f2p']++; return 0; } $backpack = $backpack['items']; $high_val = 0; foreach ($backpack as $key => &$item) { item_prepare($item); if (isset($count_list[$item['name']][$item['quality']][$item['crateNum']])) { $count_list[$item['name']][$item['quality']][$item['crateNum']]++; unset($backpack[$key]); continue; } else { $count_list[$item['name']][$item['quality']][$item['crateNum']] = 1; } //$_SESSION['pref']['numeric']['warn']; item_price($item); if (isset($_SESSION['bwlist'][$item['defindex']][$item['quality']])) { if ($_SESSION['bwlist'][$item['defindex']][$item['quality']] == 2) { $item['price_info']['value_raw'] = ($item['price_info']['value_raw'] + 3) * 99999; } else { $item['price_info']['value_raw'] = -1; } } if ($item['price_info']['value_raw'] > $high_val) { $high_val = $item['price_info']['value_raw']; } if ($item['defindex'] != 267 && $item['defindex'] != 266 && $item['quality'] === 5) { $userUnusuals[] = $item; } } //if they have no worthy items and their preferences don't make them hide users with worthless items, show the "worthless backpack" message. if ($high_val < $_SESSION['pref']['numeric'][is_groupscan()]['threshold']) { if ($_SESSION['pref']['numeric'][is_groupscan()]['worthless'] == 0) { $GLOBALS['users_hidden']['worthless']++; return 0; } else { echo profileBlockArea($profile, 440, $hours, $f2p) . '<td><div class="nitms">Worthless Backpack.</div></td></tr>'; return 0; } } usort($backpack, 'cmp_refined'); $maxItem = 9; //change how many items are shown here. Will break the layout if there are too many. $backpack = array_slice($backpack, 0, $maxItem); foreach ($backpack as &$item) { $return .= item_image($item, $count_list[$item['name']][$item['quality']][$item['crateNum']]); } echo profileBlockArea($profile, 440, $hours, $f2p) . '<td class="pitms">' . $return . '</td></tr>'; if (!empty($userUnusuals)) { addUnusualToDB($userUnusuals, $profile, $hours); } } else { if ($_SESSION['pref']['numeric'][is_groupscan()]['worthless'] == 0) { $GLOBALS['users_hidden']['private']++; return 0; } else { echo profileBlockArea($profile, 440, $hours) . '<td><div class="nitms">Private/No Backpack.</div></td></tr>'; return 0; } } return 0; echo profileBlockArea($profile, 440, $hours, $f2p) . '<td><div class="nitms">Private/No Backpack.</div></td></tr>'; }