Close
Page 1 of 2 1 2 LastLast
Showing results 1 to 10 of 11

Hybrid View

  1. #1

    Default Confused on chaining multiple layers of targets

    I have a fairly strong grasp of "All w/o current", "Others in _____", etc when comes to assigning targets to single keys. But I'm unsure how it is supposed to work when you start chaining them together.

    Here is an example. I've setup a ATG called "Hunters", and I have a generic mapped key called "Do DPS". The "Do DPS" mapped key calls "Hunter DPS cycle" with a target of "All". . My "Hunter DPS cycle" mapped key is a multi step that presses keys in a certain order, but here we target "Others in Hunters". I dont want the current window to respond to this, so if i am driving a hunter, i want full control.

    This seemed to work properly, with the target chain of "All" -> "Others in Hunters".

    Now i went in an abstracted some of the key strokes to make my action steps easier to read, and to allow individual chars to virtual the key strokes if they are in a different location. So instead of of Step 1 being "1->Others in Hunters", it now reads "Hunter: Quickshot-> Others in Hunters", and the mapped key for "Hunter: Quickshot" is "1-> Others in Hunters". It seemed to make sense with how the flow worked above, but the chain of "All"-> "Others in Hunters"-> "Others in Hunters" didn't seem to find my single hunter (this hunter was not "current" either). Let's call my hunter "Bob".

    When I changed it to "All"-> "Others in Hunters"-> "All in Hunters", it magically worked, but this kind of breaks what I thought of how the chaining worked. Now I am confused and can't find any documentation how it is supposed to work. I can see a few ways:

    1) the active targets for each mapped key are filtered with each step. "All in Healers" -> "All in Druids" would only send strokes to the cross section of healers and druids.
    2) the active target for each mapped key is inclusive with each step, such that "All in Healers" -> "All in Druids" would send key strokes to all druids AND all healers.
    3) actions are broadcast to slots from other slots. "All in Healers" -> "All in Druids" would send key strokes to all the druids, but not the healers. Essentially the healer slots broadcast the final action to all the druids.

    I'm leaning towards #3 here, but that would imply that "All"->"Others in Hunters" would send several key strokes to Bob every time its triggered (one for every non hunter in my group) which is not what I want.

    I also have no idea how "current" (and thus "others") is maintain between steps. Its either:
    1) current is the current slot, end of story. If slot 2 is the current slot, slot 2 remains the current slot regardless. "others" refers to all slots other than 2 for every part of the chain.
    2) current is filtered with each step, and each slot in the 2nd part of the chain 2 evals the events sent to it. This could explain why "All"->"Others in Hunters"-> "Others in Hunters" effect no one when there is only one hunter. In the second part of the chain, Bob gets notification to Do Mapped Key "Hunter DPS cycle since he is not current and a member of the Hunters ATG. In the next part of the chain above, Bob is now "current" in his slot's eval of this portion, and thus "Others in Hunters" no longer applies to him.


    After my testing yesterday, I'm inclined to thing #2 is right, but I'm still not sure.

    Sorry for the wall of text, but it's a complex mechanic, and I am fairly lost here.

  2. #2

    Default

    It's actually not as complex as people make it out to be, but that's okay. You really just need to understand what Do Mapped Key Action actually DOES (and this is exactly the same regarding the Targets used by buttons on a Click Bar), which is the problem for most people. From your post it sounds like you've figured it out.

    I'm going to go into a whole lot of detail with various scenarios so I can come back to this post later for a user manual/wiki article, future posts with the same question, etc. I was originally going to say something about your wall of text that was hard to follow, but I'm dwarfing it

    Think of it like this.

    Say you have a Keystroke Action. A Keystroke Action passes a keystroke directly to the game in whichever Target windows, for the game to interpret. You get that, I get that, simple right? So sending "1" to the second window will just press "1" in that window, as if you were playing that window without ISBoxer. Or in the case of the auto-generated FTL DPS Keys, you hit 1, and the other windows assist and press 1.

    Well, say you're in window 2, and you want that to happen as if you're in window 1 instead -- meaning that everyone auto-assists the guy in window 1, and presses 1. To activate that Hotkey in window 1, you can't just use a Keystroke Action to send 1 to window 1, because as we already know, that would just push 1 in the game in that window and nothing else. Instead, you would use a Do Mapped Key Action, set to do "DPS 1" in window 1.

    It's the exact same thing as a Keystroke Action, except ISBoxer is accepting it instead of WoW (and instead of the Hotkey, you're referencing the Mapped Key by name). The Mapped Key is going to fire exactly as if you pressed its Hotkey, in *each of the Target windows*. It quite literally just sends a message to each of the Target windows, saying Fire this Mapped Key as if I hit its Hotkey! p.s. this is in fact documented: http://isboxer.com/wiki/Do_Mapped_Key_Action; granted it could be linked from the Do Mapped Key Action editing pane. (Related notes: any given window may prevent the Mapped Key from being processed, by not having that Mapped Key loaded; any given window may also change the Mapped Key that is executed, by virtualizing the Mapped Key used by the Do Mapped Key Action.)

    In terms of math:
    The Target from your Do Mapped Key Action is therefore effectively multiplied by the Targets used in the Mapped Key it's "do"ing -- by virtue of "exactly as if you pressed its Hotkey in each Target window" as described above. There is no special Target handling for any particular Action, all Targets work exactly the same and are always respected.

    • "Current window" always means whichever window activated the Mapped Key. (Regardless of whether it came from you pressing the Hotkey in this window, or a Do Mapped Key Action, or a Click Bar Button)
    • "Other" always means any window that did NOT activate the Mapped Key. (the exact opposite of Current window)

    You can fairly easily tell how many windows are going to receive any given Action. I'll start with one Action, say a Keystroke Action. There is no fancy multiplication when solving for one action.

    Where N is the number of windows:

    • Window:Current aka "self" = 1
    • Window:All w/ Current aka "all"= N
    • Window:All w/o Current aka "all other" = (N-1)
    • A slot, eg. Slot 1, or a Character by name = 1
    • Group(all of) = size(Group)
    • Group(others in) = size(Group)-1 if "current window" is in the group, otherwise size(Group)

    Now let's multiply! On the left side of the multiply sign is the Target of a Do Mapped Key Action, and on the right side is the Target of a Keystroke Action within the Mapped Key it's "do"ing. And on the right side, the number of Keystrokes sent. I'll start by using the SAME Target in both the Do Mapped Key Action, and the Keystroke Action.

    • Window:Current * Window:Current = 1*1 = 1
    • All * All = N*N
    • All other * All other = (N-1)*(N-1)
    • Slot 1 * Slot 1 = 1*1 = 1
    • Group(all of)*Group(all of) = size(Group)*size(Group)
    • Group(others in)*Group(others in) = (size(Group)-1) * (size(Group)-1)

    This is the most common mistake, because people think that the Do Mapped Key Action is going to do the Mapped Key in the current window and mutate the targets of the actions. In some cases that behavior is desirable and I should certainly make it possible in Joe Multiboxer -- this would make it so All * All = N instead of All * All = N*N. However, Do Mapped Key Action is about as simple as can be, and mutating the targets in the actions in ISBoxer would require a huge rewrite (which JMB already is) and it'd probably end up breaking things.

    So anyway in interpreting that last table, if you've got a group of 5, N*N is 5*5 = 25. The Keystroke Action is executed 5 times in each window. That's "bad" (not useful, nor will it get you banned). Even worse is All other * All other, which isn't going to stay "other" for long because your current window is going to get N-1 keystrokes sent to it. You'd be telling all of the other windows, to EACH tell all of their "other" windows to press a key.

    So what is good? Well that's easy. You generally want it to solve to a number less than or equal to N, because if it's greater than N, you know for certain that you're doubling up on at least one window. That generally means one or the other (between the Do Mapped Key Action's Target, and the Keystroke Action's Target) should solve to 1 in the first table. In other words, one of the Targets should be a specific window (current or otherwise).

    Good examples, table 1:

    • Window:Current * Window:Current = 1*1 = 1
    • Window:Current * All = 1*N
    • Window:Current * All other = 1*(N-1)
    • Window:Current * Slot 1 = 1*1
    • Window:Current *Group(all of) = 1*size(Group)
    • Window:Current *Group(others in) = 1 * (size(Group)-1)

    This table shows that Do Mapped Key Action with Target=Window:Current, is exactly like hitting the Hotkey for the other Mapped Key in the current window. Just like I explained earlier That's excellent for various purposes, but will generally not let you, for example, easily send the keystroke to a different target just by changing the Target of the Do Mapped Key Action. That's because the Target is built into the Keystroke.

    Good examples, table 2:

    • Window:Current * Window:Current = 1*1 = 1
    • All * Window:Current = N*1
    • All other * Window:Current = (N-1)*1
    • Slot 1 * Window:Current = 1*1
    • Group(all of) * Window:Current = size(Group)*1
    • Group(others in) * Window:Current = (size(Group)-1)*1

    This table is nearly identical to the previous table. The solutions turn out to be essentially the same, and that's important because you might want the same end result, but with added capabilities. The difference here, is that the Keystroke Action is configured to use Window:Current, and the Do Mapped Key Action is configured to use, well, anything! You can send this keystroke to ANY window or set of windows, just by changing the Target of the Do Mapped Key Action. This is how I would recommend configuring pretty much any mapped keys meant to be used with a Do Mapped Key Action.

    .... with the particular exception of "FTL Follow Me", "FTL Assist Me", and "FTL Target Me". These keys have to preserve the original source -- the guy you want to follow, which is "Me". You can use these with a Do Mapped Key Action sent to a specific Character. The "Me" in the name of the Mapped Key is meant to indicate that. If you send "FTL Follow Me" to multiple windows via Do Mapped Key Action, each of those windows becomes "Me" and will ask each of its "others" to follow. (Note to self: add the source window as a possible Target)

    Good examples, table 3:

    • Slot 1 * Window:Current = 1*1 = 1
    • Slot 1 * All = 1*N
    • Slot 1 * All other = 1*(N-1)
    • Slot 1 * Slot 1 = 1*1
    • Slot 1 *Group(all of) = 1*size(Group)
    • Slot 1 *Group(others in) = 1 * (size(Group)-1)

    Equally as good as Good examples, table 1, with the exception that it has to pass through Slot 1 regardless of which window you're in. That's either better or worse than table 1, depending on your needs. Passing through a specific Slot can be useful for multi-step Mapped Keys, when you want the Step state not to be held individually in all windows. By that I mean, say your Keystroke Action is actually in a Mapped Key with 2 Steps. Say one step sends a keystroke to Slot 1 and the other sends a keystroke to Slot 2. Each window keeps the state of each Mapped Key (on or off, what step it's on, etc) independently of others, so if you use Do Mapped Key to Window:Current, you could go through and hit the Hotkey one time in each window, and every one of those Keystroke Actions will send to Slot 1 (by executing the first Step). However, by using Do Mapped Key to Slot 1, you force Slot 1's state to be used for that mapped key. So now by going through and hitting the Hotkey one time in each window, instead of sending keystrokes only to Slot 1, it will rotate between the Steps based on Slot 1's state -- meaning it doesn't matter which window you're in, it's going to go 1 2 1 2 1 2 no matter what.

    Alternatively, a Mapped Key Step Action can be used in each Step of the multi-step Mapped Key, to sync the state in the other windows. That's what some of the Mapped Keys do that are generated by the Quick Setup Wizard. Activate Maps in the Control key map for example tells the other windows what Step to put the Mapped Key on. This gives similar behavior, while keeping the state decentralized.

    I'd go on to table 4 being the reverse of table 3 but I don't think it's necessary to show that and at the moment I don't have anything else to add that would make good use of that particular table.
    Lax
    Author of ISBoxer
    Video: ISBoxer Quick Start

  3. #3

    Default

    One thing I will go over real quick is that "All druids * all healers" (in terms of the tables above) is going to have each and every druid tell each and every healer to press a key. Not druid healers. There is a few ways to get that, though. An ATG specific to druid healers being the most obvious, but you can also do it with the two separate ATGs. Here's a useful trick: Send a Mapped Key State Action to all Druids to enable a Mapped Key (that everyone else should have disabled), then use a Do Mapped Key Action that targets healers. Or vice versa. Only the windows that have the Mapped Key enabled will be able to execute it, and since you're having Healers try to execute it, you're effectively limiting it to the intersection of Druids and Healers ATGs.

    Now don't go complaining that all of the above isn't documented


    As far as setting up your DPS mapped keys. What I do is set up my Mapped Key for each archetype (e.g. i have a mapped key for each of the 3 Paladin trees), and everything that Mapped Key does has Target=Window:Current. So if I want only one, two, or however many of my ret paladins to DPS, I can control that from the Do Mapped Key end. Secondly, a lot of my main DPS keys and even some of my situationals are virtualized. What that means is I can use a single Do Mapped Key Action, to perform the main DPS key in whichever set of windows I want, without specifying "hunters" or "paladins" etc as part of it.

    To do that, I have one set of "master" mapped keys, and each of these masters has a Hotkey. Then I have a set of Mapped Keys that serves absolutely no purpose other than to be the Target for the Do Mapped Key Actions. They have one step, but it's completely empty. They do technically serve a purpose, these are what will happen if the Mapped Key is not virtualized for any given Character. (Another way to think of this feature is "mapped key override.") So that means I could put a Popup Text Action, or even a Sound Action, in these Mapped Keys to get an indicator that it's not virtualized and I need to fix one of the Characters.

    To set up the virtualization ("override"):
    1. select a Character in the top pane
    2. click Virtual Mapped Keys in the left pane
    3. Set it up so that it reads something like "DPS in Some Key Map is now DPS in Hunters Key Map". You can click and drag a Mapped Key from the top pane into the boxes on the bottom right, which means you do not have to click the < and manually select from drop-down boxes in a popup window.
    4. Click the + to add one, there's an X to remove one.

    As the Virtual Mapped Keys editing pane explains, when used via Do Mapped Key Action or Click Bar, it will override the mapped key on the left, with the key on the right. That's done on a per-Character basis when the instruction to execute the Mapped Key is received from the source window. This virtualization also helps when mix-and-matching your teams, like grabbing a shaman to use in place of a druid, etc. That can be done by dragging into a slot in your Character Set. (Note that I'm intending to simplify that in Joe Multiboxer)
    Last edited by Lax : 10-19-2010 at 10:02 PM
    Lax
    Author of ISBoxer
    Video: ISBoxer Quick Start

  4. #4

    Default

    My head hurts from reading that. I am thoroughly confused.
    “Is God willing to prevent evil, but not able? Then he is not omnipotent.
    Is he able, but not willing? Then he is malevolent.
    Is he both able and willing? Then whence cometh evil?
    Is he neither able nor willing? Then why call him God?”
    Epicurus

  5. #5

    Default

    TL;DR = use "Window:Current" in your Mapped Keys if you want to use Do Mapped Key Action with it.
    Lax
    Author of ISBoxer
    Video: ISBoxer Quick Start

  6. #6

    Default

    ..... Just make another ATG for all hunters cept the main hunter.

    Whatever group you need just make it.

    28 BoXXoR RoXXoR Website
    28 Box SOLO Nalak 4m26s! Ilevel 522! GM 970 Member Guild! Multiboxing Since Mid 2001!

  7. #7

    Default

    Thank you Lax for the full and complete explanation. It may take me a few read-throughs to realize the full implications, but I grasp the underlying concept now.

    I also appreciate you giving some example from your setup. It really helps to understand how the tools you have laid were intended to be used, and in doing so, has pointed out places where my setup could be improved.

  8. #8

    Default

    Thanks for the very informative post, Lax.

    I learned more from a careful read-through, but I'm with Pinot - this is going to take multiple reads to get it
    10-boxing Alliance Sargeras and Kil'jaeden

  9. #9

    Default

    Quote Originally Posted by Mercurio View Post
    Thanks for the very informative post, Lax.

    I learned more from a careful read-through, but I'm with Pinot - this is going to take multiple reads to get it
    I plan on making a long post asking how to do the focus targets we need to do when we raid together. I will take some screenshots of my settings to show how we did it. Right now I am not 100% sure my set focus target is working. My biggest issues are setting a focus beside the main to dps and figuring out the best way for cc. When I get the energy I will make a long post about how confused I am. Until then I am going to drink beer.
    “Is God willing to prevent evil, but not able? Then he is not omnipotent.
    Is he able, but not willing? Then he is malevolent.
    Is he both able and willing? Then whence cometh evil?
    Is he neither able nor willing? Then why call him God?”
    Epicurus

  10. #10

    Default

    As much as I love ISBoxer, I feel like I need a PhD to get beyond the basics. Hopefully Joe Multiboxer will make things easier for those of us whose brains are filled with mush.

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •