website script

Status
Niet open voor verdere reacties.
Ik heb een nieuwe versie, waarvan ik denk dat 'ie werkt :P Duurde wat lang doordat ik problemen met de scope tegenkwam. 't Spel bestaat namelijk uit 2 delen - een hoofdpagina en een iframe..

Test 't maar eens :) Settings staan op regel 7.

[JS](function() {
try {

function main () {
try {

var Settings = {
USERNAME: "...",
PASSWORD: "...",

TIMER_MARGIN: 1500, //ms
SCRIPT_TITLE: "Script",
NAMESPACE: "_dannydaboy"
};

function add(parent, tag, attributes) {
var el = create(tag, attributes);
parent.appendChild(el);
return el;
}
function create(tag, attributes) {
var el = document.createElement(tag);
if (attributes) extend(el, attributes, true, true);
return el;
}
function extend(dest, source, recursive, force) {
for (var k in source) {
var hasK = k in dest;
if (recursive && hasK && typeof source[k] == "object" && typeof dest[k] == "object") {
extend(dest[k], source[k], recursive, force);
}
else if (force || !hasK) {
dest[k] = source[k];
}
}
}

function createCookie(name, value, seconds) {
var expires;
if (seconds) {
var date = new Date();
date.setTime(date.getTime() + seconds * 1000);
expires = "; expires=" + date.toGMTString();
}
else {
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i=0; i < ca.length; i++) {
var c = ca;
while (c.charAt(0) == ' ') {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) == 0) {
return c.substring(nameEQ.length, c.length);
}
}
return null;
}
function eraseCookie(name) {
createCookie(name, "", -1);
}

function page(href) {
var mainFrame = name("mainFrame", window.top)[0];
console.log(mainFrame);
mainFrame.src = href;
}
function onTimeout() {
if (enabled) {
page("forums.php");
}
}

function id (n, w) {
return (w || window).document.getElementById(n);
}
function name(n, w) {
return (w || window).document.getElementsByName(n);
}
function tag (n, w) {
return (w || window).document.getElementsByTagName(n);
}

var enabled = readCookie("enabled") != "false",
match = document.location.toString().match(/\/(\w+)\.php/);
var Space;

if (self == top) {

console.log();
console.log(window);

if (!match && id("header_login")) {
var form = id("username").parentNode
id("username").value = Settings.USERNAME;
id("password").value = Settings.PASSWORD;
form.constructor.prototype.submit.call(form);
}
else if (!Space) {
Space = window[Settings.NAMESPACE] = {
UI: (function() {
document = document || window.document;
var container = add(document.body, "div", {
style: {
position: "fixed",
MozUserSelect: "none",
top: 0,
left: 0
}
});

var ui = add(container, "div", {
style: {
position: "absolute",
backgroundColor: enabled ? "#0F0" : "#F00",
cursor: "move",
top: parseInt(readCookie("initY") || 0, 10) + "px",
left: parseInt(readCookie("initX") || 0, 10) + "px"
}
});
var t = add(ui, "table", {
style: {
width: "300px"
}
});
add(add(t, "tr"), "td", {
className: "subtitle",
colSpan: 2,
innerHTML: Settings.SCRIPT_TITLE
});

var tr = add(t, "tr");
var td = add(tr, "td", {
className: "maintxt",
height: 20,
width: "50%"
});
add(td, "b", {
innerHTML: "Promotie"
});
var promotieTd = add(tr, "td", {
className: "maintxt",
width: "50%"
});

tr = add(t, "tr");
td = add(tr, "td", {
className: "maintxt",
height: 20,
width: "50%"
});
add(td, "b", {
innerHTML: "Script running"
});
td = add(tr, "td", {
className: "maintxt",
width: "50%",
style: {
cursor: "pointer"
}
});
var runningImg = add(td, "img", {
src: "images/" + (enabled ? 0 : 1) + ".png"
});

function stopPropagation(e) {
e.stopPropagation();
}
function toggle() {
enabled = !enabled;
runningImg.src = "images/" + (enabled ? 0 : 1) + ".png";
ui.style.backgroundColor = enabled ? "#0F0" : "#F00";
createCookie("enabled", enabled);
}

td.addEventListener("mousedown", stopPropagation, false);
td.addEventListener("click", toggle, false);

var startX, startY, initX, initY;
function startDrag(e) {
startX = e.clientX;
startY = e.clientY;
initX = ui.offsetLeft;
initY = ui.offsetTop;
with (container.style) {
width = "100%";
height = "100%";
}
document.body.addEventListener("mouseup", stopDrag, false);
document.body.addEventListener("mousemove", doDrag, false);
}
function doDrag(e) {
var dX = e.clientX - startX;
var dY = e.clientY - startY;
with (ui.style) {
top = initY + dY + "px";
left = initX + dX + "px";
}
}
function stopDrag(e) {
createCookie("initY", ui.offsetTop);
createCookie("initX", ui.offsetLeft);
with (container.style) {
width = 0;
height = 0;
}
document.body.removeEventListener("mousemove", doDrag, false);
document.body.removeEventListener("mouseup", stopDrag, false);
}

ui.addEventListener("mousedown", startDrag, false);

return {
setTime: function(ms) {
ms = Math.max(0, ms);
var tSec = Math.ceil(ms / 1000);
var s = tSec % 60;
var m = (tSec - s) / 60 % 60;
var h = tSec - 60 * m - s;
promotieTd.innerHTML = h + ":" + (m < 10 ? "0" : "") + m + ":" + (s < 10 ? "0" : "") + s;
}
};

})(window.top.document),
Timer: (function() {
var time, timer;
return {
setTime: function(ms) {
time = Math.max(0, ms);
Space.UI.setTime(time);
},
start: function() {
if (!timer) {
var self = this;
timer = setInterval(function() {
time -= 1000;
if (time <= 0) {
self.stop();
}
Space.UI.setTime(time);
}, 1000);
}
},
stop: function() {
if (timer) {
clearInterval(timer);
}
}
};
})()
};
console.log(Space);
}

}
else {

console.log();
console.log(window, match);
Space = window.top[Settings.NAMESPACE];

if (Space && match) {

var dTime;
switch (match[1]) {

case "forums": //Promotiepagina
//Zoeken naar button
var inputs = tag("input"), i = 0;
var a = "Gen", b = "ove", c = "se";
while (i < inputs.length && inputs.value != "Stem op " + a + b + c + "!") {
i++;
}

if (i < inputs.length) { //Button gevonden
inputs.click();
}
else { //Button niet gevonden
match = id("aftellen_23").innerHTML.match(/\d+/g);
var m = parseInt(match[0], 10);
var s = parseInt(match[1], 10);
dTime = (m * 60 + s) * 1000 + Settings.TIMER_MARGIN;

createCookie("time", (new Date()).getTime() + dTime);

Space.Timer.setTime(dTime);
Space.Timer.start();
setTimeout(onTimeout, dTime);
}
break;

case "login":
name("login")[0].value = Settings.USERNAME;
name("pass")[0].value = Settings.PASSWORD;
name("submit")[0].click();
break;

default: //Alle andere pagina's
var date = new Date();
var time = readCookie("time");
if (time) {
time = parseInt(time, 10);
dTime = time - (new Date()).getTime();
console.log(match[1], dTime);
if (dTime <= 0) {
dTime = 0;
onTimeout();
}
else {
Space.Timer.setTime(dTime);
Space.Timer.start();
setTimeout(onTimeout, dTime);
}
}
else {
onTimeout();
}
break;

}
}
else {
top.addEventListener("load", onTimeout, false);
}
}

}
catch (e) {
console.error(e.message);
}
}

function scriptMainLoader() {
addJS(null, null, main);
}
function addJS(text, s_URL, funcToRun) {
var D = document;
var scriptNode = D.createElement('script');
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';

var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (scriptNode);
}

window.addEventListener("load", scriptMainLoader, false);

}
catch (e) {
console.error(e.message);
}
})();[/JS]
 
Laatst bewerkt:
tot nu toe werkt die even een vraagje zou je de website naam van dit forum kunnen halen :P heb daar dezelfde gebruikersnaam namelijk (lol) weet niet of ze er blij mee zijn vandaar :)
 
Prima :)

[JS]var inputs = tag("input"), i = 0;
var a = "Gen", b = "ove", c = "se";
while (i < inputs.length && inputs.value != "Stem op " + a + b + c + "!") {
i++;
}[/JS]

^^
 
Laatst bewerkt:
ik bedoelde eigenlijk de naam van de website die je vermeld had op het forum :)

ik wil je in ider geval super bedanken
 
zou je de website naam van dit forum kunnen halen, weet niet of ze er blij mee zijn vandaar :p
Euh? Nu stijgt mijn verbazing.
De allereerste reactie was:
Zoiets is wel mogelijk, maar check allereerst zelf even of je zo'n script zou mogen gebruiken van de makers van het spel. Zulk soort dingen worden weleens als valsspelen gezien, en als je pech hebt word je verbannen van het spel als 't opgemerkt wordt. Dat zou natuurlijk zonde zijn.
Uit het verder gaan van het topic maakte ik op dat het antwoord was: "Ja hoor, niets aan de hand".
Nu schijnt er toch enige twijfel te zijn. Ik kan dus maar twee dingen verzinnen:
  1. Zo'n script mag, en dan maakt het niet uit of de makers er blij mee zijn of niet.
  2. Het mag niet, en dan zijn ze er niet blij mee. Maar dan is het illegaal.
In het laatste geval zal het denk ik redelijk snel opvallen dat een bepaalde speler zo ongeveer dag en nacht precies op tijd aan het button-klikken is. En dan zal denk ik ook redelijk snel worden besloten om die speler maar eens te wippen. Of credits te vernietigen of wat ze nog meer kunnen doen. *)
Kortom, met belangstellende verwondering heb ik dit topic gevolgd, en het is bar wat er allemaal aan automaatjes ontwikkeld kan worden. Net toveren! Op zich dus prachtig. Maar of het slim is om dit in het echt te gaan gebruiken, vraag ik me af.

Met vriendelijke groet,
CSShunter
___________
*) Even kijken wat de regels zijn, en wat er mag of niet. Hé, op de site-zonder-naam moet je bij registratie een vinkje zetten bij "Ik ken, begrijp en ga akkoord met de regels." Alleen staan op de hele site die regels niet vermeld. :rolleyes: Op zo'n site zal ik niet gauw intekenen.
 
Hoi danny,
[beetje offtopic]
Ach, wat zal ik er van zeggen?
De "makers" van zo'n maak-zelf-gratis-je-browser-spel zijn meestal in wezen niet de echte makers, maar een soort licentiehouders, die de software en/of bestanden/database/sjablonen enz. van de echte maker mogen gebruiken: op de voorwaarden van de echte maker.
Die heeft dan doorgaans 2 reglementen:
  1. De Gebruiksvoorwaarden, bv.: "Zowel de beheerder van een Spel (hierna 'Game-eigenaar')[= de doe-het-zelf-bouwer; csshunter] als de spelers dienen zich aan enkele regels te houden, waar zij zich bij inschrijving akkoord mee dienen te verklaren. Voor spelers van het Spel geldt het Spelreglement, terwijl je je als Game-eigenaar aan deze Gebruiksvoorwaarden dient te houden. Lees deze voordat je een spel aanmaakt daarom aandachtig door. Door een spel aan te maken, wordt je geacht akkoord te zijn met deze Gebruiksvoorwaarden."
  2. Het Spelreglement, bv.: "Voor spelers van het Spel geldt dit Spelreglement, terwijl de Game-eigenaren zich aan de aan hen ter beschikking gestelde Gebruiksvoorwaarden dienen te houden. Lees voordat je je inschrijft als speler van een spel dit Spelreglement daarom aandachtig door. Door een Spel te spelen, wordt je geacht akkoord te zijn met dit Reglement."
Oftewel: de doe-het-zelver moet het Spelreglement van de opperbaas vooraf doorgeven aan zijn spelers.

Dat kan de doe-het-zelver ook niet doen, of pas achteraf, of in een andere vorm. Bv. in een ander (bijna hetzelfde) spel van dezelfde doe-het-zelver staat wel een soort spelreglement, waar inderdaad niets over scripts gezegd wordt. Maar dat is niet het originele spelreglement! (en dus in strijd met de gebruiksvoorwaarden, lijkt me.)
In zo'n origineel Spelreglement lees ik bv.:
3.2. Het is niet toegestaan om gebruik te maken van hulpmiddelen zoals scripts, bots of plugins die je een oneerlijk voordeel kunnen geven ten opzichte van andere deelnemers. Het is tevens niet toegestaan om enige beveiliging van het Spel of de Website te omzeilen of buiten werking te stellen.
3.3. Het is verboden misbruik te maken van fouten of onvolkomenheden van het Spel of de Website. Het is tevens verboden deze op openbare fora te melden of te delen met anderen zonder toestemming. Bij iedere schending van dit artikel ben je een onmiddellijk opeisbare boete van 1.000 euro per gebeurtenis schuldig, onverminderd eventuele vergoedingen voor schade door de schending.​

In hoeverre het bovenstaande van toepassing is op het spel dat jij speelt, weet ik niet.
Dus ik zeg maar zo ... ik zeg maar niks.

En nu genoeg gezeurd! :)

Met vriendelijke groet,
CSShunter
[/een beetje offtopic]
 
ik denk niet dat het de maker iets boeit zolang er geld binnen komt :) ik betaal ze regelmatig dus ze zouden stom zijn om me te blokken :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan