Jump to content

World Of Warcraft Development


malu05
 Share

Recommended Posts

a bot can always be better the a gamer cause to the fact that a bot does not need to adapt his KI to a game it is written one time and for this spacial reason .. his reactions can be nearly real time and if its well enough programmed there are enough rules for attacking and defending, even a player has less.

gamebots can be as good as gods in games if the games provide enough information for the bot to interact with.

the main reason is that the gamer is noting elese the an decision maker for a fixed environment and there is exactly only one best way to do so....

this can easily be handeled by a bot that has the correct infos too.

Edited by JRSmile
$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

  • Replies 470
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

yes that is logical, but how would you translate armor etc into stats? what would you consider`?

sry have not seen your answer yet ...

i would recommend a class for every class :)

because you have to rebuild wows KI for your KI

thats always the problem, but the emuserver builders have released a lot of this functions which can easily be converted to autoit cause they are written in VB ( not for all emus but for wowVB at least)

if you have the formulas wow calculates in combat you can easily calculate the theoretical result of a fight ingame.

cause its a game there aren't as many decisions ( and because of this reason ways to go to) to make as in the real world and hand able by a bot.

lets think of the first chess computer deep blue. it already had the "knowledge" of a worldchampion in chess.... just build out of a set of the rules.

if you know how wow works you have the formulas to make a KI for it.

Edited by JRSmile
$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

Some things out of topic but still on topic.

Evaluating the situation i believe we lack a Project Manager and a Product owner. Anyone up for the job (malu05 ?).

Having someone coordinating the effort put up by us would make life easier.

I'm bossing in RL so it's kinda fun for me to do some programming but it would be nice if we had certain milestones in the development.

Doing a complete automaton and releasing it is in my opinion very counterproductive. The reason is that by doing that we risk having Blizzard sending Warden after the automaton, but creating libraries we encourage people to think for themselves and after a while the actual application areas of such an automaton become secondary issue.

I identified the following areas:

Module for WoW Memory offset handling.

Behaviour Module. Decisions on Fight, Flee, Walk, Target choises ....

Actions module. Healing, Melee, Ranged combat.

Firstoff im affaraid to say that im not skilled enough for bigger projects.

I might be good at making the base pre-development like the stuff i have made so far, but my overall programming will just be a major disadvanatage for such a project.

Libraries is the way, and im sure many people can use it (and not only for wow).

I'm aware of the range scan but still i saw that it can scan for objects like 200+ distance units away.

The server doesnt send information about Mob/Npc objects more than a 100+/- distance.

For some reason some of the objects are keep'd even tho you cannot see them (distance changes etc) and they dont update.

There got to be a "render" tag somewhere that toggels when the server sends a end_object pack to the client.

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

Firstoff im affaraid to say that im not skilled enough for bigger projects.

I might be good at making the base pre-development like the stuff i have made so far, but my overall programming will just be a major disadvanatage for such a project.

Libraries is the way, and im sure many people can use it (and not only for wow).

The server doesnt send information about Mob/Npc objects more than a 100+/- distance.

For some reason some of the objects are keep'd even tho you cannot see them (distance changes etc) and they dont update.

There got to be a "render" tag somewhere that toggels when the server sends a end_object pack to the client.

so theoretically you can decide if mobs are spawning beside you ...

you could maybe create a firewall that prevents a mob from spawning... ( easy traveling :)

am i right?

By the way i would like to see this thread stickied !!!

/signed

Edited by JRSmile
$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

Decided to bust my a$$ (sorry mods) and do a smal library collection.

Functions in it. Pseudocode.

FLOAT GetTurnRadian(FLOAT flTargetRadian, BOOL blFaceAwayFromTarget, <OUT>BOOLEAN blTurnLeft) --- Used by FaceTarget, FaceAway, FaceAwayFrom2

VOID FaceTarget(FLOAT flTargetX, FLOAT flTargetY)

VOID FaceAway(FLOAT flTargetX, FLOAT flTargetY)

VOID FaceAwayFrom2(FLOAT flTargetOneX, FLOAT flTargetOneY, FLOAT flTargetTwoX, FLOAT flTargetTwoY)

VOID MoveTo(FLOAT flTargetX, FLOAT flTargetY, FLOAT flDistance, BOOL blRunning, BOOL blStopOnDamage)

While im still on it ... if any of you can supply me with offsets i can create library with structures that can hold the Mobs (mobile ojects), Iobs (immobile objects), Pobs (player objects). I can't seem to find my printouts on WoW offset scanning but i have a desent idea on how to proceed.

IIRC (im almost 100% sure) it is possible to extract practically every single piece of information from objects in memory. Ex. Mob type like

Unknown, Item, Container, Unit, Player, GameObject, Dynamic, Corpse

There are alot of stuff out there to read from memory, practically everything even the speed that a mobs is moving.

If you want to keep your offsets kinda private from the public you can PM them to me ... i wont post them.

BR

/P

.

P.S.

Functions are practically ready ... will rewrite them to AutoIT script from C#.

Please give feedback on the function definitions ... is there anything else you would like me to implement ?

Practically i have everything ready since i have a working Bot of known origin (It has Sharp in its name) that i rewrote. Don't want to give links to the source since i don't want people compiling it just to find themselves banned.

I will ofc post any AutoIT code i write (not 100% of it if it contains offsets ppl don't want to publish) just to give you a hunch. The complete code can be released in some kind of module where full source listing is not available.

Anyone believes that COM (dll:s) writtern in another language would increase speed ?

Edited by Periklis
Link to comment
Share on other sites

Something on offsets

Every Object in memory has a basepointer?

Every Object has a lenght?

Example.

PLAYER_STRUCTURE_LENGTH = 0x1788
PLAYER_STORAGE_START = 0x1001AB34
PLAYER_STORAGE_END = PLAYER_STORAGE_START + PLAYER_STRUCTURE_LENGTH

PLAYER_X_OFFSET = PLAYER_STORAGE_START + 0x0C   ;X Position
PLAYER_Y_OFFSET = PLAYER_STORAGE_START + 0x10   ;Y Position
PLAYER_Z_OFFSET = PLAYER_STORAGE_START + 0x14   ;Z Position
PLAYER_R_OFFSET = PLAYER_STORAGE_START + 0x18   ;Rotation orelse Facing
PLAYER_S_OFFSET = PLAYER_STORAGE_START + ???      ;Speed
PLAYER_N_OFFSET = PLAYER_STORAGE_START + ???      ;Name

So what im thinking of is to create a module that loads the above information where applicable into a structure in memory and refreshing it in "real time"

Any comments ?

BR

/P

.

Link to comment
Share on other sites

Decided to bust my a$$ (sorry mods) and do a smal library collection.

Functions in it. Pseudocode.

FLOAT GetTurnRadian(FLOAT flTargetRadian, BOOL blFaceAwayFromTarget, <OUT>BOOLEAN blTurnLeft) --- Used by FaceTarget, FaceAway, FaceAwayFrom2

VOID FaceTarget(FLOAT flTargetX, FLOAT flTargetY)

VOID FaceAway(FLOAT flTargetX, FLOAT flTargetY)

VOID FaceAwayFrom2(FLOAT flTargetOneX, FLOAT flTargetOneY, FLOAT flTargetTwoX, FLOAT flTargetTwoY)

VOID MoveTo(FLOAT flTargetX, FLOAT flTargetY, FLOAT flDistance, BOOL blRunning, BOOL blStopOnDamage)

While im still on it ... if any of you can supply me with offsets i can create library with structures that can hold the Mobs (mobile ojects), Iobs (immobile objects), Pobs (player objects). I can't seem to find my printouts on WoW offset scanning but i have a desent idea on how to proceed.

IIRC (im almost 100% sure) it is possible to extract practically every single piece of information from objects in memory. Ex. Mob type like

Unknown, Item, Container, Unit, Player, GameObject, Dynamic, Corpse

There are alot of stuff out there to read from memory, practically everything even the speed that a mobs is moving.

If you want to keep your offsets kinda private from the public you can PM them to me ... i wont post them.

BR

/P

.

P.S.

Functions are practically ready ... will rewrite them to AutoIT script from C#.

Please give feedback on the function definitions ... is there anything else you would like me to implement ?

Practically i have everything ready since i have a working Bot of known origin (It has Sharp in its name) that i rewrote. Don't want to give links to the source since i don't want people compiling it just to find themselves banned.

I will ofc post any AutoIT code i write (not 100% of it if it contains offsets ppl don't want to publish) just to give you a hunch. The complete code can be released in some kind of module where full source listing is not available.

Anyone believes that COM (dll:s) writtern in another language would increase speed ?

i think a com object is the best solution for your wow API ( as i may call it) , it is accessible from every language and isn't as easy to decompile as an autoit script,, so the offsets are safer.

a wow api.ocx would be the wet dream of every programmer acting with wow. :)

$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

i think a com object is the best solution for your wow API ( as i may call it) , it is accessible from every language and isn't as easy to decompile as an autoit script,, so the offsets are safer.

a wow api.ocx would be the wet dream of every programmer acting with wow. :)

For me that would be the best solution with reservations.

Positive.

Secure as you mentioned.

More flexible.

Very good memory reading.

Safeguards against abuse. Ex. Add level cap hardcoded into the dll if the we discover the bot is abused for ex. imba PvP. Personally im against such measures but ppl tend to exceed some limits.

We don't blacken the name of AutoIT as a tool for creating Bots (Some might see it as such).

Negative.

Can be subject to banning spree if released to public and Blizzard puts it into Warden detection patterns.

C# is not the prime language of this board and never will be i guess :) and mods will ban us :) if we talk too much microsoft in here.

Cannot be distibuted the same way as malu05's code since it will be more malicius and i guess this thread that malu started has developed more as a learning spot on how to create bots for MMO games and "learn a few things on the way there" rather than "OMG free imba botzzors for download here".

Can't do it alone. Will need assistance. I can tell you right now it is going to be BIIIIG.

That's all i can come up with

BR

/P

.

In my opinion we (that contribute and others with higher post rating in this thread) can have a small discussion on what track we choose to go for. Mentioning the pros and cons.

Link to comment
Share on other sites

i could set up a website for this project, maybe we can the take all information together and make process in our development witout hesitating with bans and so on.

good idea?

$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

i could set up a website for this project, maybe we can the take all information together and make process in our development witout hesitating with bans and so on.

good idea?

Love it. But we have to convince the main bulk that follows this thread but also remember to update this thread too since such information benefits the entire AutoIt <---- (Spelled correctly) community. Games like WoW will come and go but actual botting remains the same.

BR

/P

.

Link to comment
Share on other sites

so theoretically you can decide if mobs are spawning beside you ...

you could maybe create a firewall that prevents a mob from spawning... ( easy traveling :)

am i right?

No..

But well in some way...

You can ignore the packets with the mob info and then you wont see the mobs.. but suddently you will see your health dropping since the mobs will attack you on the server. And what use is it to not be able to see who is attacking you.

Decided to bust my a$$ (sorry mods) and do a smal library collection.

...

There are alot of stuff out there to read from memory, practically everything even the speed that a mobs is moving.

If you want to keep your offsets kinda private from the public you can PM them to me ... i wont post them.

Hehe, nono the offsets are free of charge but i really want to document the most importaint aspects before i release something.

I don't have that much atm but ill give you them when i get some more.

Something on offsets

Every Object in memory has a basepointer?

Every Object has a lenght?

Example.

PLAYER_STRUCTURE_LENGTH = 0x1788
PLAYER_STORAGE_START = 0x1001AB34
PLAYER_STORAGE_END = PLAYER_STORAGE_START + PLAYER_STRUCTURE_LENGTH

PLAYER_X_OFFSET = PLAYER_STORAGE_START + 0x0C  ;X Position
PLAYER_Y_OFFSET = PLAYER_STORAGE_START + 0x10;Y Position
PLAYER_Z_OFFSET = PLAYER_STORAGE_START + 0x14;Z Position
PLAYER_R_OFFSET = PLAYER_STORAGE_START + 0x18;Rotation orelse Facing
PLAYER_S_OFFSET = PLAYER_STORAGE_START + ???     ;Speed
PLAYER_N_OFFSET = PLAYER_STORAGE_START + ???     ;Name

So what im thinking of is to create a module that loads the above information where applicable into a structure in memory and refreshing it in "real time"

Any comments ?

BR

/P

.

Every Object in memory has a basepointer? -

Yes, however i dropped looking for it and made the scanner enstead. Im a bit noobish at memory reading, and don't know that much about pointers yet.

Every Object has a lenght? -

Yes, as you can see from the AdressScannerMobEdition(Msdn^^) each object is 0x1788 byte long so the stuff you wrote above is correct.

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

No..

But well in some way...

You can ignore the packets with the mob info and then you wont see the mobs.. but suddently you will see your health dropping since the mobs will attack you on the server. And what use is it to not be able to see who is attacking you.

Hehe, nono the offsets are free of charge but i really want to document the most importaint aspects before i release something.

I don't have that much atm but ill give you them when i get some more.

Every Object in memory has a basepointer? -

Yes, however i dropped looking for it and made the scanner enstead. Im a bit noobish at memory reading, and don't know that much about pointers yet.

Every Object has a lenght? -

Yes, as you can see from the AdressScannerMobEdition(Msdn^^) each object is 0x1788 byte long so the stuff you wrote above is correct.

I checked my source code ... i believe there is a way to make things easier. I will compile a dll and leave it on and see if i get a ban.

Hopefully not since i only read the memory. But i have money to burn so ... :)

BR

/P

.

Link to comment
Share on other sites

I checked my source code ... i believe there is a way to make things easier. I will compile a dll and leave it on and see if i get a ban.

Hopefully not since i only read the memory. But i have money to burn so ... :)

BR

/P

.

Hehe you wont... its not possible to see if you are only reading!

Btw, a new patch have just hit the street and MSDN version you posted of the mob scanner wont work (it should not work!).

Here is what you need to change to make it work;

$EndMemory = 0x007CF440oÝ÷ Ù©§Â+ajëh×6$EndMemory = 0x007CF4A8

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

Love it. But we have to convince the main bulk that follows this thread but also remember to update this thread too since such information benefits the entire AutoIt <---- (Spelled correctly) community. Games like WoW will come and go but actual botting remains the same.

BR

/P

.

ok ill set up one, will be done quite fast i think...

a satus update in the main thread and as last post may link to it and updates can be posted here to.

... lets make it happen.

No..

But well in some way...

You can ignore the packets with the mob info and then you wont see the mobs.. but suddently you will see your health dropping since the mobs will attack you on the server. And what use is it to not be able to see who is attacking you.

im sorry to hear that this is server side solved....

but there are other solutions :)

is it possible to move the npc out of range ?

$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

ok ill set up one, will be done quite fast i think...

a satus update in the main thread and as last post may link to it and updates can be posted here to.

... lets make it happen.

im sorry to hear that this is server side solved....

but there are other solutions :)

is it possible to move the npc out of range ?

Yes.. but again wont help you much.

Think about it like this. All you can control is your avatar. Everything else is controlled by the server.

You client just visually replicate the server.

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

Yes.. but again wont help you much.

Think about it like this. All you can control is your avatar. Everything else is controlled by the server.

You client just visually replicate the server.

to bad to hear .... ok then i think you will get something out of it :)

$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

How detectable is the whole thing? Packet Sniffing should be safe as it doesnt touch the wow.exe, right? And memory reading is less secure?

Do you think a process hiding tool like ProcessGuard would make these methods safer?

Lots of question i know, but im searching for the best solution :).

Link to comment
Share on other sites

Yes.. but again wont help you much.

Think about it like this. All you can control is your avatar. Everything else is controlled by the server.

You client just visually replicate the server.

Well let me tell you this .... the info provided in the MSDN version is more than enough.

LOL wont help us much ... well fyi you actually carry this thread :)

BR

/P

.

Link to comment
Share on other sites

How detectable is the whole thing? Packet Sniffing should be safe as it doesnt touch the wow.exe, right? And memory reading is less secure?

Do you think a process hiding tool like ProcessGuard would make these methods safer?

Lots of question i know, but im searching for the best solution :).

Memoryreading is 100% safe.

I think its some kind of old myth that memory reading is the same as memory writing.

If you are paranoid use process guard, but imo i would be more or less waste of CPU etc.

Just keep away from apps that does alter the memory locations, inject code into mainapp, or inject code into dll's used by the mainapp.

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

have set up the forum, malu and perry you have a PM.

$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
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...