[Pasek] Zapełnianie spichlerza aktualnie przeglądanej wioski

Krantix

Chłop
Wynik reakcji
22
Na chrome też działa stiv i nie było sytuacji, by nie działało przez ostatnie 3 miechy.
 

Lodar93

Pikinier
Wynik reakcji
36
Za zgodą autora lekko zmodyfikowałem skrypt i dodałem w nim nowa opcję - rezerwacja surowców.
W zmiennej "RESOURCE_SAFE" wpisujemy liczbę surowców którą skrypt ma zawsze zostawiać w wiosce.
Jeśli np. ustawimy "RESOURCE_SAFE = 100000;", skrypt nigdy nie weźmie z wioski tylu surowców, aby ich liczba spadła poniżek 100k.
Zapraszam do testowania :)

Kod:
javascript:
/*-------------------- stv stor || stivens --------------------*/


var MAX_STORAGE_FILL_PERCENTAGE = 0.50;
var MINIMUM_RESOURCE_REQUEST = 1000;
var RESOURCE_SAFE = 100000;


/////////////////////////////////////////////////////////////////


var re;
var maxStorage;
var wood_atm,
stone_atm,
iron_atm;
var vil;
var capacity;
var bufor;
var wood_av,
stone_av,
iron_av;
var inc_wood,
inc_stone,
inc_iron;
var wood_needed,
stone_needed,
iron_needed;
var inp_wood,
inp_stone,
inp_iron;
var tmp;
var inp;

function getResources() {
maxStorage = Math.floor(parseInt(game_data.village.storage_max) * MAX_STORAGE_FILL_PERCENTAGE);
wood_atm = parseInt(game_data.village.wood);
stone_atm = parseInt(game_data.village.stone);
iron_atm = parseInt(game_data.village.iron);
}

function getIncoms() {
re = /\D+/;
inc_wood = $(document).find("#total_wood .res.wood").html();
inc_stone = $(document).find("#total_stone .res.stone").html();
inc_iron = $(document).find("#total_iron .res.iron").html();

inc_wood = parseInt(inc_wood.replace(re, ''));
inc_stone = parseInt(inc_stone.replace(re, ''));
inc_iron = parseInt(inc_iron.replace(re, ''));
}

function veryFirstVill() {
vil = $("#village_list").find("tbody tr:not(.stv-stor-filled)")[0];
capacity = vil.getAttribute('data-capacity');
capacity = parseInt(capacity);

vil = $("#village_list").find("tbody tr:not(.stv-stor-filled) .wood")[0];
wood_av = vil.getAttribute('data-res');
wood_av = parseInt(wood_av);

vil = $("#village_list").find("tbody tr:not(.stv-stor-filled) .stone")[0];
stone_av = vil.getAttribute('data-res');
stone_av = parseInt(stone_av);

vil = $("#village_list").find("tbody tr:not(.stv-stor-filled) .iron")[0];
iron_av = vil.getAttribute('data-res');
iron_av = parseInt(iron_av);

vil = $("#village_list").find("tbody tr:not(.stv-stor-filled)")[0];

$(vil).addClass('stv-stor-filled');
}

function getNeeds() {
wood_needed = maxStorage - wood_atm - inc_wood;
stone_needed = maxStorage - stone_atm - inc_stone;
iron_needed = maxStorage - iron_atm - inc_iron;
}

function callIt() {
inp = $(vil).find('input[name=select-village]');
$(inp).trigger('click');

inp_wood = $(vil).find(".wood input")[0];
inp_stone = $(vil).find(".stone input")[0];
inp_iron = $(vil).find(".iron input")[0];

getNeeds();

if (wood_needed > 0 && capacity > 0 && wood_av > RESOURCE_SAFE) {
bufor = wood_needed;

if (bufor > wood_av - RESOURCE_SAFE) {
    bufor = wood_av - RESOURCE_SAFE;
} else {
    bufor = bufor;
}

if (bufor > capacity) {
    bufor = capacity;
    capacity = 0;
} else {
    capacity = capacity - bufor;
}

} else {
bufor = 0;
}

if (bufor < MINIMUM_RESOURCE_REQUEST) {bufor = 0;}
$(inp_wood).val(bufor);
inc_wood += bufor;

/*#################################*/

if (stone_needed > 0 && capacity > 0 && stone_av > RESOURCE_SAFE) {
bufor = stone_needed;
if (bufor > stone_av - RESOURCE_SAFE) {
bufor = stone_av - RESOURCE_SAFE;
} else {
bufor = bufor;
}

if (bufor > capacity) {
bufor = capacity;
capacity = 0;
} else {
capacity = capacity - bufor;
}

} else {
bufor = 0;
}


if (bufor < MINIMUM_RESOURCE_REQUEST) {bufor = 0;}
$(inp_stone).val(bufor);
inc_stone += bufor;

/*#################################*/

if (iron_needed > 0 && capacity > 0 && iron_av > RESOURCE_SAFE) {
bufor = iron_needed;
if (bufor > iron_av - RESOURCE_SAFE) {
bufor = iron_av - RESOURCE_SAFE;
} else {
bufor = bufor;
}

if (bufor > capacity) {
bufor = capacity;
capacity = 0;
} else {
capacity = capacity - bufor;
}

} else {
bufor = 0;
}


if (bufor < MINIMUM_RESOURCE_REQUEST) {bufor = 0;}
$(inp_iron).val(bufor);
inc_iron += bufor;

if ($(inp_iron).val() == 0 && $(inp_stone).val() == 0 && $(inp_wood).val() == 0) {
UI.InfoMessage('Spichlerz zapełniony', 5000, 'success');
}
}


function start() {
veryFirstVill();
callIt();
}

if (document.getElementById("checkbox_hide_traderless").checked == false) {
UI.InfoMessage('Ukryj wioski bez dostępnych kupców.', 5000, 'error');
} else {
getResources();
getIncoms();

var num_vils = $("#village_list").find("tbody tr:not(.stv-stor-filled)").length;

for (let i=0; i<num_vils; i++) {
start();
}
}
 

Lodar93

Pikinier
Wynik reakcji
36
@myszolekk
a coś więcej? Bo mi działa poprawnie
Zwróć uwagę że wyszła nowa wersja na forum i może po prostu jej nie zaktualizowałeś:
Kod:
javascript: var Supply = {
MAX_STORAGE_FILL_PERCENTAGE: '0.50',
MINIMUM_RESOURCE_REQUEST : '1000',
RESOURCE_SAFE : '100000'
};
$.getScript("https://media.innogamescdn.com/com_DS_PL/skrypty/zapelnianie_spichlerza.js"); void(0);
MAX_STORAGE_FILL_PERCENTAGE - procentowe zapełnienie spichlerza
MINIMUM_RESOURCE_REQUEST - minimalna ilość surowców jaką skrypt ma brać pod uwagę w wiosce
RESOURCE_SAFE - surowce jakie maja zostać pominięte w każdej wiosce (w wiosce nie będzie mniej surowców niż podana liczba)
 

Lord Conan

Chłop
Wynik reakcji
3
Rzeczywiście jest pole "Wezwij" w rynku, nie zauważyłem tego wcześniej,
Więc skrypt działa
Dziękuję za Pomoc :)

Dobrego Dnia Życzę
 

Lord Conan

Chłop
Wynik reakcji
3
Ponownie pojawił się problem, próbowałem rozwiązać sam, lecz już nie wiem jak,
otóż po wpisaniu jakichkolwiek wartości w skrypcie tj:
javascript: var Supply = {
MAX_STORAGE_FILL_PERCENTAGE: '0.50', - tej wartosci
MINIMUM_RESOURCE_REQUEST : '1000', - tej wartosci
RESOURCE_SAFE : '100000' - tej wartosci
};
$.getScript("https://media.innogamescdn.com/com_DS_PL/skrypty/zapelnianie_spichlerza.js"); void(0);
skrypt wysyła max liczbę kupców z wioski A do wioski B docelowej, nawet jeśli spichlerz mi tego nie pomieści i nawet przy braku zmiany w kodzie jak i ze zmianą liczby kupców oraz wartości wysyłanych surowców się nie zmieniają, także biorąc pod uwagę kilka wiosek, z nich również idzie max kupców do wioski docelowej
 

Lodar93

Pikinier
Wynik reakcji
36
Ciężko mi odpowiedzieć co jest nie tak. Gdy ja używam tego skryptu codziennie przed snem aby dostarczać surowce do wiosek, wszystko działa tak jak należy :(
 

kimorile

Chłop
Wynik reakcji
102
Na chrome.
Rynek-> Wezwij klikam skrypt i nie wypełnia surowców, a komunikaty takie jak na ss. Rezerwa surowców = 0.
 

Załączniki

kimorile

Chłop
Wynik reakcji
102
@Lodar93
wkleiłem skrypt jeszcze raz i poprawiłem
Kod:
var MAX_STORAGE_FILL_PERCENTAGE = 0.80;
var MINIMUM_RESOURCE_REQUEST = 1000;
var RESOURCE_SAFE = 10000;
i dzisiaj działa xD także chyba problem sam się rozwiązał :)