Zbieractwo -> wypełnienie formularza..

Dyskusja w 'Poszukiwanie gotowych skryptów i zgłaszanie skrypt' rozpoczęta przez użytkownika CFANIAKxD., 29. Cze 2018.

Poleć tę stronę

  1. CFANIAKxD.

    CFANIAKxD. Pikinier

    Dołączył:
    30. Gru 2013
    Wiadomości:
    34
    Docenione treści:
    4
    Witam

    Poszukuję skrypt do "paska" który będzie wpisywał wojsko do formularza w widoku "scavenge"...
    (a dokładnie 3 skrypty w zależności od tego które punkty można wykonać)
    1) wstawianie np 500 pik..
    2) bardziej rozbudowana wersja -> (np dostępne Piki minus 500)
    3) Krok dalej -> uwzględnia np całkowitą ilość dostępnych Pik podzielone przez 2 (uwzględnia również wojsko poza wioskami)
    // czyli mamy 300 pik np w "ataku"... 500 dostępnych we wiosce... (300 + 500) / 2 = 400

    1 zakładam, że jest łatwe.. 2... trochę trudniejsze ale wykonalne... 3.. hmmm.. sam nie wiem czy można to zrobić ponieważ tych wojsk nie widzimy w oknie "zbieractwa"...

    Zakładam, że skrypt będzie dozwolony ponieważ to tylko wypełnienie formularza..
     
  2. Hermitowski

    Hermitowski Miecznik

    Dołączył:
    5. Mar 2016
    Wiadomości:
    149
    Docenione treści:
    44
    Co do przypadku trzeciego, co w przypadku jak poza wioską jest 50 jednostek, w wiosce jest 30. Połowa z wszystkich wychodzi 40, a jesteś i tak w stanie wysłać 30, więc zrobiłem wersję co wybiera minium z tych dwóch wartości.

    PS. I tak się zgłoś skrypt do supportu jak chcesz z niego korzystać.

    Kod:
    function take_1(unit, count){
      count = Number(count);
      let field = $(`[name=${unit}]`);
      field.trigger('focus');
      field.trigger('keydown');
      field.val(count);
      field.trigger('keyup');
      field.trigger('change');
    }
    
    function take_2(unit, safeguard) {
      let field = $(`[name=${unit}]`);
      safeguard = Number(safeguard);
      let available = Number(field[0].parentNode.children[1].innerText.match(/\d+/)[0]);
      field.trigger('focus');
      field.trigger('keydown');
      field.val(Math.max(available - safeguard, 0));
      field.trigger('keyup');
      field.trigger('change');
    }
    
    
    function take_3(unit) {
      fetch(TribalWars.buildURL('GET','train')).then(t => t.text()).then(t => {
        let train_screen = document.createElement('train_screen');
        train_screen.innerHTML = t;
        let counts = $(train_screen).find(`[name=${unit}]`)[0].parentNode.parentNode.parentNode.children[2].innerText.match(/\d+/g);
        let available = Number(counts[0]);
        let all_count = Number(counts[1]);
        let field = $(`[name=${unit}]`);
        field.trigger('focus');
        field.trigger('keydown');
        field.val(Math.min(all_count / 2, available));
        field.trigger('keyup');
        field.trigger('change');
      })
    }
    
    // przykłady użycia funkcji
    
    // przypadek pierwszy
    // take_1(<nazwa>, <ilość>), np.
    take_1('spear', 500)
    
    // przypadek drugi
    // take_2(<nazwa>, <rezerwa>), np.
    take_2('spear', 500)
    
    // przypadek trzeci
    // take_3(<nazwa>)
    take_3('spear')
    
     
    Last edited: 30. Cze 2018
  3. CFANIAKxD.

    CFANIAKxD. Pikinier

    Dołączył:
    30. Gru 2013
    Wiadomości:
    34
    Docenione treści:
    4
    Muszę przyznać, że zaskoczyłeś mnie..
    Nie tym, że przygotowałeś punkt 3..
    Zaskoczyłeś mnie tym, że zrobiłeś więcej niż "wiedziałem, że potrzebuję"
    Dzięki wielkie :)
     
  4. Kris2450

    Kris2450 Chłop

    Dołączył:
    10. Lis 2018
    Wiadomości:
    1
    Docenione treści:
    0
    Podepnę się troche do tematu, jak zrobić żeby dla określonego linka (mam osobny skrót na każdą opcje zbieractwa) przycisk START podswietlal sie na zielono?