您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
show BP difference
// ==UserScript== // @name Osu Match // @namespace https://osu.ppy.sh/u/4647122 // @version 1.0.2 // @description show BP difference // @author superboy724 // @match https://osu.ppy.sh/u/* // @grant none // ==/UserScript== // JavaScript source code //dim struct var matchusername = ""; var myid = ""; var score = { score: 0, beatmap_id: 0, mods: 0, acc: 0.0, pp: 0.0, combo: 0, miss:0, Create: function (json) { var score = {}; score.beatmap_id = json["beatmap_id"]; score.score = json["score"]; score.mods = json["enabled_mods"]; score.acc = (json["count300"] * 6 + json["count100"] * 2 + json["count50"]) / (6 * (json["count300"] + json["count100"] + json["count50"] + json["countmiss"])); score.pp = json["pp"]; score.combo = json["maxcombo"]; score.miss = json["countmiss"]; return score; }, CreateWithID: function (json, beatmap_id) { var score = {}; score.beatmap_id = beatmap_id; score.score = json["score"]; score.mods = json["enabled_mods"]; score.acc = (json["count300"] * 6 + json["count100"] * 2 + json["count50"]) / (6 * (json["count300"] + json["count100"] + json["count50"] + json["countmiss"])); score.pp = json["pp"]; score.miss = json["countmiss"]; score.combo = json["maxcombo"]; return score; }, DefaultCreate: function () { var score = {}; return score; }, Find: function (scores, beatmapid) { for (var i = 0; i <= scores.length - 1; i++) { if (scores[i].beatmap_id == beatmapid) { return scores[i]; } } } }; var scoreex = { Create: function () { var scoreex = score.DefaultCreate(); scoreex.isEqualMod = true; return scoreex; } }; function GetScore(username, count) { var scores = new Array(); $.getJSON("../../api/get_user_best?k=2ed21141cd5e897d0e43ca0ae010870205467aaa&u=" + username + "&limit=" + count.toString(), function (data) { $.each(data, function (index, content) { scores.push(score.Create(content)); }); }); return scores; } function GetBeatmapScore(username, beatmapid) { var _score = undefined; $.getJSON("../../api/get_scores?k=2ed21141cd5e897d0e43ca0ae010870205467aaa&u=" + username + "&b=" + beatmapid.toString(), function (data) { if (data[0] == undefined) { return; } else { _score = score.CreateWithID(data[0], beatmapid); } }); return _score; } function ProcessData(userdatas, matchdatas) { $.each(userdatas, function (index, content) { var s = CalcData(content, matchdatas); if (s == undefined) { return true; } SetData(s); }); } function ProcessDataNew(username, matchdatas) { $.each(matchdatas, function (index, content) { var userscore = GetBeatmapScore(username, content.beatmap_id); if (userscore == undefined) { return true; } var s = CalcData(userscore, matchdatas); if (s == undefined) { return true; } SetData(s); }); } function CalcData(userscore, matchdatas) { var _scoreex = scoreex.Create(); var matchscore = score.Find(matchdatas, userscore.beatmap_id); if (matchscore == undefined) { return; } _scoreex.score = userscore.score - matchscore.score; _scoreex.acc = userscore.acc - matchscore.acc; _scoreex.pp = userscore.pp - matchscore.pp; _scoreex.combo = userscore.combo - matchscore.combo; _scoreex.beatmap_id = userscore.beatmap_id; _scoreex.miss = userscore.miss - matchscore.miss; if (matchscore.mods == userscore.mods || (matchscore.mods == 64 && userscore.mods == 512) || (matchscore.mods == 512 && userscore.mods == 64)) { _scoreex.isEqualMod = true; } else { _scoreex.isEqualMod = false; } return _scoreex; } function SetData(_scoreex) { //print acc var scorediv = $("#performance-" + _scoreex.beatmap_id.toString()); //if (scorediv == undefined) { // return; //} //if (_scoreex.isEqualMod) { // var printcolor = 0; // if (_scoreex.acc > 0) { // printcolor = 1; // } else if (_scoreex.acc < 0) { // printcolor = 2; // } else if (_scoreex.acc == 0) { // printcolor = 3; // } // scorediv.find(".h").html(scorediv.find(".h").html() + Print(_scoreex.acc.toString(), printcolor)); //} //print pp var ppprintcolor = 0; if (!_scoreex.isEqualMod) { ppprintcolor = 4; } else if (_scoreex.pp > 0) { ppprintcolor = 1; } else if (_scoreex.pp < 0) { ppprintcolor = 2; } else if (_scoreex.pp == 0) { ppprintcolor = 3; } //var test = scorediv.find(".pp-display").find("b").html(); if (_scoreex.pp > 0) { scorediv.find(".pp-display").find("b").html(scorediv.find(".pp-display").find("b").html() + Print("(+" + _scoreex.pp.toFixed(2).toString() + ")", ppprintcolor)); } else { scorediv.find(".pp-display").find("b").html(scorediv.find(".pp-display").find("b").html() + Print("(" + _scoreex.pp.toFixed(2).toString() + ")", ppprintcolor)); } //print combo var comboprintcolor = 0; if (!_scoreex.isEqualMod) { comboprintcolor = 4; } else if (_scoreex.combo > 0) { comboprintcolor = 1; } else if (_scoreex.combo < 0) { comboprintcolor = 2; } else if (_scoreex.combo == 0) { comboprintcolor = 3; } //var test = scorediv.find(".pp-display").find("b").html(); if (_scoreex.combo > 0) { scorediv.find(".h").html(scorediv.find(".h").html() + Print(" Diff MaxCombo:+" + _scoreex.combo.toString(), comboprintcolor)); } else { scorediv.find(".h").html(scorediv.find(".h").html() + Print(" Diff MaxCombo:" + _scoreex.combo.toString(), comboprintcolor)); } //print miss var missprintcolor = 0; if (!_scoreex.isEqualMod) { missprintcolor = 4; } else if (_scoreex.miss > 0) { missprintcolor = 2; } else if (_scoreex.miss < 0) { missprintcolor = 1; } else if (_scoreex.miss == 0) { missprintcolor = 3; } //var test = scorediv.find(".pp-display").find("b").html(); if (_scoreex.miss > 0) { scorediv.find(".h").html(scorediv.find(".h").html() + Print(" Diff MissCount:+" + _scoreex.miss.toString(), missprintcolor)); } else { scorediv.find(".h").html(scorediv.find(".h").html() + Print(" Diff MissCount:" + _scoreex.miss.toString(), missprintcolor)); } } function Print(text, color) { //1:red,2:green,3:gray,4.purple switch (color) { case 1: return "<span style='color:red' class='match_print'>" + text + "</span>"; case 2: return "<span style='color:green' class='match_print'>" + text + "</span>"; case 3: return "<span style='color:gray' class='match_print'>" + text + "</span>"; case 4: return "<span style='color:purple' class='match_print'>" + text + "</span>"; } } function ShowAll() { $(".match_print").remove(); $("#match_vs").html("Loading..."); var matchsocres = GetScore(matchusername, 100); ProcessDataNew(myid, matchsocres); $("#match_vs").html("VS " + matchusername + "(ALLScore)"); } function ShowTop100Rank(){ $(".match_print").remove(); $("#match_top100").html("Loading..."); var userscores = GetScore(myid, 100); var matchscores = GetScore(matchusername, 100); ProcessData(userscores, matchscores); $("#match_top100").html("VS " + matchusername + "(Top100Ranks)"); } (function () { 'use strict'; // Your code here.. //content $(".sectionContents").eq(1).html(Print("Purple:This score was used different mods<br/>", 4) + $(".sectionContents").eq(1).html()); $(".sectionContents").eq(1).html(Print("Gray:This score is equal your score<br/>", 3) + $(".sectionContents").eq(1).html()); $(".sectionContents").eq(1).html(Print("Green:This score is better then your score<br/>", 2) + $(".sectionContents").eq(1).html()); $(".sectionContents").eq(1).html(Print("Red:This score is worse then your score<br/>", 1) + $(".sectionContents").eq(1).html()); $.ajaxSettings.async = false; var _matchusername = $(".profile-username").html(); myid = $(".content-infoline").find("div").find("b").find("a").html(); matchusername = _matchusername; var ua = navigator.userAgent; if(ua.indexOf("Chrome") !== -1){ expandProfile('general'); expandProfile('general'); expandProfile('leader'); } //$("#leader").find("h2").eq(0).html($("#leader").find("h2").eq(0).html() + "<a id='match_vs' style='float:right'>VS " + _matchusername + "</a>"); $("#fixable").html($("#fixable").html() + "<h2></a><h2>"); $("#fixable").html($("#fixable").html() + "<h2><a id='match_vs' style='float:left'>VS " + _matchusername + " (ALLScore)</a><h2>"); $("#fixable").html($("#fixable").html() + "<h2><a id='match_top100' style='float:left'>VS " + _matchusername + " (Top100Ranks)</a><h2>"); //$("#more-performance-1").html("Loading..."); //$("#more-performance-1").load("/pages/include/profile-leader.php?u=" + matchusername + "&m=0&pp=2"); if(ua.indexOf("Chrome") !== -1){ ShowTop100Rank(); } document.getElementById("match_vs").addEventListener('click', function (e) { ShowAll(); }, false); document.getElementById("match_top100").addEventListener('click', function (e) { ShowTop100Rank(); }, false); })();