Register
  • The Consortium Key Sender (CKS)


    Greetings folks. I am pleased to present to you, an application, that will hopefully relief you of all your prospecting / milling / disenchanting troubles.

    Some of you might already be fammiliar with this thread by @Sinshroud - it does and excellent job of providing efficient yet simple way to get the job done. What you will find in this thread however, is a bit more elaborate application, with intuitive user interface and various means of doing what you need. So, keeping things, a bit more to the point here is the:

    Download Link - Consortium Key Sender (CKS)

    Following you will find a quick guide to using it, and at the end of the post, you will find the AHK_L code of the application itself. An important note I need to make at the beginning is that, since it is coded in AHK_L, this is windows only (and preferably version > 2000).


    1. So what does the application do in general.

    It basically listens for user input and then routes it, to multiple applications. It lets you choose which application should it send input to, what input, at what intervals, etc. What this means is that you could be working / browsing / playing another game and have your WoW character prospect / mill / disenchant at the same time !

    2. Great... but is this legal.

    There has been a huge discussion on the matter, and the general verdict is that as long as you are behind the keyboard/mouse and performing some actions yourself, it should be fine. If you would like to read/discuss more on the matter, please refer to this thread. But if you do, please read the whole discussion.

    3. Important note before you start!

    This thread alone, should be the one and only place form which you should be using this application. The reason for this is, that the program is technically "listening" to your key presses, which with a bit modification could be turned into a key logger. While we at the consortium would never tolerate such actions, please be advised that someone else might. So for your own safety, please do not download this application from anywhere else!

    4. Getting to the application itself.

    The first time you launch the application, you will be presented with a warning that this is indeed your first time and will be asked to read the "Help" section. After you go through those two initial windows (they will pop up only the first time you use CKS), you will be presented with the following screen:



    This is the only screen you will be working with. A brief explanation of the options follows:

    4.1. The first column of options, to your top left corner are the "listening" modes - they determine to which of your actions should the application respond.


    4.1.1. Listen to mouse - the application will be tracking if the mouse has changed it's position on the screen over a said period with artificial delay (more on this later).

    4.1.2. Listen to keyboard - the application will be listening for all your key presses. There is no artificial delay here - a single key press triggers a single action.

    4.1.3. Listen to input - the application will be tracking if there has been any sort of physical user input over a said period with artificial delay.


    Note: While you can generally select all of the options, there is no reason to do so. I suggest picking the one that suits you best.


    4.2. The last column of options, to your top right are the time/key settings - they determine at what intervals should certain actions be performed and what should those actions be.


    4.2.1. Auto refresh each X sec. - determines if the application should automatically refresh the list of currently open windows, and at what time interval it should do so. Please note that you are not limited to the pre-defined options in the drop-down menu. You can input there any number, including those with floating point (e.g. 13.423 sec.)

    4.2.2. Random interval X - Y sec. - determines a random interval at which the application should perform actions if you are using the Listen to mouse or Listen to input options. This is the artificial delay mentioned earlier and the reason for having this is that it is unlikely you want to be spamming keystrokes each ~10 milliseconds, which could possibly happen, since you are monitoring any mouse movement.

    4.2.3. Keys to send - those are the keys that you want to send. Those could be either single sequence, multiple sequences or more complex expressions. More on this below:

    4.2.3.1. Single sequene - this would generally look like m or mn1 or something like this. This means that on based on your input mode, the application will send those keys in the sequence you defined.

    4.2.3.2. Multiple sequences - those are similar to the above, with the exception that those are a number of sequences separated by comma like m,mn1,3,fs. If this is the case, the application will send a random one of them each time it tries to send something. You should know, that due to the comma being a separator for the sequences, there is no way you can make the application send a comma itself.

    4.2.3.3. Complex expressions - apart from sending single key strokes, you could do a bit more advanced stuff such as {Shift down}34{Shift up}. What this would achieve is force the application to hold shift, then press 34 and then release the shift button. There are numerous other possibilities - you can read on them >> here <<.


    4.3. Additional options:


    4.3.1. Mimic input - this is only relevant if the Listen to keyboard option is selected. If this is enabled, rather than sending the Keys to send, the application will try to mimic your input on a 1:1 relationship (e.g. if you press N it tries to send the exact same key).

    4.3.2. Random events - generates additional random events on top of Random interval X - Y sec. What it specifically does is that, on a random interval between 1 and 20 key sending "events", it generates an additional event for a single send that modifies the Random interval X - Y sec. by multiplying both the top and the bottom by a random number from the following array [0.1, 0.5, 0.7, 2, 3, 4, 5]. Some of you might be wondering, why is this option even present : while as previously stated, this application is legal, because all it does is generate an event based on your actual RL actions, I believe it is better to be on the safe side and not give Blizzard/Warden a reason to doubt you. Consider this really a pre-pre-precaution measure.

    4.3.3. Refresh button - forces an immediate refresh of the list of currently open windows.

    4.3.4. Pause button - pauses all actions taken by the application. This is also bound to the Windows Key + P short cut.

    4.3.5. Help button - displays the help article.


    4.4. The list of currently open windows - the big part of the application, at the bottom. This is basically a list of all currently open windows and some additional information about them. What you generally need to do is just tick to windows you want to send input to. Some notes about this:


    4.4.1. You can pick any number of windows, but obviously not picking anything won't do anything

    4.4.2. The currently active window receives your input by default, so it is generally not a good idea of ticking it. Unless you want to produce some strange behaviour.

    4.4.3. The last column ID is the unique identifier of the window. If you need to distinguish between two windows with the exact same name you need to look at it.


    4.5. Additional stuff you might want to know.


    4.5.1. After initially launching the application and closing it, it will create a CKSSettings.ini file in the directory that the CKS.exe resides. This file basically remembers all of your preferences from point 4.2. The reason other options are not included is that it cam be more of a nuisance than help.

    4.5.2. If you try to do some funny stuff with the options or no options are input, the application reverts back to default values. For Auto refresh - 10 sec, for Random Interval - 2:3 sec, for Keys to send - 1.

    4.6. Currently know issues.


    4.6.1. The application does not play very well with some of the more sophisticated text editors, when it comes to sending input. It would take a really lot of writing to explain all the perks, so I guess you would have to try if it works for your needs.

    4.6.2. The application has a really hard time sending {Backspace} command with the Mimic mode. This is currently under investigation.

    4.6.3. If you pick a number for the time intervals, that is already present in the drop down menu, this number will get duplicated in the drop down next time you start the application. This has absolutely NO impact on functionality, it's just


    4.7. The source code as promised.


    4.7.1. Yeah I know it's not commented out. I will try to do it some time in the future.

    4.7.2. And yeah, my variable naming sucks. I am trying to work on it

    Code:
    #SingleInstance force
    #NoEnv
    #InstallKeybdHook
    #InstallMouseHook
    
    Gui, Add, Checkbox, gMouseListen vMouseEnabled, Listen to mouse
    Gui, Add, Checkbox, xs gKbdListen vKbdEnabled, Listen to keyboard
    Gui, Add, Checkbox, xs gPhsListen vPhsEnabled, Listen to user input
    Gui, Add, Checkbox, ys vMimic Section, Mimic input 
    Gui, Add, Checkbox, xs vRandEnabled, Random events
    Gui, add, Button, Section gRefreshList ys w60, Refresh
    Gui, add, Button, gPauseListen ys w60 vPauseButton Default, Pause
    Gui, add, Button, gHelpListen xs w60, Help
    Gui, Add, Checkbox, ys gAutoRef vAutoEnabled Section, AutoRefresh each
    Gui, add, ComboBox, ys vSecToRef w50, 1|2|3|4|5|6|7|8|9|10||
    Gui, add, Text, ys, sec
    Gui, add, Text, xs Section, Random interval 
    Gui, add, ComboBox, ys vRandStart w50, 0.5|1|1.5|2||2.5|3|3.5|4|4.5|5
    Gui, add, Text, ys, -
    Gui, add, ComboBox, ys vRandEnd w50, 0.5|1|1.5|2|2.5|3||3.5|4|4.5|5
    Gui, add, Text, ys, sec
    Gui, add, Text, xs Section, Keys to send
    Gui, add, edit, ys vKeys w150
    Gui, add, ListView, vMyList gMyList w600 h300 Checked SortDesc xm, Name|Class|ID
    
    if A_IsCompiled
      Menu, Tray, Icon, %A_ScriptFullPath%, -159
    
    IniRead, SecToRefTemp, %A_WorkingDir%\CKSSettings.ini, 1, SecToRef
    IniRead, RandStartTemp, %A_WorkingDir%\CKSSettings.ini, 1, RandStart
    IniRead, RandEndTemp, %A_WorkingDir%\CKSSettings.ini, 1, RandEnd
    IniRead, KeysTemp, %A_WorkingDir%\CKSSettings.ini, 1, Keys
    
    if (SecToRefTemp = "ERROR") {
        MsgBox,, Attention !, This seems to be the first time that you are using the Consortium Key Sender. Please read the help first !
        gosub, HelpListen
        
    } else {
        GuiControl,, SecToRef, %SecToRefTemp%||
        GuiControl,, RandStart, %RandStartTemp%||
        GuiControl,, RandEnd, %RandEndTemp%||
        GuiControl,, Keys, %KeysTemp%
    }
    
    idList := object()
    refresh(idList)
    Gui, show,, Consortium Key Sender
    return
    
    KbdListen:
    Gui submit, NoHide
    while (KbdEnabled)
    {
        Input, SingleKey, L1,  {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{Backspace}{Capslock}{Numlock}{PrintScreen}{Pause}
        Send % SingleKey
        Gui submit, NoHide
        if (Mimic)
            sendkeys(SingleKey)
        else
            sendKeys(Keys)
    }
    return
    
    PhsListen:
    Gui submit, NoHide
    lastInput := 100
    while (PhsEnabled)
    {
        if (A_TimeIdlePhysical < lastInput) 
            sendKeys(Keys)
        
        lastInput := sleepSpecial(RandStart, RandEnd, RandEnabled)
        Gui submit, NoHide
    }
    return
    
    
    PauseListen:
    if IsPaused
    {
       Pause off
       IsPaused := false
       GuiControl,, PauseButton, Pause
    }
    else
       SetTimer, Pause, 10
    return
    
    Pause:
    SetTimer, Pause, off
    IsPaused := true
    GuiControl,, PauseButton, Unpause
    Pause, on
    return
    
    HelpListen:
    txtVar = 
    (
    Welcome to the Consortium Key Sender application. Please read the following lines, as they are important.
    
    1. Basic use: This application gives you the possibility to redirect input to your PC to multiple applications (rather than just the active one). You could, for instance, be browsing the internet, while in the background, your World of Warcraft character is prospecting/milling/etc.
    
    2. Important notice: It is highly recommended that you should be using this application only if you got it from the consortium.stormspire.net forums. This is for your own safety, as technically the application listens to your key presses. This means that with modifications, this could be turned into a key logger. The only way to ensure that this won't happen to you is if you download this from the official forum thread at the aforementioned site. 
    
    3. Is this legal to use with games: the best way to ensure this is to consult with the game's ToS/EULA and/or game representatives. In the case of World of Warcraft, it has been stated multiple times that as long as there is physical input from the user (and this application cannot work without this) - you should be fine. Still, please use this application at your own risk.
    
    4. Basic setup:
    
        1. Open all windows/programs you want to send input to.
        2. Run the "Consortium Key Sender"
        3. Check within the application all windows you want to send input to.
        4. Select the send method.
        5. Select what keys you want to send.
        6. You are done!
        
    5. Send method descriptions:
    
        1. Listen to mouse - Checks if the mouse location has changed over the "Random interval" specified.
        2. Listen to keyboard - Listens for any key press on the keyboard. Note: this does not play well with some text editors, especially if they are not the active (input receiving) window.
        3. Listen to user input - Checks if over the "Random interval" specified there has been any user physical input.
        
        Note: You can select all methods if you wish to, but there is generally no reason to do so. The main difference between the methods (apart from what they respond to) is that "mouse" and "user" inputs enforce an artificial delay (you wouldn't want to spam keys for every single pixel that your mouse moves through, would you), while "keyboard" acts on one-to-one basis with your key presses on the keyboard.
    
        
    6. Additional options:
    
        1. Mimic input - attempts to mimic your input from the active window, to the windows selected (rather than sending pre-defined key-strokes).
        2. Random events - apart from using the "Random interval", generates additional random events (stretches on shrinks the specified interval).
        3. Pause - pauses the script. It is also hot keyed to the Windows key + P shortcut.
        4. Refresh - checks if there are any newly opened windows.
        5. Auto refreshes each X seconds - sends a "Refresh" command each X seconds. You are not limited to the values in the combo box! Feel free to input your own, including floating numbers (e.g. 11.353).
        6. Random interval - defines the random interval for mouse events and user input events. Impute options are same as above.
        7. Keys to send - sends the specified keys. This can be one key or a list of keys or comma-separated list of case. In case of the latter, a random entity of the ones listed is send. Furthermore, you can send more complex commands such as "{Shift Down}34{Shift Up}" which will hold down the Shift key, press 34 and then release the Shift key. For a complete list of possible commands please refer to http://www.autohotkey.com/docs/commands/Send.htm.
        
    7. Additional notes:
    
        1. If no options are input a default value is used. For Auto refresh - 10 sec, for Random Interval - 2:3 sec, for Keys to send - 1.
        
    8. Currently known issues:
    
        1. Keyboard input does not recognize Backspace.
        2. If the remembered user preference was an already default value, it gets duplicated in the combo boxes.
    
    )
    msgbox ,,Help, %txtVar%
    return
    
    AutoRef:
    Gui submit, NoHide
    while (AutoEnabled)
    {
        refresh(idList)
        if (secToRef="") {
            SecToRef := 10000
            GuiControl,,SecToRef,10||
        } else {
            secToRef*=1000    
        }
        sleep, SecToRef
        Gui submit, NoHide
    }
    return
    
    MouseListen:
    MouseGetPos , xPos , yPos
    Gui submit, NoHide
    while (MouseEnabled)
    {
        MouseGetPos , xPosNew , yPosNew
        if (xPos <> xPosNew or yPos <> yPosNew)
        {
            sendKeys(Keys)
            xPos := xPosNew
            yPos := yPosNew
        }
        sleepSpecial(RandStart, RandEnd, RandEnabled)
        Gui submit, NoHide
    }
    return
    
    RefreshList:
    refresh(idList)
    return
    
    MyList:
    GuiContextMenu:  
    return
    
    close:
    guiClose:
    Gui submit, NoHide
    IniWrite,%SecToRef%, %A_WorkingDir%\CKSSettings.ini , 1, SecToRef
    IniWrite,%RandStart%, %A_WorkingDir%\CKSSettings.ini , 1, RandStart
    IniWrite,%RandEnd%, %A_WorkingDir%\CKSSettings.ini , 1, RandEnd
    IniWrite,%Keys%, %A_WorkingDir%\CKSSettings.ini , 1, Keys
    ExitApp
    
    refresh(idList) {
        WinGet, id, list,,, Program Manager
        Loop, %id%
        {   
            this_id := id%A_Index%
            if (idList[this_id] = 1)
                continue
            WinGetClass, this_class, ahk_id %this_id%
            WinGetTitle, this_title, ahk_id %this_id%
            if (this_title = "" or this_title = "Start")
                continue
            LV_Add("",this_title,this_class,this_id)
            idList[this_id] := 1
        }
    
        Loop % LV_GetCount()
        {
            LV_GetText(win_id, A_Index,3)
            IfWinNotExist, ahk_id%win_id%
            {
                LV_Delete(a_index)
                insertList.Remove(win_id)
            }
        }
        LV_ModifyCol(1,"Auto")
        LV_ModifyCol(2,"Auto")
        LV_ModifyCol(3,"Auto")
    }
    
    sleepSpecial(RandStart, RandEnd, RandEnabled)
    {
        If (RandEnd < RandStart or RandEnd ="" or RandStart="") {
            RandStart := 2000
            RandEnd := 3000
            GuiControl,,RandStart,2||
            GuiControl,,RandEnd,3||
        } else {
            RandStart *=1000
            RandEnd *=1000
        }
    
        if (RandEnabled) {
            Random, spec, 1, 10
            if (spec = 1) {
                randEventArr := [0.1, 0.5, 0.7, 2, 3, 4, 5]
                Random, modif, 1 ,7
                RandStart *= randEventArr[modif]
                RandEnd *= randEventArr[modif]
            }
        }
        Random, rand, RandStart, RandEnd
        sleep , rand
        return rand
    }
    
    sendKeys(Keys)
    {   
        if (Keys = "")
            Keys := 1
        RowNumber = 0  
        Loop
        {
            RowNumber := LV_GetNext(RowNumber,"Checked")  
            if not RowNumber  
            break
            StringSplit, keyArr, Keys, `,
            Random, rand, 1 , keyArr0
            LV_GetText(win_id, RowNumber,3)
            keyToSend := keyArr%rand%
            ControlSend,, %keytoSend%, ahk_id%win_id%
        }
    }
    
    #p:: gosub , PauseListen
    5. Please leave your feedback. Feel free to drop any suggestions for new features, bug finds and constructive criticism. All of those are greatly appreciated !

    6. Special thanks to all the Wind Traders who helped testing this and provided suggestions !

    7. My "to-do" list, thanks to your feedback

    - Add an option to pass the comma separated list in sequence rather than random.
    - Change the separator, because comma is used in commands such as {Click 200, 200}, thus making it impossible to use it.
    This article was originally published in forum thread: The Consortium Key Sender (CKS) started by Pliaksi View original post
    Comments 218 Comments
    1. Pliaksi's Avatar
      Pliaksi -
      Where are the above quotes from?

      But sure, I will try and write to Blizzard today, enclosing the script and asking for confirmation if we can use it or not. The only problem I foresee, is that generally their answers are very vague and subject to interpretation.
    1. AzTweeter's Avatar
      AzTweeter -
      I have to say after a couple days of using this it is absolutely awesome for prospecting a few thousand ore a day. I can get projects done for class (University level) and still be productive in game. Keep up the great work.
    1. Pliaksi's Avatar
      Pliaksi -
      Quote Originally Posted by mstWeal View Post
      1. I have some new insights on the matter. It actually is of no relevance whether you run WoW in windowed or full screen mode. The problem occurs if WoW is minimized. So if I run WoW in windowed mode and do not minimize the window, it works. As soon as I minimize the window, it stops working. Note that the window does not need to have focus. It just may not be minimized.
      2. I did nothing at all. Just having the key sender open and moving around my mouse to test it out
      3. random interval 0.5 - 1
      Unfortunately I am having hard time reproducing the issue. I cannot test it with WoW, as I don't have it currently installed, but the application can send keys to other minimised applications without an issue. Could you try one more thing please. Do the same set-up, but try to send the keys to a minimised Notepad (not Notepad+) window. Thanks.

      @Others using the application - would anyone be willing to test in WoW, the issue that @mstWeal is having (send keystrokes when WoW is minimised). Thanks.
    1. Xane's Avatar
      Xane -
      @Pliaksi I tried yesterday with a minimized WoW and I had no problem sending keystrokes. It was in windowed mode though.
    1. Pliaksi's Avatar
      Pliaksi -
      Updated OP with a latter that I will submit to Blizz in about 30 minutes time (as soon as I get home). I hope to get a clear answer and settle the issue of weather it is legal.
    1. Namssob's Avatar
      Namssob -
      Excellent letter! There are a few typos, but all in all I think it is well written. I *highly* doubt anyone will read the entire letter, but I hope they do...and more importantly, I hope they respond in the way you've asked them to. Additionally....@Pliaksi, if they DO respond, I wonder if this opens up a new avenue of dialogue between the gold making community and Blizzard. I know it's a small part of the game for them, but who DOESN'T want gold? ;-)
    1. Pliaksi's Avatar
      Pliaksi -
      Typos? Where?

      Has my beloved spell checker in Word failed me?

      @Namssob fixed it, thanks !
    1. Namssob's Avatar
      Namssob -
      In the first paragraph, you say "bottling" instead of "botting".
    1. mstWeal's Avatar
      mstWeal -
      Ok, I tried something else. I created 2 macros:
      /s 1
      /s 2

      Then I minimize WoW and use the key sender. This works.

      I think I have an idea what the problem is. TSM's destroying button might not get enabled again if WoW is minimized. As it only prospects 5 ore and then it stops. I think the button just doesn't receive the activation anymore.

      BTW: Your letter is just great. But to whom do you want to mail this? Wouldn't it be best to post it in the Blizzard Addon / UI forums? This way, if you get a blue answer the whole community could relate to this post.
    1. Pliaksi's Avatar
      Pliaksi -
      I am submitting this as a ticket to technical support. The reason I cannot post this on the forums, is because I do not currently have an active WoW account (for like 6 months or so ). But if anyone else, feels like posting it - be my guest.
    1. Zero's Avatar
      Zero -
      Quote Originally Posted by mstWeal View Post
      Ok, I tried something else. I created 2 macros:
      /s 1
      /s 2

      Then I minimize WoW and use the key sender. This works.

      I think I have an idea what the problem is. TSM's destroying button might not get enabled again if WoW is minimized. As it only prospects 5 ore and then it stops. I think the button just doesn't receive the activation anymore.
      No frames are drawn while the client is minimized so addons can't operate during that time.

      Quote Originally Posted by mstWeal View Post
      BTW: Your letter is just great. But to whom do you want to mail this? Wouldn't it be best to post it in the Blizzard Addon / UI forums? This way, if you get a blue answer the whole community could relate to this post.
      No useful blue posts are made there and you certainly won't get anything that says yes or no. The same thing happened when many people complained / wondered about my Quick Auctions Poster addon I created a long time ago; many threads were created but only answers from other developers were received.
    1. Pliaksi's Avatar
      Pliaksi -
      Blizzard response added to OP. Just don't get your hopes up for anything concrete.
    1. Namssob's Avatar
      Namssob -
      Hmm.....reading between the lines....it looks like Warden specifically looks for AutoHotKey or AHK code running during Wow execution, and then sends this information back to Blizzard. of course if AHK is not effecting WOW, you're good. If they determine that it is operating WOW in some way, then you're not good.
    1. Pliaksi's Avatar
      Pliaksi -
      I am not quite sure this is the case, since I have been using AHK to remap keys for WoW for years, yet I never had a warning or a ban. Yes, it was a very simple remap - I needed my "Alt" button on my numpad, but still...
    1. Seoulseeker's Avatar
      Seoulseeker -
      Quote Originally Posted by Pliaksi View Post
      Updated OP with a latter that I will submit to Blizz in about 30 minutes time (as soon as I get home). I hope to get a clear answer and settle the issue of weather it is legal.
      Certainly couldn't ask for more than this, I commend you on following up! While Blizz's response was nearly useless, I would think that just the fact that you asked so clearly might get you (or anyone else using your tool) some clemency if Blizz decides at some point that they don't like it. Well done!
    1. davidfranses's Avatar
      davidfranses -
      How exactly did you contact Blizz ?

      On their support site, there's no option at all that relate to UI / macro problems, and even when choosing another option your limited to 2000 characters.

      Note that I ask you this as I intend to file the same letter to Blizz (with your permission ofc) , hoping that we'll get a less vague response.
      (I'm probablly going to be in touch with the EU-side of blizzard, and they might actually take the time to give a concrete answer...)
    1. Pliaksi's Avatar
      Pliaksi -
      I submitted a support request ticket via battle.net in the WoW Tech Support Section, EU.

      The 2000 char limitation can be handled by attaching a file. The main part of the ticket was the intro part (before that actual questions), with a brief explanation what the attached files contain and kindly asked them to read it.

      If you feel you have any chance for better success - be my guest
    1. davidfranses's Avatar
      davidfranses -
      Quote Originally Posted by Pliaksi View Post
      I submitted a support request ticket via battle.net in the WoW Tech Support Section, EU.

      The 2000 char limitation can be handled by attaching a file. The main part of the ticket was the intro part (before that actual questions), with a brief explanation what the attached files contain and kindly asked them to read it.

      If you feel you have any chance for better success - be my guest
      Well, in what section did you put in your ticket ? None of the options are adequate...

      Failed to mention you were from an EU server aswell, any US / Oceanics / ... care to try it ?

      And is it a good idea to put in tickets untill they give a definate answer ? Lots of ban appeals on this forum required several tickets...
    1. Pliaksi's Avatar
      Pliaksi -
      Under the botting section. Seemed most appropriate/relevant to the question itself.
    1. Aisbaer's Avatar
      Aisbaer -
      i just talked with a gm on my server
      he told me this falls under third party programm use and he would strongly recommend that i dont do it because i could maybe get banned he said its sort of a grey area
      because iam not actually in the wow window doing it even if iam behind the keyboard iam not in the game really

      then i said: i just bought 1000 stacks of elementium ore when i prospect them i also dont look human because i jsut cklick every 3-4 seconds for pospecting
      he told me "we have ways to know that its you"
      then i siad well when i sue this its also ME because the programm wouldnt run without me behind the keyboard
      he said regardless it still falls under the third party programm rule and he would not recommend using it. . .

      just wanted you guys to let you know