Het Sangu Package is een Greasemonkey script (voor Opera, Firefox en Chrome) dat beweert het spelen van TW sneller, vlotter en efficiënter te laten verlopen en dat, zoals de naam al doet vermoeden, een verzameling is van scripts die de bestaande TW pagina's gaan uitbreiden met vooral extra berekeningen (afstanden, tijden, stacks) en sorteer, groepeer- en filtermogelijkheden. Het Sangu Package is gericht naar grote spelers (50+ dorpen) en is ook meer actief op PA pagina's.
Sangu speelt op een klassieke wereld maar het package is voor alle werelden geconfigureerd en houdt rekening met loopsnelheden, nachtbonus, maximum edelafstand, fake limiet etc.
Donatie
Je vindt het Sangu Package leuk en die appreciatie wil je met de maker delen?
Dat kan - volledig vrijblijvend - via mijnPaypal account of mijn Amazone wishlist :)
Oude pagina?
Dit zijn de oude docs van het Sangu Package. Niet alles is nog correct en er komen geen updates meer op.
Met dat alles nu in het package zelf in te stellen is, heeft deze pagina ook niet zoveel zin meer...
Configuratie
De meer geavanceerde gebruikers van het script zullen na een tijd bepaalde wijzigingen willen maken aan hun gedownloade versie. Het Sangu Package is hierop
voorzien door de configuratie van veel features bovenaan het script te definiëren.
Het is dus mogelijk om op een relatief eenvoudige manier features aan of uit te schakelen of om de details van hun werking aan te passen
aan de eigen noden met mogelijk zelfs verschillende instellingen per wereld.
Als je denkt dat dit allemaal je pet te boven gaat, geen paniek, je kan het Sangu Package perfect gebruiken zonder ooit iets aan te passen!
Tip: Door op de icons te klikken krijg je te zien welke instellingen betrekking hebben op een bepaalde feature.
Tip: Test het script na elke wijziging. Als je tijdens het editeren ook maar één fout maakt zal het volledige package stoppen met werken. Een backup maken voordat je je volledig laat gaan is ook geen slecht idee!
Tip: Als je een beetje JavaScript kent dan is het aanpassen van de instellingen heel simpel. Je kan hier een JavaScript tutorial vinden. Vooral les 3 is hier relevant :)
Hoe je de broncode van het script precies moet aanpassen, staat hier uitgelegd voor Firefox.
Voor Opera moet je het bestand sangupackage.user.js in je UserScript folder openen met Notepad, Kladblok, Wordpad of iets dergelijks. Opgelet: Als je het Sangu Package aanpast met Word zal het daarna niet meer werken!
Eenmaal je de broncode geopend hebt kan je de configuratie beginnen aan te passen vanaf de volgende lijn:
// De overige settings en de settings voor alle andere werelden:
$j.extend(user_data, {
Een aantal voorbeelden
calculateSnob: true, Gaat in de Adelshoeve berekenen hoeveel edels onmiddelijk kunnen gemaakt worden met het aantal beschikbare pakketjes.
"calculateSnob" is hier de naam of sleutel van de instelling. Elke instelling heeft zijn unieke sleutel.
De mogelijkheden zijn hier true (=ja / waar) en false (=nee / onwaar).
Bij true wordt deze feature ingeschakeld, bij false wordt deze feature uitgeschakeld. De meeste instellingen kunnen aangepast worden met ja/nee, maar bij sommige komt er iets meer bij kijken...
aanvalScout: [5, 100, 500], De getallen tussen [ en ] zijn een array of een verzameling van elementen. In dit geval het aantal scouts waarvoor er links worden gemaakt in de verzamelplaats.
Tip: Tussen alle elementen moet er een , komen. Let op dat er bij het verwijderen van elementen er geen , blijft haken na het laatste element.
Het script zal stoppen met werken als dat wel het geval is!
Unit: 'light' Bij veel instellingen moeten er TW eenheden ingevuld worden. Je kan hierbij kiezen tussen de volgende eenheden:
colorOs: 'rgb(255, 245, 218)' Bij een aantal instellingen zijn de kleuren configureerbaar. Je kan een kleur op verschillende manieren duiden. In dit voorbeeld wordt er gewerkt met RGB(RED, GREEN, BLUE).
RED, GREEN en BLUE zijn daarbij waarden tussen 0 en 255. RGB(0, 0, 0) is zwart. RGB(255, 255, 255) is wit. Je kan dit ook via de alternatieve hexidecimale notatie doen. Zwart: #000000.
Op deze pagina vind je een boel voorbeelden van kleuren. Er zijn ook een aantal zogenaamde "named colors". Je kan
hier een lijst terugvinden.
Tip: Elke kleur moet steevast tussen enkele ' of dubbele " quotes staan!
Instellingen per wereld
Nog boven de algemene instellingen kun je ook instellingen specifiek voor een bepaalde wereld gaan instellen. De instellingen voor een bepaalde wereld gaat de standaard configuratie overschrijven als je
momenteel op die wereld ingelogd bent. Je kan dus perfect verschillende verzamelplaats links hebben op verschillende werelden, een andere dorpuitbouw etc...
Deze configuratie is terug te vinden onder volgende lijnen:
// Instellingen specifiek gaan instellen per wereld
switch ($j.game_data.world)
case 'nl10': Door nl10 te wijzigen naar bijvoorbeeld nl18 begin je de instellingen voor wereld 18 aan te passen. Alle mogelijkheden in user_data kunnen hier overruled worden.
Features
Legende De link bevat een screenshot van de feature.
De link bevat informatie hoe de feature aan/uit te schakelen en/of hoe de details aan te passen.
Het Sangu script is actief op de "Eigen" en "In het dorp" troepenoverzichtpagina's.
user_data.filterMinDefault: Het standaard aantal ingevuld in de troepenfilter textbox.
user_data.filterMinDefaultType: Welke unit standaard geselecteerd is in de troepenfilter combobox. Mogelijkheden zijn spear, sword, axe, archer, spy, light, marcher, heavy, ram, catapult, knight, snob user_data.filterMinPopulation: De populatie die standaard ingevuld wordt in de "Filter populatie" textbox.
user_data.filterMin: De waarden die standaard geplakt worden als het filteraantal bij het selecteren van een andere eenheid.
user_data.filterMinOther: Alle eenheden die niet in de filterMin lijst voorkomen krijgen dit aantal bij selectie van de unit in de troepenfilter combobox.
user_data.filterAutoSort: Geeft weer of de sorteer checkbox standaard aangevinkt is.
user_data.displayDays: Bij true worden de looptijden in dagen weergegeven, bij false in uren. Vb: 26 uur kan worden weergegeven als "26:00:00" of als "1.02:00:00".
Extra totalenberekening bij het "Verdediging" troepenoverzichtscherm.
Mogelijkheid om bb codes voor een restack te genereren vanuit het "Verdediging" troepenoverzichtscherm.
restack: {
to: 72000,
requiredDifference: 1000
},
restack.to: Het gewenst aantal troepen in het dorp.
restack.requiredDifference: Als het verschil tussen de troepen in het dorp en de restack.to kleiner is dan dit worden er geen bbcodes gegenereerd voor het dorp.
Via een speciale snellijst invoer kan je een troepenoverzicht onmiddelijk bij het laden van de pagina gaan filteren / sorteren.
De coördinaten van het laatst aangevallen en van het doeldorp zijn hier zichtbaar (De looptijd en aankomsttijd wordt uitgerekend).
Plus de mogelijkheid om de snelheid tot het laatste/doeldorp te wijzigen.
Naast "Alle troepen" worden er extra links toegevoegd om automatisch eenheden in te vullen.
Naamgeving
attackLinkNames: De omschrijving van de standaard invullinks.
Standaard configuratie: {fake: 'Fake', verkenner: 'Ver', edelMax: 'EdelEerst', edelMin: 'EdelTrein'},
Verkenners
unit_data.scoutVillage: Vanaf dit aantal verkenners worden de verkenner links toegevoegd.
unit_data.aanvalScout: Een array van aantallen. Bijvoorbeeld bij [100], wordt er 1 scout link toegevoegd voor 100 verkenners.
Bij [5, 100, 500], worden er 3 links toegevoegd voor 5, 100 en 500 verkenners. Uitschakelen met [],.
Edelmannen
unit_data.aanvalEdel: Geeft weer of de edelmannen links moeten toegevoegd worden.
unit_data.aanvalEdelTreinAltijdTonen: Geeft weer of de 2 edelmannen links ook moeten toegevoegd worden als er maar 1 edelman in het dorp aanwezig is.
unit_data.snobSupport: De troepen die samen met een edelman gestuurd worden.
De standaard instelling [{Population: 200, Unit: 'light', VillageType: 'off'}, {Population: 600, Unit: 'heavy', VillageType: 'def'}], gaat 50 lichte cavalrie sturen met een edelman in een offensief dorp. Of 100 zware cavalrie in een defensief dorp.
Om dit te wijzigen naar 250 bijlstrijders voor offensief: [{Population: 250, Unit: 'axe', VillageType: 'off'}, {Population: 600, Unit: 'heavy', VillageType: 'def'}], Om dit te wijzigen naar 250 bijlstrijders én 50 lichte cavalrie voor offensief: [{Population: 250, Unit: 'axe', VillageType: 'off'}, {Population: 200, Unit: 'light', VillageType: 'off'}, {Population: 600, Unit: 'heavy', VillageType: 'def'}],
aanvalCustom.active: Bij false wordt de link niet toegevoegd.
aanvalCustom.type: Mogelijkheden 'def', 'off' en 'all'. Afhankelijk hiervan wordt de link in een offensief of defensief dorp toegevoegd.
aanvalCustom.name: De omschrijving van de link.
aanvalCustom.sendAlong: Als je ingeeft 2000 speer en je zet sendAlong op 200. Dan gaat de link tot 2200 selecteren als er maar zoveel speer in het dorp aanwezig is.
aanvalCustom.required: Een minimale eenheid die in het dorp moet aanwezig zijn of de link verschijnt niet in het dorp. Syntax: required: ['sword', 1],.
Hiermee wordt aangegeven welke en hoeveel eenheden moeten geselecteerd worden.
aanvalCustom.EENHEID: De mogelijkheden zijn: spear, sword, axe, archer, spy, light, marcher, heavy, ram, catapult, snob.
Voor het selecteren van een vast getal geef dit getal in: vb 600 speer. Als er niet zoveel eenheden in het dorp aanwezig zijn worden ze allemaal geselecteerd.
Kies dus een groot genoeg getal zoals vb "25000" voor het selecteren van alle eenheden.
Geef een negatief getal in om zoveel eenheden in het dorp achter te laten. "-1" gaat dus alle eenheden behalve 1 selecteren.
incoming.sorteerOpLooptijd: Geeft weer of de verschillende eenheden in de tabel op loopsnelheid gesorteerd worden.
incoming.autoOpenTagger: Gaat de tagger automatisch openen bij het openen van de tw tagger.
incoming.hernoemInputTexbox: Gaat de text in de inputvelden aanpassen. Zet op "", om uit te schakelen.
Standaard configuratie: "{unit} ({xy}) {player} F{fields}", Mogelijkheden:
{unit}: Korte omschrijving van de traagste eenheid.
{xy}: De coördinaten van het dorp onder aanval.
{player}: De speler die de aanval verstuurd heeft.
{fields}: Afstand tussen de twee dorpen.
{c}: Het continent van het dorp onder aanval.
{dorp}: Volledige dorpsnaam.
{id}: Het TW ID van de aanval. (Technisch)
Ook op het dorpsoverzicht zijn er extra tagmogelijkheden toegevoegd
mainTagger.active: Uitschakelen of activeren van deze feature.
mainTagger.inputBoxWidth: De breedte van de inputvelden voor het hernoemen van een aanval vergroten.
mainTagger.standaardOmschrijving: De standaard omschrijving in de tagger.
mainTagger.prefix: Een prefix die voor de effectieve nieuwe bevelnaam gezet wordt.
Dit gebeurt bij de standaardOmschrijving als de checkbox is aangevinkt of bij de andereOmschrijvingen
bij prefix: true. Standaard is dit een resem '-' tekens zodat deze opvallen in de lijst met binnenkomende aanvallen.
mainTagger.autoOpenCommands: Automatisch de textboxen tonen zodat deze niet meer moeten opengeklikt worden.
mainTagger.andereOmschrijvingen: Een lijst met andere omschrijvingen. Voor elke omschrijving wordt een extra hernoem-knop toegevoegd.
Syntax: {name: "MijnFancyNaam", prefix: true}
Groepeermogelijkheid bij overzicht bevelen.
user_data.commandSommatie: Gaat de "Somlijn" checkbox standaard aanvinken.
De verstuurde eenheden automatisch in de bevelnaam zetten.
user_data.aanvalAutoRename: Uitschakelen van deze feature.
user_date.rallyPointAttackBoxWidth: Breedte instellen van de tabel met aanvallen op de verzamelplaats.
Extra totaalberekening bij overzicht Bevelen > Ondersteuning.
Totalenberekening bij de verzamelplaats > Troepen.
Totalenberekening bij het versturen van ondersteuning.
resources.requiredResDefault: Het aantal grondstoffen dat standaard ingevuld wordt.
resources.requiredHandelaar: Het aantal handelaren dat standaard ingevuld wordt.
resources.filterHandelaar: Geeft weer of de checkbox voor het duiden van handelaren standaard aangevinkt is.
resources.filterRows: Geeft weer of de filter checkbox standaard aangevinkt is.
resources.bbcodeMinimumDiff: Gaat enkel bb codes genereren voor dorpen die minstens dit getal afwijken van de filter.
Inputboxen met de coördinaten van het laatst aangevallen (of ondersteunde) dorp en het doeldorp zijn toegevoegd.
Totaal aantal binnenkomende grondstoflevering wordt uitgerekend.
enabled: Activeren (true) of deactiveren (false) van de springer.
width: De breedte van de popup.
favs: Favoriete locaties die niet in de cookies opgeslaan zijn en dus ook nooit kunnen verdwijnen. Syntax: ["500|500", "300|300", "666|555"], left & top: Vormen samen de locatie van de springer popup. Dit is enkel de originele locatie, de popup zal daarna steeds verschijnen waar de gebruiker hem het laatst positioneerde/sleepte.
daysActive: Na zoveel dagen worden de favorieten in de cookies gewist.
addDoel: Gaat het doeldorp (zoals bepaald in het troepenoverzicht scherm) toevoegen aan de favorieten popup.
addLaatste: Gaat het laatst aangevallen of ondersteunde dorp ook toevoegen aan de favorieten.
Op de kaart kan je zelf coördinaten aan je lijst van favorieten toevoegen.
Syntax: gebouwType: [minLevelOk, maxLevelOk] minLevelOk: De laagste level die niet geduidt wordt. Als de level van het gebouw in het dorp lager is dan wordt de level in het rood geplaatst.
maxLevelOk: De hoogste level die niet geduidt wordt. Als de level van het gebouw in het dorp hoger is dan wordt de level in het groen geplaatst.
Voorbeeld: garage: [1, 5],. De level wordt rood gekleurd wanneer er geen werkplaats (=garage) is en wanneer de werkplaats level 6 of hoger is.
Ontwikkeling overzicht filteren op niet correcte smederijlevels.
Syntax: ['NaamVanDeGroep', {unitType: [minLevelOk, maxLevelOk], unitType2: [minLevelOk, maxLevelOk]}] unitType: Mogelijkheden zijn spear, sword, axe, archer, spy, light, marcher, heavy, ram, catapult.
minLevelOk: De laagste level die niet geduidt wordt. Als de tech level in het dorp lager is dan wordt de level in het rood geplaatst.
maxLevelOk: De hoogste level die niet geduidt wordt. Als de tech level in het dorp hoger is dan wordt de level in het groen geplaatst.
Spelersprofiel:
De profielpagina's uitbreiden met extra informatie, links en grafieken.
profile: {
show: true,
moveClaim: true,
mapLink: {
show: true, // Deze feature aan of uitschakelen
fill: '000000', // De achtergrondkleur van de kaart
zoom: '200', // De zoomlevel (100 = de hele wereld)
grid: true, // De continentlijnen zien?
playerColor: 'ffff00', // De kleur van de speler
tribeColor: '0000FF', // De kleur van de stam van de speler
centreX: 500, // De X coördinaat
centreY: 500,
ownColor: 'FFFFFF', // De kleur van jezelf
markedOnly: true, // Enkel gemarkeerde spelers/stammen tonen?
yourTribeColor: "FF0000"}, // De kleur van je stam
spelerGrafiek:
[
["points", 'big', true], // Puntengrafiek
["villages", 'big'], // Aantal dorpen
["od", 'big'], // OD
["oda", false], // OD Aanval
["odd", false], // OD Verdediging
["rank", false] // Ranglijst
], // small / big / false
stamGrafiek:
[
["points", false], // Punten
["villages", 'big'], // Aantal dorpen
["od", false],
["oda", false],
["odd", false],
["rank", false],
["members", 'big', true] // Aantal leden in de stam
],
popup: {
show: true, // Activeren of deactiveren van deze feature
width: 900, // De breedte van de popup
height: 865 // De hoogte van de popup
}
},
profile.show: De profielpagina uitbreidingen activeren?
profile.mapLink: De instellingen voor de link naar TW Stats kaart.
profile.spelerGrafiek: TW Stats grafieken toevoegen naast het "Persoonlijke wapen".
profile.stamGrafiek: TW Stats grafieken toevoegen.
profile.popup: Tonen van de overnames uit TW Stats in een popup.
Syntax grafieken: ["WelkeGrafiek", 'grootteVanDeGrafiek', directOpenklappen] WelkeGrafiek: Het type grafiek. Mogelijkheden zijn points, villages, od, oda, odd, rank en ook members (enkel op het stamprofiel).
grootteVanDeGrafiek: TW Stats biedt twee soorten grafieken aan. 'big' is het "Standaardbeeld", 'small' is het "Alternatief beeld".
directOpenklappen: true/false: Direct openklappen? Bij false komt er enkel een spoiler button waardoor de grafiek kan zichtbaar gemaakt worden. Bij true is de grafiek onmiddelijk zichtbaar.
Dorpsoverzicht:
De stack in het dorp wordt uitgerekend waarbij er rekening gehouden wordt met de boerderij limiet, als er een is.
user_data.calculateBoerderijLimiet: Uitschakelen van deze feature.
user_data.acceptableOverstack: Aanvaardbare overstack.
Binnenkomende ondersteuning wordt een andere achtergrondkleur gegeven dan de binnenkomende aanvallen.
user_data.colorOs: Uitschakelen of kleur configureren. Uischakelen door gelijk te stellen aan null of false.
Andere pagina's:
Hoofdgebouw: Knoppen toevoegen die het dorp naar een vaste naam hernoemen.
user_data.villageName: Uitschakelen of dorpsnamen configureren. Uitschakelen door gelijk te stellen aan null, of [], Configuratie voor 1 naam: ["Bledap"], Configuratie voor meerdere dorpsnamen: ["Bledap", "Mealm", "Yalek"], user_data.villageNameClick: Enkel de naam invullen, niet klikken.
Adelshoeve: Berekenen hoeveel edels onmiddelijk kunnen gemaakt worden met het aantal beschikbare pakketjes.
Tip: Tussen haakjes wordt weergegeven hoeveel pakketjes er overblijven bij het produceren van alle edels.
unit_data.user_data.calculateSnob: Uitschakelen van deze feature.
Bericht Publiceren: Automatisch de checkboxes om alles in het rapport te tonen aanvinken.
user_data.reportPublish: Configureren welke checkboxen automatisch aangevinkt worden.
Standaard configuratie: ["own_units", "own_losses", "opp_units", "opp_losses", "carry"], Uitschakelen door gelijk te stellen aan null, of [], "own_units": Eigen eenheden tonen.
"own_losses": Eigen verliezen tonen.
"opp_units": Vijandelijke eenheden tonen.
"opp_losses": Vijandelijke verliezen tonen.
"carry": Buit tonen.
Om alles te tonen behalve de eigen eenheden en verliezen: ["opp_units", "opp_losses", "carry"],
Gaat het profiel (TW stats grafieken en links) van de speler op het dorp van die speler tonen.
user_data.showPlayerProfileOnVillage: Activeren van deze feature.
Gaat de inputtextboxen bij het bewerken van de snellijst vergroten.
user_data.snellijstGrootte: De nieuwe breedte van de snellijst textboxen. Uischakelen door gelijk te stellen aan null, of 0, user_data.snellijstScriptRijen: Het aantal lijnen van de URL textbox. Handig wanneer je een snellijst script wil wijzigen.
Het Sangu Package kan een heleboel elementen in TW herpositioneren zodat de OK button of bepaalde links altijd op dezelfde plaats staan om 2enter beter te ondersteunen.
user_data.proStyle: Gaat al dit soort features activeren of uitschakelen.
user_data.marketResizeImage: Gaat de grootte van de markt foto op het marktscherm gelijk stellen. (De foto van level 19 en 20 markt zijn verschillend van grootte)
user_data.replaceNachtbonus: Gaat op de aanvalconfirmatie pagina de melding dat een aanval in de nachtbonus toekomt wijzigen.
user_data.replaceStamClaim: Gaat op een dorp de "Dorp claimen" link verplaatsen. (Zodat "Troepen sturen" op dezelfde plaats blijft staan)
user_data.autoMarketFocus: De focus bij het versturen van grondstoffen op de OK knop zetten op het confirmatie scherm.
user_data.autoAttackFocus: De focus bij het versturen van troepen op de OK knop zetten op het confirmatie scherm.
user_data.incoming.villageBoxSize: Gaat de grootte van de tabel bij een binnenkomende aanval vergroten.