Greasy Fork is available in English.
Laat op het profiel van een speler of op het eiland scherm zien welke steden wel/geen trip hebben
当前为
// ==UserScript==
// @name Grepolis tripjes detector
// @version 2025-01-21
// @description Laat op het profiel van een speler of op het eiland scherm zien welke steden wel/geen trip hebben
// @author archdukeDaan
// @match https://*.grepolis.com/*
// @license MIT
// @namespace https://tampermonkey.net/
// @grant none
// ==/UserScript==
(function() {
'use strict';
// timer om te checken of de knop moet worden geplaatst
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
setTimeout(function checkEilandWindowOpen() {
if (document.getElementById("island_info_towns_left_sorted_by_name") != null) {
if (document.getElementById("tripknopEiland") == null){
addTripKnop('eiland')
}
}
setTimeout(checkEilandWindowOpen, 500);
}, 500);
function addTripKnop(window) {
var button = document.createElement('span');
button.textContent = 'Tripjes';
button.style.zIndex = 1000;
button.style.width = '50px'
button.style.padding = '4px';
button.style.marginTop = '4px'
button.style.marginBottom = '4px'
button.style.color = 'white';
button.style.border = '1px solid black';
button.style.borderRadius = '5px';
button.style.cursor = 'pointer';
if (window == 'profiel'){
button.addEventListener('click', function(){
generateTripjesOpProfiel();
}, false);
button.setAttribute('id', 'tripknopProfiel');
// voeg de knop als tweede element toe aan de game_header van de stedenlijst op het profiel
var profiel = document.getElementById("player_towns")
var element = profiel.children[0].querySelector('.game_header');
element.insertBefore(button,element.children[0]);
} else if (window == 'eiland'){
button.addEventListener('click', function(){
generateTripjesOpEiland();
}, false);
button.setAttribute('id', 'tripknopEiland');
button.style.backgroundColor = 'blue';
var eiland_controls = document.getElementById("island_towns_controls")
eiland_controls.appendChild(button)
}
console.log("Trip knop toegevoegd!")
}
function getTripLijst(){
// verkrijg alle tripjes en stop ze in een lijst
const steden_met_troepen_buiten = ITowns.all_supporting_units.fragments
var triplijst = []
Object.values(steden_met_troepen_buiten).forEach((stad) => {
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 trip_stad_herkomst = trip_info.home_town_name
var row = {"stad_naam":stad_naam,"stad_speler":stad_speler,"trip_herkomst":trip_stad_herkomst}
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<profiel.length;i++){
var el = profiel[i]
if (el.tagName == "H3"){
naam = el.innerHTML
break
}
}
return naam
}
function getStedenLijstOpProfiel(){
// verkrijg stedenlijst dom element van een speler zn profiel
var profiel_steden = document.getElementById("player_towns").children[0].children
var steden = false
for(let i=0;i<profiel_steden.length;i++){
var el2 = profiel_steden[i]
if (el2.tagName == "UL"){
steden = el2.children
break
}
}
//console.log(steden)
return steden
}
function getStedenLijstOpEiland(){
// verkrijg stedenlijst dom element van een eiland
var eiland_steden = document.getElementById("island_info_towns_left_sorted_by_name").children
//console.log(steden)
return eiland_steden
}
function generateTripjesOpEiland(){
// indien van toepassing, verwijder de oude tags
document.querySelectorAll('.tripTag').forEach(e => e.remove());
// verkrijg stedenlijst op het eiland
var steden = getStedenLijstOpEiland()
// verkrijg lijst met alle tripjes
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 = stad_obj.querySelector(".player_name").children[1].innerHTML
var tag = document.createElement('span');
tag.style.zIndex = 1000;
tag.style.cursor = 'pointer';
tag.setAttribute('class','tripTag')
// 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
document.querySelectorAll('.tripTag').forEach(e => e.remove());
// verkrijg naam op het profiel
var naam = getProfileName()
// verkrijg stedenlijst op het profiel
var steden = getStedenLijstOpProfiel()
// verkrijg lijst met alle tripjes
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 = steden[k].children[1]
var stad_naam = stad.innerHTML
// kijk of de stad behoort tot de speler van dit profiel
var i = triplijst.findIndex(e => e.stad_speler == naam );
if (i > -1){
var tag = document.createElement('span');
tag.style.zIndex = 1000;
tag.style.cursor = 'pointer';
tag.setAttribute('class','tripTag')
// kijk of er een trip in de stad ligt
var j = triplijst.findIndex( e => e.stad_naam == stad_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)
}
}
}
})();