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

DeletedUser201011

Guest
Na chrome też działa stiv i nie było sytuacji, by nie działało przez ostatnie 3 miechy.
 

Lodar93

Pikinier
Wynik reakcji
52
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
52
@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)
 

DeletedUser205168

Guest
U mnie nie działa, czy komuś też ostatnia wersja nie działa czy po prostu ja cos zle robie?
 

DeletedUser205168

Guest
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ę
 

DeletedUser205168

Guest
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
52
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 :(
 

SweetKimo

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

Załączniki

  • surki.jpg
    surki.jpg
    183,9 KB · Wyświetlenia: 85

SweetKimo

Miecznik
Wynik reakcji
126
@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ł :)
 

YouKnow

Chłop
Wynik reakcji
0
Czy jest szansa by skrypt działał w aplikacji mobilnej lub chociaż w przeglądarce na telefonie?
 

Lodar93

Pikinier
Wynik reakcji
52
Czy jest szansa by skrypt działał w aplikacji mobilnej lub chociaż w przeglądarce na telefonie?
W przeglądarce z telefonu działa jeśli uruchomisz np. chrome w wersji na komputer (taka opcja w ustawieniach bodajże). Co do apki to ja osobiście nie umiem tego zrobić w ten sposób, może pierwotny autor dał by rade <shrug>
 
Wynik reakcji
67
witajcie..
od rana skrypt nie działa.. zresztą reszta skryptów z paska również..

edit: działa.. nie zmieniłem ilości surowców jakie mają zostać w wiosce
 
Ostatnia edycja:

Yaerden

Chłop
Wynik reakcji
3
Czy można by było troszkę zmodyfikować skrypt tak by można było ustawić
MAX_STORAGE_FILL_PERCENTAGE: 'x.xx', dla każdego surowca osobno?

Np chciałbym mieć Spichlerz pełny w 80% jeśli chodzi o drewno i glinę, ale żelaza wystarczy 40%
 
Do góry