您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
blabla
- // ==UserScript==
- // @name Show total and stats of kills
- // @version 1.3
- // @description blabla
- // @author A Meaty Alt
- // @include /index\.php\?page=54&ID=/
- // @grant none
- // @namespace https://greasyfork.org/users/150647
- // ==/UserScript==
- (function() {
- 'use strict';
- var killsTable = document.getElementsByClassName("sample")[0];
- killsTable.width = 500;
- var killsTbody = killsTable.firstElementChild;
- var killsData = killsTbody.children;
- var td = document.createElement("td");
- td.append("Clan");
- killsData[0].appendChild(td);
- var totalKills = 0;
- for(var i=1; i<killsData.length; i++){
- totalKills += parseInt(killsData[i].children[1].textContent);
- killsData[i].appendChild(document.createElement("td"));
- }
- var totalKillsRow = document.createElement("tr");
- totalKillsRow.classList.add("dont-count");
- var title = document.createElement("td");
- title.innerHTML = "<b>Total kills:</b> ";
- var value = document.createElement("td");
- value.innerHTML = "<b>"+totalKills+"</b>";
- totalKillsRow.appendChild(title);
- totalKillsRow.appendChild(value);
- killsTbody.appendChild(totalKillsRow);
- createStatsButton();
- function createStatsButton(){
- var button = document.createElement("input");
- button.type = "button";
- button.value = "Show kills from each clan";
- button.addEventListener("click", showStats);
- killsTable.parentElement.appendChild(button);
- function showStats(){
- button.disabled = true;
- loadClanKills()
- .then((clanKills) => {
- var clanNamesSortedDesc =
- Object.keys(clanKills).sort(function(a,b){
- return clanKills[b]-clanKills[a];
- });
- for(var i=0; i<clanNamesSortedDesc.length; i++){
- var clan = clanNamesSortedDesc[i];
- var clanKillsRow = document.createElement("tr");
- clanKillsRow.classList.add("dont-count");
- var title = document.createElement("td");
- var clanName = clan? clan : "Clanless";
- title.innerHTML = "<b>"+clanName+"</b> kills: ";
- var value = document.createElement("td");
- value.innerHTML = "<b>"+clanKills[clan]+"/"+totalKills+"</b>";
- clanKillsRow.appendChild(title);
- clanKillsRow.appendChild(value);
- clanKillsRow.appendChild(document.createElement("td"));
- killsTbody.appendChild(clanKillsRow);
- }
- });
- this.disabled = true;
- function loadClanKills(){
- return new Promise((resolve) => {
- var promises = [];
- var auxI = 1;
- for(var i=1; i<killsData.length; i++){
- if(killsData[i].classList.contains("dont-count")) {
- break;
- }
- promises.push(new Promise((resolve) => {
- var data = killsData[auxI++];
- var userId = data.children[0].firstElementChild.href.match(/u=(.*)/)[1]; //yes, it's ugly. Deal with it
- getClan(userId)
- .then((clan) => {
- var kills = parseInt(data.children[1].textContent);
- var res = {};
- res[clan] = kills;
- data.children[2].textContent += `${clan}`;
- resolve(res);
- });
- }));
- }
- Promise.all(promises)
- .then((clansAndKills) => {
- var ret = {};
- for(var i=0; i<clansAndKills.length; i++){
- for(var clan in clansAndKills[i]){
- if(ret[clan]){
- ret[clan] += clansAndKills[i][clan];
- }
- else{
- ret[clan] = clansAndKills[i][clan];
- }
- }
- }
- resolve(ret);
- });
- });
- }
- }
- function getClan(userId){
- return new Promise((resolve) => {
- $.post("https://fairview.deadfrontier.com/onlinezombiemmo/get_values.php",
- "userID="+userId,
- (response) => {
- resolve(response.match(/df_clan_name=(.*?)&/)[1].trim());
- });
- });
- }
- }
- })();