Info - van dorpuitbouw tot scripts tot groepen tot verdediging

Reactiescore
35
Een beetje vanalles dus. Heb dit geschreven voor het stamforum en dacht dat er misschien nog mensen wel iets aan zouden hebben.
Soms ben ik redelijk specifiek bezig voor de wereld waarop we spelen namelijk:
- Geen ridders en boogmannen
- Boederij limiet van 54.000 troepen voor een dorp met level 30 boerderij.
- Geen milliseconden.
- Dode edels tijdens een aanval kunnen niet goedkoop opnieuw gefabriceerd worden.

Uitbouw dorp
Opbouw van een dorp. Iedereen doet het een beetje anders. Zolang het aantal punten van je dorpen onder de 10.000 is zit je goed. Uiteindelijk komt het altijd ongeveer neer op het volgende:

main.png
Hoofdgebouw:
Level 20 (Max 30)
Er is eigenlijk geen enkele reden om de level boven de 20 te brengen (of te laten).

barracks.png
Kazerne:
Level 25 (Max)
Sneller trainen, sneller aanvallen right.

stable.png
Stal:
Level 20 (Max)
Idem dito.

garage.png
Werkplaats:
Level 1-5 (Max 15)
Sneller trainen gaat hier niet op omdat je niet zoveel rams nodig hebt. Op level 1 zijn je rammen nog altijd klaar voor je axes/lichte cavalry)

snob.png
Adelshoeve:
Level 1-2 (Max 3)
Sommige maken in alle dorpen level 2 waardoor je altijd zoveel nieuwe edels kunt maken als je op dat moment dorpen hebt. Daardoor dat level 3 nutteloos is, als je 100 dorpen hebt gaje nooit 200 edels maken...
Ik gebruik een willekeurige mix van level 1 en 2. Een voordeel van level 3 is wel dat je een edelman iets sneller kan produceren.

smith.png
Smederij:
Level 20 (Max)
Je hebt de level 20 nodig voor de adelshoeve dus daar kun je niet echt aan uit. Als je de smederij afbreekt kun je nog pakketjes opslaan maar geen edels meer maken in dat dorp. Als je echt je punten zo laag mogelijk wil houden (voor betere moraal) kun je de smederij nog afbreken naar level 15 (=Level nodig voor zware cavalry) in dorpen waar je zeker bent dat je geen edels meer moet produceren.

place.png
Verzamelplaats:
Level 1 (Max)

market.png
Marktplaats:
Level 19 (Max 25)
De laatste marktplaats levels zijn redelijk veel punten. Ik gebruik persoonlijk level 19 zodat ik 91.000 grondstoffen kan rondsturen maar dit is iets dat je zelf moet weten, je kan ook de markt op level 10 laten staan en je troepen gebruiken om je eigen dorpen te farmen ipv de markt te gebruiken. Veel hoger dan 19 zou ik wel niet gaan.

wood.png
Houthakkers,
stone.png
Leemgroeve,
iron.png
Ijzermijn,
farm.png
Boederij,
storage.png
Opslagplaats
:
Level 30 (Max)
Spreekt voor zich denk ik. De opslagplaats zou je eventueel lager kunnen laten staan maar als je eens een tijdje niet online bent is 400k wel mooi, kwestie van geen grondstoffen te verliezen.

hide.png
Schuilplaats:
Max 10
Ik laat de schuilplaats altijd staan op wat het stond toen ik het dorp overnam. De schuilplaats is praktisch voor als je dorp geveegd is zodat je direct wat grondstoffen overhebt om direct de muur te herbouwen. Als een dorp onder aanval is ga ik wel dikwijls de schuilplaats verder gaan uitbouwen.

wall.png
Muur:
Level 20 (Max)





Dorptypes, groepen en snellijst aanpassingen
Iedereen weet wel dat je de dorpen moet specialiseren, dankzij het massa recruteringsscherm is het ook praktisch om deze in aparte groepjes te stoppen en door manuele aanpassingen aan de snellijst kun je van je groepen optimaal gebruik maken.

Groepen en dorptypes:
De groepen zijn verdeeld in "type", "locatie" en een paar speciale gevallen.

Locatie:
Zolang je één cluster hebt komen alle dorpen in de groep "Hoofdcluster", zodra je een sprong maakt komen de dorpen daarrond in een nieuwe groep "Subcluster X". Als je op het moment van de sprong geen "hoofdcluster" groep had mag je beginnen al je dorpen in een extra groep te stoppen, dus ben je beter dat je het direct doet. Waarom dit praktisch is wordt straks nog eens verduidelijkt tijdens het onderdeel "snellijst aanpassingen".
Update: Met de upgrades van TW is het nu makkelijk om snel veel dorpen in een groep toe te voegen of te verwijderen.
 
Laatst bewerkt:
Reactiescore
35
Ik heb volgende types van dorpen (en dus groepen):
Aanvalsdorp:
6400 bijlstrijders, 3200 lichte cavalrie, 300 rammen en 50 scouts.
De scouts opdat je een scout kan meesturen met je aanvallen en ook enigzinds verdedigt bent tegen massa scout aanvallen.
Meer bijlstrijders is sterker maar met deze verdeling van bijlstrijder/lc worden je vegen het snelst opnieuw opgebouwd.
300 rams: hoe meer rammen, hoe minder units je verliest. Veel meer dan 300 moet je echter niet hebben aangezien je ook nog een leger wil.
Update:
- Ik ben nu al een tijdje overgestapt naar 7400 bijlstrijders, 3000 lichte cavalrie en 300 rammen. Het is dus vooral persoonlijke smaak. Als je meer dan 8000 bijlstrijders gaat maken dan duurt het wel een stuk langer voordat een veeg volledig uitgebouwd is.
- Via het Sangu Package kan je snel een veeg vinden die tussen twee bepaalde tijdstippen of net zo kort mogelijk voor een bepaald tijdstip zou arriveren, daarom is standaard 1 zwaard maken in een aanvalsdorp om het timen te vergemakkelijken geen slecht idee.

Verdediging:
8000 speren, 2000 zware cavalrie, 50 scouts en 5 rammen.
De 5 rammen zijn er voor twee redenen:
Het sturen van fakes en het vertraagt sturen van ondersteuning zonder de ram zou je bijvoorbeeld nog een aantal uurtjes wakker mogen blijven wat je waarschijnlijk niet wil doen.
De verdeling van de troepen (speer/zc) wordt verdedigde in een aparte draad in dit forum.
Update: Ook hier kan je 1 zwaard maken zodat je op een verschillende snelheid je ondersteuning kan sturen.

Scouts
4000 speer, 5000 scouts, 800 zware cavalrie, 10 rammen.
Hoeveel scouts je in een dorp wil is volledig je eigen keuze. Meestal wordt een scout dorp wel gecombineerd met verdedigingstroepen.

Katapult-dorp
Aanvalsdorp met 500 catapulten.
Dit is om je tegenstanders ten tijde van een oorlog te pesten. Fake aanvallen kunnen bijvoorbeeld met katapulten gestuurd worden om gebouwtjes af te breken. Meestal wordt gekozen om de boerderij (duurst en langst om te herbouwen + er kunnen geen nieuwe troepen in gemaakt worden) en het hoofdgebouw (als het een vol dorp is en zowel de boerderij als het hoofdgebouw staat op 1 dan moeten eerst alle boerderij levels omhoog op level 1 hoofdgebouw -niet al te snel dus- omdat voor het hoofdgebouw plaats in de boerderij nodig is) of mogelijk de leemgroeve omdat de boederij vooral leem nodig heeft.
Het is ook beter (ie meer levels naar beneden) om veel aanvallen met een beperkt aantal katapulten te sturen dan 1 aanval met al je katapulten. Dus een fake edeltrein met katapulten is altijd ideaal.
Ik denk dat het logisch is maar: Ga nooit een dorp afbreken dat dicht genoeg bij je cluster ligt om zelf over te nemen!

Bunker buster (meer uitleg over bunker busters hier)
12.000 bijlstrijders, 50 scouts, 1100 rammen.
Het duurt enorm lang om deze te maken, op 100 dorpen heb je er dan misschien ook maar 5 ofzo. Als je de volledige verdediging van een speler wil vernietigen ga je ook die dorpen waar 54.000 troepen in staan moeten platgooien. Dat is waar deze bunker busters gebruikt worden: Eerst 2 van deze aanvallen en dan nog een 4-6 gewone aanvallen. Waar een gewone aanval de muur geen enkele level naar beneden krijgt als het propvol zit, lukt dat wel met deze bunker busters. Als de gewone aanvallen toekomen staat de muur mogelijk al maar op 15 meer, en vanaf dan gaat het snel :)

Andere groepen:
Small
Alle dorpen waar iets in moet gebeuren: Er moeten nog gebouwen komen, de smederij levels moeten aangepast worden, de muur moet herbouwd worden etc.

AlleVerdediging
De scouts- en verdedigingsgroep bijeen.

AlleAanval
De aanvals-, katapult- en bunkerbustergroepen bijeen.
Deze hebben twee doelen:
Bij de snellijst komen er geen overzichten van de aanvals, katapult en bb dorpen apart maar kun je een overzicht van alle troepen in de aanvalsdorpen op 1 schermpje bekijken.
Daarnaast is het ook handig voor het opslaan van pakketjes: Je slaat niet pakketjes op in alle dorpen maar in alle dorpen die in de AlleAanval en AlleVerdediging zitten. De dorpen die in de "Small" groep zitten zet je dan wel in een "Aanvals" of "Verdedigings" groep zodat er wel troepen in getraind worden maar de grondstoffen worden niet gebruikt om pakketjes met op te slaan.

Andere?
Ik gebruik geen andere groepen. Sommige mensen gebruiken groepen zoals "Edels". Het probleem met deze groepen is dat ze snel kunnen veranderen en je de groepen dus continue up to date moet houden wat na een tijdje dikwijls nogal problematisch is... Als je een edel maakt in een dorp en je vergeet hem in de "edel"-groep te stoppen kan het ook zijn dat je deze daardoor volledig vergeet.
Update: Ik heb nu wel een groep 'edels', de reden dat ik nu toch zo'n groep heb is omdat het nu via TW mogelijk is om een edelman-icoon op de kaart bovenop de dorpen in die groep te tonen. Er is wat tijd nodig om de groep up to date te houden, maar je kan op de kaart in een oogopslag wel zien waar je edels zich bevinden!

Snellijst aanpassingen
De bestaande snellijst is handig maar het kan veel beter. Uiteindelijk komt het erop neer om bepaalde véélbezochte pagina's waarvoor je meerdere muiskliks nodig hebt om er te geraken gewoon op de snellijst zet zodat ze steeds direct beschikbaar zijn.
Een mooi voorbeeld is de binnenkomende aanvallen link die TW aanbiedt: Handig ja, praktisch nee. Als je in een bepaalde groep zit laat die link je in die groep zitten waardoor je mogelijk niet alle binnenkomende aanvallen ziet. Dit kan opgelost worden met een nieuwe link in de snellijst.

Voor alle duidelijkheid je kan de snellijst aanpassen via Instellingen > Snellijst bewerken. En de snellijst is een van de voordelen van premium account.
Voor veel lijsten moet je de groep ID van een van je groepen hebben. Dit kan je aan de URL zien als je op een groep klikt. Bijvoorbeeld: http://nl10.tribalwars.nl/game.php?...villages&units_type=there&mode=units&page=-1&group=308

Mijn snellijst ziet er als volgt uit:
Aantekeningsnaam: Train
Afbeelding-URL: {graphic}/face.png
Doel-URL: {game}&screen=train
Dit is een vervanging van de kazerne, stal en werkplaats links. Op dit scherm kunnen alle soorten troepen getraind worden. Op dit moment niet meer zo praktisch aangezien er een massa trainingsscript is (ook op dit forum:)

Aantekeningsnaam: Attack/Defense
Afbeelding-URL: {graphic}/buildings/barracks.png / {graphic}/command/support.png
Doel-URL: {game}&screen=overview_villages&type=own_home&mode=units&page=-1&group=GROEPID AlleVerdediging/AlleAanval
Een overzicht van de troepenaantallen in AL je verdedigings- of aanvalsdorpen (vandaar de noodzaak voor de groep hierboven)

Aantekeningsnaam: Building
Afbeelding-URL: {graphic}/buildings/wall.png
Doel-URL: {game}&screen=overview_villages&mode=buildings&page=-1&group=0&order=wall&dir=asc
Een overzicht van de gebouwen levels van alle dorpen gesorteerd op niet volledig gebouwde muren.

Aantekeningsnaam: Home
Afbeelding-URL: {graphic}/buildings/main.png
Doel-URL: {game}&screen=overview_villages&group=0&type=there&mode=units&page=-1
Een overzicht van alle troepen thuis (dus met OS erbij) in alle dorpen.

Aantekeningsnaam: Production
Afbeelding-URL: {graphic}/res.png
Doel-URL: {game}&screen=overview_villages&mode=prod&group=0&page=-1
Productie van alle dorpen. Handig om dorpen te zien die vol grondstoffen zitten, niet aan het bouwen/trainen zijn etc.

Aantekeningsnaam: Opbouwen
Afbeelding-URL: {graphic}/buildings/wall.png
Doel-URL: {game}&screen=overview_villages&mode=buildings&page=-1&oder=points&order=asc&group=GROEPID Small
Hierdoor kun je makkelijk bouwen, volgend dorp in de groep, bouwen, volgend dorp om in alle dorpen waar nog iets moet gebeuren snel te bouwen.

Aantekeningsnaam: Commands
Afbeelding-URL: {graphic}/command/attack.png
Doel-URL: {game}&screen=overview_villages&mode=commands&type=attack&page=-1&group=0
Alle actieve aanvalscommando's.

Aantekeningsnaam: Return
Afbeelding-URL: {graphic}/command/return.png
Doel-URL: {game}&screen=overview_villages&mode=commands&type=return&page=-1&group=0
Alle terugkerende troepen.

Aantekeningsnaam: Incoming
Afbeelding-URL: {graphic}/buildings/barracks.png
Doel-URL: {game}&screen=overview_villages&mode=incomings&type=unignored&subtype=attacks&page=-1&group=0
Alle binnenkomende aanvallen.

Aantekeningsnaam: MAIN
Afbeelding-URL:
Doel-URL: {game}&screen=overview_villages&type=there&mode=units&page=-1&group=LOCATIE GROEP ID
Troepenoverzicht van alle dorpen in een bepaalde cluster. Enkel praktisch als je meerdere clusters hebt natuurlijk :)

Update:
Doel-URL: {game}&screen=overview_villages&type=own_home&mode=units&page=-1&group=LOCATIE GROEP ID
De eerste "Doel-URL" gaat alle troepen in de dorpen tonen, de tweede link gaat de troepen tonen die in het dorp aanwezig zijn en ook in dat dorp geproduceerd zijn. De eerste link is dus praktisch tijdens het verdedigen, de tweede link is praktisch als je vooral aanvalt.

Aantekeningsnaam: TARGET
Afbeelding-URL:
Doel-URL: {game}&screen=info_player&id=SPELER ID
Direct naar de dorpen lijst van een bepaalde speler. SPELER ID is te vervangen door het volgende nummer als je in het spel op de naam van een speler klikt: http://nlxx.tribalwars.nl/game.php?village=200&screen=info_player&id=593096

Aantekeningsnaam: Springer
Doel-URL: {game}&screen=map&x=462&y=647
Gaat naar de kaart, gecentreerd op - in dit geval - 462|647.

Aantekeningsnaam: zondergroep
Doel-URL: {game}&screen=overview_villages&mode=groups&order=count&dir=asc&page=0&group=0
Toont alle dorpen die nog niet aan groep toegekend zijn.
 
Laatst bewerkt:
Reactiescore
35
Massa training script
Mijn scripts. Zoals uitgelegd in "groepen en dorptypes" moet je een groep hebben per trainingscript. Bij gebruik ook altijd opletten dat je in de juiste groep staat of anders mag je dorp per dorp de training gaan annuleren :)
Ik heb het originele script aangepast zodat niet automatisch op de "Train" knop wordt geklikt. Kwestie dat je nog eens kunt checken of je idd in de juiste groep zit. Vergeet dus niet op de knop te klikken of er zal niets gebeuren.

Tribe-Tool
Er is een greasemonkey versie van de massa recruiter: greasemonkey
Ook de klassieke snellijst tool staat er: snellijst

Aantekeningsnaam: Mass
Afbeelding-URL:
Doel-URL: {game}&screen=train&mode=mass&page=-1&group=EERSTE GROEP ID
Gaat direct naar de massa training pagina en plaatst je in de eerste groep. Daarna kun je de snellijst toevoegingen hieronder gebruiken:

Aantekeningsnaam:
Afbeelding-URL: {graphic}/unit/unit_axe.png
Doel-URL:
Code:
javascript:var configuration = [0, 0, 7000,  50, 3400, 0, 300, 0]; var archers = false; var units; var unitsNL; var costs; function arrayMin(array) { var value = array[0]; for (var t = 1; t < array.length; t++) { if (array[t] < value) { value = array[t]; } } return value; } function linearDivideArray(array1, array2) { var value = []; if (array1.length == array2.length) { for (var t = 0; t < array1.length; t++) { if (array2[t] !== 0) { value[t] = array1[t] * 1.0 / array2[t]; } else { value[t] = 0; } } } return value; } function linearAddArray(array1, array2) { var value = []; if (array1.length == array2.length) { for (var t = 0; t < array1.length; t++) { value[t] = array1[t] + array2[t]; } } return value; } function getUnitId(unit) { for (var t = 0; t < units.length; t++) { if (unit == unitsNL[t]) { return t; } } return -1; } function getTagsSubset(tagname, classname) { var subset_t = document.getElementsByTagName(tagname); var subset_c = []; var u = 0; for (var t = 0; t < subset_t.length; t++) { if (subset_t[t].className == classname) { subset_c[u++] = subset_t[t]; } } return subset_c; } function getTable() { var candidates = getTagsSubset('table', 'vis'); var t; for (t = 0; t < candidates.length; t++) { try { if (candidates[t].rows[0].cells[0].innerHTML == 'Dorp') { break; } } catch (e) { } } return candidates[t]; } function getQueue(record) { var value = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var u = 3; u < record.cells.length; u++) { try { value[u - 3] = parseInt(record.cells[u].childNodes[1].childNodes[1].firstChild.title, 10); } catch (e) { } if (isNaN(value[u - 3])) { value[u - 3] = 0; } } return value; } function getResources(record) { var value = [0, 0, 0, 0]; var res = record.cells[1].textContent.split("\n"); var farm = record.cells[2].innerHTML.split('/'); value[0] = parseInt(res[1].replace(".", ""), 10); value[1] = parseInt(res[2].replace(".", ""), 10); value[2] = parseInt(res[3].replace(".", ""), 10); value[3] = farm[1] - farm[0]; return value; } function getProduced(record) { var value = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var u = 3; u < record.cells.length; u++) { try { value[u - 3] = parseInt(record.cells[u].childNodes[1].textContent.split("\n")[2], 10); } catch (e) { } if (isNaN(value[u - 3])) { value[u - 3] = 0; } } return value; } function submitForm() { var candidates = document.getElementsByTagName("input"); var t; for (t = 0; t < candidates.length; t++) { if (candidates[t].type == "submit") { break; } } /*candidates[t].click();*/ } if (document.URL.match('screen=train') && document.URL.match('mode=mass')) { var records = getTable().rows; if (archers) { units = ['spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult']; unitsNL = ['Speervechter', 'Zwaardvechter', 'Bijlstrijder', 'Boogschutter', 'Verkenner', 'Lichte cavalerie', 'Bereden boogschutter', 'Zware cavalerie', 'Ram', 'Katapult']; costs = [ [50, 30, 10, 1], [30, 30, 70, 1], [60, 30, 40, 1], [100, 30, 60, 1], [50, 50, 20, 2], [125, 100, 250, 4], [250, 100, 150, 5], [200, 150, 600, 6], [300, 200, 200, 5], [320, 400, 100, 8] ]; } else { units = ['spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult']; unitsNL = ['Speervechter', 'Zwaardvechter', 'Bijlstrijder', 'Verkenner', 'Lichte cavalerie', 'Zware cavalerie', 'Ram', 'Katapult']; costs = [ [50, 30, 10, 1], [30, 30, 70, 1], [60, 30, 40, 1], [50, 50, 20, 2], [125, 100, 250, 4], [200, 150, 600, 6], [300, 200, 200, 5], [320, 400, 100, 8] ]; } for (r = 1; r < records.length; r++) { var subconf = []; var total_costs = [0, 0, 0, 0]; var i; var resources = getResources(records[r]); var queue = getQueue(records[r]); var produced = getProduced(records[r]); for (i = 0; i < units.length; i++) { subconf[i] = configuration[i] - (queue[i] + produced[i]); if (subconf[i] < 0) { subconf[i] = 0; } for (var j = 0; j < 4; j++) { total_costs[j] += costs[i][j] * subconf[i]; } } var factor = arrayMin(linearDivideArray(resources, total_costs)); if (factor > 1.0) { factor = 1.0; } for (i = 0; i < units.length; i++) { var number = subconf[i] * factor; if (number < 0) { number = 0; } if (records[r].cells[3 + i].childNodes[3]) { var ibox = records[r].cells[3 + i].childNodes[3]; try { ibox.defaultValue = parseInt(number, 10); } catch (e) { } } } } submitForm(); } else { alert('Ongeldige bewerking!\nDeze tool werkt enkel in het massarecruteren-scherm.'); }

Aantekeningsnaam:
Afbeelding-URL: {graphic}/unit/unit_heavy.png
Doel-URL:
Code:
javascript: var configuration = [9000, 0, 0,  50, 0, 2200, 10, 0]; var archers = false; var units; var unitsNL; var costs; function arrayMin(array) { var value = array[0]; for (var t = 1; t < array.length; t++) { if (array[t] < value) { value = array[t]; } } return value; } function linearDivideArray(array1, array2) { var value = []; if (array1.length == array2.length) { for (var t = 0; t < array1.length; t++) { if (array2[t] !== 0) { value[t] = array1[t] * 1.0 / array2[t]; } else { value[t] = 0; } } } return value; } function linearAddArray(array1, array2) { var value = []; if (array1.length == array2.length) { for (var t = 0; t < array1.length; t++) { value[t] = array1[t] + array2[t]; } } return value; } function getUnitId(unit) { for (var t = 0; t < units.length; t++) { if (unit == unitsNL[t]) { return t; } } return -1; } function getTagsSubset(tagname, classname) { var subset_t = document.getElementsByTagName(tagname); var subset_c = []; var u = 0; for (var t = 0; t < subset_t.length; t++) { if (subset_t[t].className == classname) { subset_c[u++] = subset_t[t]; } } return subset_c; } function getTable() { var candidates = getTagsSubset('table', 'vis'); var t; for (t = 0; t < candidates.length; t++) { try { if (candidates[t].rows[0].cells[0].innerHTML == 'Dorp') { break; } } catch (e) { } } return candidates[t]; } function getQueue(record) { var value = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var u = 3; u < record.cells.length; u++) { try { value[u - 3] = parseInt(record.cells[u].childNodes[1].childNodes[1].firstChild.title, 10); } catch (e) { } if (isNaN(value[u - 3])) { value[u - 3] = 0; } } return value; } function getResources(record) { var value = [0, 0, 0, 0]; var res = record.cells[1].textContent.split("\n"); var farm = record.cells[2].innerHTML.split('/'); value[0] = parseInt(res[1].replace(".", ""), 10); value[1] = parseInt(res[2].replace(".", ""), 10); value[2] = parseInt(res[3].replace(".", ""), 10); value[3] = farm[1] - farm[0]; return value; } function getProduced(record) { var value = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var u = 3; u < record.cells.length; u++) { try { value[u - 3] = parseInt(record.cells[u].childNodes[1].textContent.split("\n")[2], 10); } catch (e) { } if (isNaN(value[u - 3])) { value[u - 3] = 0; } } return value; } function submitForm() { var candidates = document.getElementsByTagName("input"); var t; for (t = 0; t < candidates.length; t++) { if (candidates[t].type == "submit") { break; } } /*candidates[t].click();*/ } if (document.URL.match('screen=train') && document.URL.match('mode=mass')) { var records = getTable().rows; if (archers) { units = ['spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult']; unitsNL = ['Speervechter', 'Zwaardvechter', 'Bijlstrijder', 'Boogschutter', 'Verkenner', 'Lichte cavalerie', 'Bereden boogschutter', 'Zware cavalerie', 'Ram', 'Katapult']; costs = [ [50, 30, 10, 1], [30, 30, 70, 1], [60, 30, 40, 1], [100, 30, 60, 1], [50, 50, 20, 2], [125, 100, 250, 4], [250, 100, 150, 5], [200, 150, 600, 6], [300, 200, 200, 5], [320, 400, 100, 8] ]; } else { units = ['spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult']; unitsNL = ['Speervechter', 'Zwaardvechter', 'Bijlstrijder', 'Verkenner', 'Lichte cavalerie', 'Zware cavalerie', 'Ram', 'Katapult']; costs = [ [50, 30, 10, 1], [30, 30, 70, 1], [60, 30, 40, 1], [50, 50, 20, 2], [125, 100, 250, 4], [200, 150, 600, 6], [300, 200, 200, 5], [320, 400, 100, 8] ]; } for (r = 1; r < records.length; r++) { var subconf = []; var total_costs = [0, 0, 0, 0]; var i; var resources = getResources(records[r]); var queue = getQueue(records[r]); var produced = getProduced(records[r]); for (i = 0; i < units.length; i++) { subconf[i] = configuration[i] - (queue[i] + produced[i]); if (subconf[i] < 0) { subconf[i] = 0; } for (var j = 0; j < 4; j++) { total_costs[j] += costs[i][j] * subconf[i]; } } var factor = arrayMin(linearDivideArray(resources, total_costs)); if (factor > 1.0) { factor = 1.0; } for (i = 0; i < units.length; i++) { var number = subconf[i] * factor; if (number < 0) { number = 0; } if (records[r].cells[3 + i].childNodes[3]) { var ibox = records[r].cells[3 + i].childNodes[3]; try { ibox.defaultValue = parseInt(number, 10); } catch (e) { } } } } submitForm(); } else { alert('Ongeldige bewerking!\nDeze tool werkt enkel in het massarecruteren-scherm.'); }
 
Laatst bewerkt:
Reactiescore
35
Aantekeningsnaam:
Afbeelding-URL: {graphic}/unit/unit_spy.png
Doel-URL:
Code:
javascript: var configuration = [5000, 0, 0,  5000, 0, 1000, 10, 0]; var archers = false; var units; var unitsNL; var costs; function arrayMin(array) { var value = array[0]; for (var t = 1; t < array.length; t++) { if (array[t] < value) { value = array[t]; } } return value; } function linearDivideArray(array1, array2) { var value = []; if (array1.length == array2.length) { for (var t = 0; t < array1.length; t++) { if (array2[t] !== 0) { value[t] = array1[t] * 1.0 / array2[t]; } else { value[t] = 0; } } } return value; } function linearAddArray(array1, array2) { var value = []; if (array1.length == array2.length) { for (var t = 0; t < array1.length; t++) { value[t] = array1[t] + array2[t]; } } return value; } function getUnitId(unit) { for (var t = 0; t < units.length; t++) { if (unit == unitsNL[t]) { return t; } } return -1; } function getTagsSubset(tagname, classname) { var subset_t = document.getElementsByTagName(tagname); var subset_c = []; var u = 0; for (var t = 0; t < subset_t.length; t++) { if (subset_t[t].className == classname) { subset_c[u++] = subset_t[t]; } } return subset_c; } function getTable() { var candidates = getTagsSubset('table', 'vis'); var t; for (t = 0; t < candidates.length; t++) { try { if (candidates[t].rows[0].cells[0].innerHTML == 'Dorp') { break; } } catch (e) { } } return candidates[t]; } function getQueue(record) { var value = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var u = 3; u < record.cells.length; u++) { try { value[u - 3] = parseInt(record.cells[u].childNodes[1].childNodes[1].firstChild.title, 10); } catch (e) { } if (isNaN(value[u - 3])) { value[u - 3] = 0; } } return value; } function getResources(record) { var value = [0, 0, 0, 0]; var res = record.cells[1].textContent.split("\n"); var farm = record.cells[2].innerHTML.split('/'); value[0] = parseInt(res[1].replace(".", ""), 10); value[1] = parseInt(res[2].replace(".", ""), 10); value[2] = parseInt(res[3].replace(".", ""), 10); value[3] = farm[1] - farm[0]; return value; } function getProduced(record) { var value = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var u = 3; u < record.cells.length; u++) { try { value[u - 3] = parseInt(record.cells[u].childNodes[1].textContent.split("\n")[2], 10); } catch (e) { } if (isNaN(value[u - 3])) { value[u - 3] = 0; } } return value; } function submitForm() { var candidates = document.getElementsByTagName("input"); var t; for (t = 0; t < candidates.length; t++) { if (candidates[t].type == "submit") { break; } } /*candidates[t].click();*/ } if (document.URL.match('screen=train') && document.URL.match('mode=mass')) { var records = getTable().rows; if (archers) { units = ['spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult']; unitsNL = ['Speervechter', 'Zwaardvechter', 'Bijlstrijder', 'Boogschutter', 'Verkenner', 'Lichte cavalerie', 'Bereden boogschutter', 'Zware cavalerie', 'Ram', 'Katapult']; costs = [ [50, 30, 10, 1], [30, 30, 70, 1], [60, 30, 40, 1], [100, 30, 60, 1], [50, 50, 20, 2], [125, 100, 250, 4], [250, 100, 150, 5], [200, 150, 600, 6], [300, 200, 200, 5], [320, 400, 100, 8] ]; } else { units = ['spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult']; unitsNL = ['Speervechter', 'Zwaardvechter', 'Bijlstrijder', 'Verkenner', 'Lichte cavalerie', 'Zware cavalerie', 'Ram', 'Katapult']; costs = [ [50, 30, 10, 1], [30, 30, 70, 1], [60, 30, 40, 1], [50, 50, 20, 2], [125, 100, 250, 4], [200, 150, 600, 6], [300, 200, 200, 5], [320, 400, 100, 8] ]; } for (r = 1; r < records.length; r++) { var subconf = []; var total_costs = [0, 0, 0, 0]; var i; var resources = getResources(records[r]); var queue = getQueue(records[r]); var produced = getProduced(records[r]); for (i = 0; i < units.length; i++) { subconf[i] = configuration[i] - (queue[i] + produced[i]); if (subconf[i] < 0) { subconf[i] = 0; } for (var j = 0; j < 4; j++) { total_costs[j] += costs[i][j] * subconf[i]; } } var factor = arrayMin(linearDivideArray(resources, total_costs)); if (factor > 1.0) { factor = 1.0; } for (i = 0; i < units.length; i++) { var number = subconf[i] * factor; if (number < 0) { number = 0; } if (records[r].cells[3 + i].childNodes[3]) { var ibox = records[r].cells[3 + i].childNodes[3]; try { ibox.defaultValue = parseInt(number, 10); } catch (e) { } } } } submitForm(); } else { alert('Ongeldige bewerking!\nDeze tool werkt enkel in het massarecruteren-scherm.'); }

Aantekeningsnaam:
Afbeelding-URL: {graphic}/unit/unit_catapult.png
Doel-URL:
Code:
javascript: var configuration = [0, 0, 5000,  50, 3000, 0, 300, 500]; var archers = false; var units; var unitsNL; var costs; function arrayMin(array) { var value = array[0]; for (var t = 1; t < array.length; t++) { if (array[t] < value) { value = array[t]; } } return value; } function linearDivideArray(array1, array2) { var value = []; if (array1.length == array2.length) { for (var t = 0; t < array1.length; t++) { if (array2[t] !== 0) { value[t] = array1[t] * 1.0 / array2[t]; } else { value[t] = 0; } } } return value; } function linearAddArray(array1, array2) { var value = []; if (array1.length == array2.length) { for (var t = 0; t < array1.length; t++) { value[t] = array1[t] + array2[t]; } } return value; } function getUnitId(unit) { for (var t = 0; t < units.length; t++) { if (unit == unitsNL[t]) { return t; } } return -1; } function getTagsSubset(tagname, classname) { var subset_t = document.getElementsByTagName(tagname); var subset_c = []; var u = 0; for (var t = 0; t < subset_t.length; t++) { if (subset_t[t].className == classname) { subset_c[u++] = subset_t[t]; } } return subset_c; } function getTable() { var candidates = getTagsSubset('table', 'vis'); var t; for (t = 0; t < candidates.length; t++) { try { if (candidates[t].rows[0].cells[0].innerHTML == 'Dorp') { break; } } catch (e) { } } return candidates[t]; } function getQueue(record) { var value = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var u = 3; u < record.cells.length; u++) { try { value[u - 3] = parseInt(record.cells[u].childNodes[1].childNodes[1].firstChild.title, 10); } catch (e) { } if (isNaN(value[u - 3])) { value[u - 3] = 0; } } return value; } function getResources(record) { var value = [0, 0, 0, 0]; var res = record.cells[1].textContent.split("\n"); var farm = record.cells[2].innerHTML.split('/'); value[0] = parseInt(res[1].replace(".", ""), 10); value[1] = parseInt(res[2].replace(".", ""), 10); value[2] = parseInt(res[3].replace(".", ""), 10); value[3] = farm[1] - farm[0]; return value; } function getProduced(record) { var value = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var u = 3; u < record.cells.length; u++) { try { value[u - 3] = parseInt(record.cells[u].childNodes[1].textContent.split("\n")[2], 10); } catch (e) { } if (isNaN(value[u - 3])) { value[u - 3] = 0; } } return value; } function submitForm() { var candidates = document.getElementsByTagName("input"); var t; for (t = 0; t < candidates.length; t++) { if (candidates[t].type == "submit") { break; } } /*candidates[t].click();*/ } if (document.URL.match('screen=train') && document.URL.match('mode=mass')) { var records = getTable().rows; if (archers) { units = ['spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult']; unitsNL = ['Speervechter', 'Zwaardvechter', 'Bijlstrijder', 'Boogschutter', 'Verkenner', 'Lichte cavalerie', 'Bereden boogschutter', 'Zware cavalerie', 'Ram', 'Katapult']; costs = [ [50, 30, 10, 1], [30, 30, 70, 1], [60, 30, 40, 1], [100, 30, 60, 1], [50, 50, 20, 2], [125, 100, 250, 4], [250, 100, 150, 5], [200, 150, 600, 6], [300, 200, 200, 5], [320, 400, 100, 8] ]; } else { units = ['spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult']; unitsNL = ['Speervechter', 'Zwaardvechter', 'Bijlstrijder', 'Verkenner', 'Lichte cavalerie', 'Zware cavalerie', 'Ram', 'Katapult']; costs = [ [50, 30, 10, 1], [30, 30, 70, 1], [60, 30, 40, 1], [50, 50, 20, 2], [125, 100, 250, 4], [200, 150, 600, 6], [300, 200, 200, 5], [320, 400, 100, 8] ]; } for (r = 1; r < records.length; r++) { var subconf = []; var total_costs = [0, 0, 0, 0]; var i; var resources = getResources(records[r]); var queue = getQueue(records[r]); var produced = getProduced(records[r]); for (i = 0; i < units.length; i++) { subconf[i] = configuration[i] - (queue[i] + produced[i]); if (subconf[i] < 0) { subconf[i] = 0; } for (var j = 0; j < 4; j++) { total_costs[j] += costs[i][j] * subconf[i]; } } var factor = arrayMin(linearDivideArray(resources, total_costs)); if (factor > 1.0) { factor = 1.0; } for (i = 0; i < units.length; i++) { var number = subconf[i] * factor; if (number < 0) { number = 0; } if (records[r].cells[3 + i].childNodes[3]) { var ibox = records[r].cells[3 + i].childNodes[3]; try { ibox.defaultValue = parseInt(number, 10); } catch (e) { } } } } submitForm(); } else { alert('Ongeldige bewerking!\nDeze tool werkt enkel in het massarecruteren-scherm.'); }
 
Laatst bewerkt:
Reactiescore
35
Aantekeningsnaam:
Afbeelding-URL: {graphic}/unit/unit_ram.png
Doel-URL:
Code:
javascript: var configuration = [0, 0, 12000,  50, 0, 0, 1100, 0]; var archers = false; var units; var unitsNL; var costs; function arrayMin(array) { var value = array[0]; for (var t = 1; t < array.length; t++) { if (array[t] < value) { value = array[t]; } } return value; } function linearDivideArray(array1, array2) { var value = []; if (array1.length == array2.length) { for (var t = 0; t < array1.length; t++) { if (array2[t] !== 0) { value[t] = array1[t] * 1.0 / array2[t]; } else { value[t] = 0; } } } return value; } function linearAddArray(array1, array2) { var value = []; if (array1.length == array2.length) { for (var t = 0; t < array1.length; t++) { value[t] = array1[t] + array2[t]; } } return value; } function getUnitId(unit) { for (var t = 0; t < units.length; t++) { if (unit == unitsNL[t]) { return t; } } return -1; } function getTagsSubset(tagname, classname) { var subset_t = document.getElementsByTagName(tagname); var subset_c = []; var u = 0; for (var t = 0; t < subset_t.length; t++) { if (subset_t[t].className == classname) { subset_c[u++] = subset_t[t]; } } return subset_c; } function getTable() { var candidates = getTagsSubset('table', 'vis'); var t; for (t = 0; t < candidates.length; t++) { try { if (candidates[t].rows[0].cells[0].innerHTML == 'Dorp') { break; } } catch (e) { } } return candidates[t]; } function getQueue(record) { var value = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var u = 3; u < record.cells.length; u++) { try { value[u - 3] = parseInt(record.cells[u].childNodes[1].childNodes[1].firstChild.title, 10); } catch (e) { } if (isNaN(value[u - 3])) { value[u - 3] = 0; } } return value; } function getResources(record) { var value = [0, 0, 0, 0]; var res = record.cells[1].textContent.split("\n"); var farm = record.cells[2].innerHTML.split('/'); value[0] = parseInt(res[1].replace(".", ""), 10); value[1] = parseInt(res[2].replace(".", ""), 10); value[2] = parseInt(res[3].replace(".", ""), 10); value[3] = farm[1] - farm[0]; return value; } function getProduced(record) { var value = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var u = 3; u < record.cells.length; u++) { try { value[u - 3] = parseInt(record.cells[u].childNodes[1].textContent.split("\n")[2], 10); } catch (e) { } if (isNaN(value[u - 3])) { value[u - 3] = 0; } } return value; } function submitForm() { var candidates = document.getElementsByTagName("input"); var t; for (t = 0; t < candidates.length; t++) { if (candidates[t].type == "submit") { break; } } /*candidates[t].click();*/ } if (document.URL.match('screen=train') && document.URL.match('mode=mass')) { var records = getTable().rows; if (archers) { units = ['spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult']; unitsNL = ['Speervechter', 'Zwaardvechter', 'Bijlstrijder', 'Boogschutter', 'Verkenner', 'Lichte cavalerie', 'Bereden boogschutter', 'Zware cavalerie', 'Ram', 'Katapult']; costs = [ [50, 30, 10, 1], [30, 30, 70, 1], [60, 30, 40, 1], [100, 30, 60, 1], [50, 50, 20, 2], [125, 100, 250, 4], [250, 100, 150, 5], [200, 150, 600, 6], [300, 200, 200, 5], [320, 400, 100, 8] ]; } else { units = ['spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult']; unitsNL = ['Speervechter', 'Zwaardvechter', 'Bijlstrijder', 'Verkenner', 'Lichte cavalerie', 'Zware cavalerie', 'Ram', 'Katapult']; costs = [ [50, 30, 10, 1], [30, 30, 70, 1], [60, 30, 40, 1], [50, 50, 20, 2], [125, 100, 250, 4], [200, 150, 600, 6], [300, 200, 200, 5], [320, 400, 100, 8] ]; } for (r = 1; r < records.length; r++) { var subconf = []; var total_costs = [0, 0, 0, 0]; var i; var resources = getResources(records[r]); var queue = getQueue(records[r]); var produced = getProduced(records[r]); for (i = 0; i < units.length; i++) { subconf[i] = configuration[i] - (queue[i] + produced[i]); if (subconf[i] < 0) { subconf[i] = 0; } for (var j = 0; j < 4; j++) { total_costs[j] += costs[i][j] * subconf[i]; } } var factor = arrayMin(linearDivideArray(resources, total_costs)); if (factor > 1.0) { factor = 1.0; } for (i = 0; i < units.length; i++) { var number = subconf[i] * factor; if (number < 0) { number = 0; } if (records[r].cells[3 + i].childNodes[3]) { var ibox = records[r].cells[3 + i].childNodes[3]; try { ibox.defaultValue = parseInt(number, 10); } catch (e) { } } } } submitForm(); } else { alert('Ongeldige bewerking!\nDeze tool werkt enkel in het massarecruteren-scherm.'); }

Als je manueel een training script wil opzetten (omdat je een andere configuratie gebruikt voor een bepaald type) kun je dat op volgende manier doen.
Gebruik niet de exacte configuratie maar zet er wat meer troepen in, zo ben je zeker dat je altijd je dorp vol zal trainen.

Alle scripts beginnen met het volgende:
javascript: var configuration = [0, 0, 12000, 50, 0, 0, 1100, 0];
Het vette is de configuratie van je dorp:
javascript: var configuration = [Speer, Zwaard, Bijl, Scout, LC, ZC, Ram, Katapult];
Het voorbeeld is dus de configuratie van de bunker buster groep.
 
Laatst bewerkt:
Reactiescore
35
Scripts
Scripts kun je toevoegen aan je snellijst en op een bepaalde pagina uitvoeren door erop te klikken.

Dorpsnamen wijzigen
Volgend script past de namen van al je dorpen aan. Te gebruiken in een overzichtpagina.
http://www.tribetool.nl/snellijst.php?id=19

Taggen
Dit script tagt aanvallen op zowel de binnenkomende aanvallen als aanvals-detail pagina:
http://www.tribetool.nl/snellijst.php?id=33

Greasemonkey
Een aantal monkey scripts zijn toegelaten op deze server. Er zijn scripts voor ondermeer:
- Het verbeteren van de simulator en pakketjes opslaan pagina's
- Dorpen met een icoontje op de kaart markeren per groep
- Filteren van berichten
- Icoontjes naast dorpen met directe link naar dorpoverzicht, verzamelplaats, ...
- Aanvallen groeperen per dorp (Zeer handig:)
- Meer informatie in berichten (OD, overlevende troepen ...)
- en nog veel meer...
Alle uitleg op het AF (installatie, browsers die greasemonkey ondersteunen etc ...):
http://forum.tribalwars.nl/showthread.php?t=33076

Nog een speciale vermelding voor TBR map:
Met dit script kan je aanvalsberichten delen met je stamgenoten en de status van vijandige dorpen visualiseren op de kaart:
http://forum.tribalwars.nl/showthread.php?t=89433
 
Laatst bewerkt:
Reactiescore
35
Timing Tutorial
Iedereen weet dat het met Opera is en enter+2+... In de link hieronder wordt het allemaal nog eens netjes met screenshots uitgelegd.
http://forum.tribalwars.nl/showthread.php?t=21190

Timen met Firefox:
http://forum.tribalwars.nl/showthread.php?t=82621

T-Timen of T-Train, nu officieel goedgekeurd op de nl server is de makkelijkste manier om op een snelle manier een edeltrein te versturen:
http://forum.tribalwars.nl/showthread.php?t=94227

Plannen
De clears moeten er natuurlijk voor getimed worden. Je kan dit laten uitrekenen door TWStats:
http://nl.twstats.com/nl10/index.php?page=attack_planner

Andere planner, niks fancy, redelijk rechtoe rechtaan:
http://vmser.codingo.org/Tribalwars/Looptijden/Planner2/

Een massa aanvalsplanner in Excel die populair lijkt in TW-land:
http://forum.tribalwars.nl/showthread.php?t=65057
 
Laatst bewerkt:
Reactiescore
35
Verdedigen
Voordat de aanvallen binnenkomen
Controleren van:
- De muren.
- De smederij levels. Plus eventueel het (tijdelijk) afbreken van de ram levels om ze te vervangen door de ontbrekende zwaard/zware cavalrie levels.
- Eigen ondersteuning: Ben je dorpen aan het ondersteunen die niet meer onder aanval zijn?
- Schuilplaats: Als je schuilplaats uitbouwt kun je na de aanvallen direct weer aan de muur beginnen.

Eventueel al je dorpen hernoemen naar een zelfde naam zodat het voor de aanvaller(s) iets moeilijker wordt het overzicht te bewaren. Voor alle dorpen met 1 klik te hernoemen is er ook een script hier op het forum.

Taggen
Het belangrijkste bij de verdediging is het "taggen" van de binnenkomende aanvallen. Er is op dit forum een tag-script voorhanden dat hiervoor kan gebruikt worden of je kan het tag script dat Tribal Wars zelf aanbiedt in het spel gebruiken.

Taggen is feitelijk niets meer dan het aanduiden van de snelheid waarbij de aanval binnenkomt door de aanval te hernoemen (enkel Premium Account). Het is dus redelijk belangrijk dat er steevast iemand online is wanneer je serieus onder aanval bent zodat vooral de rams en edels kunnen onderscheiden worden.
Ook al is het niet meer dan het hernoemen van de aanvallen, toch is het uitermate belangrijk. Als iemand anders op de vv krijgt zonder dat er een aanval getagd is, wordt het voor hem/haar direct een stuk moeilijker om dat tot een goed einde te brengen.

In het "Aankomend" scherm kun je nieuwe aanvallen ook makkelijk herkennen en taggen doordat zij de enige zijn die nog "Aanval" noemen. Op het forum staat een snellijst toevoeging om met 1 klik naar het aankomen scherm te gaan met de juiste parameters.

Naast de snelheid kan voor getimde aanvallen bijvoorbeeld ook de seconden in de naam komen te staan zodat je niet steeds op de aanval moet klikken om te weten te komen op welke seconde ze nu precies toekomen, wat dan weer handig is voor een aantal van de technieken die hieronder uitgelegd worden.

Als er een tijdje niemand online kan zijn is het altijd een goed idee het tijdstip dat je de laatste keer controleerde op aanvallen neerzet in de notities. Daardoor kan je bij het opnieuw inloggen sommige aanvallen misschien toch nog met zekerheid op ramsnelheid taggen.

Update:
- Op de nl server heeft elke edel een maximum aantal uur dat hij kan lopen. Als er dus een aanval nog langer onderweg is dan dit aantal uren (24u30 op nl 10) dan moet je deze in feite niet gaan expliciet taggen en kan je hem gewoon hernoemen naar RAM of iets dergelijks.
- Als je vijand(en) je van je stuk willen brengen door zoveel mogelijk aanvallen te versturen en je merkt dat er veel spelers aanvallen versturen op verkenner-snelheid kan je er snel komaf met maken door al deze aanvallen gewoon te negeren. Aanvallen negeren op RAM snelheid zou ik bijna nooit doen daar dit toch wel een risico inhoudt.

Stack or Dodge
Dit is het hele principe: Als er minder dan +/- 2 volledige def dorpen in een dorp onder aanval staat kan je beter dodgen (=zorgen dat de aanval toekomt op een leeg dorp) ipv de aanval te proberen stoppen omdat je dan teveel def troepen verliest.
Vanaf 2-3 def dorpen kan je spreken van een stack en is het voordeliger om de aanval te stoppen dan te dodgen. De aanvaller verliest een volledig off dorp, jij verliest minimale troepen en in het beste geval kwamen de def troepen van veel verschillende dorpen zodat jij ze snel kan hertrainen.
Hierbij moet je natuurlijk ook altijd de level van de muur in de gaten houden. Als er geen muur meer is moeten er natuurlijk veel meer troepen in staan.

Stack
Natuurlijk altijd nog dodgen met offensieve troepen, scouts en edels (!). De verdedigingswaarde van deze troepen is te verwaarlozen.
Controleren dat je niet (te veel) boven de boerderij limiet zit.

Dodge
Voor afgelegen en offensieve dorpen is dit redelijk simpel: Als de laatste aanval op het dorp binnen 10u aankomt kan je nu al dodgen door met alle troepen een (klein) barbaar dorp aan te vallen dat 5+ uur weg ligt. Op die manier zijn je troepen kort na de laatste aanval weer ter beschikking.
Ondersteunen is ook een optie maar er zijn een paar nadelen:
- Als je een barbarendorp ondersteunt kan dit aangevallen/gefarmed worden terwijl ze daar staan.
- Als je je eigen ondersteunt wordt het moeilijk het overzicht te houden: welke ondersteuning mag ik wanneer terugtrekken?
De beste optie is meestal om een stamgenoot (die niet aangevallen wordt) te ondersteunen zodat je makkelijk kan herkennen welke troepen terug te trekken na de aanvallen.

Voor grensdorpen ligt het iets moeilijker: daar kan er best in de laatste 20 minuten gedodged worden zodat je de troepen zo lang mogelijk ter beschikking hebt (om een van de technieken hieronder toe te passen) en dit door een willekeurig dorp aan te vallen en de aanval te annuleren zodat ze na de aanval terug zijn.

Als het niet veel aanvallen zijn kan je ook dodgen met de grondstoffen. Je kan dit niet doen door offers op de markt aan te bieden, wel door grondstoffen weg te sturen en te annuleren nadat de aanval is binnengekomen. Hou er wel rekening mee dat grondstoffen transporten maar een beperkt aantal minuten kunnen geannuleerd worden.

Spaar eigen troepen
Eigen troepen kunnen best zoveel mogelijk gespaard worden. Laat zoveel mogelijk ondersteuning sterven en dodge met je eigen troepen of gebruik je eigen troepen om de dorpen na een aanval weer aan te vullen tot aan de boederij limiet.
Als de aanvallen blijven voortduren kan je ook beter overschakelen op speer/zware cavalrie omdat dit sneller traint. Katapulten zijn dan weer niet echt de moeite als verdediging.

Een uitzondering op deze regel is het uitschakelen van dichtbije vegen. Van hoe verder de vegen moeten komen, hoe meer tijd je hebt om te reageren. Een andere uitzondering zijn natuurlijk edels... Daar kun je best je eigen def tussen gooien :)

Retaggen
Naast de snelheid van de aanval (ram, edel, zwaard, ...) en mogelijk de seconden kan je de aanval nog eens hernoemen naar de uit te voeren actie of de reeds uitgevoerde actie zodat je op het aankomend aanvallen scherm makkelijk kan zien welke aanvallen reeds gedodged/gestacked zijn en met welke dorpen je nog moet dodgen.

Update: Wat ik doe is eerst de aanvallen hernoemen naar "RAM". Dan als ik een actie ondernomen heb hernoem ik de aanval naar DODGED of BLOCKED. Als ik op een bepaald moment nog een actie moet ondernemen ga ik deze aanval hernoemen naar "------------------------------------ DODGE TROOPS" of "------------------------------- CHECK STACK". Door de vele "-" valt het enorm op dat er nog iets moet gebeuren.

Onder aanval groep
Als er een paar dorpen zijn waarop er serieus getimed wordt, kun je deze eventueel in een speciale groep stoppen zodat je die dorpen ten alle tijde makkelijk kan terugvinden.

Speciale Technieken
Backtimen
Bij de aankomsttijd van bijvoorbeeld een edeltrein op jouw dorp de looptijd bijtellen en op dat tijdstip of een seconde later zelf aanvallen laten toekomen op het dorp vanwaar de edels komen. Jij verliest misschien wel het dorp maar hij verliest dan wel de rest van zijn edeltrein. Je kan hetzelfde doen met een gewone aanval, maar dit is natuurlijk minder lucratief.

Tip Aanvaller: Om dit tegen te gaan is het natuurlijk een goed idee om je edels te laten terugkeren in de nachtbonus.

Snipen
Als de 4 edeltrein aanvallen niet in dezelfde seconde zitten, kun je de edeltrein snipen ofte al de edels die op de volgende seconde zitten (en meestal maar weinig troepen met zich meehebben) doden door op de seconde eerder ondersteuning te timen. Dit is veruit de meest effectieve manier van verdedigen. Je doet je tegenstander pijn en je verliest zelf weinig. Update: op de meeste werelden doe je de tegenstander in feite geen pijn want edelmannen die tijdens een aanval doodgaan kunnen op de meeste werelden goedkoop opnieuw aangemaakt worden.

Tip Verdediger: Als je weet van welk dorp de edels gaan komen kun jij een dorp zoeken dat op *exact* dezelfde wandelafstand ligt op speer/zwaard/ram of zc snelheid.
De edels en jouw ondersteuning moeten dan op dezelfde moment gestuurd worden. De kans dat jouw ondersteuning ergens in het midden van de edeltrein zit is dan ook erg groot.

Tip Aanvaller: Zorg ervoor dat je laatste veeg en je edels op een zo kort mogelijke tijdspanne moeten verstuurd worden zodat de verdediger weinig tijd heeft om ondersteuning te sturen tussen de laatste veeg en de edels. Update: Dit is natuurlijk ook alleen van toepassing op een volledige seconden wereld: Op een milliseconden wereld kan je er eender wanneer gaan tussensturen.
 
Laatst bewerkt:
Reactiescore
35
Snipen met dorp onder aanval
Je kan ook edels snipen met het dorp dat aangevallen wordt. De makkelijkste manier is om de troepen naar een willekeurige locatie te sturen op exact 10 minuten van de aankomsttijd en die aanval te annuleren op exact 5 minuten van de aankomsttijd.
Aangezien er bij de 2, 3 en 4de edel meestal weinig troepen zitten kun je dit ook meerdere keren doen: Je stuurt de helft van je troepen op 10 minuten om op 5 minuten te annuleren en je doet nog eens hetzelfde met de rest van de troepen op 8 en 4 minuten.

Tip Verdediger: Vernieuw/Refresh het verzamelpunt scherm dikwijls want de aftelling van de binnenkomde aanvallen op het verzamelpunt scherm begint na een tijdje verkeerd te lopen.

Afbreken
Als je 100% zeker bent dat je het dorp verliest dan kun je beter zo vroeg mogelijk met de afbraak beginnen. Smederij levels worden misschien niet gecontroleerd na de overname. Je kan je eigen dorp aanvallen met katapulten om de boerderij af te breken zodat je zijn os daarna makkelijk kan doden - op werelden met boederij limiet.

Vooredelen & opnieuw overnemen (counteren)
Opnieuw als je zeker bent dat je een dorp gaat verliezen:
Het vooredelen is redelijk logisch: Je zorgt ervoor dat de toestemming zo laag mogelijk staat op het moment dat het dorp overgenomen wordt zodat de aanvaller het dorp of meerdere keren overneemt of de volgende edels doodloopt op de troepen die bij de eerste edel zaten.

En na het verlies van het dorp een veeg en edel timen om opnieuw over te nemen. Dit is wel een beetje een problematisch geval. Na de overname komt de toestemming immers op 25 te staan. Dus moet je 1 of 2 edels sturen... Ikzelf gok hier altijd op 1 edel. Op werelden waar edels goedkoop opnieuw te bouwen zijn stuur ik er natuurlijk wel 2.







Ditjes en Datjes
Dit zijn vooral weetjes (vooral van het premium account).

Instellingen:
Bekijk de instellingen :)
Bij elke nieuwe versie komt er wel iets nieuws bij. Sinds de laatste update ga je bijvoorbeeld automatisch van het laatste dorp opnieuw naar het eerste dorp. Op de instellingen pagina kun je dit uitschakelen.

Andere praktische dingen:
- Geen confirmatie vragen bij het toevoegen van 4de+ gebouwen
- Uitschakelen van aanvallen (die worden "onzichtbaar") bijvoorbeeld voor het uitschakelen van je eigen aanvallen op je dorpen.
- Kaartgrootte kan sinds een tijdje op 15x15 gezet worden.

Mededelingen
Mededelingen van iemand waarmee je niet direct op goede voet leeft lezen en erop antwoorden is gevaarlijk :)
Als hij berichten stuurt om 1u en jij antwoord steevast om 9u dan weet hij exact wanneer aanvallen te versturen.

Berichten
Kunnen gefiltered worden. Sommige dingen wil je niet zien (tenzij je misschien een co hebt) zoals 'Terugtrekken van eigen ondersteuning uit eigen dorpen'.
Dit kan gedaan worden bij Berichten > Filter.
Je kan zelf ook berichten op tekst filteren via volgend greasemonkey script: http://www.tribetool.nl/greasemonkey.php?id=5

Kaart
- Via "» Popup-mogelijkheden" kan je bepaalde dingen van een dorp op de kaart laten zien. Bijvoorbeeld de looptijd, troepen aanwezig in het dorp etc.
- En je kan spelers in een speciaal kleurke markeren he :)
- Je kan nu ook je eigen groepen op de kaart markeren.

Smederij
- Level 0 = Level 1. Dus als je level 1 van iets hebt kun je dat beter wegdoen en een hogere level van iets anders nemen.
- Het is belangrijk dat je in je offensieve dorpen ook smederij levels hebt voor speer/zwaard/zware cavalrie omdat de level van het dorp waar de troepen instaan geldt en niet van het dorp van waar ze oorspronkelijk komen. Daarmee is het wel problematisch aangezien je reeds level 3 bijl, lichte cav en speer moet hebben. Dan nog level 1-3 rams en je hebt maar 3-5 levels meer over om te verdelen tussen zwaard en zware cavalrie. Hier moet dus een keuze gemaakt worden :)

Gebouwen
Het heeft meestal weinig zin om een dorp uit te bouwen verder dan: Level 20 hoofdgebouw, level 5 werkplaats of level 2 adelshoeve. Meestal is het een slechte indicatie als je een dorp hebt dat meer dan 10.000 punten heeft.


Voila dat is het... Hopelijk heb je er iets aan gehad :D
 
Laatst bewerkt:

DeletedUser

Guest
;) Wel leuk dat iemand zoiets maakt. Nu hebben we niet altijd die aanvragen van : " wat is dodgen ? " :eek:
 

DeletedUser

Guest
Ik ben het met de persoon boven me met de leuke avatar eens :),
alleen is dit eerder een guide.
Daar zou toch eigenlijk een ander forum voor moeten zijn?
In ieder geval, het past niet in het forum "Discussie"...
 

DeletedUser

Guest
ik vind het goed dat hij het heeft gedaan.


voor de beginners is dit heel erg handig.
 
Reactiescore
35
Zal wel gekopieerd zijn. Kijk eens naar de tijden.

Ja, toch wel zelf geschreven :D

Er is een Tool-forum, dit is dus overbodig.

Idd... Ik heb gezocht naar een forum om het te plaatsen maar vond niet echt een goede plaats.

Omdat de timing tutorial ook in dit forum stond heb ik het ook maar hier geplaatst.
 

DeletedUser15110

Guest
Mooi zo goede fee, je hebt een doordachte tactiek en uitbouw.
 
Bovenaan