Zbieractwo -> wypełnienie formularza..

CFANIAKxD.

Pikinier
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..
 

Hermitowski

Pomocna Dłoń
Pomocna Dłoń
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')
 
Ostatnia edycja:

CFANIAKxD.

Pikinier
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 :)
 

Kris2450

Chłop
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?