Deleted User - 24028
Guest
Beste scripters,
Wat is de TribalWarsLibrary?
Rond deze tijd zullen jullie waarschijnlijk allemaal bezig zijn met het nakijken en herwerken van jullie scripts, daarom leek het mij een ideaal moment om de TribalWarsLibrary aan te kondigen. De TribalWarsLibrary of kortweg twLib is een javascript code library geschreven door en voor scripters van TW.NL waar veel gebruikte functies in opgenomen kunnen worden zodat deze doorheen verschillende scripts gebruikt kunnen worden.
Op dit moment bevat twLib enkel een herwerking van het door scripters veel gebruikte "$.twAjax()" jaren geleden geschreven door Unfriendly Sander & Hardcode, maar samen met jullie hulp hoop ik twLib te kunnen uitbouwen tot een volwaardige library.
TribalWarsLibrary Code
De code van twLib is te vinden in onderstaande spoiler of via volgende url: https://media.innogames.com/com_DS_NL/scripts/resources/TribalWarsLibrary.js
TribalWarsLibrary Functies
TribalWarsLibrary Gebruik
De code kan in principe op verschillende manieren geïmplementeerd worden, in het snellijstscript zelf of pas achteraf in de eigen code, via de url of rechtstreeks.
Het is alleen belangrijk dat verschillende scripts de vorige code niet overschrijven, laat dus altijd de "if (typeof window.twLib === 'undefined')" in de code staan.
De beste manier om de code toe te voegen is in mijn ogen in de geuploade versie van het script op volgende manier:
Ontwikkeling van TribalWarsLibrary
Feedback op de huidige code is zeer welkom, samen kunnen we alleen maar verbeteren.
Heb jij zelf een stuk code dat je gebruikt in verschillende scripts? Aarzel dan niet om het toe te voegen aan twLib door hier een post achter te laten!
Keep up the good work,
Warre
Wat is de TribalWarsLibrary?
Rond deze tijd zullen jullie waarschijnlijk allemaal bezig zijn met het nakijken en herwerken van jullie scripts, daarom leek het mij een ideaal moment om de TribalWarsLibrary aan te kondigen. De TribalWarsLibrary of kortweg twLib is een javascript code library geschreven door en voor scripters van TW.NL waar veel gebruikte functies in opgenomen kunnen worden zodat deze doorheen verschillende scripts gebruikt kunnen worden.
Op dit moment bevat twLib enkel een herwerking van het door scripters veel gebruikte "$.twAjax()" jaren geleden geschreven door Unfriendly Sander & Hardcode, maar samen met jullie hulp hoop ik twLib te kunnen uitbouwen tot een volwaardige library.
TribalWarsLibrary Code
De code van twLib is te vinden in onderstaande spoiler of via volgende url: https://media.innogames.com/com_DS_NL/scripts/resources/TribalWarsLibrary.js
JavaScript:
/**** TribalWarsLibrary.js ****/
if (typeof window.twLib === 'undefined') {
window.twLib = {
queues: null,
init: function() {
if (this.queues === null) {
this.queues = this.queueLib.createQueues(5);
}
},
queueLib: {
maxAttempts: 3,
Item: function (action, arg, promise = null) {
this.action = action;
this.arguments = arg;
this.promise = promise;
this.attempts = 0;
},
Queue: function() {
this.list = [];
this.working = false;
this.length = 0;
this.doNext = function () {
let item = this.dequeue();
let self = this;
if (item.action == 'openWindow') {
window.open(...item.arguments).addEventListener('DOMContentLoaded', function() {
self.start();
});
} else {
$[item.action](...item.arguments).done(function () {
item.promise.resolve.apply(null, arguments);
self.start();
}).fail(function () {
item.attempts += 1;
if (item.attempts < twLib.queueLib.maxAttempts) {
self.enqueue(item, true);
} else {
item.promise.reject.apply(null, arguments);
}
self.start();
});
}
};
this.start = function () {
if (this.length) {
this.working = true;
this.doNext();
} else {
this.working = false;
}
};
this.dequeue = function () {
this.length -= 1;
return this.list.shift();
};
this.enqueue = function (item, front = false) {
(front) ? this.list.unshift(item) : this.list.push(item);
this.length += 1;
if (!this.working) {
this.start();
}
};
},
createQueues: function(amount) {
let arr = [];
for (let i = 0; i < amount; i++) {
arr[i] = new twLib.queueLib.Queue();
}
return arr;
},
addItem: function(item) {
let leastBusyQueue = twLib.queues.map(q => q.length).reduce((next, curr) => (curr < next) ? curr : next, 0);
twLib.queues[leastBusyQueue].enqueue(item);
},
orchestrator: function(type, arg) {
let promise = $.Deferred();
let item = new twLib.queueLib.Item(type, arg, promise);
twLib.queueLib.addItem(item);
return promise;
}
},
ajax: function() {
return twLib.queueLib.orchestrator('ajax', arguments);
},
get: function() {
return twLib.queueLib.orchestrator('get', arguments);
},
post: function() {
return twLib.queueLib.orchestrator('post', arguments);
},
openWindow: function() {
let item = new twLib.queueLib.Item('openWindow', arguments);
twLib.queueLib.addItem(item);
}
};
twLib.init();
}
TribalWarsLibrary Functies
Code | Uitleg |
---|---|
twLib.ajax(); | Gebruik deze code in plaats van de standaard jQuery $.ajax() om te vermijden dat TW requests blokkeert wanneer het er meer dan 5 / sec zijn. Alle parameters die normaal meegegeven worden aan $.ajax() kunnen ook aan deze functie mee gegeven worden. |
twLib.get(); | Gebruik deze code in plaats van de standaard jQuery $.get() om te vermijden dat TW requests blokkeert wanneer het er meer dan 5 / sec zijn. Alle parameters die normaal meegegeven worden aan $.get() kunnen ook aan deze functie mee gegeven worden. |
twLib.post(); | Gebruik deze code in plaats van de standaard jQuery $.post() om te vermijden dat TW requests blokkeert wanneer het er meer dan 5 / sec zijn. Alle parameters die normaal meegegeven worden aan $.post() kunnen ook aan deze functie mee gegeven worden. |
twLib.openWindow(); | Gebruik deze code in plaats van de standaard javascript window.open() om te vermijden dat TW pagina's niet laden als er meer dan 5 / sec geopend worden. Alle parameters die normaal meegegeven worden aan window.open() kunnen ook aan deze functie mee gegeven worden. |
TribalWarsLibrary Gebruik
De code kan in principe op verschillende manieren geïmplementeerd worden, in het snellijstscript zelf of pas achteraf in de eigen code, via de url of rechtstreeks.
Het is alleen belangrijk dat verschillende scripts de vorige code niet overschrijven, laat dus altijd de "if (typeof window.twLib === 'undefined')" in de code staan.
De beste manier om de code toe te voegen is in mijn ogen in de geuploade versie van het script op volgende manier:
JavaScript:
if (typeof window.twLib === 'undefined') {
$.getScript('https://media.innogames.com/com_DS_NL/scripts/resources/TribalWarsLibrary.js', myScript);
} else {
myScript();
}
function myScript() {
/*
Eigen code hier, twLib functies kunnen nu gebruikt worden.
*/
}
Ontwikkeling van TribalWarsLibrary
Feedback op de huidige code is zeer welkom, samen kunnen we alleen maar verbeteren.
Heb jij zelf een stuk code dat je gebruikt in verschillende scripts? Aarzel dan niet om het toe te voegen aan twLib door hier een post achter te laten!
Keep up the good work,
Warre
Laatst bewerkt door een moderator: