// ==UserScript== // @name TripTag Enhancer // @version 2.3 // @description Laat zien welke steden wel/geen trip hebben. // @author archdukeDaan // @match https://*.grepolis.com/game/* // @license MIT // @namespace https://dlnvt.nl // @grant GM_setValue // @grant GM_getValue // @require https://code.jquery.com/jquery-3.6.0.min.js // @downloadURL https://update.greasyfork.icu/scripts/524244/TripTag%20Enhancer.user.js // @updateURL https://update.greasyfork.icu/scripts/524244/TripTag%20Enhancer.meta.js // ==/UserScript== (function() { 'use strict'; // wacht tot document is geladen $(document).ready(function () { setTimeout(console.log(`Archduke script: ${GM_info.script.name} is geladen`), 5000); // maak de knop om naar het menu te gaan maakMenuKnop() // laadt de trip detector module aan de hand van de voorkeuren if (laadSettings().trip_module == true){ // maak een wrapper function over de createTownDiv function // voordat een stad wordt gemaakt op de kaart, run eerst mijn functie en dan pas de grepo functie if (laadSettings().auto_trip_kaart == true){ var wrapper = function(originalFunc) { return function() { var wrapper = originalFunc.apply(this, arguments); return generateTripjesOpKaart(wrapper, arguments); }; }; MapTiles.createTownDiv = wrapper(MapTiles.createTownDiv); } // timer om te checken of de knop moet worden geplaatst // er kan maar maximaal 1 profiel tegelijk open staan setTimeout(function checkProfielWindowOpen() { if (document.getElementById("player_towns") != null) { if (document.getElementById("tripknopProfiel") == null){ addTripKnop('profiel') } } setTimeout(checkProfielWindowOpen, 500); }, 500); // timer om te checken of de knop moet worden geplaatst // er kunnen meerdere eilanden vensters tegelijk open staan setTimeout(function checkEilandWindowOpen() { if (document.getElementsByClassName("island_info_wrapper") != null) { // verkrijg alle openstaande eiland vensters var vensters = getAllOpenEilandVensters() for(let i=0;i { var tripjes = stad.models tripjes.forEach((trip) => { var trip_info = trip.attributes var stad_naam = trip_info.current_town_name var stad_speler = trip_info.current_town_player_name var stad_id = trip_info.current_town_id //var trip_stad_herkomst = trip_info.home_town_name var row = {"stad_naam":stad_naam,"stad_speler":stad_speler,"stad_id":stad_id} triplijst.push( row ) }); }); //console.log(triplijst) return triplijst } function getProfileName(){ // verkrijg speler naam van het huidige profiel dat open staat var profiel = document.getElementById("player_info").children var naam = "" for(let i=0;i e.remove()); // verkrijg stedenlijst op het eiland var steden = getStedenLijstOpEiland(venster) // verkrijg de triplijst var triplijst = getTripLijst() // loop over de steden en voeg tag 'geen trip' toe als de stadsnaam niet in triplijst staat for (let k=0; k < steden.length; k++){ var stad_obj = steden[k] var stad_naam = stad_obj.querySelector(".gp_town_link").innerHTML; var stad_eigenaar_dom = stad_obj.querySelector(".gp_player_link") var stad_eigenaar = "Spookstad" if (stad_eigenaar_dom != null){ stad_eigenaar = stad_eigenaar_dom.innerHTML; } var stad_alliantie = getAlliantieFromLink(stad_obj); // plaats geen tag als de stad van de huidige speler is // plaats geen tag als de alliantie van de eigenaar van de stad niet in de alliantie lijst staat var settings = laadSettings() var allianties = settings.trip_allianties if ( allianties.includes(stad_alliantie) == true ){ // filter eigen stad weg var eigen_stad_bool = settings.trip_eigen_stad if (eigen_stad_bool == false){ if (stad_eigenaar == getHuidigeSpeler()){ continue } } //filter spelers weg waar geen tag bij hoeft if (settings.trip_spelers.includes(stad_eigenaar) == true){ continue } var tag = document.createElement('div'); tag.style.zIndex = 1000; tag.style.cursor = 'pointer'; tag.setAttribute('class','tripTag') tag.style.fontWeight = 'bold'; tag.style.marginLeft = '10px'; // kijk of er een trip in de stad ligt var j = triplijst.findIndex( e => (e.stad_naam == stad_naam) && (e.stad_speler == stad_eigenaar) ) if (j>-1){ tag.textContent = "Wel trip"; tag.style.color = 'green' } else { tag.textContent = "Geen trip"; tag.style.color = 'red' } // voeg de tag toe aan de DOM steden[k].appendChild(tag); } } } function generateTripjesOpProfiel(){ // indien van toepassing, verwijder de oude tags op het profiel document.getElementById("player_towns").querySelectorAll('.tripTag').forEach(e => e.remove()); // verkrijg naam op het profiel var naam = getProfileName() // verkrijg de triplijst var triplijst = getTripLijst() // verkrijg stedenlijst op het profiel var steden = getStedenLijstOpProfiel() // loop over de steden en voeg tag 'geen trip' of 'wel trip' toe for (let k=0; k < steden.length; k++){ var stad = steden[k].children[1] var stad_naam = stad.innerHTML var tag = document.createElement('span'); tag.style.zIndex = 1000; tag.style.cursor = 'pointer'; tag.setAttribute('class','tripTag') tag.style.fontWeight = 'bold'; // kijk of er een trip in de stad ligt var j = triplijst.findIndex( e => (e.stad_naam == stad_naam) & (e.stad_speler == naam) ) if (j>-1){ tag.textContent = "Wel trip"; tag.style.color = 'green' } else { tag.textContent = "Geen trip"; tag.style.color = 'red' } // voeg de tag toe aan de DOM steden[k].appendChild(tag) } } function generateTripjesOpKaart(originalFunc, args){ var stad = args[0] //console.log(stad) // check of stad een speler heeft, dus of het geen spookstad is if(stad.player_id != null){ // createTownDiv 2 keer geroepen per stad, eens voor de stad en eens voor de stad vlag for (let i=0;i (e.stad_id == stad_id) ) if (j>-1){ tag.style.backgroundColor = 'green' } else { tag.style.backgroundColor = 'red' } $(originalFunc[i]).append(tag); } } } } return originalFunc } ///////////////////////////////////////////////////////////////////////////// // menu ///////////////////////////////////////////////////////////////////////////// function maakMenu(){ var titel = "Archduke Menu" var menu = new ArchdukeMenu(titel) menu.addItemMenuSelection("TripTag Enhancer", maakTripInstellingen) menu.clickMenu("TripTag Enhancer") } function maakTripInstellingen(){ // maak instellingen var instelling = new Instellingen("tripenhancer","Voorkeuren","Bepaal het gedrag van de tripjes detector door de checkboxen aan te vinken.") // maak alle knopjes instelling.createCheckBox("Activeer de trip detector ( vereist refresh van de pagina )","trip_module") instelling.createCheckBox("Weergeef automatisch de trip tags op de kaart ( vereist refresh van de pagina )","auto_trip_kaart") instelling.createCheckBox("Weergeef automatisch de trip tags op het eiland scherm","auto_trip_eiland") instelling.createCheckBox("Weergeef automatisch de trip tags op het profiel van een speler","auto_trip_profiel") instelling.createCheckBox("Weergeef trip tags bij je eigen steden","trip_eigen_stad") instelling.createTextBox("Bepaal de x-positie van de TripTag op de kaart ten opzichten van de stadsvlag.") instelling.createInputBox(70,"trip_pos_x") instelling.createTextBox("Bepaal de y-positie van de TripTag op de kaart ten opzichten van de stadsvlag.") instelling.createInputBox(60,"trip_pos_y") // opslaan knop instelling.createKnop("Opslaan",null) instelling.createInnerBox("archduke_menu_trip_allianties","Alleen voor onderstaande allianties zullen trip tag worden getoond.","Alliantie ID","Opslaan","input_ally_id",saveInstellingenAllianties) instelling.createInnerBox("archduke_menu_trip_spelers","Onderstaande spelers zullen geen trip tag krijgen.","Grepolis Naam","Opslaan","input_speler_id",saveInstellingenSpelers) instelling.createKnop("Reset instellingen", resetSettings) // voeg aan menu var menu_right = document.getElementById("archduke_menu_right") menu_right.appendChild(instelling.instelling) // check settings in de local storage var settings = laadSettings() if (settings.auto_trip_eiland){ document.getElementById("archduke_menu_auto_trip_eiland").classList.add('checked') } if (settings.auto_trip_kaart){ document.getElementById("archduke_menu_auto_trip_kaart").classList.add('checked') } if (settings.auto_trip_profiel){ document.getElementById("archduke_menu_auto_trip_profiel").classList.add('checked') } if (settings.trip_eigen_stad){ document.getElementById("archduke_menu_trip_eigen_stad").classList.add('checked') } if (settings.trip_module){ document.getElementById("archduke_menu_trip_module").classList.add('checked') } for (let i=0; i < settings.trip_allianties.length;i++){ var ally_id = settings.trip_allianties[i] addRowToInnerBox(ally_id,"archduke_menu_trip_allianties",saveInstellingenAllianties) } for (let i=0; i < settings.trip_spelers.length;i++){ var speler_id = settings.trip_spelers[i] addRowToInnerBox(speler_id,"archduke_menu_trip_spelers",saveInstellingenSpelers) } document.getElementById("archduke_menu_trip_pos_x").value = settings.trip_pos_x document.getElementById("archduke_menu_trip_pos_y").value = settings.trip_pos_y } function saveInstellingenAllianties(){ var entries = document.body.querySelectorAll(".archduke_menu_trip_allianties") var allianties = [] for (let i=0;i