Advertisement
Guest User

Untitled

a guest
Apr 29th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         gameme report
  3. // @match        http://soplica.gameme.com/playerinfo/*
  4. // @grant        GM_xmlhttpRequest
  5. // @connect      soplica.gameme.com
  6. // @connect      w76.gotv.pro
  7. // ==/UserScript==
  8.  
  9. (function() {
  10.     'use strict';
  11.     let name = document.querySelector('table.spacer_b b').textContent;
  12.     let sid = document.querySelector('table.spacer_b tbody').childNodes[10].childNodes[1].textContent;
  13.     let cid = document.querySelector('a[href^="http://steamcommunity.com/profiles/"]').textContent;
  14.     let url = window.location;
  15.     let report = document.createElement('div'); report.style.cssText='font-family:monospace;';
  16.     let forumreport = document.createElement('div'); forumreport.style.cssText='margin-top:10px;';
  17.     let eventreport = document.createElement('div'); eventreport.style.cssText='margin-top:10px;';
  18.     let a = document.createElement('div'); a.textContent=`${cid} ${name}`;
  19.     let b = document.createElement('div'); b.textContent=`Nick oskarżonego: ${name}`;
  20.     let c = document.createElement('div'); c.textContent=`SID oskarżonego: [href=${url}]${sid}[/href]`;
  21.     forumreport.appendChild(a); forumreport.appendChild(b); forumreport.appendChild(c);
  22.     report.appendChild(eventreport);
  23.     report.appendChild(forumreport);
  24.     let mount = document.querySelector('div.cont_left');
  25.     mount.appendChild(report);
  26.     let id = /\d+$/.exec(url)[0];
  27.     let n = 1;
  28.     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`;
  29.     console.log(eventurl);
  30.  
  31.     function push_events(document,events) {
  32.         let trs = [...document.querySelectorAll('#page_content tr')];
  33.         let sliced = trs.slice(1,trs.length-1);
  34.         for (let tr of sliced) {
  35.             let date = tr.childNodes[1].textContent;
  36.             let type = tr.childNodes[3].textContent;
  37.             let msg = tr.childNodes[5].textContent;
  38.             if (type == 'Entry' | type == 'Kill' | type == 'Death') {
  39.                 let data = {date: date, type: type, msg: msg};
  40.                 events.push(data);
  41.             }
  42.         }
  43.     }
  44.     function sum(events,target) {
  45.         let k = 0;
  46.         let d = 0;
  47.         let h = 0;
  48.         let tk = 0;
  49.         let tkg = 0;
  50.         let td = 0;
  51.         let th = 0;
  52.         let tawp = {k: 0, h: 0};
  53.         let tawpt = false;
  54.         let partition = [[]];
  55.         for (let x of events.reverse()) {
  56.             let len = partition.length-1;
  57.             if (x.type !== 'Entry') { partition[len].push(x); }
  58.             else { partition.push([]); partition[len+1].push(x); }
  59.         }
  60.         for (let p of partition) {
  61.             let k = 0;
  62.             let kg = 0;
  63.             let d = 0;
  64.             let h = 0;
  65.             let awp = {k: 0, h: 0};
  66.             let nades = false;
  67.             let awpt = false;
  68.             let date;
  69.             for (let x of p) {
  70.                 switch (x.type) {
  71.                     case 'Kill':
  72.                         k++; tk++;
  73.                         if (x.msg.includes('headshot')) { h++; th++; }
  74.                         if (!x.msg.includes('nade') && !x.msg.includes('Knife')) { kg++; tkg++; }
  75.                         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++; } }
  76.                         break;
  77.                     case 'Death':
  78.                         d++; td++;
  79.                         break;
  80.                     case 'Entry':
  81.                         date = x.date;
  82.                         break;
  83.                 }
  84.             }
  85.             if (kg > 9) {
  86.                 let dt = new Date(date);
  87.                 let dy = dt.getFullYear();
  88.                 let dm = (dt.getMonth()+1).toString().padStart(2,'0');
  89.                 let dd = dt.getDate().toString().padStart(2,'0');
  90.                 let hour = dt.getHours().toString().padStart(2,'0');
  91.                 let minute = dt.getMinutes().toString().padStart(2,'0');
  92.                 let url = `http://w76.gotv.pro/40721?data=${dy}-${dm}-${dd}`;
  93.                 let dates = !isNaN( dt.getTime() ) ? `${dy}-${dm}-${dd} ${hour}:${minute}` : '-------------';
  94.                 let noawp1 = (h-awp.h)/(kg-awp.k);
  95.                 let noawp = isNaN(noawp1) ? '----' : noawp1.toFixed(2);
  96.                 let kpd = (k/d).toFixed(2).slice(0,4);
  97.                 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)})`:''}` : ''}`;
  98.                 let div = document.createElement('div');
  99.                 let a = document.createElement('a'); a.textContent=sum; a.href=url;
  100.                 a.style.cssText='text-decoration:none;color:white';
  101.                 let dl = document.createElement('span'); dl.textContent='DL';
  102.                 dl.style.cssText='margin-right:8px;cursor:pointer;';
  103.                 div.appendChild(dl); div.appendChild(a);
  104.                 target.appendChild(div);
  105.                 dl.onclick = () => {
  106.                     GM_xmlhttpRequest({
  107.                         method: "GET",
  108.                         url: url,
  109.                         onload: (res) => {
  110.                             let parser = new DOMParser();
  111.                             let text = res.responseText;
  112.                             let parsed = parser.parseFromString(text,"text/html");
  113.                             let trs = parsed.querySelectorAll('div.main tr');
  114.                             let a;
  115.                             for (let tr of [...trs].slice(1,trs.length)) {
  116.                                 let time = tr.childNodes[5].textContent;
  117.                                 let demodate = new Date(`${dy}-${dm}-${dd} ${time}`);
  118.                                 if (demodate <= dt) {
  119.                                     a = tr.querySelector('a');
  120.                                     console.log(dt, demodate, a, name);
  121.                                     dl.textContent='';
  122.                                     dl.appendChild(a);
  123.                                     break;
  124.                                 }
  125.                             }
  126.                             if (a === undefined) {
  127.                                 dl.textContent='—'; return;
  128.                             }
  129.                             let demo = /\/(auto.+)\.dem\.zip$/.exec(a.href)[1];
  130.                             let play = `playdemo ${demo} ${cid}`;
  131.                             let demodiv = document.createElement('div'); demodiv.textContent=a.href;
  132.                             let playdiv = document.createElement('div'); playdiv.textContent=play;
  133.                             let statdiv = document.createElement('div'); statdiv.textContent=sum;
  134.                             let maindemo = document.createElement('div');
  135.                             maindemo.appendChild(statdiv); maindemo.appendChild(demodiv); maindemo.appendChild(playdiv);
  136.                             forumreport.appendChild(maindemo);
  137.                             dl.onclick = '';
  138.                         },
  139.                         timeout: 2000,
  140.                     });
  141.                 };
  142.             }
  143.         }
  144.         let noawp1 = (th-tawp.h)/(tkg-tawp.k);
  145.         let noawp = isNaN(noawp1) ? '----' : noawp1.toFixed(2);
  146.         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)})` : ''}`;
  147.         let div = document.createElement('div'); div.textContent=sum;
  148.         target.insertBefore(div,target.firstChild);
  149.     }
  150.     function more(all,todo, events, target, next_url) {
  151.         if (todo > 0) {
  152.             todo--;
  153.             console.log(all-todo+1,'more',next_url);
  154.             GM_xmlhttpRequest({
  155.                 method: "GET",
  156.                 url: next_url,
  157.                 onload: (res) => {
  158.                     let parser = new DOMParser();
  159.                     let text = res.responseText;
  160.                     let parsed = parser.parseFromString(text,"text/html");
  161.                     let next_url = parsed.querySelectorAll('.tbl_nav_header a')[1].href;
  162.                     push_events(parsed,events);
  163.                     more(all,todo, events, target, next_url);
  164.                 },
  165.                 timeout: 3000,
  166.             });
  167.         } else {
  168.             sum(events,target);
  169.         }
  170.     }
  171.     function analyse(document,target) {
  172.         let events = [];
  173.         push_events(document,events);
  174.         let next_url = document.querySelectorAll('.tbl_nav_header a')[1].href;
  175.         let input = document.querySelector('input[name=events_list_goto]');
  176.         let total = parseInt(input.nextElementSibling.nextElementSibling.nextElementSibling.nextElementSibling.childNodes[2].textContent,10);
  177.         let todo = Math.min(total,5)-1;
  178.         more(todo,todo, events, target, next_url);
  179.     }
  180.     GM_xmlhttpRequest({
  181.         method: "GET",
  182.         url: eventurl,
  183.         onload: (res) => {
  184.             let parser = new DOMParser();
  185.             let text = res.responseText;
  186.             let parsed = parser.parseFromString(text,"text/html");
  187.             analyse(parsed,eventreport);
  188.         },
  189.         timeout: 3000,
  190.     });
  191. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement