Jump to content

WoW Bot - Question


bottura
 Share

Recommended Posts

Ok, here is my Question/Problem:

1. I have a (nearly) full working WoW Bot (selfcoded, already botted from 30-69) and all works fine, there is just one thing that dont work correctly at moment: Walking to Corpse.

The Bot always stays at one Place and "simply" kill all Mobs around. If he die you must only run a knowing way, but the Problem is Keypresses and Mousemovements aren´t 100% the same from use to use. Sounds weird i think... Let me explain:

I.e. first the Bot need to Rotate 45° right, then run 20 meters forward. The Bot will do this, but he rotate i.e. 40°-50° and run 15-25 Meters.

the Ghostwalk function:

Func Ghost() 


        if $ort = 1 and $gerannt = 0 then       
            Send("{NUMPAD5}")
            Sleep(1000+($Random * 10))
            MouseClickDrag("right", @DesktopWidth / 2, @DesktopHeight / 2, (@DesktopWidth / 2)+33, @DesktopHeight / 2, 100)
            sleep(1000+($Random * 8))
            Send("{NUMPAD5}")
                Send("{w down}")
                Sleep(4300+($Random * 7))
                Send("{w up}")
                    Sleep(1000+($Random * 6))
                    MouseClickDrag("right", @DesktopWidth / 2, @DesktopHeight / 2, (@DesktopWidth / 2)+29, @DesktopHeight / 2, 100)
                    sleep(1000+($Random * 4))
                    Send("{NUMPAD5}")
                        Send("{w down}")
                        Sleep(12000+($Random * 50))
                        Send("{w up}")
                            Sleep(1000+($Random * 2))
                            MouseClickDrag("right", @DesktopWidth / 2, @DesktopHeight / 2, (@DesktopWidth / 2)+15, @DesktopHeight / 2, 100)
                            sleep(1000+($Random * 9))
                            Send("{NUMPAD5}")
                                Send("{w down}")
                                Sleep(7000+($Random * 50))
                                Send("{w up}")
                                    Sleep(1000+($Random * 5))
                                    MouseClickDrag("right", @DesktopWidth / 2, @DesktopHeight / 2, (@DesktopWidth / 2)-23, @DesktopHeight / 2, 100)
                                    sleep(1000+($Random * 7))
                                    Send("{NUMPAD5}")
                                        Send("{w down}")
                                        Sleep(7000+($Random * 50))
                                        Send("{w up}")
            $gerannt = 1
            $totzahl = $totzahl + 1
        endif
        
        
    Sleep(5000)
EndFunc

thats the full code, let me explain it:

First problem is that "Keydown" events aren´t exactly. If i use:

Send("{w down}")
                Sleep(4300)
                Send("{w up}")

The Bot dont exactly move forward for 4,3 Sec. I Looks more then 4,1 - 4,5 sec. I don´t know why this is, maybe because Framerate and Lag?

The Second Problem is with the rotate thing:

First i tried to simply use Keydown: (example)

Send("{d down}")
                Sleep(450)
                Send("{d up}")

But there is the known Problem like above.

So i tried Mousecontrol to change direction:

MouseClickDrag("right", @DesktopWidth / 2, @DesktopHeight / 2, (@DesktopWidth / 2)+33, @DesktopHeight / 2, 100)

Or directly with Mousedown and Mousemove, but all 2 ways do the same weird thing:

The Bot dont Move the Mouse directly some pixels in x. I looks more like the amount in x and the half or so in y.

Example:

MouseClickDrag("right", 100, 200, 150, 200)

It dont Move the Mouse (the sight in wow) only from X100 to X150, it looks more than from X100 to X150, but also Y200 to Y225.

So the sight in WoW turn around and dont simply turn the char around.

Also the Speed increase extreme, example: a movement of 10 Pixels turn 10°, but 20 Pixels turn like 50°.

(i hope someone understand what i say :/ )

Maybe this has something to do with WoW warden Program? Because some time ago (i think is was Patch 2.3.1 or 2.3.2) before the Patch i used very High values for my Timers (Buffs etc) at Program start, so the Bot Buff himself at start.

$bufftimer = 99999999999

Before Patch: Timerdiff value = very high number (like it should be)

After Patch: Timerdiff value = big number below 0 - but increase like Timerinit without a Timerinit, and also the timer run without the Bot, so if i end the Bot and start later the Timervalue is increased liek the Bot was running the whole time. o.O

Solution:

$bufftimer = -99999999999

now the negative number generate again a very High positive number.

Simply: before the Patch a Positive number generated a Positive number, after Patch a positive number generate a Negative number and a negative number generate a Positive one.

But i dont changed something in the Script or somewhere else in this time, so is must be WoW (warden) wich cause this problem.

Ok the second thing i want to ask:

I use some "GetPixelcolor" to get the WoW Charstatus etc. to the bot. But i read here in the Forum that many People use "Pixelsearch" - i never used this - but i thing a Pixelsearch take much more Power than a Pixelgetcolor or? I mean, things like Ui are always on the same Position.

Ok that was it :) I hope your Head dont explode from this Text and sorry my English isn´t the best i know. :/

Edited by bottura
Link to comment
Share on other sites

Its because:

1# your program runs behind WoW and your CPU is at 100% what results in some synchronisation problems.

2# You have a ping to the server. this, lets say 150 ms (mmorpgs always got some bad pings) will ALWAYS make your commands sort of inaccurate.

As i did the same thing here is what i would do to fix this:

I tink WoW got a map and a compass in the top right, as well as coordinates.

If you know how to hexcode your ram and stuff you will get all information you want - but i don´t think you will so heres the second way:

Use the "Arrow" of your character as a marker for your viewangle. By using pixelsearch you can mark some special pixel to find the arrow. and some to find the top of the arrow. You get a line between those and with that a angle of X°

You even get your pos. on the map and can correct misswalks.

I did this for "Silkroad". and defined special places with monsters and made a "box" around those places. If the "Arrow" (position of player + viewangle" touched the box the charecter would turn 200° an go on fighting....

Link to comment
Share on other sites

You won't ever get a fully functionnal and accurate bot if you don't use memory reading. For movement, mine is 100% accurate because it turns according to my character.s rotation + coords and the target's coords. That way, I'm always gonna rotate in the right direction. I don't timers either... I make it stop when I'm at a certain X and Y coord.

EDIT:: Also, you're making mouse drags according to your desktop height and width divided by two.. So I assume you're running the bot in full screen. That works if you're in full screen, but you should make the mouse drag relative to the WoW window height and width. That way, if you run the bot in window mode, you will always have your mouse drags working.

EDIT2:: Most of the bots use waypoint system, where a user define multiple X and Y coords and the bot will path throught them and kill mobs around. However, I made a variation of that system and use "Wayzones", which is basically the same, but instead of having a precise X and Y coord, I got a 4 x 4 yards square, and the bot chooses a random point in that square to move to. Randomization is VERY important, otherwise, players will report you.

Edited by galpha
Link to comment
Share on other sites

Well Congratulation On Making A Good WoW Bot...But...Yes...Every Online Game/Server Will Have Lag, This Lag Will Distort Your Commands...Making Them Fairly Wrong. Which...A WoW Bot Cannot Fully Do This, Although You Have Got Very Far, There Is Always Different Lag, Meaning, Everytime, It Will Do Different Things!

Link to comment
Share on other sites

Like I said, lag isn't the problem here. The problem is that you have a static routine to bot with, which won't work in WoW. Way too many variable can change that. Since your bot isn't checking in WoW memory, what happens if:

- You're botting in an area where there are some patrols. You get attacked, but your bot has no way to check if you're in combat.

- A player talk / whispers / emote / follows you, how your bot gonna know what to do with just pixel checking? Impossible

- The mobs fear / knockback... your static moving sequence is screwed.

- If you get stucked, your bot can't check for that...

- And so on x 100.

It's a nice effort you did there, but you won't won't get far unless you start checking in WoW's memory. Also, I see that you have timers and all for moving, so I assume you did this bot for only 1 particular small area. If you need to change area, you will have to recode all the next area... GL :)

Link to comment
Share on other sites

If i am in Combat there are 2 crossing sword, where i can check pixelcolor, so the bot know when in combat ^^ but surely i know what you mean, thats why i made it simple and the Bot simply turn around and stand at one Place (is know this look very like a bot, but i have also very much randomizing in all things he do so its ok and there are much places where is nearly never someone).

I will try some things for rotating when ghostwalk, if this works nearly correct its far enough, because its not so bad if he stands on a little different location after ressurection. :)

thanks for your replies.

Btw: i dont want to do memorysearch etc. because i think warden can detect programs that do that or?

Link to comment
Share on other sites

Warden can't detect memory reading. In fact, none of the gaming anti-cheat can detect memory reading. I suggest you look at Malu05 source codes. He has a script that uses reading for navigating. It should give you a pretty nice headstart.

Link to comment
Share on other sites

Warden can't detect memory reading. In fact, none of the gaming anti-cheat can detect memory reading. I suggest you look at Malu05 source codes. He has a script that uses reading for navigating. It should give you a pretty nice headstart.

Then I don't understand why so many people talk about memory-reading as risky if you won't be detected anyway (apart from the issue of getting the right memory location and interpret the value correctly)?
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...