1. Voordat je kan participeren op het forum dien je je eerst te registreren.

    Druk hier om je te registreren!
    Ontzet Notitie

Hernoem Bevelen

Discussie in 'Snellijstscripts' gestart door Unfriendly Sander, 29. apr 2018.

Deel Deze Pagina

  1. Unfriendly Sander

    Unfriendly Sander

    Lid geworden:
    2. feb 2014
    Berichten:
    1.402
    Leuk Bevonden:
    62
    Titel Script: Hernoem Bevelen

    Functiebeschrijving script:

    Dit script hernoemt bevelen op het dorpoverzicht en andere pagina's. (bv aankomend, bevelen, ...)
    Wanneer je het script activeert zal er een prompt komen die je vraagt wat de nieuwe naam moet zijn.

    Verder kun je in het script het type en prefix aanpassen.
    Type:
    • 'outgoing': hernoemt alleen uitgaande bevelen
    • 'incoming': hernoemt alleen inkomende bevelen
    • 'all': hernoemt alles
    Prefix:
    • true: hetgeen je invoert in de prompt wordt vooraan de bestaande bevelnaam toegevoegd
    • false: hernoem het volledige bevel

    Keuring Ticket ID (Cijfer van de ticketID) t12398621

    ScriptCode

    PHP:
    javascript/* @author: Unfriendly Sander @description: Renames commands on current page */ void((() => {
        const 
    settings = {
       
    type'outgoing'// values: outgoing, incoming, all
       
    prefixfalse     // values: true, false => on true it will add what you put in the prompt BEFORE the current command name if it is not there already
        
    },
         
    selectors = {   // here for convenience, if something breaks, it will probably need a fix in the selectors methods
             
    $outgoing() {
             if (
    game_data.screen === 'overview_villages') {
               return $(
    '.quickedit');
             }
             return $(
    '.quickedit-out');
             },

             
    $incoming() {
             return $(
    '.quickedit').not('.quickedit-out');
             },

             
    $allCommands() {
             return $(
    '.quickedit, .quickedit-out');
             },

             
    getId($command) {
             return 
    $command.attr('data-id');
             },

             
    extractLabel($command) {
             return 
    $command.find('.quickedit-label').text().trim();
             },

             
    editLabel($commandtxt) {
             
    $command.find('.quickedit-label').text(txt);
             }
         };

        
    // load twAjax if not defined
        
    (() => {
       if (
    typeof window.$.twAjax === 'undefined') {
           
    window.$.twAjax = (function () {
           
    let Ajax = function (optionspromise) {
               
    this.options options;
               
    this.promise promise;
           };

           
    let Queue = (() => {
               
    let Queue = function () {
               
    this.list = [];
               
    this.working false;
               
    this.length 0;
               };

               
    Queue.prototype.doNext = function () {
               
    let item this.dequeue(),
                   
    self this;

               $.
    ajax(item.options).done(function () {
                   
    item.promise.resolve.apply(nullarguments);
                   
    self.start();
               }).
    fail(function () {
                   
    item.promise.reject.apply(nullarguments);
                   
    self.start();
               });
               };

               
    Queue.prototype.start = function () {
               if (
    this.length) {
                   
    this.working true;
                   
    this.doNext();
               } else {
                   
    this.working false;
               }
               };

               
    Queue.prototype.dequeue = function () {
               
    this.length -= 1;
               return 
    this.list.shift();
               };

               
    Queue.prototype.enqueue = function (item) {
               
    this.list.push(item);
               
    this.length += 1;

               if (!
    this.working) {
                   
    this.start();
               }
               };

               return 
    Queue;
           })();

           
    let orchestrator = (() => {
               
    // Create 5 queues to distribute requests on
               
    let queues = (() => {
               const 
    needed 5;
               
    let arr = [];

               for (
    let i 0neededi++) {
                   
    arr[i] = new Queue();
               }

               return 
    arr;
               })();

               
    let distribute = (item) => {
               
    let leastBusyQueue queues.map(=> q.length).
                   
    reduce((nextcurr) => (curr next) ? curr next0);
               
    queues[leastBusyQueue].enqueue(item);
               };

               return 
    distribute;
           })();

           return function(
    options) {
               
    let promise = $.Deferred(),
               
    item = new Ajax(optionspromise);

               
    orchestrator(item);

               return 
    promise;
           };
           })();
       }
        })();

        
    let rename = (() => {
       return (
    settings.prefix) ? (txtname) => {
           
    let l name.length,
           
    sub txt.substring(0l);

           if (
    sub !== name) {
           return 
    name ' ' txt;
           }
           return 
    txt;
       } : (
    txtname) => name;
        })();

        
    let persistentRename = (id$commandlabel) => {
       return $.
    twAjax({
           
    url: `game.php?screen=info_command&ajaxaction=edit_own_comment&id=${id}&h=${game_data.csrf}`,
           
    method'POST',
           
    data: { textlabel }
       }).
    then(() => {
           
    selectors.editLabel($commandlabel);
       });
        };

        
    let getCommands = (() => {
       
    let $commands = (() => {
           switch (
    settings.type) {
           case 
    'outgoing':
           return 
    selectors.$outgoing;
           case 
    'incoming':
           return 
    selectors.$incoming;
           case 
    'all':
           return 
    selectors.$allCommands;
           }
       })();

       return () => 
    $commands();
        })();

        (function 
    exec() {
       
    let name prompt('Hernoem bevelen naar:'''),
           
    $commands getCommands();

       if (!
    name.length) {
           return 
    false;
       }

       for (
    let i 0$commands.lengthli++) {
           
    let label selectors.extractLabel($commands.eq(i)),
           
    newLabel rename(labelname);

           if (
    label === newLabel) {
           continue;
           }

           
    persistentRename(selectors.getId($commands.eq(i)), $commands.eq(i), newLabel);
       }
        })();
    })());
     
  2. Single Malt

    Single Malt

    Lid geworden:
    20. jan 2015
    Berichten:
    3.150
    Leuk Bevonden:
    1.170
    Deze werkt niet bij mij?
     
  3. warre

    warre

    Lid geworden:
    19. feb 2008
    Berichten:
    4.082
    Leuk Bevonden:
    276
    Wat werkt er niet aan ?
     
  4. Single Malt

    Single Malt

    Lid geworden:
    20. jan 2015
    Berichten:
    3.150
    Leuk Bevonden:
    1.170
    Alles. Ik klik er op en hij doet niets. Komt geen prompt zoals vermeld wordt. Op meerdere pagina's geprobeerd (dorpsoverzicht, aankomende bevelen, uitgaande bevelen, etv)
     
  5. warre

    warre

    Lid geworden:
    19. feb 2008
    Berichten:
    4.082
    Leuk Bevonden:
    276
    Dat is vreemd... Kan je eens kijken naar errors ?

    Wanneer je in TW bent rechter klik ergens in de pagina, en dan element inspecteren (of iets in die aard), daar dan zoeken naar de console. Eenmaal die open staat op het script klikken en dan hier laten weten wat er dan in de console verschijnt.
     
  6. Unfriendly Sander

    Unfriendly Sander

    Lid geworden:
    2. feb 2014
    Berichten:
    1.402
    Leuk Bevonden:
    62
    Welke wereld? Heb je PA? Instellingen script?
     
  7. Victorious.

    Victorious.

    Lid geworden:
    22. jun 2013
    Berichten:
    9.823
    Leuk Bevonden:
    231
    @Unfriendly Sander Hij mist er steeds wat aanvallen met hernoemen, waarschijnlijk omdat er geen ingebouwde timer oid in zit. Wat ik daarmee bedoel, is dat hij geen rekening houdt met de 5 acties per seconde.
     
  8. Unfriendly Sander

    Unfriendly Sander

    Lid geworden:
    2. feb 2014
    Berichten:
    1.402
    Leuk Bevonden:
    62
    Over hoeveel bevelen heb je het dan ongeveer @Victorious. ?
    Ik heb het zelf met een hondertal getest en werkt hier perfect. Een timer is ook niet nodig, je hebt 5 workers ter beschikking en daar wordt rekening mee gehouden. ;)
     
  9. Victorious.

    Victorious.

    Lid geworden:
    22. jun 2013
    Berichten:
    9.823
    Leuk Bevonden:
    231
    Enkel getest met 1000 bevelen, dus daar ligt het wrss aan. Was ook maar enkel een testje, ga normaal echt niet al mn farms hernoemen :p
     
  10. zeehond

    zeehond

    Lid geworden:
    1. nov 2013
    Berichten:
    955
    Leuk Bevonden:
    43
    @Unfriendly Sander
    @Victorious.

    Ik denk dat het in dit geval voldoende is om de queue gewoon op 4 te zetten
    Ja hij is dan 1/5 langzamer en zit je niet presies op die 200ms wand er hoeft maar een beetje storing te zijn en het is mis
    Als de queues op 4 staat bou je zelf meer ruimte in en is het dus minder gevoelig af gesteld

    Dit werkte bij mij prima om het zelfde probleem te verhelpen
     
  11. warre

    warre

    Lid geworden:
    19. feb 2008
    Berichten:
    4.082
    Leuk Bevonden:
    276
    Sorry maar hier klopt werkelijk niks van...

    Ten eerste werkt Sander zijn fix voor 5 acties / seconde (wat de eenvoudige benaming is, want in werkelijkheid zijn het er helemaal geen 5 per seconde maar gewoon 5 workers) niet op basis van elke keer 200ms er tussen. Zijn code wacht netjes tot er 1 afgehandeld is om dan de volgende te doen met zo een max van 5. Kortom er is geen enkele manier waarop die sneller kan gaan dan TW toelaat en storingen kunnen onmogelijk voor komen. Dit is de meest nette en correcte manier van werken die je kan hebben, veel beter dan gewoon 200ms er tussen gebruiken...

    Ten 2de gebruik ik Sander zijn code voor dit al sinds het begin in al mijn tools die het nodig hebben en ik heb nergens en nooit last van request die niet gedaan worden oid. Meer zelfs ik heb net met het script uit dit topic 1000 aanvallen hernoemt en er is er geen enkele die niet hernoemt is!

    Bij deze kan ik dus met zeer veel zekerheid zeggen dat het probleem niet in dat stuk code ligt, als het al in de code ligt en niet gewoon gebruikers gerelateerd is. Ik denk dus dat er meer informatie nodig is van @Victorious. om te zien onder welke omstandigheden dit voorkomt.
     
  12. Victorious.

    Victorious.

    Lid geworden:
    22. jun 2013
    Berichten:
    9.823
    Leuk Bevonden:
    231
    @warre ik zal vanavond even testen om het te herproduceren! Weet ook niet zeker of het via PC of via mobiel was.
     
  13. zeehond

    zeehond

    Lid geworden:
    1. nov 2013
    Berichten:
    955
    Leuk Bevonden:
    43
    leg mij dan eens uit waarom het bij 4 wel allemaal hernoemd en bij 5 niet allemaal
    het zou best aan de internet verbinding kunnen liggen maar het feit dat hij bij 4 wel hernoemt en bij 5 niet
     
  14. warre

    warre

    Lid geworden:
    19. feb 2008
    Berichten:
    4.082
    Leuk Bevonden:
    276
    Maar hij doet het gewoon goed met 5 :confused2:
     
  15. zeehond

    zeehond

    Lid geworden:
    1. nov 2013
    Berichten:
    955
    Leuk Bevonden:
    43
    Ja bij mij slaat hij er ongeveer 8 overbop 1000 bevelen als hij op 5 staat en op 4 niet dus kendelijk een slechte internet verbinding
     
  16. Victorious.

    Victorious.

    Lid geworden:
    22. jun 2013
    Berichten:
    9.823
    Leuk Bevonden:
    231
    Werkt niet meer bij mij. Past het niet aan. Gaat heel snel door de eerste 20 bevelen, stopt dan, en bij refreshen is niets aangepast.
     
  17. kingsdorp

    kingsdorp

    Lid geworden:
    12. apr 2014
    Berichten:
    1.366
    Leuk Bevonden:
    86
    @Unfriendly Sander
    Helaas werkt het script niet meer bij mij, hij hernoemt wel alles alleen wanneer ik naar een andere pagina ga dan zijn de hernoemingen weer ongedaan gemaakt.

    Vond het een plezierig script om te gebruiken, zou het kunnen waarderen als iemand met wat meer script kennis dan ik het script weer werkend kan krijgen^^
     
  18. zeehond

    zeehond

    Lid geworden:
    1. nov 2013
    Berichten:
    955
    Leuk Bevonden:
    43
    @kingsdorp

    ik heb het script getest werkt nog prima
    al geprobeerd om even opnieuw te te voegen ?
     
  19. kingsdorp

    kingsdorp

    Lid geworden:
    12. apr 2014
    Berichten:
    1.366
    Leuk Bevonden:
    86
    Jep heb hem vandaag nog toegevoegd zelfs, had het erbij moeten vermelden... maar de problemen treden bij mij op bij het hernoemen van incommings dus niet bevelen die verstuurd worden :). Deze krijg ik wel hernoemd alleen die hernoeming is niet permanent, helaas.
     
  20. zeehond

    zeehond

    Lid geworden:
    1. nov 2013
    Berichten:
    955
    Leuk Bevonden:
    43
    gebruik je nog andere user scripts ?

    dat kan invloet op elkaar hebben