Showing posts with label BOT. Show all posts
Showing posts with label BOT. Show all posts

Wednesday, April 15, 2009

The End

I just got contacted by a lawyer from Blizzard. Not sure how but they got my contact info (I guess from DNS records) and called me at work.

At first I heard he say something like "I am a lawyer from Blue entertainment ...", and I thought "Oh another advertisement", then he asked about zoloFighter, and my thought was "WHAT?!!".

All conversions are confidential, so I can't disclose much. I just got home and have disabled the bot. It was fun while it lasted.

Wednesday, February 18, 2009

Finally fixed the old glider profile

Old glider profiles has only x,y positions, and zolo Orbiter uses x,y,z positions to track where the toon is. The reason is at some point, I found a great spot under water for farming and it makes much more sense to not only move left/right but up/down as well.

OK, I think all old glider profiles broke on that one, and I always want to fix that because so many people keep telling me it is broken (usually new users).

The fix requires 2 steps. First I added z position check in my code.
And I added a fixer to the old profiles. Once the old profiles are converted, run it through the fixer, it will fix all irregularities in glider profiles, make it Orbiter compatible.

The funny thing is, I lost my original code for the converter, Glad minifss has included the converter in his download, so it is easy for me to decompile.

Tuesday, September 9, 2008

Two Years of ZoloFighter

Just noticed I have zolo fighter released to public for 2 years now! From my own fighter history, fighter was released to public 2 years ago. I used it for myself for a while too. This is amazing. I remember when I first created the bot, I have to add way points one by one, it won't loot either. I was happy to have something just to kill the mob.

Now the bot is totally different than the old one, with all the security, javascript, Orbiter pathing.

Here are some statics that might be of interest:
Total number of different IP addresses that used the bot: 20000+
Total number of users that has paid: 300+
Total number of payments: 400+

Total $ amount I got in my paypal account: $200+ (because paypal take about 40% out of the dollar).

And because every year I just use the total dollar amount as my income from the bot, I am paying duplicated taxes on those (each year I will pay tax on the total amount, because I don't have time to deduct the amount that I already paid tax on from previous years, not much either). All income is donated of course, so this is just a money loser.

Tuesday, August 19, 2008

Yet another release and more testing

Yes, I released 0.8.3.9. turned out I forget to put the fix over to 0.8.3.7 and during a test the bot is running around again. I was shocked and found out I didn't sync the changes over (that is what happens when you don't have time and have to broken development down to pieces and multitasking).

So another release and more testing. I also got guests this week and can't do much again.

Saturday, August 16, 2008

Huge memory problem

Yes even I was surprised. I was testing zolo+orbiter this morning before wife wake up, and zoloFighter died due to memory problem.

The first time I saw the memory foot print of fighter, I thought it was my database...

Anyway, the fix was simple too, GC the javascript from time to time.

Wednesday, August 6, 2008

Vista screen capture problem fixed

Yes, after much searching etc, I actually found a good solution. Can't believe the answer is simple and easy, when I was all over the new Vista DWM and try to check if thumbnail can do the trick. But the user better stay in windowed mode, which is much easier than turn off Aero.

I am working on Fighter now, need to finish the step with fighter to integrate Orbiter pather to sales/repair/ghost waypoints, also make the new auto login working (strongly not recommended though).

Monday, July 28, 2008

finally, 0.8.3.0 (Orbiter pather)

Yes I finally decided to release it yesterday, after some extended testing.

The goodies include:
1. Orbit pather and Bastos movement engine. Now zolo will move randomly, and if waypoints are close or crossed, it will go across them instead of follow the same order again and again (if your waypoint goes across entire area in as a mesh, the movement will be totally random). In a way it is similar to IS, except you define the mesh.

2. bot will run to mobs near by actively (if orbit pather is enabled)

3. Ghost res will be smarter now, instead of run the entire normal waypoint to get corpse, now it will select the shortest path to corpse.

4. Turn with mouse now.

With Orbiter pather, you can export the WOW mesh data as waypoint and the bot will move in the 3D world freely. However I think that might put me in risk of violate copy right law (I think that is the reason Judge ruled against glider, as I read the copy section, the violation is not in memory reading, but the use of WOW internal data), so the users should map their waypoints themselfs, not use WOW mesh data.

Friday, July 18, 2008

The Orbit engine is born!

Yes, I have finally made a good model of a smarter path finder for zoloFighter, and I named it Orbit :-)

The implementation has been changed several times, the main goal is to make a smart path finder and scheduler. Initially I thought of a propulsion based system to "push" the bot forward, but that is a bit complex in turn of memory usage. And after some tweak and fixes, I finally decided for our current model.

I am still in the stage of tweaking. The first try, duel to some internal bug, I was using the old system instead, and because some of the randomization in the javascript, it looks like Orbit was working, but was not. I was so happy (at the time).

Anyway, right now Orbit is doing well at times and doing bad at other times, but the main part is working now. So I will give myself a pat on the back and catch the raid on my guild :-)

I will have a very busy week next week, so the release of ZoloFighter+Orbit will be sometime next next week.

Tuesday, July 15, 2008

A dark day for all of us

Yes, I am talking about this, http://news.cnet.com/8301-1023_3-9991451-93.html?tag=nefd.top

Apparently Glider lost the legal battle on copy right?!! So the judge ruled that examing another program is in violation of copy right.

Does that mean the end of zoloFighter? A detailed check on US copy right law, it appears to be that the Glider defense team is making the wrong judgment. The team is defend the work based on section 117, which is assuming Glider is copying the program, while in fact (at least for zoloFighter) nothing is copied, and nothing is modified (unlike other hacks).

So at least for now zoloFighter will continue on, and I hope Glider defend team will pick up some steam.

Friday, July 11, 2008

Possible cause of why some users not able to get offsets

2 or 3 of them reported that it won't get offsets for them, just hung there.

Beside some who got virus on their system (worked after reinstall windows), I found the rest might has something to do with low level drivers.

I use XP both at home and at work. And at home, when I debug my code, the connection to zolohouse will drop if I debug it slowly. But it will never drop at work.

I am assuming it is because I have a cheap ISP that disconnects quickly, and some hardware or driver buffer the tcp/ip traffic while others don't.

So I am doing my own buffering instead, which should solve most of the offset data downloading problems.

Monday, June 23, 2008

MpqNav and dejavu11

I found this link on MPQ and ADT reading: http://www.mpqnav.com/

Seems he helped IS on blizzard MPQ data mapping. This will be very helpfull for bots, because bots will know the terrain info and will be able to make intellect decisions on how to recover (i.e not moving into walls/hills etc).

Tuesday, March 25, 2008

Patch day confusions

Well, today is the 2.4 patch day. A lot of users reported the "Player not found" problem, which is normal after any patch.

The problem is some users said they are EU servers and they got that before patch.

Componding the problem is I did some unnessessary maintaince by deleteing/moving some offset files which I thought was not used on the server.

Now I have lost track of what's going on. Good news is this is an easy patch and I managed to make the offsets working.

The bad news is we will never know what's going on. For EU/Asian servers, they can download the old 2.3.3 version in older downloads and get past this 1 day lag between US and EU servers.

Lesson learned: Never fix what's not broken. (I learned that lesson several times, but this time I just can't control the impulse)

Monday, March 24, 2008

Time spent on supporting zoloFighter

Recently I noticed that now more and more time are spent on supporting the bot instead of personal fun.

So before when the bot is not so popular, I used to bot and watch TV. Now from time to time I have to answer emails, answer questions on different forums (including mine). And more and more people asks me to add them to msn.

That is just a bit NO-NO. If I ever do that then this charity project will became a full time job. At least now I can still choose to answer the questions on my spare time.

Anyway for all new bot users, before you submit a question, please check out my forums first, your question are most likely already been answered. And if you do have a different question, please submit detailed information. Nothing annoys more than "hi man my bot is not working can you help" etc. The excitement of "Oh I got a new user!" has long passed ....

Monday, February 25, 2008

Ban!!

Recently there are 2 banned user reports on the forum. When they first appear I feel the pain.

One guy farmed primal life and crashed server economy (He did get his account back though grats to him), the other simply bot for 2 weeks and get his char from 10+ to 50+. I think that is moderate... When I was rushing to level 70, I got impatient at the end and starting to run it full night, and my speed was about 1 month for 2 chars from 60-70 (and with me questing too, because it feels very slow to just grind).

Anyway, more steps will be build in to prevent banning. I will add back whisper auto reply (replaced by javascript but no one is implementing their own...), and add remote control so we can monitor/reply while at work or school.

Friday, February 8, 2008

floating number format issues

It just come to my attention that in Europe and Russia, floating numbers are displayed differently. For example, 1.0 in US is 1,0 in Europe, and 10,000.00 is 10.000,00 is Europe. So basically my action delay of 1.5s (1 and a half seconds) could be parsed as 15 seconds!!

I am getting conflicting reports on this one. User reports says it is taking the '.', and a friend of my also told me Fortran and C++ libs uses '.'

Microsoft's website indicates other wise. It indicates to use locale independent atof,I need to use atof_l.

So I am really lost. And to write my own implementation means I need to find every place where printf, ostream, atof are used and replace them. Too much work.

And also my configuration utility, which is written in .Net, always print out in the format of the current locale.
This makes me sick!

Wednesday, January 30, 2008

0.7.9.29

0.7.9.29 is released. Since I am so busy this is a temp release. Covers fixes for looting and typing issues (LOOTDELAY and KEYDELAY configuration added for config util). Some computer have problems looting because the cursor moves too fast for the game to react.

Also configUtil had exe rename config on global section. It will ask new name for zoloFighter.exe and zoloConfigUtil.exe, when you save it copies those files to the new name, and add a entry in settings.txt to specify the new name.

zoloFighter will use the name in the config file to launch configuration utility, so the process name will be different.

Tuesday, December 4, 2007

Javascript engine bug again!

I was very close to release of the initial beta battle ground AFK scripts, when all of a sudden I hit a strange problem when start run with release version of the code.

When the execution enters a javascript function that accepts 1 argument, the bot skips everything and starts the next round.

A close inspection found that happens when the bot is trying to access that argument. Isolate to that one function, and the script reports it does not known that argument! Samething running with debug mode is just fine.

The first thought I had is it is those #define statements again. But none of that is the case. While I was stepping through the code, parse of arguments mysteriously changed on a totally unrelated statement (on a compare statement)! Inspecting on the resulting assembly code, and I found the stock return was corrupting the arguments passed in. Turned out the Microsoft optimizer is optimizing on nuts!

After put all javascript engine code on /Od (disable optimization), problem solved.

So that concludes another wasted night.

Wednesday, October 24, 2007

From Robots to God

Yesterday I watch a show called robots on TV. It shows all type of different robots, from the simpler ones that you can program and help disabled people to walk, to the fun ones for research or recreational use. One example of a fun robot is a bot been developed in Japanese university that will move like a monkey and try to jump and grab from wire to wire (in a very controlled environment, where the wires are evenly spaced).

The fun bots, no matter it is for jumping/rolling/crawling, sort of struck me. I just realized that we bot writers who write bots for online/off line games are also design robots, in a very similar way. The only difference is our bots works in a simulated environment. We can call our bots poor man's robot, or virtual robots. There are advantages and disadvantages compare our bot to the real machine robots. Our bots run in a virtual world and there are no mechanical parts, so it is cheaper, easier to maintain (you don't need to worry about hardware limits/changes/costs), but what information available is limited (only what can be extracted from the games, while the real bots can have censors where they want). Both the virtual bots and real bots need to have some real time abilities (been real time means needs to response to real time events, been to coordinate all hardware movements to be able to grab a wire, or respond to mobs fast enough to keep alive).

We virtual bot creators are a level higher than the bots created for fun. The reason been is that we work on an abstract level, that we don't need to deal with feet dragging hardware. This way we focus more on the core part of robot design, that i design robot logic (or AI). The real mech bots creators are limited by hardware, and I don't see any machines that can surpass humans or animals in combination of efficiency and agility soon (machines might excel in a specific area, but will never be as flexible and efficient as humans. )

And before the end of this passage. I just want to say, I don't believe in AI (artificial intelligence). I remember I had this thought ever since I was young, I can't figure out how to design true intelligence. All we can do is design fake intelligence, that is something that looks intelligent, but if you fool around with it you will realize it is just a bot (and that is why it is so hard to make the bots looks truly human even in an online environment, even though only limited actions are available).

I first got this thought when I thought about how to make true random numbers in a computer. The final conclusion is there is no way to make a truly random generator unless you rely on hardware. There is just no way you can design a computer to be self aware, to have true feelings. It is this believe that draws me to the conclusion that there must be a GOD, or a spiritual world must exists that could use this physical world to manifest itself.

So in another sense, I don't believe we could live in multiple levels of virtual worlds (one real world designed a virtual world that has its own intelligence that then designed another virtual world, and possibly this virtual world which is designed by a virtual world would design another level of virtual world and so on), but I do believe that one spiritual world that could manifest itself onto different levels of physical world (for example, each tiny atom could be an solar system, and each of those tiny virtual solar systems are combined by even tinnier atoms and they are also tiny tiny solar systems, and all of them could have a spiritual manifestation, meaning truly intelligence life.

Tuesday, October 16, 2007

Bot improvements

During the weekend, I was boting and trying to farm some valuables. The area is populated but I was watching my toon while watching TV. During the commericals I noticed a hunter which is also a bot (It was very easy to tell, that is why never bot unattended in populated areas). From time to time we both tag on the same mob and dependend on who shoot first, one of us is not getting the loot.

The problem is his gun was faster and more than 50% of the time he tags first and my toon is there assisting him! That was very annoying so I decided to implement something to fix that (if a mob is targeting some other npc, give up).

Initially I thought it is an easy fix. I will just check with javascript (so no binary recompiles) after first attack and if mob is not targeting me, abort. However my gun was more powerfull and usually even he tags first, I could end up drawing argo after the first attack.

Eventually I have to recompile, implement a call back during my spell channeling to call the javascript function processMessages (I am lazy), with a state of "inChannel". That is good for any casters, so when you channel your spell, you will find out if someone has taged your mob and abort.

Most likely I will release it after some more testing. For now I will need to find a good place to farm some herbs. My current farming place is too hard, a lot of mobs and I die too much, with all the repair bill I might just buy stuff off AH.

Thursday, October 11, 2007

Bot crash on javascript

Wake up early this morning so I setup the bot to farm something and go back to sleep.

When I am ready for work, I found the bot has crashed. Curious about what caused it, I

did a trace and found it crashed inside the javascript engine, some assertion about

something variable in the stack frame that should be NULL but is not.

A bit more digging around the code, I found the javascript stock frame is actually

created on local stock. The global context frame is temporarily replaced by it, and

restored back upon execution exit.

Now it is clear. If something happends that prevented the restore of the original stock

frame, the global context frame will be pointed to non-exist space. That something is

usually exceptions raised upon native code (C++ code). It could be that because network

either on Blizzard's side or my side, connection is closed and native C++ raised

exception. I am catching the exception but was too far out thus the javascript did not

have a chance to clean up it's stock.

A good solution will be use the try{}finally{} replacement trick I mentioned before in

my blog to make sure the stock frame is restored upon function exit.