Advertisement
Guest User

Untitled

a guest
May 30th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.51 KB | None | 0 0
  1. // ==UserScript==
  2. // @name FaceIT match room advanced stats
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3
  5. // @description Shows elo, level and cs go steam hours for each player on match screen.
  6. // @author Viaceslavas 'fire_bot' Duk
  7. // @match https://www.faceit.com/*
  8. // @grant none
  9. // ==/UserScript==
  10. // CREDIT AND KUDOS TO: PyroZeroX. AngularJS example from: https://gist.github.com/PyroZeroX/9e75b2a205e842b0ecbb
  11. /* jshint -W097 */
  12. 'use strict';
  13.  
  14. // You can get your web api key from https://steamcommunity.com/dev/apikey
  15. var webkey = "66508E227C8B956F53463A0F1EA4540A";
  16.  
  17. var drawStats = function(match) {
  18. if (match && $(".custom_stats_field").length == 0) {
  19. var factions = match.faction1.slice(0).concat(match.faction2);
  20.  
  21. $(factions).each(function(index, player) {
  22. var steamID = player['csgo_id'];
  23. var steamURL = "https://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=" + webkey + "&steamid=" + steamID + "&format=json"
  24.  
  25. // Proxy based on https://github.com/afeld/jsonp
  26. $.ajax({ url: "https://jsonp-steamid-proxy.herokuapp.com/?url=" + encodeURIComponent(steamURL),
  27. success: function(data) { callfaceit(data, player); },
  28. error: function(data) { callfaceit(data, player); }
  29. });
  30. });
  31. }
  32.  
  33. };
  34.  
  35. angular.element(document).ready(function() {
  36. angular.element(document).injector().invoke(function($compile, $location) {
  37. var thisDocument = angular.element(document).scope();
  38. thisDocument.location = $location;
  39. thisDocument.$watch( 'location.url()', function(url) {
  40. if (url && url.indexOf('en/csgo/room/') > -1) {
  41. var gameElement = $("section.match-vs");
  42. var pageDocument = angular.element(gameElement).scope();
  43. var game = angular.element(gameElement).scope();
  44.  
  45. game.$watch('match', drawStats);
  46. }
  47. });
  48. });
  49. });
  50.  
  51. var cleanPrevious = function() {
  52. try {
  53. $(".custom_skill_level").remove();
  54. $(".custom_stats_field").remove();
  55. } catch (err) {};
  56. };
  57.  
  58. var callfaceit = function(previousData, player) {
  59. var nickname = player['nickname'];
  60. $.ajax({ url: "https://api.faceit.com/api/nicknames/" + player['nickname'],
  61. success: function(data) {
  62. try {
  63. player = data['payload']['games']['csgo'];
  64. player['nickname'] = nickname;
  65. player['hours'] = extractHours(previousData);
  66. } catch (err) {}
  67. drawcustomstats(data, player);
  68. },
  69. error: function(data) {
  70. player['hours'] = extractHours(previousData);
  71. player['nickname'] = nickname;
  72. drawcustomstats(data, player);
  73. }
  74. });
  75. };
  76.  
  77. var extractHours = function(data) {
  78. var hours = "N/A";
  79. try {
  80. var games = data['response']['games'];
  81. for(var i = 0; i < games.length; i++) {
  82. var game = games[i];
  83. if (game['appid'] === 730) {
  84. hours = (game['playtime_forever']/60).toFixed(1);
  85. break;
  86. }
  87. }
  88. } catch (err) {}
  89. return hours;
  90. };
  91.  
  92. var drawcustomstats = function(data, player) {
  93. var skillLevelImgURL = " https://cdn.faceit.com/frontend/144/assets/images/skill-icons/skill_level_" + player['skill_level_label'] + "_sm.png";
  94. var skillLevelDiv = $("<div></div>").addClass("custom_skill_level");
  95. var skillLevelImg = $("<img/>").attr({ src: skillLevelImgURL})
  96. skillLevelDiv.css({
  97. "position": "absolute",
  98. "z-index": 3,
  99. "right": "34px",
  100. "bottom": "-6px",
  101. "width": "24px",
  102. "height": "24px",
  103. }).append(skillLevelImg);
  104.  
  105. var statsContainerDiv = $("<div></div>").addClass('pa-sm')
  106. .addClass('btn-block')
  107. .addClass("custom_stats_field")
  108. .attr('style', 'padding-top: 0px !important');
  109. var statsDiv = $("<div></div>");
  110. var eloField = $("<strong></strong>").html(player['faceit_csgo_elo']);
  111. statsDiv.append("ELO: ");
  112. statsDiv.append(eloField);
  113. var hoursField = $("<strong></strong>").html(player['hours']);
  114. statsDiv.append(" Hours: ")
  115. statsDiv.append(hoursField);
  116. statsContainerDiv.append(statsDiv);
  117. var matchItem = $("a.match-team-member__name strong:contains('" + player['nickname'] + "')").parent().parent().parent().parent();
  118. matchItem.find('.match-team-member__avatar').append(skillLevelDiv);
  119. matchItem.find('.match-team-member__row').append(statsContainerDiv);
  120. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement