Donnerstag, 30. Oktober 2014

[WoW / Tools] Zzuks Fisher

Today I want to release "Zzuks Fisher":




A short video:




How to:

  1. Equip a fishing rod and place yourself in front of some water you can fish in
  2. Select your desired 1.12.1 WoW process by entering the number displayed inside the brackets left to the character name
  3. Enjoy
  4. Just close the command prompt to stop the bot

Is it detected on project X?

There is nothing to detect. All it does is read memory and call some functions. Theres no modification of static memory (unless the DirectX hook)

Notes:

Currently the tool only works for Windows 7 and lower. Once I motivate myself to install win8 I will update the tool
The tool is written in C# which means you will need .Net framework (Windows 7 and up already got it)

Download?


Ideas?!

You got ideas for further tools or blog posts? I would be pleased to have a chat! Just contact me in IRC or Skype :)

Montag, 27. Oktober 2014

[WoW / Tools] Just a morpher

Today I want to release a little morpher for 1.12.1 WoW:


How To:

1. Attach to desired 1.12.1 process
2. Grab a display ID from any public vanilla database (like http://db.vanillagaming.org/):


3. Hit "Morph!"

Detected on X?

There is nothing to detect. All it does is read memory and call some functions. Theres no modification of static memory (unless the DirectX hook)

Download:

http://adf.ly/tSkAq

Dienstag, 21. Oktober 2014

[WoW / Tools] Zzuks Looter (part 2)

Following this post the tool "Zzuks Looter" will be released today:


How to:

  1. Select your desired 1.12.1 WoW process by entering the number displayed inside the brackets left to the character name
  2. Press F1 ONCE will loot each lootable mob in your range (around 4.20)

Is it detected on project X?

There is nothing to detect. All it does is read memory and call some functions. Theres no modification of static memory (unless the DirectX hook)

Notes:

Currently the tool only works for Windows 7 and lower. Once I motivate myself to install win8 I will update the tool
The tool is written in C# which means you will need .Net framework (Windows 7 and up already got it)

Is it a virus?

Since the WoW community has a lot of negative people crying a river about everything I say it once:
This blog is about helping and motivating people to learn programming. I dont care about your WoW account or any other useless stuff you have on your PC. Feel free to do whatever you want do with the executable.

Download?


Ideas?!

You got ideas for further tools or blog posts? I would be pleased to have a chat! Just contact me in IRC or Skype :)

Donnerstag, 16. Oktober 2014

[WoW / Tools] Zzuks Looter

Hello friends,
a few people may already noticed me being very inactive the last weeks. When I created this blog I set the goal to write one post every second day however I underestimated university a lot. Lately I feel like running from one date to another not finding time for anything which results in the situation you see right now.
TL/DR: New post ratio will decrease. Content will like always dont be focused on exactly one topic but rather all kind of stuff I am interested in.

Being done with that I want to present you a tool I worked on: Zzuks Looter.
Every vanilla-player knows the problem: Looting big packs of mobs is very annoying in our beloved classic WoW. While retail WoW got some fancy AoE-Loot we have to fall back trying to click each corpse.
With that tool this problem belongs to the past:

  1. Launch the executable and attach it to any WoW process
  2. Place your character beside lootable mobs (tool is looting any mob closer than 4.20)
  3. Hit F1 and watch the magic happen
The best:
  1. The process is completely latency independent. It will work dont matter how bad your ping is
  2. The looting process can be toggled without WoW or the Looter being the active window. Very fancy for a multiboxer: Attach Zzuks Looter to WoW 2. Play active on WoW 1. Hit F1. WoW 2 will loot even tho not being the active window.

Curious?





The tool will be released in around 1-2 days.
Stay tuned!

Dienstag, 7. Oktober 2014

[WoW 1.12.1 / C#] The first steps towards "our" bot

Hello,
today I want to continue the WoW 1.12.1 C# series.
Previous posts which you should read in order to understand what we are doing:
  1. A basic window mover
  2. Memory manipulation using BlackMagic
  3. Memory manipulation without third party libraries
A few more words before we get into coding:

Why do you work with version 1.12.1?
The very first reason is that vanilla WoW is probably the only game I stil play in my spare time. Its a part of my childhood and in conclusion associated with many good memories. Things were more time consuming and rewarding. It wasnt designed to give even the biggest noob a feeling of success. Flying mounts werent implemented which is a big plus for me since I love world PvP. There was no dungeon finder nor teleports to dungeon. It was more about the community to organise things and not some mechanism like LFR doing all the work. Since you actually need to travel in vanilla WoW the whole world feels more populated and not only centered around a few zones like it is on retail.
In general: "hard" games > casual games

Beside from all those gameplay related arguments there are also some reasons why I choose to write the tutorial for 1.12.1:
Retail WoW is constantly evolving. Writing a long tutorial about coding a bot for an executable which is constantly changing is just a waste:
  1. People cant work with the code snippets provided after an update since many memory addresses aswell mechanics change with patches.
  2. I dont expect that this tutorial series would be done within one patch which would mean updating old posts over and over again to make them fit with the newest update. Using 1.12.1 we have all time we need (me with writing those posts aswell you understanding what is happening)
  3. There are dozen projects (like Kronos) running a server supporting the 1.12.1 client.
With that being said: Im not a professional programmer so dont expect my solutions to be the best. Just take it as a inspiration to do it better :).

Lets get started?

My bot basically consists of two parts:
One thread obtaining all informations (Cooldowns, Objects around the player etc.)
Another thread evaluating the obtained infos and choosing what to do depending on whats going on (resting, fighting, ghost walking, searching a new target, vendoring, going to the next target etc.)

Today we will learn how to obtain informations about objects around the player or to be more exact: Items, containers, units, players, gameobjects, dynamicobjects and corpses.
Every object around our player is an object in memory. The objectmanager is basically a list holding pointers to all those objects. Each object contains fields about informations belonging to the object like the x, y and z coordinates aswell the type of the object and a pointer to the next object.

So what we do? Read the objectmanager from the first to the last object and save them.

1. Addresses we need to know (those are obtained with a alpha patchdiff):

 static uint objectManager = 0x00B41414;  
 static uint firstObjPtr = 0xac;  
 static uint nextObjPtr = 0x3c;  
 static uint objType = 0x14;  
 static uint descriptorOffset = 0x8;  

2. Object types:

 private enum ObjTypes : byte  
 {  
      OT_NONE = 0,  
      OT_ITEM = 1,  
      OT_CONTAINER = 2,  
      OT_UNIT = 3,  
      OT_PLAYER = 4,  
      OT_GAMEOBJ = 5,  
      OT_DYNOBJ = 6,  
      OT_CORPSE = 7,  
 }  

3. Obtain the pointer to the very first object:

 uint curObj = BmWrapper.mem.ReadUInt(BmWrapper.mem.ReadUInt(objectManager) + firstObjPtr);  
 uint nextObj = curObj;  

4. Now that we obtained the first object in the list we can read its type and decide what to do next depending on the result:

 uint curObjType = BmWrapper.mem.ReadByte(curObj + objType);  
 switch (curObjType)  
 {  
      case (byte)ObjTypes.OT_CONTAINER:  
           // Do something  
           break;  
      case (byte)ObjTypes.OT_PLAYER:  
           // Do something  
           break;  
      case (byte)ObjTypes.OT_UNIT:  
           // Do something  
           break;  
      case (byte)ObjTypes.OT_GAMEOBJ:  
           // Do something  
           break;  
      case (byte)ObjTypes.OT_CORPSE:  
           // Do something  
           break;  
 }  

5. After processing the first object its time to get the next in line. If the pointer to the next object is 0 or equal to the pointer to the current object we arrived at the end of the list:

 while (curObj != 0 && (curObj & 1) == 0)  
 {  
      // Do stuff with current object here  
      nextObj = BmWrapper.mem.ReadUInt(curObj + nextObjPtr);  
      if (nextObj == curObj)  
      {  
           break;  
      }  
      else  
      {  
           curObj = nextObj;  
      }  
 }  

6. The current code doesnt fulfill any need: We dont process the objects nor we save them but thats not important for the moment. This post is just proof of concept or better said a showcase how we iterate over the objectmanager.
In the next few episodes we will learn what we can do with all those objects.


Final words:

I will release a sample command line program every new post to demonstrate the current progress.
With the current state we can archiv a basic output:



Having an address to each object gives a lot of new room to tinker around a bit.
Sample Project download: http://adf.ly/shDo8

Montag, 6. Oktober 2014

[WoW 1.12.1 AddOn] VMB - stage conversations

Hello,
following this post the AddOn VMB will be released now. A little readme which is also included in the archive:

[zzuks.blogspot.ch]
Step 1:
Set player name:
/fname NAME
1.2 (Optional) Toggle GM state:
/fgm
Step 2:
Add messages to the queue:
/fadd MESSAGE
/faddf MESSAGE
Command differences:
/fadd adds a message that will be automatically sent to you after an automatic delay
/faddf adds a message that will be sent after you replied to the fake player.
Usually, you would add the first message via /fadd to make the fake player whisper you first.
Following messages should be added via /faddf to give you time to write a fake reponse.
Step 3:
Start the fake whisper bot. It will start whispering you after a delay that you must set.
/ffire SECONDS
After executing this command, start frapsing.
Step 4:
Reset all settings:
/fclear
Additional:
Adding a fake whisper immediately:
/fw MESSAGE
Viewing settings:
/finfo


With that being said we are also working on another feature: Faking trades with players in range. Expect an update in around one or two weeks.

Download: http://adf.ly/sfJki