Diablo II JavaScript Parser Automates D2 Gameplay
mikegogulski writes "d2jsp is an embedded implementation of a JavaScript engine for executing user program code (scripts) inside Diablo II. d2jsp can be used to make Diablo II do almost anything that can be done in the game by a human player, and some things (such as knowing the immunities of monsters four screens away) that cannot. d2jsp has an installed base in the tens of thousands, an active user community of over 6500, and hundreds of active projects in its script database. Work progresses toward the Holy Grail of Diablo II hack development, the Complete Diablo Bot, which will eventually enable the entire game to be played automatically without human intervention.
All Your RPG Are Belong To Us!"
if I don't understand the motivation behind a project or hobby, I just keep my mouth shut and move on. In this case however, I feel compelled to say this seems like a really dumb waste of time.
Paco: "Hey man, did you beat Diablo 2 yet?"
Dignan: "I dunno, my computer is playing it now..."
Paco: "Oh, so you paid for a game your not playing, and you have to share your computer with a scripting engine?"
Dignan: "Yes, I am stupid, I am a stupid head, a huge stupid headed freak."
Since I wrote the script to that exchange, I took some liberties with Dignans last reply, but you get my general point.
Cloud City Digital: DVD Production at its cheapest/finest
All of my work is automated to do itself.
My oven cleans itself.
Garden Waters itself.
And now my games are all automated to play themselves.
Time to start drinking a glass of wine a day.
Actually, shouldn't you be looking for a machine that will drink it for you? Maybe a garbage disposal with a VBScript engine?
Is there nothing I can do without it being automated?
You need an electric monk to believe things for you now.
A waste of time is investing literally hundreds of hours a week on a video game. This is quite the contrary, it gives you the ability to play when you want, with the awesome items/characters, without having to spend the countless hours to build them up yourself.
It's a concept even a non gamer should understand. If you already don't enjoy something, of course anything branched off of it will be of ill regards in your mind. This allows people that still enjoy the game a chance to still play and compete, while being able to fulfill other facets of their life.
This thing has the power to make Diablo2 even less interesting ? How cool...
So... It's like building a segway to run on your treadmill?
Honestly, this is a quite amusing cheat, and one that has plagued MUD, MOO, and RPG developers for years. If you have a game that requires no real thought or interaction, and whose gameplay consists of "hack monster, pick up shiny thing," the real fun can be in teaching a computer to play the thing while you read the paper in the morning.
Quite frankly, this brings Diablo to a whole new plateau of intellectualism that I have never thought the series would achieve. Besides, the program collects shiny things for you. Shiny things!
The ______ Agenda
From here on, I declare all wisecracks about not playing the game to be Redundant. The jokes been made. If you don't understand the fun is programming to beat the game, think about it. If you don't think programming can ever be fun, go back to Fox.
Do you know how tedious finding items is? This is a bot that will do it for you. I've been able to start doing my homework again, as well as other 'real life' tasks. When I want to play I stop the bot and see what it found. Good items: YAAY! No items: oh well... No hours lost to the game! It's brilliant.
Crystal Meth: Would you ingest somthing made from a poisonous gas and an explosive metal? You do it every day -- Salt!
Most of the comments are idiotic. You don't understand the concept of the game. Diablo II is an ITEM based game. The better the ITEM, the more valuable it is. Out of this came an economy. A virtual trade for better items or to sell for cash thru auction houses. Now the bots and scripts were created to get these items out greed for more cash. It was designed to automate repetive runs on boss monsters that yield the best items. Its not unheard of bots making 20,000, 40,000, 100,000+ runs to get the item drops.
Everyones opinion on this seems to be negative, but what is so horrible about it? It has made money for many people involved... For kids that just want to find items, but don't have the time to sit there and do a boring task to get them, they can have the bot play the boring part while they do the fun part. Is there something wrong and horrible with that? Everyone involved has had a great time coding or playing the part of the game they want to... Not every aspect of a video game is meant for everyone, so why force yourself to do the boring part to compete at the fun part? If something could do your job for you (better than you), and all you wanted to do was spend time with your significant other or party, would you take that oppurtunity? For someone who loves a game, it's the same thing.
That's scary.
Diablo2 meets ProgressQuest but with the programmability of Robocode!
I love it! I can't wait to try it.
Can anybody tell me how the JavaScript engine interacts with the game? Do they somehow intercept all player input (key, mouse etc.) and let the script generate those inputs? Or is there some other hackery at work? Docs are brief on this.
Any chance the same ideas could be used for other games? A general game scripting environment? It would free all those everquest addicted people, or at least let them go to the bathroom once in a while.
I just want to know whether the person who wrote this program realiazes the irony of them slapping a licence agreement on a program whose sole purpose is to violate another programs licence agreement.
Slashdot: Proof that a million monkeys at a million typewriters can create a masterpiece
If only Blizzard could provide server-side scripting support, we could conquer lag!
This is said only half in jest. First point: for a game designed to be played over the Internet, Diablo II is shockingly lag intolerant. If you're on the same continent as a server, then it's not too bad. If you're stuck on a modem in Australia, whole swathes of skills or gameplay styles just don't work well or at all.
Second point: server side scripts represent a way of dealing with a game at a higher level. Instead of making a click-fest of a game where latency and fast mousing skills count -- such as Warcraft 3 for example -- what about a competetive game where all the twitch aspects are handled by programs at the business end of the game, instead of by hand over a slow internet link? The skill and fun then comes into selection, deployment and generally higher level strategy. Or even into script writing. (Self and friends are working on such a game, but even we aren't holding our breaths for it to become a playable thing. Free time coding and all that.)
PS: It was always more fun writing client robots for LPMUDs than it was to play the MUDs themselves.
Funny, it doesn't violate a single license agreement. You can use this program offline, it isn't strictly for battle.net.
As such, no company can tell you which programs you can and cannot use with their software. There is no EULA like that that would stand up in a court of law.
The license was written back when the program was originally going to be open source. I realized quickly that this would be folly, and decided against open sourcing it, and have been the sole developer ever since. This license is just a remnant from that era, and also a means of protection so people cannot sell my program on eBay. Yes, people have and do attempt that from time to time.
Adding scripting into games is a great idea, but it is (mostly) wasted on first-person games. Where it is really useful is in real-time strategy games (Command and Conquer, Homeworld etc.). A player with prepared "smart" scripts would be able to give high-level orders to his units and have them act with rudimentary intelligence, gaining a real advantage. It would also make the games more realistic.
Sure, most such games allow one to group units and perform rudimentry "smart" actions (such as returning for repair/refuel when damage is high or fuel is low) but that isn't sufficient, especially when handling a large number of units. Everyone who played these games knows the sinking feeling of watching helplessly when some critical units take the most inane course of action... The game then reduces to a glorified ardace game, won by the faster-clicker instead of, well, the better strategy.
Does anyone know of a reasonable scriptable real-time strategy game?
Is their webserver running from this same script engine?
As such, no company can tell you which programs you can and cannot use with their software.
Battle.net isn't software. It's a service. And as such, it has terms of service. If you want to use Battle.net, you have to abide by the terms of service.
I write in my journal
When are they going to have code libraries that write code to write code to play a game?
Reminds me of RealTimeBattle, only not as flexible.
It's a hall of mirrors!
Keep your packets off my GNU/Girlfriend!
Let's rewrite the turing test, buddy ;-)
[Pruneau
Once again, d2jsp also works in single player mode, or on bnetd servers (which, for those that have been on a mountain top the past year or so is an emulator of battle.net).
In neither case does it violate any user agreement, or laws.
Progress Quest is a next generation computer role-playing game. Gamers who have played modern online role-playing games, or almost any computer role-playing game, or who have at any time installed or upgraded their operating system, will find themselves incredibly comfortable with Progress Quest's very familiar gameplay. Progress Quest follows reverently in the footsteps of recent smash hit online worlds, but is careful to streamline the more tedious aspects of those offerings. Players will still have the satisfaction of building their character from a ninety-pound level 1 teenager, to an incredibly puissant, magically imbued warrior, well able to snuff out the lives of a barnload of bugbears without need of so much as a lunch break. Yet, gone are the tedious micromanagement and other frustrations common to that older generation of RPG's.
Progress Quest belongs to a new breed of "fire and forget" RPG's. There is no need to interact with Progress Quest at all; it will make progress with you or without you.
http://www.progressquest.com/
I think what you're doing may be covered under the following provision of the battle.net ToS:
Can I create and/or distribute hack and cheats for your games?
No. Blizzard Entertainment® does not support or condone the use or distribution of cheats and/or hacks for use with Blizzard Entertainment® games under any circumstance.
This script allows a person to progress in the game without being present; as such, under some definitions (i.e. the ones Blizzard would use) users of your script could risk being banned, especially since it gathers information from monsters not currently on the screen.
Is it strong legally? No, but neither was their action against bnetd, and I think we all know what happened there.
I would also like to say, as a struggling legitimate Diablo II player on the Realms, that Pindlebot, Maphack, and other cheats, hacks, and scripts like yours make it very difficult for players such as myself to avoid being killed by overpowered pks in public games, or to compete in a crowded Pindlebot and hacked item economy. Honestly, I would very much appreciate it if you specified in your license that your product could not be used on the Realms, or if you instituted some form of technical control. I think other legit players would as well.
You got that just exactly right, Coward, with a few larger exceptions.
.ini files at all: "ParseIt". You can reference that information at http://www.fileaholic.com/idgames/utils/stats/pars eit-b1.txt or just take your pick from the multitude of links by doing a Google search on "parseit Armstrong".
a) No javascript engine has ever been "incorporated into" DiabloII. Probably never will be.
b) njaguar didn't copy the idea from smoke, and he didn't do it out of "smite" (could you possibly have meant "spite"?). The idea has been around since '98 or before when Jared Armstrong wrote the first console for the game "Sin". For DOS, even. The console has a familiar name if you have looked through
c) d2jsp is by no means a reverse-engineered JED, and njaguar has better means of "exercise". d2jsp is utterly different at the very core of the program. To be certain, DiabloWorld, morg, et. al., would have loved to have njaguar hang around and give them all this glory and thunder. But since he did not have to use the same hacked/phony packets (he uses none), nor be reliant upon programs such as d2HackIt in his scripting, he properly did NOT name his program a JED release, and he SHOULD take the full credit that he deserves. The credit for going this distance is his alone.
And just so that you stay current, Anonymous Coward, Smoke is still posting at DiabloWorld. Check out his comments in morg's DiabloWorld forum, in her piteous attempt to slam njaguar in any manner possible. I won't corrupt this post with a link to that ugliness. In that very post, smoke recognises d2jsp's superiority, and I suspect that this will forever be the thorn in morg's side. Anyhow, If smoke needs additional credit (and it appears that he does not), by all means, let him do the work. Elsewise his programming time was up long ago; his work finished on a console which has hit an obsolescence out of his own complaisance or lack of interest, remaining utterly and fully dependant on d2hackit and/or other people's code.
So please, take smoke's own advice to stop sniping, and just play quietly in your own sandbox. Honestly, the folks at d2jsp won't miss hearing you whine a bit, I promise.
I wrote this after all the hacked items, all the Iths, etc. These ruined the game. Duping ruined the game. Botting came long after these "bad cheats", and if anything, has only made the game better. It puts LEGITIMATE items back on the market, instead of hacked and duped ones. This gives players that refuse to use these cheats the only semi acceptable advantage possible. All items and experience gained with this bot is 100% legit, it does not make use of any exploits or bugs in Diablo II's code.
Blizzard went after bnetd because it allowed people to use pirated copies of their games on public servers. Since the people playing on Battle.net have already bought the game, they are in fact customers, and since we get over 100,000 unique hits a month, I'd say a huge portion of their customer base uses this (for whatever reason). That would be pretty silly of them to piss off such a huge chunk of their customer base, especially considering they aren't making nor losing any money in either case by the existance of this product. If anything, it only increases the longevity of the game, and popularity of the company, which can only mean positives for their marketing.
Blizzard punishes the legit players. I started getting into Diablo II hacking after being falsely accused of using hacks/cheats in the first place. This was back when they first started tagging "cheaters". I had never used a single hack or cheat before. They insisted I must have used some form of cheat, which was complete bull. After that I pretty much gave them my mind and decided "why not, I'm getting accused of it anyway, and am forced to play with other people that HAVE in fact cheated." Unfortunately, my case isn't the lone example. Remember the fix for the Soul Stone? Realm down for 30 minutes! Good job blizzard! What about the realm downs people still get all the time while playing legit? Funny, my bot and scripts never get realm downs... The storys just go on and on... So, if you want to continue playing the game "legit", and try and tell other people what to do, go right ahead. But don't expect people to voice their reasons as to why things are the way they are. Blizzard created the path on which its users have followed.
Want to hear one of the biggest oxymorons in existance? "Original Idea" Go think about that, and call me in the morning.
paying an interest in my lad's online activities I got into Neopets in exatly the same way. I spent hours finding which games could be played by html alone (they have a lot of flash games) and ran a bot to monitor the stock market and pick up the free stuff from the donations tree.
likewise once I'd written the code and ran it for a few weeks I took it out of the cron as my interested faded.
I think my pets have starved to death by now
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
Oh so very true. Jag would have been glad to work with great programmers like Cigamit and Smoke. Both definitely know what they are doing. As it were, the people in charge of the website kicked njaguar out, because both webmasters could not read his code, and assumed it was a trojan. How sad is that? Think of the potential of things had it not been for the idiocy of 2 people. d2jsp came after JED. Why? Because njaguar was banned for writing good code. A lot of people followed him over to his new project, and many more sense. That's where we stand today. A petty war between children, started by adults, at this point. Could it have been handled better by everyone? Yeah sure... Does it matter at this point? No, not at all. We accomplished what we set out to do, and we had fun doing it. Regardless of what could be said, we got what we wanted, and any of the true upstanding adults on the other side did as well. Thanks for starting out everything Smoke. It was your code that initially got me heavily into the tech world. Regardless of what has been said between people, thanks for that.
That's scary.
First there was Rogue, then someone wrote Rogomatic. Then someone wrote a limited but cool-looking clone of Rogue called Diablo II, and someone wrote d2jsp. History repeats itself!
This is the typical loser talk you hear from every single hacker on bnet. Hack X ruined my game so I use hack Y because its the only way to compete with those using hack X. Its the reasont there are hundreds of maphackers on the realms, and its this kind of talk that makes them think they are legit. Thats why whenever I get into a legit game with people playing through the slow areas in act 1, some maphack user always joins the game then insists on running straight to every wp, every stairway etc before impatiently spamming HERE HERE HERE because the legitimate players havent found the way the old fashioned way yet. Every single person says it just lets them operate faster, but when you come down to it thats the same excuse the dupers have, why run pindleskin 10000 times for a grandfather when you can just dup one, the duping doesnt use any server bandwidth, doesnt require extra servers, but 5000 people running pindlebots 24/7 sure chews up an awful lot of game slots on the bnet servers, sure the pindlebots dont mind waiting through a 2000 game queue to get into a game, but the same queue is a pain in the ass for anyone who is actually sitting at their keyboard playing the game. All those bots chew up resources that were assigned for the use of players and reduces the standard of play for those players. Also dont forget that all the bot generated items have a similar negative effect on real players, they saturate the marketplace meaning that the piddly few items legit players find are worthless for trade, not to mention the trouble with item grabber scripts etc, while im pressing alt to see whats dropped some script has already grabbed the loot for a player who has 50 of everything stashed from his bot anyway, how does this not impact on my game? And dont go blaming blizzard because you havent the guts to play the game as written. "I didnt mean to steal those Nikes" said the criminal, "but dont blame me, blame Nike for making it too hard for people like me to afford them". If your wearin your ill gotten gear, its just stupid to look down on those wearing gear ill gotten in a different manner, your just taking the same path as every other loser-lowlife-cheating-whiner out there, ruining other peoples experiances in life/games/whatever just to improve your own.
Slashdot: Proof that a million monkeys at a million typewriters can create a masterpiece
You are pathetic. You are imposing what YOU enjoy about the game on OTHERS. What makes Diablo II so popular is the fact there are dozens of different aspects of the game to enjoy, and everyone enjoys something different.
Go back to your socialist country and stop trying to impose your opinions as word of god.
Modifying your client breaks your EULA, if you use it and get banned its your own fault.
1. They increase the server load, since Blizzard never intended people to be able to play the game 24/7. In practice, this is often seen as increased game creation queues.
2. The bots decrease the item value and skews the game economy. This would be no problem if players ran the bot on the Open Realms this game has to offer, but since they're usually used on the Closed/"Secure" Realms to harvest items that should normally take a lot of patience to find (and therefore be rare), many legit players not using bots are affected. Simply because the very rare items non bot users have found is suddenly not worth as much anymore in in-game trades. Bots inflate the item values.
What surprises me, is that there are so many bot users that seem to find using the best items this game has to offer as the best part of the game. Personally, I find the process of earning the items through some effort the best part. Without any effort put in the game, I would feel no accomplishment whatsoever and no pride about finally getting some "uber item", but I suppose bot users still do, even if their computer play for them while they sleep.
Beware: In C++, your friends can see your privates!
It puts LEGITIMATE items back on the market, instead of hacked and duped ones.
No, not *instead*, because it doesn't *remove* hacked and duped ones. What bots do is to *add* more botted items to the market along with the hacked and duped ones that previously were there, something many don't like since they skew the in-game economy even more.
Beware: In C++, your friends can see your privates!
Heh, I just wish people "enjoyed" bots on the Open Realm aka the only proper home of 3rd party software designed for Diablo II.
Beware: In C++, your friends can see your privates!
I always like a good insult instead of refuting the argument, but I play the game as it comes out of the box, i dont cheat, dont dup, dont use maphack/scripting/whatever. I am not imposing anything on anyone which isnt what they chose to impose upon themselves the moment they bought the game. It is the people using scripts/hacks/etc that are imposing upon me and those like me their view of how they would like the game to be, I have not forced anyone not to use hacks, but everyone using them has forced me to live in a realm consumed by them, so who is imposing on who? Nothing I do on the realms has a negative impact on your game experiance, but you cannot argue the same about the impact your activities have upon my game experiance. The closed realms are there because people hated the dups/bots etc in Diablo 1. The open realms are there for the people who enjoyed that sort of thing. So why do people insist on messing with the closed realms, it is just so they can try to pull a veil of legitimacy over their actions. If you want to play the game as you think it should be, then do it on open where it bothers no one.
Now, I am sure you are a pretty intelligent person, otherwise you wouldn't have been able to pull off d2jsp, as a sheer technical accomplishment it is amazing. I just dont see how you could fail to see the harm that using it does to the realms. However enough of a flame war, how about changing the direction of this thread, I would be interested to hear if you believe there is anything that Blizzard (or indeed any games company) could do to prevent programs like this being written, short of moving to an utterly dumb client where the client literally only knows the exact information as is shown to the player on screen at any given time?
Slashdot: Proof that a million monkeys at a million typewriters can create a masterpiece
Go read my forums, to find out more about me before you continue to assume.
1) I pretty much quit playing D2 when I started work on d2jsp. The state of the realms is in fact so bad that it is both not rewarding, nor fun, due to the sheer number of cheaters out there. I have only recently even USED it [d2jsp], and that was for the enjoyment of writing intelligent scripts, and of course getting items for the free item giveaways that I host.
2) When I do play, and did play, I never once used any hacks/cheats/exploits. Not even maphack.
3) I have played a few times since I started writing d2jsp, and even wrote my own mod (check the Mod forum on my forums for a link to the mod) which was hosted on a private bnetd server, and I had strict anti cheat rules. You could not bot, use any cheats, etc.
It's ironic, and somewhat silly, yes. I wrote d2jsp for the challenge, not for any personal usage, so again, your arguments directed at me are totally moot.
I'm sorry, I didn't respond to your second paragraph.. :)
:) In that sense, I did in fact "win". :)
Just like it's impossible to write a program that cannot be cracked, it is also impossible to stop someone from being able to write a cheat or hack for a game. Given enough time, and enough interest, anyone with the skills necissary would be able to accomplish something like this for *any* game out there, past, present, or future. The only way to prevent this is to make it on a console (a very hard to hack medium). And even then, it's always going to be possible, and done.
Give people a medium in which to compete, and inevitably you will have people that must [try to] cheat. I suppose it's human nature to want to be the best, by any means possible. Again, I didn't write d2jsp for personal gain, other than as a programming and reverse engineering project.
slapping a licence agreement on a program whose sole purpose is to violate another programs licence agreement.
You mean like airlines vs. farechase?
Will I retire or break 10K?
I don't belive it would be possible to program anything on conventional computers with known technolgies that another program couldn't be written to automate.
Take a look at a Slashdot story and an article I wrote about the CAPTCHA project.
Will I retire or break 10K?
The pkers, dupers, bots, and excesive lag drove us off of battle.net. Blizzard's refusal to aggressively go after the cheaters was bad enough, but when they accussed the bnetd crowd of piracy, they lost me as a customer. I own two copies of the original Diablo, Warcraft, Starcraft, a few expansion modules, and Diablo 2 and D2X. I didn't even consider their newest game. They won't get another dime from me. They lost a loyal customer.
Yes, we have our own bnetd realm. No, we do not pirate. Every single person on the realm owns the damn game. Blizzard has no right to tell us we can't play it the way we damn well want. We have realm rules, break them and get booted forever. We've only needed to boot two people so far (one for using cheats, the other for being an annoying asshole).
Blizzard says we are pirates because we don't validate the CD serial number. Well, we can't. Blizzard won't tell us how to do that and won't set up some kind of validation server for us to go through. The bnetd development crowd has offered to work with Blizzard. Blizzard refuses to cooperate.
The people running the diabloii.net (and diabloii chat room) are just as bad. They are so busy kissing the Blizzard ass that they alienated their biggest supporters by banning any and all discussion of bnetd.
-- Will program for bandwidth
There I registered. Somehow I anticipate this will be yet another website that I read too much of at work.