Scriptregels: Impact analyse en wijzigingen

Deleted User - 24028

Guest
Beste spelers,

De nieuwe scriptregels zijn ondertussen een kleine maand van kracht, op basis van community feedback hebben we een impact analyse gemaakt en enkele wijzigingen aan de scriptregels doorgevoerd.

Impact Analyse

Farm scripts
Voor farm scripts houden we de uitzonderingen zoals eerder voorop gesteld maar we voegen hier aan toe dat farms enkel uit het huidige dorp verstuurd mogen worden en niet van uit andere dorpen om het omzeilen van het handmatig wisselen van dorp tegen te gaan.

Deze regel werd reeds gehanteerd maar was niet duidelijk opgenomen in de scriptregels, alle huidig goedgekeurde farm scripts zullen dan ook toegestaan blijven.

Grondstof verstuur scripts
Grondstof verstuur scripts splitsen we op in 2 grote groepen:
  • Grondstoffen versturen naar 3den
    Scripts voor het versturen van grondstoffen naar andere accounts zijn toegestaan, maar dienen wel te voldoen aan alle regels (geen uitzonderingen). Voor de duidelijkheid zijn deze regels gelijkgeschakeld met de regels voor farm scripts wat wilt zeggen dat er enkel GS verstuurd mag worden van uit het huidige dorp en er tussen verschillende dorpen handmatig gewisseld moet worden.
  • Grondstoffen balanceren
    Voor scripts die enkel grondstoffen verzenden binnen het eigen account blijven de uitzonderingen van kracht. Deze scripts mogen dus GS versturen met 1 klik (uitzondering op regel 1), herhaaldelijk GS sturen door het inhouden van een toets (uitzondering op regel 2) en GS versturen uit andere dorpen (uitzondering op regel 6).
Ook deze aanpassingen hebben geen impact op reeds goedgekeurde scripts.

Time scripts
Het laatste, maar ook meest omstreden, puntje binnen de impact analyse zijn de scripts die helpen bij het timen van bevelen. Binnen de denktank was er beslist om zulke scripts niet meer toe te staan door scripts te verbieden om code uit te voeren op een later tijdstip dan dat de opdracht gegeven was.

Het TW.nl team staat nog steeds achter de beslissing van de denktank en dus de mening dat zulke scripts eigenlijk niet thuis horen op TW. Maar we kunnen ook niet naast het feit dat zulke scripts volledig extern (en dus buiten het spel / regels om) kunnen getrokken worden. Na lang overleg hebben we daarom besloten om dit soort scripts toch ingame toe te staan zodat iedereen er op een eenvoudige en veilige manier toegang tot heeft.

Concreet wilt dit zeggen dat dit soort scripts terug ingezonden kunnen worden ter goedkeuring (laat dit in eerste instantie aan de scripter zelf over).

Voor de scripters: dit betekend niet dat timeouts, intervals, etc vanaf nu altijd toegestaan zullen worden. Het blijft de bedoeling deze zo veel als mogelijk te vermijden.

Overzicht Scriptregels

Een compleet overzicht van de scriptregels na de wijzigingen uit bovenstaande impact analyse:
  1. Het uitgangspunt in onze scriptregels is dat elke menselijke actie (klik, sneltoets, touchscreen) overeen komt met één spel gerelateerde actie en er geen spel gerelateerde acties mogen worden overgeslagen.
    • Hierop zijn op dit moment 3 uitzonderingen:
      • Het hernoemen van meerdere dorpsnamen, bevelen of berichten is toegestaan.
      • Het invullen van meerdere input velden is toegestaan.
      • Grondstof balanceer scripts die enkel binnen het eigen account gs rond sturen worden toegestaan.
  2. Elk script, deel van een script of spelgerelateerde actie mag niet automatisch herhaaldelijk uitgevoerd worden zonder tussenkomst van een menselijke actie (klik, sneltoets, touchscreen).
    • Hierop zijn op dit moment 2 uitzonderingen:
      • Grondstof balanceer scripts die enkel binnen het eigen account gs rond sturen worden toegestaan.
      • Farm Assistent scripts worden toegestaan indien ze voldoen aan de regels onder puntje 5.
  3. Alle scripts dienen toegevoegd en uitgevoerd te worden vanuit de snellijst. Scripts uitvoeren door middel van browser extensies (add-ons), userscripts (greasemonkey/tampermonkey), bladwijzers (bookmarks), browser console of andere tools met gelijkaardige functionaliteiten is niet toegestaan.
    • De enige uitzondering hierop is de "TW.NL Officiele Extensie" met op dit moment volgende functionaliteiten:
      • Het automatisch uitvoeren van snellijstscripts na het laden van een pagina indien gewenst.
      • Het in één keer versturen van maximaal 5 bevelen vanuit meerdere tabbladen.
  4. Voor scripts die te maken hebben met het versturen van bevelen gelden de volgende regels:
    • Een dergelijk script mag niet focussen of klikken op de "Aanvallen" of "Ondersteunen" knop op de verzamelplaats, bevestigingspagina of kaart pop-up.
    • Een script mag gebruikt worden om (meerdere) tabbladen te openen maar mag niet gebruikt worden om tabbladen te sluiten.
  5. Voor scripts die inwerken op de Farm Assistent gelden de volgende regels:
    • Een dergelijk script mag enkel farms versturen van uit het huidige dorp, farms sturen van uit een ander dorp is niet toegestaan.
    • Een dergelijk script mag herhaaldelijk farms uit één dorp wegsturen (uitzondering op regel 2).
    • Het wisselen tussen dorpen moet altijd manueel gebeuren.
  6. Voor scripts die grondstoffen versturen gelden de volgende regels:
    • Een dergelijk script mag enkel gs versturen van uit het huidige dorp, gs sturen van uit een ander dorp is niet toegestaan.
    • Het wisselen tussen dorpen moet altijd manueel gebeuren.
    • Grondstof balanceer scripts die enkel binnen het eigen account gs rond sturen worden wel toegestaan (uitzondering op regel 1, 2 en 6).
  7. Bij het inzenden van een script ter goedkeuring zal de inzender kunnen kiezen tussen volgende opties:
    • Publiek script: het script zal onmiddellijk op het algemene forum gepubliceerd worden
    • Privé script: het script zal voor 6 maand privé gebruikt kunnen worden en daarna automatisch gepubliceerd worden op het algemene forum, volgende voorwaarden zijn hier van toepassing:
      • De exclusiviteitsperiode geldt vanaf het moment van de eerste goedkeuring van het script.
      • Scripts die privé gehouden worden moeten eveneens aan alle scriptregels voldoen.
      • Elke functionaliteit in een script dat het gebruik ervan beperkt tot een specifiek aantal spelers (door de scripter gekozen/beheerd) is niet toegestaan.
      • Andere spelers die het script in handen krijgen kunnen dit script zelf indienen waardoor het mogelijk vroegtijdig op het algemene forum verschijnt.
      • In het geval van scripts die een backend (server) nodig hebben om te functioneren dient het script bij publicatie te werken voor iedereen, indien de scripter de middelen hier voor niet kan of wilt voorzien wordt het script afgekeurd en de front-end (javascript) gepost in de ontwikkelaars sectie op het AF zodat andere scripters er mee aan de slag kunnen.
    • Alle scripts zullen na keuring gehost worden door het team om legaliteit te garanderen en misbruik tegen te gaan, het is niet toegestaan om scripts te gebruiken die op een andere locatie gehost worden met uitzondering van scripters die hun script testen (meer richtlijnen hier over on de ontwikkelaars sectie op het AF)
  8. Scripts mogen nooit in interactie gaan met de premium beurs.
  9. Het aanpassen of tegenwerken van door InnoGames ingebouwde functionaliteiten is niet toegestaan zonder voorafgaande goedkeuring van het team.
  10. Een script mag niet automatisch informatie versturen of reageren op een event op je account.
  11. Het is niet toegestaan om een actie uit te voeren op een later tijdstip dan dat de opdracht gegeven is (timeouts, intervals, ...) zonder voorafgaande goedkeuring van het team.
  12. Het team zal regelmatige impact-analyses maken van script op het spel en de community. Op basis hiervan kunnen we scripts alsnog afkeuren ook al voldoen ze aan alle richtlijnen die hierboven gesteld zijn.

Met vriendelijke groeten,
Jullie Tribal Wars.nl team
 
Laatst bewerkt door een moderator:
Reactiescore
2.444
Mooi dat de fout is ingezien en herstelt is, dat is altijd knap. Maar toch ontzettend jammer dat de community in eerste instantie niet geloofd werd. Het extern trekken van het script werd namelijk direct als feedback gegeven om het niet te verbieden. Het toch verbieden tegen de wil van de community in zal ongetwijfeld geleid hebben tot het stoppen van een flinke portie spelers. Hopelijk (of niet, afhankelijk van hoe je tegen tw aankijkt) zal het rechttrekken van deze fout een klein deel van die groep terug laten keren.
 
Reactiescore
48
Ik ben een tijdje niet met het spel betrokken geweest, en bij mijn terugkeer zag ik dat de regels rondom scripts nogal waren veranderd. Ik heb een aantal vragen, ik hoop dat dit de juiste plek is om ze te stellen.

- Zijn de regels die hier staan de meest up-to-date versie van de regels?

- Ik lees bij 7. "Bij het inzenden van een script ter goedkeuring..." dat scripts ingezonden kunnen/moeten worden, wat is hier precies de regelgeving voor?

- Moet elk script altijd gekeurd worden, ook bij het uitvoeren van een kleine verandering?
- Zijn de scripts die opgeslagen staan in de snelschakellijst uit te lezen door mensen met toegang tot whatever database die data naar gepersist wordt? Met andere woorden, moet ik een license block gaan toevoegen? :p

- Ben ik in overtreding als ik me verveel en een beetje javascript zit te typen in mijn snelschakellijst?
Had bijvoorbeeld zoiet getypt om een beetje een idee te krijgen wat er bijvoorbeeld mogelijk zou zijn:
JavaScript:
javascript: const query = Object.fromEntries(location.search.replace('?', '').split('&').map(q => q.split('=')));

const doSomething = () => console.log('hello, world');
const doSomethingElse = () => alert('Hello, world!');

const actionMap = {
  train: doSomething,
  settings: doSomethingElse, 
};

const action = actionMap[query?.screen] ?? null;
if (action) action();

- Het inladen van andere scripts moest eerst gekeurd worden, maar hoe zit het met bijvoorbeeld de native `fetch` gebruiken om api calls te maken naar whatever server ik op mijn laptop heb draaien, is zoiets toegestaan?

- Het gebruik van XmlHttpRequest naar een endpoint waarvan je weet dat je een timeout krijgt wordt denk ik ook gezien als niet toegestaan via regel: 11, right?

En als laatste, misschien een wat meer technische aard (en vergeef me als de vragen niet heel intelligent zijn, ik ben meer thuis in de devops / backend, ik bijna alles wat ik doe met javascript is server-side)
- Hoe zit het met regelgeving rondom bijvoorbeeld het openen van een websocket? (Iets als `const ws = new WebSocket('wss:///run/tw.sock')` oid?) Hoe zit het met scripts die interactie hebben met mijn lokale filesystem? Is interactie met webworkers toegestaan/mogelijk?
 

Deleted User - 24028

Guest
Ik ben een tijdje niet met het spel betrokken geweest, en bij mijn terugkeer zag ik dat de regels rondom scripts nogal waren veranderd. Ik heb een aantal vragen, ik hoop dat dit de juiste plek is om ze te stellen.
Fijn om er op TW.nl (terug) een scripter bij te hebben :)

- Zijn de regels die hier staan de meest up-to-date versie van de regels?
De huidige regels zijn te vinden tussen de officiele regels van het spel: https://www.tribalwars.nl/page/rules (onderaan $7)

- Ik lees bij 7. "Bij het inzenden van een script ter goedkeuring..." dat scripts ingezonden kunnen/moeten worden, wat is hier precies de regelgeving voor?

- Moet elk script altijd gekeurd worden, ook bij het uitvoeren van een kleine verandering?
Alle scripts moeten verplicht ingezonden worden voor goedkeuring voor ze gebruikt worden. Meer informatie over hoe dat inzenden werkt kan je hier vinden: https://forum.tribalwars.nl/index.php?threads/een-script-laten-keuren-hoe-doe-ik-dat.205533/

Ook aanpassingen dienen allemaal ingezonden te worden, dit is sowieso nodig aangezien de officiele scripts door ons (= TW team) gehost worden (zie regel #3).

- Zijn de scripts die opgeslagen staan in de snelschakellijst uit te lezen door mensen met toegang tot whatever database die data naar gepersist wordt? Met andere woorden, moet ik een license block gaan toevoegen? :p
Een script is uit te lezen (= te bekijken) door iedereen die de URL heeft, die URL bevind zich dan weer in de snellijst die uit te lezen is door iedereen die daar toegang tot heeft. Of je een license block wilt toevoegen of niet is je eigen keuze.

- Ben ik in overtreding als ik me verveel en een beetje javascript zit te typen in mijn snelschakellijst?
Had bijvoorbeeld zoiet getypt om een beetje een idee te krijgen wat er bijvoorbeeld mogelijk zou zijn:
JavaScript:
javascript: const query = Object.fromEntries(location.search.replace('?', '').split('&').map(q => q.split('=')));

const doSomething = () => console.log('hello, world');
const doSomethingElse = () => alert('Hello, world!');

const actionMap = {
  train: doSomething,
  settings: doSomethingElse,
};

const action = actionMap[query?.screen] ?? null;
if (action) action();
Strikt genomen ben je dan in overtreding ja, je gebruikt namelijk ongekeurde code. Het is echter geen ramp om zo een stuk onschuldige code eens te testen, maar je doet er goed aan om dat via de console te doen.

Voor het testen van scripts kan je volgende richtlijnen volgen: https://forum.tribalwars.nl/index.php?threads/een-script-testen-wat-mag-en-wat-mag-niet.205765/

- Het inladen van andere scripts moest eerst gekeurd worden, maar hoe zit het met bijvoorbeeld de native `fetch` gebruiken om api calls te maken naar whatever server ik op mijn laptop heb draaien, is zoiets toegestaan?
Zelf heb ik geen ervaring met fetch, maar volgens mij dien je geen extra package oid toe te voegen om dit te gebruiken? Ook jQuery is bv standaard al inbegrepen in TW en dus te gebruiken. Wanneer je extra javascript resources van een externe server wilt laden dient ook die code gekeurd en gehost te worden door ons (= TW team).

- Het gebruik van XmlHttpRequest naar een endpoint waarvan je weet dat je een timeout krijgt wordt denk ik ook gezien als niet toegestaan via regel: 11, right?
Ondanks dat het niet letterlijk in de regels staat is je interpretatie correct, elke manier om een andere regel te omzeilen oid wordt niet toegestaan. Een server request dus met een timeout die als enige doel heeft een actie later uit te voeren zullen we niet toe staan.

En als laatste, misschien een wat meer technische aard (en vergeef me als de vragen niet heel intelligent zijn, ik ben meer thuis in de devops / backend, ik bijna alles wat ik doe met javascript is server-side)
- Hoe zit het met regelgeving rondom bijvoorbeeld het openen van een websocket? (Iets als `const ws = new WebSocket('wss:///run/tw.sock')` oid?) Hoe zit het met scripts die interactie hebben met mijn lokale filesystem? Is interactie met webworkers toegestaan/mogelijk?
Zelf heb ik geen ervaring met websockets / webworkers en ik ken ook geen enkel script dat daar mee werkt, ik zou je dus niet zomaar een concreet antwoord kunnen geven zonder een effectieve case / voorbeeld. Uiteindelijk gaan wij kijken om de ideeen achter de regels te behouden, ongeacht op welke technische manier ze uitgevoerd worden.

Hopelijk kan je hier wat mee :)
 
Reactiescore
1.754
Je was me voor Warre, ik wou ook net zeer uitgebreid antwoorden op al deze woorden die ik begrepen heb en waar ik veel van ken. Goed gedaan!
 
Reactiescore
48
Fijn om er op TW.nl (terug) een scripter bij te hebben :)


De huidige regels zijn te vinden tussen de officiele regels van het spel: https://www.tribalwars.nl/page/rules (onderaan $7)


Alle scripts moeten verplicht ingezonden worden voor goedkeuring voor ze gebruikt worden. Meer informatie over hoe dat inzenden werkt kan je hier vinden: https://forum.tribalwars.nl/index.php?threads/een-script-laten-keuren-hoe-doe-ik-dat.205533/

Ook aanpassingen dienen allemaal ingezonden te worden, dit is sowieso nodig aangezien de officiele scripts door ons (= TW team) gehost worden (zie regel #3).


Een script is uit te lezen (= te bekijken) door iedereen die de URL heeft, die URL bevind zich dan weer in de snellijst die uit te lezen is door iedereen die daar toegang tot heeft. Of je een license block wilt toevoegen of niet is je eigen keuze.


Strikt genomen ben je dan in overtreding ja, je gebruikt namelijk ongekeurde code. Het is echter geen ramp om zo een stuk onschuldige code eens te testen, maar je doet er goed aan om dat via de console te doen.

Voor het testen van scripts kan je volgende richtlijnen volgen: https://forum.tribalwars.nl/index.php?threads/een-script-testen-wat-mag-en-wat-mag-niet.205765/


Zelf heb ik geen ervaring met fetch, maar volgens mij dien je geen extra package oid toe te voegen om dit te gebruiken? Ook jQuery is bv standaard al inbegrepen in TW en dus te gebruiken. Wanneer je extra javascript resources van een externe server wilt laden dient ook die code gekeurd en gehost te worden door ons (= TW team).


Ondanks dat het niet letterlijk in de regels staat is je interpretatie correct, elke manier om een andere regel te omzeilen oid wordt niet toegestaan. Een server request dus met een timeout die als enige doel heeft een actie later uit te voeren zullen we niet toe staan.


Zelf heb ik geen ervaring met websockets / webworkers en ik ken ook geen enkel script dat daar mee werkt, ik zou je dus niet zomaar een concreet antwoord kunnen geven zonder een effectieve case / voorbeeld. Uiteindelijk gaan wij kijken om de ideeen achter de regels te behouden, ongeacht op welke technische manier ze uitgevoerd worden.

Hopelijk kan je hier wat mee :)
Bedankt voor de super uitgebreide uitleg. Het is me helemaal duidelijk.
Je was me voor Warre, ik wou ook net zeer uitgebreid antwoorden op al deze woorden die ik begrepen heb en waar ik veel van ken. Goed gedaan!
Bedankt voor de enthousiasme en het begrijpen van al die woorden:D
 
Reactiescore
43
Kan er een update komen over de stand van zaken, aantallen (prive) scripts, omgang, opmerkingen en plannen voor vervolg? @Warre
 

Deleted User - 24028

Guest
Kan er een update komen over de stand van zaken, aantallen (prive) scripts, omgang, opmerkingen en plannen voor vervolg? @Warre
We houden zoals de regels aangeven regelmatig impact analyses, maar sinds de laatste wijzigingen is het niet nodig geweest om nog regels te veranderen. Wat niet wilt zeggen dat er soms achter de schermen niks bijgeschaafd wordt ;)

Aantal privé scripts staat momenteel op 5. In het kort publiceer ik ook de cijfers (stats) uit de script API om iedereen een idee te geven van hoe veel welk script gebruikt wordt.
 
Reactiescore
1.754
Als je mijn timebot er maar buiten laat!
 
Bovenaan