I know I can do USB filtering for different VMs. Is there SW that will do USB filtering to different applications running in the same windows? For example having separate USB number pads filtered to each WoW instance running?
Printable View
I know I can do USB filtering for different VMs. Is there SW that will do USB filtering to different applications running in the same windows? For example having separate USB number pads filtered to each WoW instance running?
I don't know of such a tool, been looking myself.
One utility I do think is needed here is FancyZones. It let's you set up a tiling approach that you can reuse. https://www.onmsft.com/how-to/how-to...window-manager
On the spreadsheet we have listed all the Utilities seen being discussed in the Discord and the Forums:
https://docs.google.com/spreadsheets...gid=1566844114
FancyZones was already on the spreadsheet but is "still in a pre-release state" and has not tested as well as some of the other options but "your mileage may vary".
There are multiple other tools that have been better in testing and so far the consensus has been that generally best windows layout tool has been 'ShiftWindow' (which is hi-lighted in bright green because it is in the lead so far).
Note that be default all the WoW windows are named the same when launched. One helpful tool that can be used with multiple Windows Mangement Softwares is the Utility "GUIPropView" which is a tool to display info/properties on all windows open and can modify window names. I quickly opened 5 wow clients and with GUIPropView I appended a 1 through 5 on each window. With the numbers on the end ShiftWindow can put them on the screen where I wanted them (save the profile with the window names and run the profile each time you start a gaming session). You can do all this before you login to WoW and neither tool needs to be running while you are logged in.
"1 input causing only 1 action in only 1 client" While I'm fond of this wording myself, Blizzard has never actually stated this is their new policy. That is our interpretation of their intent - and we don't all share that interpretation. So on one hand I agree with you, but we can't state that as a hard fact unless/until Blizzard clarifies their new rule.
@nodoze On the previous page we were discussing different ideas for keyboards and how they could be cobbled together to send multiple outputs based on 1 button press. You seemed to take offense to the idea of connecting the electrical wiring of the switches together to create a broadcast keyboard, but you're OK with the idea of connecting the physical switches together. I'm honestly not following your logic on why you think electrical connections are bad, but physical connections are OK. Can you elaborate?
For Shift Window, how do set multiple wow windows separately? I set up 5 different rules to grab my 5 wow windows, but it only resized my 1st window 5 times (which makes sense - each window is named the exact same thing).
I have been looking at building 4 standalone bare bones PCs to run their own clients.
To keep costs down I am looking at an i3 core, 4gb ram and a 2gb GPU to meet the minimum requirements.
But there is a step drop-off in $$ from 2GB to 1GB GPUs. Do you think a 1GB GPU is enough if the machine is only running WoW on minimum settings and nothing else?
I would not recommend going below an Nvida GT1030, but I also run at 1920x1080 on my followers (4k on my main). Maybe you can get away with less at lower resolution? But I'd also go with 8GB RAM and an i5, so maybe my expectations are too high. If you're going below a 1030, then I'd be looking at CPU with integrated graphics - AMD APU's. Bottom of this thread a few of discussed what we're looking for hardware. https://www.dual-boxing.com/threads/...tiboxing/page2
But for hardware help, we'd need to know retail or classic, and what resolution you're looking for.
World of Warcraft: Shadowlands System Requirements
https://us.battle.net/support/en/article/256565
Some Blizz reps have indeed been very clear on that things need to be 1-1-1 (here is an: example). I agree that overall Blizz hasn't been clear nor consistent.
Offense is too strong of a word as I am a fan of all the great ideas and documentation/details people have been giving/sharing (especially you). I do get concerned on approaches which are abusable (like via things like automation or multicasting) because I believe that abuses will help bring more enforcement from Blizz and possibly clarifications or restrictions that we can't live with so I do speak out against those exposures to try to protect the community... We don't know which straw will be the one that breaks the camel's back...
It has been many decades since I studied EE so I apologize if I confused or overemphasized hardware vs electrical connections as that was not my intent... My main point was that I would design the multi-connection keyboard to be where it is not-abusable by design and that would be enforced as the hardware level only allowed each key to be configured to connect to only out USB output at a time. Basically every key on the "FrankenBoard5(TM)" would have the potential to connect to any of the 5 USB clients, but ONLY 1 at a time via something like this Rotary Switch (at least conceptually). Conceptually you could envision a keyboard that looks like something like this on the top but has 5 USB connectors on the side/top and if you flip it over it has 48 little Rotary Switches with "little clockfaces" showing 1-5 on them that you adjust per key with a little screw driver. Conceptually the little switches could look something like this picture for every key (except it would be 1-5 instead of 1-4)... That would give you a very flexible keypad for controlling upto 5 PC/VMs but not supporting multi-casting of any single key to more than 1 target... That would be enforced at the hardware level...
If you had any firmware on the keyboard you could make it all encrypted (like Samsung bootloaders and Knox) and include a Trusted Platform Module (TPM) that WoW clients could check to verify the inputs were from a trusted source...
Regarding ShiftWindow being able to IDing windows separately you need to use a utility/tool like GUIPropView to change the title/name of the window before running ShiftWindow Rule Set. Just launch the 5 windows, append a 1-5 on the end of the window name/title with GUIPropView (or another tool), then run your 5 step ShiftWindo ruleset. Links for the GUIPropView tool and many other utitlies are on the spreadsheet. If you want a very elegant windows management and client launcher you may want to check out the Fuiiboxing tab.
Sorry if the above doesn't make sense. Very busy and in a hurry and working with too much coffee and too little sleep...
long as hardware broadcasting is acceptable, we can bounce back. Tab boxing is just awful and no good in fast paced scenarios and even if you can make it work by a thread...it’s not viable long term as it is more work than it has to be.
the truth is, boxing the old days was expensive, I used to 5 box on a desktop back in 2008 and it cost £3000 to have something that was decent enough.
it’s a full circle, we need to use hardware casting gear and budget amd nucs etc
i think all the modern casting software has made boxing so easy and I expensive, it’s been a easy ride for everyone to jump on board.
Time to get our wallets out, and adapt to the policies with hardware.
we will be back in action soon when we all compile a recommended list of hardware for reboot :)
What I worry the most about is bots, they will grow and become a bigger problem for us as we all
get slammed for being a bot using software, living a life of temp bans.
lets hope blizzard identify genuine boxers and treat us fairly and investigate in person rather than the ban hammer drom
the automated system.
I don't actually see there being a good reason to run multiple desktop PC's anymore. For people that want to look at hardware broadcasting for better performance, I think the better option is to feed that input back into a single PC with virtualization. Sure you could feed that back into multiple PC's, but I don't see any benefit of doing it that way (outside of some edge cases where someone has 5 PCs already, so they don't want to pay for virtualization).
I started down the multiple-PCs road myself last week - hooked up the KM synchronizer to my desktop and 2 laptops for testing. It mostly works fine - I just couldn't get my Razer keypad to work with it (which won't be an issue for most people). I had cannibalized another older desktop some years ago, so I ordered parts for that and I was shopping for a 5th PC. Then I started looking at a better monitor setup...
In that time I started seeing what some others were doing with focus-follows-mouse and remapped keys for alt-tabbing. I think the performance there will be fine for 5-boxing- arguably better in some scenarios. I can program keys on my keypad to switch the current window of focus to which ever window I need, then to send a single keypress to that window - that all happens with just 1 keypress. So then you program multiple keys that you have multiple sets of those keys for each client. In combat you can send commands as quickly as you can roll your fingers across those keys. I need to do some more testing, but I think you can basically just mash all 4 or 5 keys at one time and each keystroke still goes where it needs to. Because I'm grouping my attacks onto multiple keys, I can't keymap everything like I used to, but I think I can get the 3 or 4 most hit buttons to all have their own group. For non-combat actions like drinking, mounting, etc (stuff where timing isn't critical), I'll handle those with a mouseover-focus.
These sorts of rapidly switching focus options seem to be the best footing for whatever blizzard decides to do in the future also - if they say, "no broadcasting by any means", I'll already be compliant.
More testing is needed to see how well this all actually performs in game - I've just done some very basic testing with multiple windows and notepad, etc - all seems very promising. The part that's kicking my butt right now is getting my screen layout optimized - but its slowly coming together.
https://gyazo.com/a4ad7d2987fd1632af9b94913789b900
Agreed as full VMs (or Virtualized Desktops) architecturally give you virtually the same thing as physical PC.
Regarding getting your screen layout optimized, did you try renaming your windows with a tool like GUIPropView and then running a layout for each window by name via something like ShiftWindow? It testing mine were all pretty easy to get laid out correctly everytime and others were able to get it to remove the borders at the top of each client (I got it removed on 1 but didn't do for all of them in my testing).
What are you using to bring a desired window into focus via keypress?
cloud/Vm are of the same technology and creates a easy environment to box larger numbers.
this is possibly the kind of tools blizzard wants to not promote, hence hardware route limits numbers and technology within.
this is why I believe blizzard would be ok with raw tech than virtual/software based, because it’s easier to be exploited and run bigger teams with.
sadly, exploiters for personal gain and abusers will continue to cut down the limitations we are having.
I wouldn’t be surprised if they limit to one pc with hardware casting only for input actions. That would clear things up, sadly it’s a political game of cat and mouse in the fog....
Almost every Cloud Computing offering leverages virtualization but virtualization does not mean Cloud Computing...
If I understand correctly I believe Blizz's issue with Cloud Computing was more Intellectual Property (IP) related and related to 3rd parties externally hosting their games and streaming them to you (like NVIDIA's proposed cloud hosing service).
I agree that virtualization technology enables advanced configs for less than equivalent purely physical setups and helps amply abusive techniques/approaches.
The official broadly published stance taken thus far was against MultiCast input capable software and not against MultiCast input capable hardware which is why folk are trying to pursue hardware based MultiCasting approaches in keeping with the "letter of the law" (at least for now).
The smartest thing folks in the community can do, regardless of what approach they take, is to get in keeping with the "spirit of they law" and follow the "1-1-1 rule":
"1 human input can only cause only 1 action in only 1 client (whether enabled via software or hardware)."
We know such virtualisation technology would present a can of worms, we can only hope to get some guidelines from blizzard soon, otherwise as you say the fail-safe is the 1-1-1 input rule to be followed.
This is a really crazy situation, no one knows what is acceptable or not and I doubt we will ever get confirmation for political reasons.
fun times!
I may have to type up the shiftwindow setup.
ShiftWindow was kicking my butt early on, but it is pretty simple once you figure it out. At 1st I was just running my 5 different rules, but it was applying those rules to only 1 client (makes sense - all the client windows have the same name). So then, I was thinking I had to rename each window, then run the rule for that named window - which works, but holy cow is that a lot of effort just to launch your games. Maybe if I knew how to save and script that to run automatically - but I don't know how to do that.
After failing at ShiftWindow I tried FancyZones, but couldn't get it to work with WoW for some reason. So then I tried "Actual Window Manager" which worked, but it was a PITA to set up and it screwed up so many other things. Then I went back to trying GUIPropView in conjunction with some other tools - which also sorta worked. At that point someone in discord explained what I was doing wrong on ShiftWindow, so I went back and figured that out. But by then I was launching my 5 clients in windowed mode, so I tried "Windowed Borderless Gaming" to strip the window piece and I thought it all looked pretty good. But then someone pointed that there was no need to launch in windowed mode - just launch in full screen and ShiftWindow still works find - plus no need to strip out the window boarders then. Eureka! Screen setup finally looks great and its easy enough to launch everything. https://gyazo.com/038d7d1d9dc3ff0fa92287772152fbbb
I imagine JMB will make the screen setup even easier to configure and launch. So there's no reason to get super invested in something else for now. But a quick ShiftWindow config is easy enough.
Now back to actual control setup and testing - my goal is a combination of mouseover and macro keys on my Razer Tartarus keypad.
A "mental gymnastic" workaround I myself am kinda okay with: Making use of the fact that a keypress indeed consists of two events (stumbled across that again while playing around with Arduinos and the USB-HID implementation there) : onPress and onRelease.
-Find a Windowmanager that let's you hotkey the window to focus
-Make use of the HID-Driver of your programmable keyboard (if it is capable to mimic that behavior) :
onPress - - - > send hotkey to focus window X
onRelease - - - -> cast spell hotkey of client X
If MIDI Hardware is involved and/or translated to Keystrokes it would be the terminology NoteOn / NoteOff.
Not saying that this will be tolerated, really no one knows, but from my perspective a setup like that can only send one key to one client at a time while minimizing keypresses / not injecting to background windows. Also the first event is only used within the OS while only the second event is processed by a client.
I would also try a "mixed" solution as you proposed, only handling the most important spells that way while maintaining the hover over solution for stuff like pots/cds/reg
What are the resolutions of the Windows in https://gyazo.com/038d7d1d9dc3ff0fa92287772152fbbb?
This is all on a 4k 32" monitor (3840x2160), but for whatever reason ShiftWindow puts it at 2560*1440 - I'm assuming that's due to 150% UI Scaling on my windows desktop.
So in ShiftWindow I have my main screen set for 2060*1400, then my smaller screens at 500*350 - which leaves room for the 40 pixel taskbar at the bottom.
Within the game, it recognizes that I'm running a custom resolution of 3090*2100 and then 750*525.
https://gyazo.com/038d7d1d9dc3ff0fa92287772152fbbb?
That is really well done and looks nice. I may make my scaling 150% also on my 3840x2160 and try those settings.
@Wepwewet - what are you using for a window manager? I tried "actual window manager". It works, but I hated that tool - it messed up so much of the rest of my config.
As for "on-press" controlling where you have focus and "on-release" actually doing the in-game action - I suppose that works, but that limits you to only pressing 1 key at time. I'm trying to get it down so I can either just roll my fingers across 4 or 5 keys, if not just press 4 keys at the same time - so I'm trying to get the focus change as close as possible to in-game action
I must admit I haven't done very much of testing, more conceptual stuff. I tried a open source Javascript solution called HyperKeys, it does work well if you rename the windows beforehand (Titlechanger is what I used for that). But there's still some mild annoyances, mainly that it autodrags your mouse to the new window. Guess one can easily comment out some of the code...
But to be honest I won't dwelve further into all that window management stuff as I expect JMB to handle exactly those annoyances quite well / better without having 4 tools to start up and configure every time. I think the big point on all this is: splitting key down/release does work and - from my understanding it should be okayish within the TOS.
Next step for me is to wait for JMB and see how well it is handling hotkey focus. I guess we won't see instant mashing of 4 buttons, but more of a letting your four fingers slide across 4 adjacent buttons for your main AoE rotation. I'm cool with that.
Thanks for the tip regarding ShiftWindow. I didn't understand how you found a way to easily configure all your windows without renaming them first. For anyone looking for an alternative to renaming windows, this executable does only that and supports batch - https://github.com/lcapaldo/SetWindowText
Example.cmd:
Tip for this setup:Code:$echo off
start "" "C:\Games\World of Warcraft\_classic_\WowClassic.exe"
ping localhost -n 2
"C:\Games\World of Warcraft\_classic_\SetWindowText.exe" "World of Warcraft" "WoW1"
start "" "C:\Games\World of Warcraft\_classic_\WowClassic.exe"
ping localhost -n 2
"C:\Games\World of Warcraft\_classic_\SetWindowText.exe" "World of Warcraft" "WoW2"
start "" "C:\Games\World of Warcraft\_classic_\WowClassic.exe"
ping localhost -n 2
"C:\Games\World of Warcraft\_classic_\SetWindowText.exe" "World of Warcraft" "WoW3"
Control Panel > Ease of Access Center > Make the mouse easier to use
Enable "Activate a Window by hovering over it with the mouse"
I went even more basic - I just made 5 copies of the WoWClassic.exe in the same folder (wow1.exe, wow2.exe, wow3.exe, etc). Both the retail and classic exe files are fairly small anyway (35-50MB). This way not only are the windows already renamed when launched, but I can pin each exe to the taskbar separately (you can't pin the same exe 5 times). I needed them all pinned separately that way I could use windows shortcuts to switch between them <windows key> + 1 will either open or focus the 1st item pinned on your taskbar, + 2 does the 2nd one, etc.
Batch script that renames windows dynamically with SetWindowText so you only need one shortcut.
Remove the two first lines that launches the client and waits, and this should even work when run after launch from Battle.net .
Code:$ECHO OFFSTART "" "C:\Games\World of Warcraft\_classic_\WowClassic.exe"
TIMEOUT /T 1
TASKLIST /FI "WINDOWTITLE eq WoW_BG" | FINDSTR "WowClassic.exe"
IF ERRORLEVEL 1 "C:\Games\World of Warcraft\_classic_\SetWindowText.exe" "World of Warcraft" "WoW_BG"
TASKLIST /FI "WINDOWTITLE eq WoW1" | FINDSTR "WowClassic.exe"
IF ERRORLEVEL 1 "C:\Games\World of Warcraft\_classic_\SetWindowText.exe" "World of Warcraft" "WoW1"
TASKLIST /FI "WINDOWTITLE eq WoW2" | FINDSTR "WowClassic.exe"
IF ERRORLEVEL 1 "C:\Games\World of Warcraft\_classic_\SetWindowText.exe" "World of Warcraft" "WoW2"
TASKLIST /FI "WINDOWTITLE eq WoW3" | FINDSTR "WowClassic.exe"
IF ERRORLEVEL 1 "C:\Games\World of Warcraft\_classic_\SetWindowText.exe" "World of Warcraft" "WoW3"
REM .... add code for the number of clients.
Have two instances of WoW with different graphics or config settings : woweconomy (reddit.com)
[WoW] Console Variables for Video Settings (Shadowlands) (dual-boxing.com)
I need to figure out some options for changing gfx settings on my followers - both of these approaches seem useful.
This is some of what I'm fiddling with at the moment. I'm trying to create dynamic settings in a custom addon based on the different window resolutions created by ShiftWindow. The SetCVar commands seems to be what you are looking for. I've used it to set UI Scale, but I also added different Antia-Aliasing settings as an example.
https://www.dual-boxing.com/attachme...tid=2449&stc=1
https://www.dual-boxing.com/attachme...tid=2441&stc=1
Folder: MyStuff
File MyStuff.toc
File MySettings.luaCode:## Interface: 11305
## Title: MyStuff
## Version: v1.13 Classic
## Notes: Stuff
myUI.lua
myFunc.lua
File myFunc.luaCode:local function SetPosition(frame, ...)
if type(frame) == 'string' then
UIPARENT_MANAGED_FRAME_POSITIONS[frame] = nil
frame = _G[frame]
message("text")
end
if type(frame) == 'table' and type(frame.IsObjectType) == 'function' and frame:IsObjectType('Frame') then
local name = frame:GetName()
if name then
UIPARENT_MANAGED_FRAME_POSITIONS[name] = nil
end
frame:SetMovable(true)
frame:SetUserPlaced(true)
frame:SetDontSavePosition(true)
frame:SetAttribute('ignoreFramePositionManager', true)
frame.ignoreFramePositionManager = true
if ... then
frame:ClearAllPoints()
frame:SetPoint(...)
end
frame:SetMovable(false)
end
end
local function HorizontalBars()
for i,v in ipairs{"Left","Right"} do for i = 2, 12
do local n = "MultiBar"..v.."Button" local btn = _G[n..i] btn:ClearAllPoints()btn:SetPoint("LEFT", n..i - 1, "RIGHT", 6, 0)
end
end
end
SetCVar('useuiscale', 1)
SetCVar('uiscale', 1)
UIParent:SetScale(1)
width = GetScreenWidth()
height = GetScreenHeight()
print("UI ", width, " ", height)
-- 3440x1440
if math.floor(width) == 1834 then
print("3440x1440")
-- FULLSCREEN SETTINGS
end
-- MULTIBOX MASTER
if math.floor(width) == 1190 then
print("MULTIBOX MASTER")
-- ACTION BARS
HorizontalBars()
SetPosition(MultiBarLeftButton1, "BOTTOMLEFT", MultiBarBottomLeftButton1, "TOPLEFT", 0, 7)
SetPosition(MultiBarRightButton1, "BOTTOMLEFT", MultiBarBottomRightButton1, "TOPLEFT", 0, 7)
--SetPosition(StanceBarFrame, "CENTER", PlayerFrame, "CENTER", 0, -50)
SetPosition(StanceBarFrame, "BOTTOMLEFT", MultiBarLeftButton1, "TOPLEFT", -235, 90)
--SetPosition(PetActionButton1, "BOTTOMLEFT", MultiBarLeftButton1, "TOPLEFT", 0, 7)
SetPosition(PetActionButton1, "BOTTOMLEFT", MultiBarLeftButton1, "TOPLEFT", -400, 100)
-- CASTING BAR
SetPosition(CastingBarFrame, "CENTER", WorldFrame, "CENTER", 0, -300)
--CastingBarFrame.Border:Hide()
--CastingBarFrame.Text:Hide()
--CastingBarFrame.Flash:Hide()
--CastingBarFrame:SetScale(0.7)
-- PLAYER FRAME
SetPosition(PlayerFrame, "CENTER", WorldFrame, "CENTER", -200, -250)
--SetPosition(rBFS_BuffDragFrame, "RIGHT", PlayerFrame, "LEFT", 0, 0)
SetPosition(TemporaryEnchantFrame, "RIGHT", PlayerFrame, "LEFT", -2, -93)
--PlayerFrameManaBarTextLeft:Hide()
--PlayerFrameManaBarTextRight:SetScale(0.8)
--PlayerFrameManaBarText:SetScale(0.8)
--PlayerFrameHealthBarTextLeft:SetScale(0.8)
--PlayerFrameHealthBarTextRight:SetScale(0.8)
--PlayerFrameHealthBarText:SetScale(0.8)
-- TARGET Frame
SetPosition(TargetFrame, "CENTER", WorldFrame, "CENTER", 200, -250)
SetPosition(TargetFrameToT, "BOTTOMLEFT", TargetFrame, "TOPRIGHT", -25, -25)
TargetFrameToT:SetScale(1.3)
-- PARTY FRAME
SetPosition(PartyMemberFrame1, "RIGHT", PlayerFrame, "LEFT", 0, 0)
PartyMemberFrame1:SetScale(1.3)
PartyMemberFrame2:SetScale(1.3)
PartyMemberFrame3:SetScale(1.3)
PartyMemberFrame4:SetScale(1.3)
-- RAID Frame
SetPosition(CompactRaidFrameContainer, "BOTTOM", MultiBarLeftButton12, "TOPRIGHT", 3, 7)
CompactRaidFrameContainerBorderFrameBorderTop:Hide()
CompactRaidFrameContainerBorderFrameBorderTopLeft:Hide()
CompactRaidFrameContainerBorderFrameBorderTopRight:Hide()
CompactRaidFrameContainerBorderFrameBorderLeft:Hide()
CompactRaidFrameContainerBorderFrameBorderRight:Hide()
CompactRaidFrameContainerBorderFrameBorderBottom:Hide()
CompactRaidFrameContainerBorderFrameBorderBottomLeft:Hide()
CompactRaidFrameContainerBorderFrameBorderBottomRight:Hide()
-- UI SCALE
SetCVar('useuiscale', 1)
SetCVar('uiscale', 0.64999997615814)
UIParent:SetScale(0.64999997615814)
-- CONFIG
SetCVar('MSAAQuality', "3,0")
end
-- MULTIBOX SLAVE
if math.floor(width) == 1410 then
print("MULTIBOX SLAVE")
-- MENUBAR
--SetPosition(MainMenuBar, "BOTTOMRIGHT", WorldFrame, "BOTTOMRIGHT", -120, 0)
-- ACTION BARS
HorizontalBars()
SetPosition(MultiBarLeftButton1, "BOTTOMLEFT", MultiBarBottomLeftButton1, "TOPLEFT", 0, 7)
SetPosition(MultiBarRightButton1, "BOTTOMLEFT", MultiBarBottomRightButton1, "TOPLEFT", 0, 7)
SetPosition(PetActionButton1, "BOTTOMLEFT", MultiBarLeftButton1, "TOPLEFT", 0, 7)
--SetPosition(StanceBarFrame, "CENTER", PlayerFrame, "CENTER", 0, -50)
StanceBarFrame:SetScale(0.8)
SetPosition(StanceBarFrame, "BOTTOMLEFT", MultiBarLeftButton1, "TOPLEFT", 0, 7)
-- CASTING BAR
SetPosition(CastingBarFrame, "CENTER", WorldFrame, "CENTER", 0, -300)
--CastingBarFrame.Border:Hide()
--CastingBarFrame.Text:Hide()
--CastingBarFrame.Flash:Hide()
--CastingBarFrame:SetScale(0.7)
-- PLAYER FRAME
SetPosition(PlayerFrame, "CENTER", WorldFrame, "CENTER", -200, -140)
--SetPosition(rBFS_BuffDragFrame, "RIGHT", PlayerFrame, "LEFT", 0, 0)
SetPosition(TemporaryEnchantFrame, "RIGHT", PlayerFrame, "LEFT", -2, -93)
-- TARGET FRAME
SetPosition(TargetFrame, "CENTER", WorldFrame, "CENTER", 200, -140)
SetPosition(TargetFrameToT, "LEFT", TargetFrame, "RIGHT", -20, -20)
TargetFrameToT:SetScale(1.3)
-- PARTY FRAME
SetPosition(PartyMemberFrame1, "RIGHT", PlayerFrame, "LEFT", 0, 0)
PartyMemberFrame1:SetScale(1.3)
PartyMemberFrame2:SetScale(1.3)
PartyMemberFrame3:SetScale(1.3)
PartyMemberFrame4:SetScale(1.3)
-- RAID FRAME (TOGGLE IN GAME: /click CompactRaidFrameManagerDisplayFrameLockedModeToggle)
SetPosition(CompactRaidFrameContainer, "TOPLEFT", WorldFrame, "TOPLEFT", 0, 0)
CompactRaidFrameContainer:SetScale(1.4)
CompactRaidFrameContainerBorderFrameBorderTop:Hide()
CompactRaidFrameContainerBorderFrameBorderTopLeft:Hide()
CompactRaidFrameContainerBorderFrameBorderTopRight:Hide()
CompactRaidFrameContainerBorderFrameBorderLeft:Hide()
CompactRaidFrameContainerBorderFrameBorderRight:Hide()
CompactRaidFrameContainerBorderFrameBorderBottom:Hide()
CompactRaidFrameContainerBorderFrameBorderBottomLeft:Hide()
CompactRaidFrameContainerBorderFrameBorderBottomRight:Hide()
CompactRaidFrameManagerToggleButton:Hide()
CompactRaidFrameManagerDisplayFrame:Hide()
CompactRaidFrameManager:Hide()
CompactRaidFrameManagerBg:Hide()
CompactRaidFrameManagerBorderTopRight:Hide()
CompactRaidFrameManagerBorderRight:Hide()
CompactRaidFrameManagerBorderBottomRight:Hide()
-- CHAT FRAME
FCF_Tab_OnClick(ChatFrame3)
-- UI SCALE
SetCVar('useuiscale', 0)
-- CONFIG
SetCVar('MSAAQuality', "1,0")
end
Code:hooksecurefunc("BuffFrame_UpdateAllBuffAnchors", function() for i = 1, BUFF_ACTUAL_DISPLAY do
_G["BuffButton"..i]:ClearAllPoints()
if i > 1 and mod(i, BUFFS_PER_ROW) == 1 then
_G["BuffButton"..i]:SetPoint("TOP", _G["BuffButton"..(i-BUFFS_PER_ROW)], "BOTTOM", 0, -BUFF_ROW_SPACING)
elseif i == 1 then
-- USE THIS TO CHANGE POSITION OF BUFF FRAME (IN RELATION TO PLAYERFRAME)
_G["BuffButton"..i]:SetPoint("TOPLEFT", PlayerFrame, 95, -75)
else
_G["BuffButton"..i]:SetPoint("TOPLEFT", _G["BuffButton"..i-1], 35, 0)
end
end
end)
hooksecurefunc("DebuffButton_UpdateAnchors", function (buttonName, index)
local buff = _G[buttonName..index]
local numBuffRows = math.floor(BUFF_ACTUAL_DISPLAY/9) + 1
buff:ClearAllPoints()
if index > 1 and mod(index, BUFFS_PER_ROW) == 1 then
buff:SetPoint("TOP", _G[buttonName..(index-BUFFS_PER_ROW)], "BOTTOM", 0, -BUFF_ROW_SPACING)
elseif index == 1 then
-- USE THIS TO CHANGE POSITION OF DEBUFF FRAME (IN RELATION TO BUFFBUTTON1)
buff:SetPoint("TOPLEFT", _G["BuffButton1"], 0, (60 + (numBuffRows * 45)))
else
buff:SetPoint("TOPLEFT", _G[buttonName..(index-1)], 35, 0)
end
end)
-- Remove flashing PlayerFrame in rested area
hooksecurefunc("PlayerFrame_UpdateStatus", function()
if IsResting("player") then
PlayerStatusTexture:Hide()
PlayerRestGlow:Hide()
PlayerStatusGlow:Hide()
end
end)
For everyone doing the focus-follows-mouse - what did you set your delay to?
Change Time to Activate Window by Hovering Over with Mouse in Windows | Tutorials (tenforums.com)
Also - has anyone found quicker, more convenient way to turn mouse-focus on and off? (instead of clicking through the control panel) Bit of a PITA going back and forth manually.
0ms delay ofc, but still some delay may happen. On the other hand, they don't want to unban me yet, maybe pretty fast mouse move with high dpi may flag account and it's better to keep default 500ms.
As for turn on/off, there is registry value for this, but will require relog/restart to system. Probably best approach to make shortcut right to mouse settings or make another virtual desktop with Control Panel opened.
MouseWinX can change settings without needing to log off and on.
https://www.dual-boxing.com/attachme...tid=2445&stc=1
https://www.dual-boxing.com/attachme...tid=2447&stc=1
You do need to compile it yourself with Windows Driver Kit Version 7.1.0
Download: https://www.microsoft.com/en-us/down....aspx?id=11800
Moun the ISO-file and install (you only need to build option).
Download and extract: https://github.com/cuviper/mousewinx/archive/master.zip
Run x86 Free Build Environment from Start Menu
In the console, change to source files directory and type build.
https://www.dual-boxing.com/attachme...tid=2448&stc=1
https://www.dual-boxing.com/attachme...tid=2446&stc=1
For whatever reason I've fond it easier to mouse left-right instead of up-down. World of Warcraft (gyazo.com)
Main window is 2560x1000 (3840x1500 in game), followers are 640x400 (960x600 in game).
I recorded a quick clip of testing with focus-follows-mouse. I believe the default is 500ms delay between window swaps - this would be totally unusable for instant casts. https://youtu.be/51-WvBj7hXY
Then I tried again with my keypad macros set in Razer Synapse to change window focus and send a single keystroke to that window. (Razor Synapse macro is: <windows> key-down, "5" key-down, "5" key-up, <windows> key-up, "6" key-down, "6" key-up. I have the whole thing set for 0 delay). That worked much better for me. https://youtu.be/g8DGhXKTaOQ
I did some quick testing to see how its working in combat - something is off. Multibox Testing - 1st Combat - YouTube you can see something is pressing the windows button, but not sending the screen swap. Overall DPS is good - doesn't seem like I'm loosing too many global cool downs by doing it this way.
I'm looking forward to contributions and input for
https://github.com/WowOpenBox/WowOpenBox/issues
to make it the best, most suitable to (what is left of) wow multiboxing - please lmk
The swapping of Focus using this approach has been fast for me. The main issue I have had is that if I press the key twice I swap to the window and then minimize it. Anyway to turn the minimization off if you do <windows key>+1 while already having that window active?
Microsoft Powertoys
I found a use for the included Keyboard Manager in ShiftWindow setups. I can remap shortcuts like Ctrl+C to any other key combination, but specify that it only applies to WowClassic.
I also map the same shortcuts to macros in game.
Lets say I have my Hunter in the main window. If I press Ctrl+C, the remapped command Ctrl+Alt+Numpad0 tells ShiftWindows to put my tank in the main window. Ctrl+Alt+Numpad is also mapped to a bindpad macro on my hunter which passes leader to the tank and changes hunters action bar from 1 to 2. If i repeat the Ctrl+C when my tank is in the main window this does the same thing but changes my tanks action bar from 2 to 1.
All characters have similar configurations and on action bar 2 that have macros using /follow Party1 or /assist Party1. With MouseWinX mentioned earlier its easy to enable the "activate Window when I hover over it" setting in Windows.
Heres a Pic of my current setup. I even configured a second way of opening VLC player to use the remaining space on my second monitor in a no windows decoration setup. I think Im getting quite pleased with my setup. (Thanks again jak3676!)
https://www.dual-boxing.com/attachme...tid=2455&stc=1
Determined to not be shutout by Bliz here is my HW boxing solution. 8 pedals and 35 buttons. Via relays one button press can send a signal to 1-4 arduino keyboards. The arduinos send the key press to the connected
PC. Its a lot of work to build but works well so far. Currently only have 2 PCs running but will have a few more soon.
https://www.dual-boxing.com/attachme...tid=2462&stc=1
I would suggest that if anyone is still doing the 'roll-your-own' approach with ShiftWindow, FancyZones or other window managers, and X-Mouse or Microsoft accessibility (focus-follows-mouse) options, WoW Open Box is a much better solution - it easily integrates the functionality of all those other tools. [WoW] Wow Open Box is released - fully functional open source, free, verifiably compliant multiboxing software (dual-boxing.com)
I'm sure there's some argument that people will make between JMB and WoW Open Box, and there are some minor differences. But in my opinion they are very feature-comparable. If you're going with non-broadcast software multiboxing, I think those 2 are the only viable options right now.
(If you're going full hardware - that's a whole other discussion).
I find Fuii-Boxing perfect, had no issues using it, I just adjusted the layout a little to my needs which you can easily do with the script.
A few tips:
- Order team list by name
- Use BT4 (or any other equivalent addon) to create HUGE buttons for heal / shield / buff / decurse etc. next to each member using macros to target party members (so the bars are always located next to the party member) for easy clicking
- Use EMAC auto intive / follow / unfollow keybinds
- Leatrix plus for extras
I've been working with my 5 account setup for a while now. Here is a simplified explanation of how my rig (seen if previous posts) works. The example here is how I am controlling the 3 DPS accounts for my 5 man team.
Press and hold the button > This activates a relay for each of the boards > The relay closes a circuit that inputs to the Arduino board > The Arduino is running a keyboard code to repeat the keypress ever 20ms. The keypresses are sent to each PC separately. All I have to do is hold the button down (pedal in my setup) and the DPS assist my tank and cast away.
After a few weeks working with this setup I feel I have about 90% of the functionality I had with SW broadcasting. I've been back to running dungeons as well. Farming in the open world. No messages from Bliz.