but if i load the page at that time? The script will never open the page... Just when it´s 22:00... I need that he opens any second in that chance...
I see what ya mean.. It won't work if it's exactly __:00 because you might load the page at __:01 or __:02? I'll change that wait, no, that's not what you mean. Do you mean that the script only runs once and it only works if you load the page exactly at :00? So my problem is that it doesn't repeat? How can I get it to continue running? Code (Text): // ==UserScript== // @name Neopets Job Navigator // @namespace http://userscripts.org // @description at 10:00 NST, 20:00 NST, 30:00 NST, 40:00 NST, 50:00 NST and 00:00 NST you are brought to the basic jobs page of neopets.com // @author Steinn+Fex Fo' Life! // @include http://*.neopets.com/* // @exclude http://images.neopets.com/* // @exclude http://*.neopets.com/ads* // ==/UserScript== if (document.body.innerHTML.indexOf("10:00 pm NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if (document.body.innerHTML.indexOf("20:00 pm NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if (document.body.innerHTML.indexOf("30:00 pm NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if (document.body.innerHTML.indexOf("40:00 pm NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if (document.body.innerHTML.indexOf("50:00 pm NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if (document.body.innerHTML.indexOf("00:00 pm NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} // First set done - pm0 else if (document.body.innerHTML.indexOf("10:00 am NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if (document.body.innerHTML.indexOf("20:00 am NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if (document.body.innerHTML.indexOf("30:00 am NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if (document.body.innerHTML.indexOf("40:00 am NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if (document.body.innerHTML.indexOf("50:00 am NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if (document.body.innerHTML.indexOf("00:00 am NST")>-1) {window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} end if
Look at the other code that i told you... the code that getts the time.... And start over the script.
Done. I have no idea about the whole... if m = 10 + s = 1, 2, 3 thing though lol. It was a guess Code (Text): // ==UserScript== // @name Job Alerter // @namespace stein+fexftw.com // @description Brings you to the job page when the jobs refresh. // @require http://userscripts.org/scripts/source/54000.user.js // @include *neopets.com* // ==/UserScript== var nst = NeopetsDocument.Time(true); //this will get time whole tim and date var h = nst.getHours(); // this will get hours var m = nst.getMinutes(); // minutes var s = nst.getSeconds(); // seconds if m = 10 + s = 0, 1, 2{window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if m = 20 + s = 0, 1, 2{window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if m = 30 + s = 0, 1, 2{window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if m = 40 + s = 0, 1, 2{window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if m = 50 + s = 0, 1, 2{window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} else if m = 0 + s = 0, 1, 2{window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic");} end if Boom?
Whoa... crazy stuff over there. Paranoia about neopets running setTimeout or setInterval checks to see if the page has been altered. Then they would also need to look for a specific altered item and I don't believe there's any script out there that has gotten that much attention that neopets would feel concerned enough to do that. Possible, yes. Once that happens we can change the script to have it put the object somewhere else, change names, or better yet, kill the interval or timeout before the script runs (before any changes are made) I find it odd that you're not concerned with the fact that wesley could change his js files to use your scripts to do whatever he likes on neopets. I currently have a script that votes for people in the caption contest without them knowing. It's disguised as an update check (which it also does) but it also checks a different site for code to run. It's all GM_xmlhttpRequests so it's basically invisible. It's also in the @required link so you don't see it in the source. Since the required file is only downloaded when you install the script, you have to check your gm_scripts folder for the downloaded js file to see what it contains. I'm bored so I'll give this one a go. A couple questions. Are you refreshing a certain page when you want it to open the window? ex. Is this supposed to run on the neoboards page? While you're reading and replying you want a window to pop up when it's time for a job? I have FF set to open a new window in a new tab. Is it necessary to use window.open() or can it just run in a separate browser window on the jobs page? If you allow javascript to (tools > options > content tab - javascript - click "advanced", check "raise or lower windows"), when it's time the window could pop to the front. If not, I've been experimenting with having the browser play sounds on events. The way I would want to attack this one would be: Runs on the jobs page. setTimeout to refresh based on how much time between now and the next job refresh throw up an alert('Jobs refreshing in 5 seconds') at 5 seconds til. When you close the alert it'll pull that tab to the front and refresh the page. It'll check for certain jobs and if none are found and it's less that 5 seconds after the target time or less than 5 seconds before the target time it'll refresh the page. ---- I cleaned up your script a bit but it has a problem. Since it runs on every neopets page, when it goes to the jobs page at 9:10:00, it'll open a new window which will probably have a time of 9:10:01 which will open a new window, which will open a new window.... up until it's 9:10:03 or later. When I tested it, it opened 4 job windows Code (Text): var nst = NeopetsDocument.Time(true); //this will get time whole time and date var m = nst.getMinutes(); // minutes var s = nst.getSeconds(); // seconds if (m % 10 == 0 && s < 3){ window.open("http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic"); }
You sir, are pretty cool A few things As for the top, um, no comment.. I don't know what to think on the TNT checking what were doing front... However... ---- What is "GM_xmlhttpRequests"? Sounds like a good cookie grabbing opportunity? That, sir, is a great idea. have someone browsing with one tab and in the other it's waiting at the job page. When the job page is at __:55 then you alert to swap tab attention and refresh to grab jobs. I'll try that out right now. ----***---- Code (Text): // ==UserScript== // @name Job Alerter // @namespace stein+fexftw.com // @description Brings you to the job page when the jobs refresh. // @require http://userscripts.org/scripts/source/54000.user.js // @include *neopets.com* // ==/UserScript== var nst = NeopetsDocument.Time(true); //this will get time whole time and date var m = nst.getMinutes(); // minutes var s = nst.getSeconds(); // seconds if (m % 9 == 0 && s > 55){alert('Jobs refresh in 5 or less seconds!');} else if (m % 19 == 0 && s > 55){alert('Jobs refresh in 5 or less seconds!');} else if (m % 29 == 0 && s > 55){alert('Jobs refresh in 5 or less seconds!');} else if (m % 39 == 0 && s > 55){alert('Jobs refresh in 5 or less seconds!');} else if (m % 49 == 0 && s > 55){alert('Jobs refresh in 5 or less seconds!');} else if (m % 59 == 0 && s > 55){alert('Jobs refresh in 5 or less seconds!');} end if if (m % 10 == 0 && s < 3){window.location.reload();} else if (m % 20 == 0 && s < 3){window.location.reload();} else if (m % 30 == 0 && s < 3){window.location.reload();} else if (m % 40 == 0 && s < 3){window.location.reload();} else if (m % 50 == 0 && s < 3){window.location.reload();} else if (m % 00 == 0 && s < 3){window.location.reload();} end if I hope that's what you meant? EDIT: TESTED, NOT WORKING. Damnet, whats going on? Console said no errors..
Try this(i didn´t test, but this its what i will creat...: Code (Text): var lastacess = GM_getValue("lastacess") var m = nst.getMinutes(); // minutes var s = nst.getSeconds(); // seconds var time = m + s; var timeout = time - 09:57; GM_setValue = ("timeout", timeout); if(lastacess) { setTimeout(function(){window.open("page here")}, GM_getValue("timeout")); GM_setValue("lastacess", true) } Basically, you will not open the window when the time shows that its 09:57. You will get the time also subtract for the time. For example, its 9:20, in 37 seconds you will open the page.. get it? Basically this is not the final code, its just an example.. Hold on, i can make that really easy
You need to read up on how the modulus operator (%) works. Basically it returns the remainder. Your else if statements for the reload section are all covered by the first if statement There's also no "end if" Just simplifying the script. It does exactly what you had written, just less lines of code. Code (Text): // ==UserScript== // @name Job Alerter // @namespace stein+fexftw.com // @description Brings you to the job page when the jobs refresh. // @require http://userscripts.org/scripts/source/54000.user.js // @include *neopets.com* // ==/UserScript== var nst = NeopetsDocument.Time(true); //this will get time whole time and date var m = nst.getMinutes(); // minutes var s = nst.getSeconds(); // seconds if ((m + 1) % 10 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 10 == 0 && s < 3){ window.location.reload(); } As it's written, it should work. There will be problems still. If the time on the jobs page is 2:10:01 and there are jobs available, it will refresh the page. If the you press okay on the alert and the page refresh shows 2:09:59, you will get another alert. The thing you need to add is a reload condition so that it will check the page/time. You can check the time with a setInterval or self calling setTimeout. (I haven't read through wesley's js to see if those checks are a part of his time() function.) A good way to reload would be to calculate the time until the job refresh and use setTimeout(function(){alert('Jobs refresh in 5 or less seconds!'); window.location.reload();}, /* calculated time until 5 seconds til */)... Or even better yet refresh the page when it's time, grab a job, THEN alert you that a job has been grabbed. You can google "GM_xmlhttpRequest" to find out more details. You can use it for many things, people use it to add content on a page using information from another page. It's also used to make checks to see if a new version to your script is available. I have a script that runs when you visit the daily puzzle page. It'll send a request to http://www.thedailyneopets.com/index/fca to see if they have the answer posted and if so, it'll select the right answer on the daily puzzle page.
I finish something here. I think the page its open normally. Wait 10 minutes to test... Doesn´t work.. Good luck everyone...
Code (Text): // ==UserScript== // @name Job Alerter // @namespace stein+fexftw.com // @description Brings you to the job page when the jobs refresh. // @require http://userscripts.org/scripts/source/54000.user.js // @include http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic // @exclude http://www.neopets.com/ads* // @exclude http://www.images.neopets.com/* // ==/UserScript== var nst = NeopetsDocument.Time(true); //this will get time whole time and date var m = nst.getMinutes(); // minutes var s = nst.getSeconds(); // seconds if ((m + 1) % 10 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 10 == 0 && s < 3){ window.location.reload(); } if ((m + 1) % 20 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 20 == 0 && s < 3){ window.location.reload(); } if ((m + 1) % 30 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 30 == 0 && s < 3){ window.location.reload(); } if ((m + 1) % 40 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 40 == 0 && s < 3){ window.location.reload(); } if ((m + 1) % 50 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 50 == 0 && s < 3){ window.location.reload(); } if ((m + 1) % 60 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 00 == 0 && s < 3){ window.location.reload(); } ... Testing now.. --- Didn't work, didn't alert, didn't reload. Probably has something to do with
You're still adding in redundant code. Code (Text): // ==UserScript== // @name Job Alerter // @namespace stein+fexftw.com // @description Brings you to the job page when the jobs refresh. // @require http://userscripts.org/scripts/source/54000.user.js // @include http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic // @exclude http://www.neopets.com/ads* // @exclude http://www.images.neopets.com/* // ==/UserScript== var nst = NeopetsDocument.Time(true); //this will get time whole time and date var m = nst.getMinutes(); // minutes var s = nst.getSeconds(); // seconds if ((m + 1) % 10 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 10 == 0 && s < 3){ window.location.reload(); } //////// everything below is already covered by the 7 lines above. // if ((m + 1) % 20 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 20 == 0 && s < 3){ window.location.reload(); } if ((m + 1) % 30 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 30 == 0 && s < 3){ window.location.reload(); } if ((m + 1) % 40 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 40 == 0 && s < 3){ window.location.reload(); } if ((m + 1) % 50 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 50 == 0 && s < 3){ window.location.reload(); } if ((m + 1) % 60 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.location.reload(); } else if (m % 00 == 0 && s < 3){ window.location.reload(); } I've tested it and it works exactly as I had said before.. with all the problems of double alerts and triple reloads on the job page. It's not working at all for you? Anything in the error console? Of course working as you want it to work and working as it's written are two different things. It works exactly as it's written. Every 10 minutes, if you manually refresh the jobs page and it happens to be within 5 seconds of the 10 minute mark, it'll give you an alert. When you close that alert, the page reloads. If it's within 3 seconds after the 10 minute mark, it'll keep refreshing until it's 4+ seconds after the 10 minute mark. Also during my tests I found that the jobs started being added at about 10 seconds before the 10 minute mark. 10:19:50 pm
Alrighty, trying to fix the problems you mentioned... Code (Text): // ==UserScript== // @name Job Alerter // @namespace stein+fexftw.com // @description Brings you to the job page when the jobs refresh. // @require http://userscripts.org/scripts/source/54000.user.js // @include http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic // @exclude http://www.neopets.com/ads* // @exclude http://www.images.neopets.com/* // ==/UserScript== var nst = NeopetsDocument.Time(true); //this will get time whole time and date var m = nst.getMinutes(); // minutes var s = nst.getSeconds(); // seconds var timeoutID = window.setTimeout(code, delay); if ((m + 1) % 10 == 0 && s > 55){ alert('Jobs refresh in 5 or less seconds!'); window.setTimeout('window.location.reload();', 5000) } else if (m % 10 == 0 && s < 3){window.setTimeout('window.location.reload()', 2500); } Will that work? (Sorry, I have absolutely no knowledge of window.settimeout. I found this on the web: Code (Text): var timeoutID = window.setTimeout(code, delay); so I built off that.
The solution isn't to have the page reload 2.5 seconds later. But setTimeout is a good start at getting the initial refresh. Start from the beginning.. What do you want the script to do? Sometimes it helps to write it out in basic terms then later rewrite it in code. If the page has job listings then you don't want it to refresh Else if the time is x9:50-x0:03 then refresh the page Else calculate how much time is needed before the next job listing then refresh the page Code (Text): // If the page has job listings then you don't want it to refresh if (document.body.innerHTML.match('type=apply')){ // part of the link "Apply for this job" // do stuff here // maybe you want to highlight jobs with rewards over a certain amount // maybe you want it to pick the fourth job and visit the apply link } // Else if the time is x9:50-x0:03 then refresh the page else if (((m + 1) % 10 == 0 && s > 50) || (m % 10 == 0 && s < 3)){ window.setTimeout(function(){window.location.reload()}, 300); } // Else calculate how much time is needed before the next job listing then refresh the page else { var tt = (9 - (m % 10)) * 60 + 50 - s; window.setTimeout(function(){ alert('Checking jobs'); window.location.reload(); }, tt*1000); }
for don´t use multiple opens... Code (Text): if(!GM_getValue("isdone") { if(***here you try something) { GM_setValue("isdone", true) } } Now you understand me? This stops to open multiple tabs... And, forget the ideia to creat this if the time is matching what you need... Get the time, make a count, see how much time you need to open the page, and use setTimeout; about setTimeout: Code (Text): setTimeout(function(){ window.location.reload() }, [color=#FF0000]time going here[/color]); // try find a way to do the time... But don´t use match the time...
1. So... Code (Text): if(!GM_getValue("isdone") { if(document.body.innerHTML.indexOf("base reward") { GM_setValue("isdone", true) } } ? 2. Code (Text): // If the page has job listings then you don't want it to refresh if (document.body.innerHTML.match('type=apply')){ // part of the link "Apply for this job" // do stuff here // maybe you want to highlight jobs with rewards over a certain amount // maybe you want it to pick the fourth job and visit the apply link } // Else if the time is x9:50-x0:03 then refresh the page else if (((m + 1) % 10 == 0 && s > 50) || (m % 10 == 0 && s < 3)){ window.setTimeout(function(){window.location.reload()}, 300); } // Else calculate how much time is needed before the next job listing then refresh the page else { var tt = (9 - (m % 10)) * 60 + 50 - s; window.setTimeout(function(){ alert('Checking jobs'); window.location.reload(); }, tt*1000); } -How do I change text on the job agency basic job page? Like... varpay = ____ if varpay > 5000(<b><u>varpay</b></u>) -what exactly is settimeout? Is it like a x.Pause or x.Wait ? I don't completely get it.. -Could I do something like.. Code (Text): if (document.body.innerHTML.match('type=apply')){if(!GM_getValue("isdone") { if(document.body.innerHTML.indexOf("base reward") { GM_setValue("isdone", true){if(!GM_Value("isdone", true)//how do I terminate script from here on? } } }
If you're using the code I posted then I would ignore steinn's post. You don't need it if you're following your "flow chart" for what you want the program to do. I've already used the code to help me do the jobs.. I can't believe I never did any jobs before now. setTimeout is a way to get a function to happen at a later time. There's no real pause function in JS though. setTimeout("what you want it to do", "How many milliseconds you want to wait until it does it") To find what you're looking for (to change, remove, whatever) you need to practice going through the page xml using xpath. I'll give some examples of xpath expressions to find other things on the webpage. Hopefully you'll be able to use those to help you figure out what's needed when you want to select whatever you want, like varpay.
Look at this code, you will understand about settimeout. And how can you do some script using setTimeout. http://userscripts.org/scripts/show/54076 http://userscripts.org/scripts/show/54095 About change the page... use: "attacked item".innerHTML="<h1>LOL</h1>" or "attacked item".style.color="#000"; "attacked item".style.background-color="000"; Example: Code (Text): document.getElementById("content").innerHTML="<h1>LoL</h1>"; //This will chang the itens on content in neopets page; If you wanna highlight some job: Code (Text): document.getElementsByTagName("tbody")[1].getElementsByTagName("tr")[x].style.backgroung-color="#000"; //in this case x should be the number of the job, fist job: [0], second job [1]... But its best you do something that auto opens the page of the job. [/code]
Wesley's scripts aren't a good example since the functions he uses are hidden and the times are math equations with variables. Examples should be basic like: Code (Text): window.setTimeout(function(){window.location.reload()}, 5000); // reload the page after 5 seconds do you mean attach? I'm sorry but I need to stop critiscizing there since, like your posts, it won't help Fexxel. Here's an updated script removing the require file since you don't need it. You can see how I determined the time with one line of code. Code (Text): var nst = document.getElementById('nst').textContent.match(/\d+/g); nst[0] is the hours nst[1] is the minutes nst[2] is the seconds I've also changed most of the reloads to go to the basics job page since the script runs on all employment pages and you don't want to refresh those pages, you want to go to the jobs listings. Some of the ways I go about figuring out if something happened on the page like searching for '<b><b>' to see if you got a job, may seem confusing but it's that way so that the script would be usable by as many different languages as possible. Of course if it's a personal script that's not necessary. Code (Text): // ==UserScript== // @name Job Alerter // @namespace foo // @include http://www.neopets.com/faerieland/employ/employment.phtml* // ==/UserScript== var nst = document.getElementById('nst').textContent.match(/\d+/g); var m = nst[1].substring(1); // the ones digit of the minutes var s = nst[2]; // seconds if (document.location.href.match('type=apply')){ if (document.body.innerHTML.match('<b><b>') && !document.body.innerHTML.match('type=desc')){ // job listed but didn't get the job window.setTimeout(function(){window.location.replace('http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic')}, 300); } return; } // If the page has job listings then you don't want it to refresh if (document.body.innerHTML.match('type=apply')){ // part of the link "Apply for this job" allDivs = document.evaluate('//td[@colspan="2"][contains(@style,"border-right")]',document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null); for (var x = 0, thisDiv; thisDiv = allDivs.snapshotItem(x); x++){ var reward = parseInt(thisDiv.innerHTML.match(/([\d\.,]+) NP/)[1].replace(/[\.,]/g, ''), 10); if (reward > 5000){ thisDiv.setAttribute('bgcolor', '#dedede') } } return; } // Else if the time is x9:48-x0:03 then refresh the page if ((m == 9 && s > 48) || (m == 0 && s < 3)){ window.setTimeout(function(){window.location.replace('http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic')}, 300); return; } // Else calculate how much time is needed before the next job listing then refresh the page var tt = (9 - m) * 60 + 48 - s; window.setTimeout(function(){ alert('Checking jobs'); window.location.replace('http://www.neopets.com/faerieland/employ/employment.phtml?type=jobs&voucher=basic'); }, tt * 1000);
I explain him before about "attack", he understand perfectly and i give a example... What´s hidden in wesley scripts? I can see everything... I don´t wanna the page open whling i´m wating. include should be in all pages... That´s the best...
This is hidden (http://userscripts.org/scripts/review/54076): Code (Text): setTimeout(arguments.callee, sd.valueOf() - nst.valueOf()); The function arguments.callee, what is it? What does it do? It's not in the source, only in the required files that you have to download to look over.. For someone that doesn't know where to look, it might as well be invisible. I don't understand why the cookie grabbing scripts don't put all their stuff in @require. English obviously isn't your first language but do you really mean attack? Attack - to set upon in a forceful, violent, hostile, or aggressive way, with or without a weapon; begin fighting with or do you mean attach? Attach - to fasten or affix; join; connect; bind If you ever use more than 1 tab to browse neopets, then including this script on all pages definitely isn't the best. An example would be when I look over the neoboards, I read the topics and middle click the links to open them in new tabs. Then I go to each tab, read it, and respond as needed. When I'm done with the tab I close it. I might end up leaving it open to wait for a response. If I happened to do that at 2:49:30 then every tab I just opened will go to the jobs page at 2:49:48. Also if a script doesn't need to be explicitly run on a page, then it shouldn't be included. The code you posted doesn't highlight any jobs. It would actually highlight the navigation bar if it weren't images and if it had a backgroung. I thought this at first, but if you step away from the computer and everything is still running, then it'll accept the job. Since there's nothing setup to automatically complete the job, you'd fail the job. This wouldn't be so bad except that it keeps fail stats http://www.neopets.com/faerieland/emplo ... ype=status Of course you can change or write the script to fit your own wants and needs. I changed it so that it divides the reward by the number of items, that way you have a reward per item price. There might be a reward of 5,250 but if it asks you for 5 books then it might not be worth it. A reward of 3,000 for 2 food items might be a lot better.