您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Комментарии на странице друзей + описание друзей на домашней странице
// ==UserScript== // @name CT_friends // @namespace CheckT // @author CheckT & Zeleax // @description Комментарии на странице друзей + описание друзей на домашней странице // @version 1.5 // @encoding utf-8 // @homepage https://greasyfork.org/en/scripts/376319-ct-friends // @include /https:\/\/(www.heroeswm.ru|www.lordswm.com|my.lordswm.com)\/(friends.php|home.php.*)/ // @grant GM_getValue // @grant GM_setValue // @license MIT // ==/UserScript== (function(){ var gm_prefix = 'ctfr_'; initGm(); var pl_id_regexp=/pl_info\.php\?id=(\d+)/; if(/friends.php/.test(location.href)){ var tableToFix = document.querySelector('table[class="wb"]'); if(tableToFix){ var tmp = tableToFix.innerHTML; tmp = tmp.replace(/colspan="3"/g,'colspan="4"'); var td_regexp = /<\/td><\/tr>/g; var idx = -3; //3 rows header while(true){ var td_arr = td_regexp.exec(tmp); if(!td_arr) break; idx++; if(idx < 1) //skip header continue; var pos = td_regexp.lastIndex-5; var add = '<td><input type="text" value="" id="' + gm_prefix + idx + '" style="width:400px"/></td>'; tmp = tmp.slice(0, pos) + add + tmp.slice(td_regexp.lastIndex); td_regexp.lastIndex += add.length; } tableToFix.innerHTML = tmp; for(var i=1; i<=idx; i++){ var inp = $$GM(i); var tr = inp.parentNode.parentNode; var pl_id = pl_id_regexp.exec(tr.innerHTML)[1]; inp.value = gm_get(pl_id); inp.setAttribute('data-plid',pl_id); addEvent(inp, "change", change_info); } } } else if (/home.php/.test(location.href)){ var el=getE( '//tr/td/a[1][contains(@href,"friends.php")]' ); // "Друзья в игре" if(el){ var td_friends=el.parentNode.parentNode.nextSibling.firstChild; // td со списком друзей var friendsList = getL('./a', td_friends); var afriends=[], _clan, _player, _descr; i=0; while(i < friendsList.snapshotLength){ el=friendsList.snapshotItem(i); // клан или игрок if(/clan_info/.test(el.href)) // клан { _clan = el; i++; } else _clan=null; _player=friendsList.snapshotItem(i); // игрок i++; pl_id = pl_id_regexp.exec(_player.href)[1]; _descr=gm_get(pl_id); afriends.push([_clan, _player, _descr]); } afriends.sort(sortFunction3dcolumn); // создаем и наполняем таблицу var body = document.body, tbl = document.createElement('table'), td; // tbl.style.width = '100px'; // tbl.style.border = '1px solid black'; for(i=0; el=afriends[i]; i++){ tr=tbl.insertRow(); td=tr.insertCell(); // клан if(el[0]!=null) td.appendChild(el[0]); td=tr.insertCell(); // игрок td.appendChild(el[1]); td=tr.insertCell(); // передачи игрока var newText = document.createTextNode(">>"); var linkProtokol = document.createElement('a'); pl_id = pl_id_regexp.exec(el[1].href)[1]; // id игрока linkProtokol.setAttribute('href', location.href.substring(0, location.href.search('home'))+'pl_transfers.php?id='+pl_id); linkProtokol.setAttribute('target','_blank'); linkProtokol.appendChild(newText); td.appendChild(linkProtokol); td=tr.insertCell(); // описание td.innerText=el[2]; } removeAllChildNodes(td_friends); td_friends.appendChild(tbl); } } return; function sortFunction3dcolumn(a, b) { if (a[2] === b[2]) { return 0; } else { return (a[2] < b[2]) ? 1 : -1; } } function removeAllChildNodes(parent) { while (parent.firstChild) { parent.removeChild(parent.firstChild); } } function change_info(event){ var inp = event.target || event.srcElement; gm_set(inp.getAttribute('data-plid'), inp.value.trim()); } function $$GM(id) { return document.getElementById(gm_prefix+id); } function addChangeEvent_GM(id, func){ addEvent($$GM(id), "change", func); } function addEvent(elem, evType, fn) { if(elem && fn){ if (elem.addEventListener) elem.addEventListener(evType, fn, false); else if (elem.attachEvent) elem.attachEvent("on" + evType, fn); else elem["on" + evType] = fn; } } function gm_get(key){ return GM_getValue(gm_prefix+key, ''); } function gm_set(key, val){ return GM_setValue(gm_prefix+key, val); } function initGm(){ if (!this.GM_getValue || (this.GM_getValue.toString && this.GM_getValue.toString().indexOf("not supported")>-1)) { this.GM_getValue=function (key,def) { return localStorage[key] || def; }; this.GM_setValue=function (key,value) { return localStorage[key]=value; }; this.GM_deleteValue=function (key) { return delete localStorage[key]; }; } if (!this.GM_listValues || (this.GM_listValues.toString && this.GM_listValues.toString().indexOf("not supported")>-1)) { this.GM_listValues=function () { var keys=[]; for (var key in localStorage){ //в K-Meleon возвращаются все опции всех скриптов keys.push(key); } return keys; } } } // доступ по xpath function getE(xpath,el,docObj){return (docObj?docObj:document).evaluate(xpath,(el?el:(docObj?docObj.body:document.body)),null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;} function getL(xpath,el,docObj){return (docObj?docObj:document).evaluate(xpath,(el?el:(docObj?docObj.body:document.body)),null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);} })();