您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Save custom transfers search filters
// ==UserScript== // @name Hattrick transfer filters // @version 2025-06-25 // @description Save custom transfers search filters // @author shotgunshine // @license MIT // @match https://*.hattrick.org/World/Transfers/ // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_listValues // @namespace https://greasyfork.org/users/1381786 // ==/UserScript== function setFilter(filter) { document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlAgeMin').value = filter.ageMin; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlAgeDaysMin').value = filter.ageDaysMin; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlAgeMax').value = filter.ageMax; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlAgeDaysMax').value = filter.ageDaysMax; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill1').value = filter.skill1; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill1Min').value = filter.skill1Min; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill1Max').value = filter.skill1Max; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill2').value = filter.skill2; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill2Min').value = filter.skill2Min; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill2Max').value = filter.skill2Max; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill3').value = filter.skill3; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill3Min').value = filter.skill3Min; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill3Max').value = filter.skill3Max; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill4').value = filter.skill4; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill4Min').value = filter.skill4Min; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill4Max').value = filter.skill4Max; document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty1').setAttribute('checked', filter.specialty1); document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty1').checked = filter.specialty1 == 'checked'; document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty2').setAttribute('checked', filter.specialty2); document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty2').checked = filter.specialty2 == 'checked'; document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty3').setAttribute('checked', filter.specialty3); document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty3').checked = filter.specialty3 == 'checked'; document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty4').setAttribute('checked', filter.specialty4); document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty4').checked = filter.specialty4 == 'checked'; document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty5').setAttribute('checked', filter.specialty5); document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty5').checked = filter.specialty5 == 'checked'; document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty6').setAttribute('checked', filter.specialty6); document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty6').checked = filter.specialty6 == 'checked'; document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty8').setAttribute('checked', filter.specialty8); document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty8').checked = filter.specialty8 == 'checked'; document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty0').setAttribute('checked', filter.specialty0); document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty0').checked = filter.specialty0 == 'checked'; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtBidMax').value = filter.bidMax; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlBornIn').value = filter.bornIn; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlContinent').value = filter.continent; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTSIMin_text').value = filter.tsiMin; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTSIMin').value = filter.tsiMin; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTSIMin_Value').value = filter.tsiMin; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTSIMax_text').value = filter.tsiMax; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTSIMax').value = filter.tsiMax; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTSIMax_Value').value = filter.tsiMax; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtSalaryMin').value = filter.salaryMin; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtSalaryMax').value = filter.salaryMax; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTransferCompareAvgMin').value = filter.transferCompareMin; document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTransferCompareAvgMax').value = filter.transferCompareMax; document.getElementById('ctl00_ctl00_CPContent_CPMain_chkUseGlobalMax').checked = filter.globalMax; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlGlobalSkillMax').value = filter.globalMaxSkill; document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlGlobalSkillMax').disabled = !filter.globalMax; } function getFilter() { return { ageMin: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlAgeMin').value, ageDaysMin: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlAgeDaysMin').value, ageMax: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlAgeMax').value, ageDaysMax: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlAgeDaysMax').value, skill1: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill1').value, skill1Min: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill1Min').value, skill1Max: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill1Max').value, skill2: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill2').value, skill2Min: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill2Min').value, skill2Max: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill2Max').value, skill3: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill3').value, skill3Min: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill3Min').value, skill3Max: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill3Max').value, skill4: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill4').value, skill4Min: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill4Min').value, skill4Max: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlSkill4Max').value, specialty1: document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty1').getAttribute('checked'), specialty2: document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty2').getAttribute('checked'), specialty3: document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty3').getAttribute('checked'), specialty4: document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty4').getAttribute('checked'), specialty5: document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty5').getAttribute('checked'), specialty6: document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty6').getAttribute('checked'), specialty8: document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty8').getAttribute('checked'), specialty0: document.getElementById('ctl00_ctl00_CPContent_CPMain_chkSpecialty0').getAttribute('checked'), bidMax: document.getElementById('ctl00_ctl00_CPContent_CPMain_txtBidMax').value, bornIn: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlBornIn').value, continent: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlContinent').value, tsiMin: document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTSIMin_text').value, tsiMax: document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTSIMax_text').value, salaryMin: document.getElementById('ctl00_ctl00_CPContent_CPMain_txtSalaryMin').value, salaryMax: document.getElementById('ctl00_ctl00_CPContent_CPMain_txtSalaryMax').value, transferCompareMin: document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTransferCompareAvgMin').value, transferCompareMax: document.getElementById('ctl00_ctl00_CPContent_CPMain_txtTransferCompareAvgMax').value, globalMax: document.getElementById('ctl00_ctl00_CPContent_CPMain_chkUseGlobalMax').checked, globalMaxSkill: document.getElementById('ctl00_ctl00_CPContent_CPMain_ddlGlobalSkillMax').value } } function saveFilter() { let name = document.getElementById('customFilterName').value; if (name == '') name = Date.now(); GM_setValue(name, getFilter()); printFilters(); } function deleteFilter(name) { GM_deleteValue(name); printFilters(); } function printFilters() { let list = ''; for (let f of GM_listValues().toSorted()) { list += `<li filter-name="${f}"><input type="image" src="../../Img/Icons/cross_small.png" class="float_right"><a href="#${f}">${f}</a></li>`; } document.getElementById('customFilterList').innerHTML = list; for (let li of document.getElementById('customFilterList').children) { let name = li.getAttribute('filter-name'); li.children[0].addEventListener('click', () => { deleteFilter(name); }); li.children[1].addEventListener('click', () => { setFilter(GM_getValue(name)); }); } } (function() { 'use strict'; let chkShowAdvanced = document.getElementById('ctl00_ctl00_CPContent_CPMain_chkShowAdvanced'); if (!chkShowAdvanced.checked) chkShowAdvanced.click(); let boxHead = '<div class="boxHead"><h2>'; boxHead += '<input type="text" placeholder="Filter name" id="customFilterName" size="8">'; boxHead += ' '; boxHead += '<button type="button" id="customFilterSave">Save</button>'; boxHead += '</h2></div>'; let filtersBox = '<div class="box subMenuBox">'; filtersBox += boxHead; filtersBox += '<div class="boxBody"><h3>Filters</h3><ul id="customFilterList"></ul></div>'; filtersBox += '<div class="boxFooter"></div></div>'; document.querySelector('.subMenu').innerHTML += filtersBox; document.getElementById('customFilterSave').addEventListener('click', saveFilter); document.getElementById('customFilterName').addEventListener('keyup', event => { if (event.key == 'Enter') saveFilter(); }); printFilters(); })();