Greasy Fork is available in English.
Laat op het profiel van een speler of op eilanden zien welke steden geen trip hebben
当前为
// ==UserScript==
// @name Grepolis tripjes detector
// @version 2025-01-20
// @description Laat op het profiel van een speler of op eilanden zien welke steden 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 er een profiel is geopend
var profiel_knop_geplaatst = false
setTimeout(function checkProfielWindowOpen() {
//console.log(knop_geplaatst)
if (document.getElementById("player_towns") != null) {
if (profiel_knop_geplaatst == false){
addTripKnop('profiel')
profiel_knop_geplaatst = true
}
} else {
profiel_knop_geplaatst = false
}
setTimeout(checkProfielWindowOpen, 500);
}, 500);
// timer om te checken of er een eiland window open staat
var eiland_knop_geplaatst = false
setTimeout(function checkEilandWindowOpen() {
//console.log(knop_geplaatst)
if (document.getElementById("island_info_towns_left_sorted_by_name") != null) {
if (eiland_knop_geplaatst == false){
addTripKnop('eiland')
eiland_knop_geplaatst = true
}
} else {
eiland_knop_geplaatst = false
}
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(){
checkTroepenBuitenWindowOpen('profiel');
}, false);
var profiel = document.getElementById("player_towns")
var element = profiel.children[0].querySelector('.game_header');
// voeg de knop als tweede element toe aan de game_header
element.insertBefore(button,element.children[0]);
} else if (window == 'eiland'){
button.addEventListener('click', function(){
checkTroepenBuitenWindowOpen('eiland');
}, false);
var eiland_controls = document.getElementById("island_towns_controls")
button.style.backgroundColor = 'blue';
eiland_controls.appendChild(button)
}
console.log("Trip knop toegevoegd!")
}
function getTripLijst(){
// verkrijg je huidige trips
var trips = document.getElementById("outer_troops_list").children
var triplijst = []
for (let i = 0; i < trips.length; i++) {
var trip = trips[i].children[0].children
var trip_info = [] // index 0: je eigen stad, index 1: stadsnaam, index 2: speler
for (let j=0; j<trip.length; j++) {
var element = trip[j]
if (element.tagName == "A"){
trip_info.push(element.innerHTML)
}
}
triplijst.push(trip_info)
}
//console.log(triplijst)
return triplijst
}
function getProfileName(){
// verkrijg speler naam
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(){
// verkrijg stedenlijst op het eiland
var steden = getStedenLijstOpEiland()
// verkrijg lijst met alle tripjes
// index 0: je eigen stad, index 1: stadsnaam, index 2: speler
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
console.log(stad_eigenaar)
console.log(stad_naam)
var tag = document.createElement('span');
tag.style.zIndex = 1000;
tag.style.cursor = 'pointer';
// kijk of er een trip in de stad ligt
var j = triplijst.findIndex( e => (e[1] == stad_naam) & (e[2] ==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(){
// verkrijg naam op het profiel
var naam = getProfileName()
// verkrijg stedenlijst op het profiel
var steden = getStedenLijstOpProfiel()
// verkrijg lijst met alle tripjes
// index 0: je eigen stad, index 1: stadsnaam, index 2: speler
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[2] == naam );
if (i > -1){
var tag = document.createElement('span');
tag.style.zIndex = 1000;
tag.style.cursor = 'pointer';
// kijk of er een trip in de stad ligt
var j = triplijst.findIndex( e => e[1] == 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)
}
}
}
function checkTroepenBuitenWindowOpen(window){
// kijk of het scherm met 'troepen buiten' open staat
const troepen_buiten = document.getElementById("outer_troops_list")
if (troepen_buiten != null){
if(window == 'profiel'){
generateTripjesOpProfiel()
} else if (window == 'eiland'){
generateTripjesOpEiland()
}
} else {
alert("Open eerst het 'troepen buiten' scherm!")
}
}
})();