Warning: fopen(/www/sites/update.greasyfork.icu/index/store/forever/ad6d06e0023f5b765a9075ca215cec92.js): failed to open stream: No space left on device in /www/sites/update.greasyfork.icu/index/scriptControl.php on line 65
// ==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
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
// vul hier de allianties ID in
// alleen deze allianties krijgen een trip tag op het eiland informatie scherm
var allianties = ['181','11','307','255','82']
// 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 getHuidigeSpeler(){
var playerObj = MM.getModels().Player
var player = Object.values(playerObj)[0].attributes;
var huidigeSpeler = player.name
return huidigeSpeler
}
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 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(".gp_player_link").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
if ( (stad_eigenaar != getHuidigeSpeler()) & (allianties.includes(stad_alliantie) == true) ){
var tag = document.createElement('span');
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 stedenlijst op het profiel
var steden = getStedenLijstOpProfiel()
// verkrijg lijst met alle tripjes
var triplijst = getTripLijst()
// 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)
}
}
})();