Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name FaceIT match room advanced stats
- // @namespace http://tampermonkey.net/
- // @version 0.3
- // @description Shows elo, level and cs go steam hours for each player on match screen.
- // @match https://www.faceit.com/*
- // ==/UserScript==
- 'use strict';
- var webkey = "1357CEF154C84CD7A502BE4B1EA6375C";
- var allPlayers = [];
- var hasFriends = [];
- var team1Players = [];
- var team1PlayersIDS = [];
- team1Players['teams'] = [];
- team1Players['teams']['team1'] = [];
- team1Players['teams']['team2'] = [];
- var team2Players = [];
- var team2PlayersIDS = [];
- team2Players['teams'] = [];
- team2Players['teams']['team1'] = [];
- team2Players['teams']['team2'] = [];
- var drawStats = function(match) {
- var players1 = match.faction1.slice(0);
- $(players1).each(function(index,player){
- team1PlayersIDS.push(player['csgo_id']);
- });
- var players2 = match.faction2.slice(0);
- $(players2).each(function(index,player){
- team2PlayersIDS.push(player['csgo_id']);
- });
- if (match != null && $(".custom_stats_field").length != 10) {
- var factions = match.faction1.slice(0).concat(match.faction2);
- $(factions).each(function(index, player) {
- var steamID = player['csgo_id'];
- var steamURL = "https://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=" + webkey + "&steamid=" + steamID + "&format=json"
- var matchVoting = match.state === "voting";
- var steamFriends = "https://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=" + webkey + "&steamid=" + steamID + "&relationship=friend"
- if(allPlayers.indexOf(player['csgo_id']) == -1){
- allPlayers.push(player['csgo_id']);
- }
- $.ajax({ url: "https://jsonp-steamid-proxy.herokuapp.com/?url=" + encodeURIComponent(steamURL),
- success: function(data) { callfaceit(steamFriends, data, player,matchVoting); },
- error: function(data) { callfaceit(steamFriends, data, player,matchVoting); }
- });
- });
- }
- };
- angular.element(document).ready(function() {
- angular.element(document).injector().invoke(function($compile, $location) {
- var thisDocument = angular.element(document).scope();
- thisDocument.location = $location;
- thisDocument.$watch( 'location.url()', function(url) {
- if (url && url.indexOf('en/csgo/room/') > -1) {
- var gameElement = $("section.match-vs");
- var pageDocument = angular.element(gameElement).scope();
- var game = angular.element(gameElement).scope();
- game.$watch('match', drawStats);
- }
- });
- });
- });
- var cleanPrevious = function() {
- try {
- $(".custom_skill_level").remove();
- $(".custom_stats_field").remove();
- $(".custom_flag").remove();
- $(".match-team-member__row").remove();
- } catch (err) {};
- };
- var callfaceit = function(steamFriends, previousData, player, matchVoting) {
- var nickname = player['nickname'];
- $.ajax({ url: "https://api.faceit.com/api/nicknames/" + player['nickname'],
- success: function(data) {
- try {
- var csgoID = player['csgo_id'];
- player = data['payload']['games']['csgo'];
- player['nickname'] = nickname;
- player['hours'] = extractHours(previousData);
- player['country'] = data['payload']['country'];
- player['csgo_id'] = csgoID;
- } catch (err) {}
- if(matchVoting !== true){
- checkFriend(steamFriends, player, data, matchVoting);
- }else{
- drawcustomstats(data, player, matchVoting);
- }
- },
- error: function(data) {
- var csgoID = player['csgo_id'];
- player['hours'] = extractHours(previousData);
- player['nickname'] = nickname;
- player['country'] = data['payload']['country'];
- player['csgo_id'] = csgoID;
- if(matchVoting !== true){
- checkFriend(steamFriends, player, data, matchVoting);
- }else{
- drawcustomstats(data, player, matchVoting);
- }
- }
- });
- };
- var checkFriend = function(URL, player, data, matchVoting){
- $.ajax({ url: URL,
- success: function(data1){
- var teamPlayers = [];
- var teamID = [];
- try {
- if(team1PlayersIDS.indexOf(player['csgo_id']) != -1){
- teamPlayers = team1Players;
- teamID = team1PlayersIDS;
- }else{
- teamPlayers = team2Players;
- teamID = team2PlayersIDS;
- }
- player['friendsInLobby'] = [];
- player['allFriends'] = [];
- try {
- player['allFriends'] = data1['friendslist']['friends'];
- }catch (err){}
- teamPlayers[player['csgo_id']] = [];
- for(var i = 0; i < player['allFriends'].length; i++){
- for(var j = 0; j < teamID.length; j++){
- if(player['allFriends'][i]['steamid'] == teamID[j]){
- player['friendsInLobby'].push(teamID[j]);
- hasFriends.push(player['csgo_id']);
- hasFriends.push(teamID[j]);
- teamPlayers[player['csgo_id']].push(teamID[j]);
- }
- }
- }
- } catch (err) {}
- if(team1PlayersIDS.indexOf(player['csgo_id']) != -1){
- team1Players = teamPlayers;
- sortPlayerTeams(teamID, 1, player['csgo_id']);
- }else{
- team2Players = teamPlayers;
- sortPlayerTeams(teamID, 2, player['csgo_id']);
- }
- drawcustomstats(data, player, matchVoting);
- },
- error: function(data1){
- var teamPlayers = [];
- var teamID = [];
- try {
- if(team1PlayersIDS.indexOf(player['csgo_id']) != -1){
- teamPlayers = team1Players;
- teamID = team1PlayersIDS;
- }else{
- teamPlayers = team2Players;
- teamID = team2PlayersIDS;
- }
- player['friendsInLobby'] = [];
- player['allFriends'] = [];
- try {
- player['allFriends'] = data1['friendslist']['friends'];
- }catch (err){}
- teamPlayers[player['csgo_id']] = [];
- for(var i = 0; i < player['allFriends'].length; i++){
- for(var j = 0; j < teamID.length; j++){
- if(player['allFriends'][i]['steamid'] == teamID[j]){
- player['friendsInLobby'].push(teamID[j]);
- hasFriends.push(player['csgo_id']);
- hasFriends.push(teamID[j]);
- teamPlayers[player['csgo_id']].push(teamID[j]);
- }
- }
- }
- } catch (err) {}
- if(team1PlayersIDS.indexOf(player['csgo_id']) != -1){
- team1Players = teamPlayers;
- sortPlayerTeams(teamID, 1, player['csgo_id']);
- }else{
- team2Players = teamPlayers;
- sortPlayerTeams(teamID, 2, player['csgo_id']);
- }
- drawcustomstats(data, player, matchVoting);
- }
- });
- };
- var sortPlayerTeams = function(teamID, teamNR, playerID){
- var teamPlayers = [];
- if(teamNR == 1){
- teamPlayers = team1Players;
- teamPlayers['teams']['team1'] = team1Players['teams']['team1'];
- teamPlayers['teams']['team2'] = team1Players['teams']['team2'];
- }else{
- teamPlayers = team2Players;
- teamPlayers['teams']['team1'] = team2Players['teams']['team1'];
- teamPlayers['teams']['team2'] = team2Players['teams']['team2'];
- }
- if(hasFriends.indexOf(playerID) != -1){
- if(teamPlayers['teams']['team1'].length === 0){
- teamPlayers['teams']['team1'].push(playerID);
- }else{
- for(var i = 0; i < teamPlayers['teams']['team1'].length; i++){
- for(var j = 0; j < teamPlayers[playerID].length; j++){
- if(teamPlayers[playerID][j] != "undefined" && teamPlayers['teams']['team1'][i] == teamPlayers[playerID][j]){
- teamPlayers['teams']['team1'].push(playerID);
- break;
- }
- }
- }
- }
- if(teamPlayers['teams']['team2'].length === 0 && teamPlayers['teams']['team1'].indexOf(playerID) == -1){
- teamPlayers['teams']['team2'].push(playerID);
- }else{
- for(var i = 0; i < teamPlayers['teams']['team2'].length; i++){
- for(var j = 0; j < teamPlayers[playerID].length; j++){
- if(teamPlayers['teams']['team2'][i] == teamPlayers[playerID][j]){
- teamPlayers['teams']['team2'].push(playerID);
- break;
- }
- }
- }
- }
- }
- if(teamNR == 1){
- team1Players['teams']['team1'] = teamPlayers['teams']['team1'];
- team1Players['teams']['team2'] = teamPlayers['teams']['team2'];
- }else{
- team2Players['teams']['team1'] = teamPlayers['teams']['team1'];
- team2Players['teams']['team2'] = teamPlayers['teams']['team2'];
- }
- };
- var extractHours = function(data) {
- var hours = "N/A";
- try {
- var games = data['response']['games'];
- for(var i = 0; i < games.length; i++) {
- var game = games[i];
- if (game['appid'] === 730) {
- hours = (game['playtime_forever']/60).toFixed(1);
- break;
- }
- }
- } catch (err) {}
- return hours;
- };
- var drawcustomstats = function(data, player, matchVoting) {
- var skillLevelImgURL = "https://cdn.faceit.com/frontend/144/assets/images/skill-icons/skill_level_" + player['skill_level_label'] + "_sm.png";
- var skillLevelDiv = $("<div></div>").addClass("custom_skill_level");
- var skillLevelImg = $("<img/>").attr({ src: skillLevelImgURL})
- skillLevelDiv.css({
- "position": "absolute",
- "z-index": 3,
- "right": "34px",
- "bottom": "-6px",
- "width": "24px",
- "height": "24px",
- }).append(skillLevelImg);
- var countryFlagURL = "https://cdn.faceit.com/frontend/125/assets/images/flags/" + player['country'].toUpperCase() + ".png";
- var countryFlagDiv = $("<div></div>").addClass("custom_flag");
- var countryFlagImg = $("<img/ alt=" + player['country']+ ">").attr({ src: countryFlagURL})
- countryFlagDiv.css({
- "position": "absolute",
- "z-index": 1,
- "right": "-18px",
- "bottom": "35px",
- "width": "45px",
- "height": "25px",
- }).append(countryFlagImg);
- var statsContainerDiv;
- if(matchVoting !== true){
- statsContainerDiv = $("<div></div>").addClass('pa-sm')
- .addClass('btn-block')
- .addClass("custom_stats_field")
- .attr('style', 'padding-top: 0px !important');
- var statsDiv;
- if(player['friendsInLobby'].length !== 0 && player['friendsInLobby'][0] !== "undefined" && hasFriends.indexOf(player['csgo_id']) !== -1){
- var teamID = 0;
- if(team1PlayersIDS.indexOf(player['csgo_id']) == -1){
- teamID = 2;
- }else{
- teamID = 1;
- }
- if(teamID == 1){
- if(team1Players['teams']['team1'].indexOf(player['csgo_id']) != -1){
- statsDiv = $("<div style=\"background-color: rgba(100,0,0,0.4)\"></div>");
- }else{
- statsDiv = $("<div style=\"background-color: rgba(0,100,0,0.4)\"></div>");
- }
- }else{
- if(team2Players['teams']['team1'].indexOf(player['csgo_id']) != -1){
- statsDiv = $("<div style=\"background-color: rgba(100,0,0,0.4)\"></div>");
- }else{
- statsDiv = $("<div style=\"background-color: rgba(0,100,0,0.4)\"></div>");
- }
- }
- }else{
- statsDiv = $("<div style=\"background-color: rgb(255,255,255)\"></div>");
- }
- var eloField = $("<strong></strong>").html(player['faceit_elo']);
- statsDiv.append("ELO: ");
- statsDiv.append(eloField);
- var hoursField = $("<strong></strong>").html(player['hours']);
- statsDiv.append(" Hours: ");
- statsDiv.append(hoursField);
- statsContainerDiv.append(statsDiv);
- }
- var matchItem = $("a.match-team-member__name strong:contains('" + player['nickname'] + "')").parent().parent().parent().parent();
- matchItem.find('.match-team-member__avatar').append(skillLevelDiv);
- if(!matchVoting){
- matchItem.find('.match-team-member__row').append(statsContainerDiv);
- }
- matchItem.find('.match-team-member__avatar').append(countryFlagDiv);
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement