Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name gameme report
- // @match http://soplica.gameme.com/playerinfo/*
- // @grant GM_xmlhttpRequest
- // @connect soplica.gameme.com
- // @connect w76.gotv.pro
- // ==/UserScript==
- (function() {
- 'use strict';
- let name = document.querySelector('table.spacer_b b').textContent;
- let sid = document.querySelector('table.spacer_b tbody').childNodes[10].childNodes[1].textContent;
- let cid = document.querySelector('a[href^="http://steamcommunity.com/profiles/"]').textContent;
- let url = window.location;
- let report = document.createElement('div'); report.style.cssText='font-family:monospace;';
- let forumreport = document.createElement('div'); forumreport.style.cssText='margin-top:10px;';
- let eventreport = document.createElement('div'); eventreport.style.cssText='margin-top:10px;';
- let a = document.createElement('div'); a.textContent=`${cid} ${name}`;
- let b = document.createElement('div'); b.textContent=`Nick oskarżonego: ${name}`;
- let c = document.createElement('div'); c.textContent=`SID oskarżonego: [href=${url}]${sid}[/href]`;
- forumreport.appendChild(a); forumreport.appendChild(b); forumreport.appendChild(c);
- report.appendChild(eventreport);
- report.appendChild(forumreport);
- let mount = document.querySelector('div.cont_left');
- mount.appendChild(report);
- let id = /\d+$/.exec(url)[0];
- let n = 1;
- let eventurl = `http://soplica.gameme.com/player_histories/events/${id}?events_list_order=eventTime&events_list_order_type=desc&events_list_goto=${n}&events_list_showrows=500`;
- console.log(eventurl);
- function push_events(document,events) {
- let trs = [...document.querySelectorAll('#page_content tr')];
- let sliced = trs.slice(1,trs.length-1);
- for (let tr of sliced) {
- let date = tr.childNodes[1].textContent;
- let type = tr.childNodes[3].textContent;
- let msg = tr.childNodes[5].textContent;
- if (type == 'Entry' | type == 'Kill' | type == 'Death') {
- let data = {date: date, type: type, msg: msg};
- events.push(data);
- }
- }
- }
- function sum(events,target) {
- let k = 0;
- let d = 0;
- let h = 0;
- let tk = 0;
- let tkg = 0;
- let td = 0;
- let th = 0;
- let tawp = {k: 0, h: 0};
- let tawpt = false;
- let partition = [[]];
- for (let x of events.reverse()) {
- let len = partition.length-1;
- if (x.type !== 'Entry') { partition[len].push(x); }
- else { partition.push([]); partition[len+1].push(x); }
- }
- for (let p of partition) {
- let k = 0;
- let kg = 0;
- let d = 0;
- let h = 0;
- let awp = {k: 0, h: 0};
- let nades = false;
- let awpt = false;
- let date;
- for (let x of p) {
- switch (x.type) {
- case 'Kill':
- k++; tk++;
- if (x.msg.includes('headshot')) { h++; th++; }
- if (!x.msg.includes('nade') && !x.msg.includes('Knife')) { kg++; tkg++; }
- if (x.msg.includes('AWP') || x.msg.includes('SSG')) { awpt = true; tawpt = true; awp.k++; tawp.k++; if (x.msg.includes('headshot')) { awp.h++; tawp.h++; } }
- break;
- case 'Death':
- d++; td++;
- break;
- case 'Entry':
- date = x.date;
- break;
- }
- }
- if (kg > 9) {
- let dt = new Date(date);
- let dy = dt.getFullYear();
- let dm = (dt.getMonth()+1).toString().padStart(2,'0');
- let dd = dt.getDate().toString().padStart(2,'0');
- let hour = dt.getHours().toString().padStart(2,'0');
- let minute = dt.getMinutes().toString().padStart(2,'0');
- let url = `http://w76.gotv.pro/40721?data=${dy}-${dm}-${dd}`;
- let dates = !isNaN( dt.getTime() ) ? `${dy}-${dm}-${dd} ${hour}:${minute}` : '-------------';
- let noawp1 = (h-awp.h)/(kg-awp.k);
- let noawp = isNaN(noawp1) ? '----' : noawp1.toFixed(2);
- let kpd = (k/d).toFixed(2).slice(0,4);
- let sum = `${dates} ${k.toString().padStart(2,'\u00A0')} kills, ${d.toString().padStart(2,'\u00A0')} deaths, ${kpd} kpd, ${(h/kg).toFixed(2)} hpk${ awpt ? `, ${awp.k.toString().padStart(2,'\u00A0')} ${awp.h.toString().padStart(2,'\u00A0')} (-AWP ${noawp})${awp.h>0?` (-AWPbody ${(h/(kg-awp.k+awp.h)).toFixed(2)})`:''}` : ''}`;
- let div = document.createElement('div');
- let a = document.createElement('a'); a.textContent=sum; a.href=url;
- a.style.cssText='text-decoration:none;color:white';
- let dl = document.createElement('span'); dl.textContent='DL';
- dl.style.cssText='margin-right:8px;cursor:pointer;';
- div.appendChild(dl); div.appendChild(a);
- target.appendChild(div);
- dl.onclick = () => {
- GM_xmlhttpRequest({
- method: "GET",
- url: url,
- onload: (res) => {
- let parser = new DOMParser();
- let text = res.responseText;
- let parsed = parser.parseFromString(text,"text/html");
- let trs = parsed.querySelectorAll('div.main tr');
- let a;
- for (let tr of [...trs].slice(1,trs.length)) {
- let time = tr.childNodes[5].textContent;
- let demodate = new Date(`${dy}-${dm}-${dd} ${time}`);
- if (demodate <= dt) {
- a = tr.querySelector('a');
- console.log(dt, demodate, a, name);
- dl.textContent='';
- dl.appendChild(a);
- break;
- }
- }
- if (a === undefined) {
- dl.textContent='—'; return;
- }
- let demo = /\/(auto.+)\.dem\.zip$/.exec(a.href)[1];
- let play = `playdemo ${demo} ${cid}`;
- let demodiv = document.createElement('div'); demodiv.textContent=a.href;
- let playdiv = document.createElement('div'); playdiv.textContent=play;
- let statdiv = document.createElement('div'); statdiv.textContent=sum;
- let maindemo = document.createElement('div');
- maindemo.appendChild(statdiv); maindemo.appendChild(demodiv); maindemo.appendChild(playdiv);
- forumreport.appendChild(maindemo);
- dl.onclick = '';
- },
- timeout: 2000,
- });
- };
- }
- }
- let noawp1 = (th-tawp.h)/(tkg-tawp.k);
- let noawp = isNaN(noawp1) ? '----' : noawp1.toFixed(2);
- let sum = `TOTAL ${tk} kills, ${td} deaths, ${(tk/td).toFixed(2)} kpd, ${(th/tkg).toFixed(2)} hpk${ tawpt ? `, ${tawp.k.toString().padStart(2,'\u00A0')} ${tawp.h.toString().padStart(2,'\u00A0')} (-AWP ${noawp}) (-AWPbody ${(th/(tkg-tawp.k+tawp.h)).toFixed(2)})` : ''}`;
- let div = document.createElement('div'); div.textContent=sum;
- target.insertBefore(div,target.firstChild);
- }
- function more(all,todo, events, target, next_url) {
- if (todo > 0) {
- todo--;
- console.log(all-todo+1,'more',next_url);
- GM_xmlhttpRequest({
- method: "GET",
- url: next_url,
- onload: (res) => {
- let parser = new DOMParser();
- let text = res.responseText;
- let parsed = parser.parseFromString(text,"text/html");
- let next_url = parsed.querySelectorAll('.tbl_nav_header a')[1].href;
- push_events(parsed,events);
- more(all,todo, events, target, next_url);
- },
- timeout: 3000,
- });
- } else {
- sum(events,target);
- }
- }
- function analyse(document,target) {
- let events = [];
- push_events(document,events);
- let next_url = document.querySelectorAll('.tbl_nav_header a')[1].href;
- let input = document.querySelector('input[name=events_list_goto]');
- let total = parseInt(input.nextElementSibling.nextElementSibling.nextElementSibling.nextElementSibling.childNodes[2].textContent,10);
- let todo = Math.min(total,5)-1;
- more(todo,todo, events, target, next_url);
- }
- GM_xmlhttpRequest({
- method: "GET",
- url: eventurl,
- onload: (res) => {
- let parser = new DOMParser();
- let text = res.responseText;
- let parsed = parser.parseFromString(text,"text/html");
- analyse(parsed,eventreport);
- },
- timeout: 3000,
- });
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement