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

Hybrid View

  1. #1

    Lightbulb Diablo 2 Resurrected multibox project

    Hey all,

    Old timer and long retired WoW multiboxer here, working on a new project!

    I am excited for the D2R launch and am preparing a 3 character box for it. (I think 3 is a nice sweet spot for a decent increase in exp as well as MF purposes.

    Currently I am playing around with my set up and prepare myself using d2 classic. I had plenty of d2 classic keys still lying around that I could still redeem.



    Don't mind the low quality, just wanted to make the file tiny and it was enough to get the point across of my set up

    Right now, I have a two pc set up, one instance on the main PC and two on the secondary PC.

    Programs I use:
    Input Director - For mouse sharing across network
    • (interesting tidbit, enabling the windows option to activate windows on hover, found in ease of access center, will somehow stop playing sound from my client PC when I am active on my main PC, which is great. I can't get it to work the other way around though. So when I go to my client PC game, I hear both the client and main PC's game sounds But it is already great that it mutes my client when I go main.)

    SoundIt - For sound networking
    • It's not the greatest of sound quality, but it works well.

    Sanboxie - for second instance on second PC
    • Not sure if D2R will require this, but classic does. We'll see.

    Windowed borderless gaming - for the instances on second PC
    • note: it struggles with enlarged windows, so instead use different windows resolution and scaling to get the desired window size to make sure your mouse doesn't jump all over the place.


    I am also interested in trying ISBoxer 2, but I havent gotten my hands on it yet.

    I am looking to 3-box on hardcore (I'm not a masochist, really) using a sorceress, a singing barb and a summoner druid.

    I am currently looking into using autohotkey for some keysharing. Right now I have to move them all individually, which is not ideal. Although the main purpose is to get 3 player games, which is already achieved, making things easier on myself is always nice of course.


    Who else is interested in boxing D2R? I welcome any ideas people have on how to better my set up.
    Attached Images Attached Images  
    Last edited by Kaynin : 08-12-2021 at 08:38 AM
    Slowly crawling back towards the experience that is Multiboxing Mayhem

  2. #2

    Default

    Autohotkey Update

    Figured out how to use autohotkey over local network.

    First, you need a shared map on both pc's with full permissions. (So that is a local map on both PC's that is shared with the other PC.)

    Then in my case as I run one instance on my main PC and two on my secondary, these are the scripts I run. (two scripts running on both PC's)


    Main PC script 1:
    After starting the script I have 2 seconds to make the diablo II instance active, then it stores its ID in a variable. Because I only have to initialize one instance on this PC, the script is running after that. (I might figure out a way to avoid having to initialize the windows, but I had some trouble getting autohotkey to target diablo without this more forceful method)

    For the test I have only used the c key which is the inventory key in my case for testing purposes. It checks to see if I am currently active in the game window, if I am it writes two files, one locally and one on the other PC's shared folder.

    Code:
    #NoEnv
    
    sleep 2000
    WinGet, diablo1_id, ID, A
    MsgBox, First instance set ("%diablo1_id%").
    
    $c::
        IfWinActive, ahk_id %diablo1_id%
        {
            keypress := "c"
            FileAppend, %keypress%`n, commandPC1.txt
            FileAppend, %keypress%`n, \\SECONDPC\shared\commandPC2.txt
        } else {
            Send c
        }
    return

    Main PC script 2:
    Again, initializing the window by activating the game window two seconds after starting the script. The rest is just a loop checking to see if anything needs done. (For example, if winactive and c is pressed, the first script makes a file and then this one executes the keypress.

    When I wasn't saving these txt files locally for this script, it was lagging and barely working. That's why you need a local folder on both pc's that are shared with full permissions.

    Code:
    #NoEnv
    
    sleep 2000
    WinGet, diablo1_id, ID, A
    MsgBox, First instance set ("%diablo1_id%").
    
    Loop {
        commandline := ""
        if FileExist("commandPC1.txt") {
            FileReadLine, commandline, commandPC1.txt, 1
            if (commandline != "") {    
                ControlSend,, %commandline%, ahk_id %diablo1_id%
                FileDelete, commandPC1.txt
            }
        }
    }

    Second PC script 1:

    This time I have to initialize two windows. (I run both of these instances of diablo in Sandboxie in two seperate sandboxes named diablobox1 and diablobox2, I have the settings of these sandboxes to show sandbox name in title. This isn't needed for this script, but it is needed for windowed borderless gaming.)

    The script much like main pc script 1 is pretty much the same.



    Code:
    #NoEnv
    
    sleep 2000
    WinGet, diablo2_id, ID, A
    MsgBox, Second instance set ("%diablo2_id%").
    sleep 2000
    WinGet, diablo3_id, ID, A
    MsgBox, Third instance set ("%diablo3_id%").
    
    $c::
        IfWinActive, ahk_id %diablo2_id% 
        {
            keypress := "c"
            FileAppend, %keypress%`n, \\FIRSTPC\shared\commandPC1.txt
            FileAppend, %keypress%`n, commandPC2.txt
        } 
        else IfWinActive, ahk_id %diablo3_id% 
        {
            keypress := "c"
            FileAppend, %keypress%`n, \\FIRSTPC\shared\commandPC1.txt
            FileAppend, %keypress%`n, commandPC2.txt
        } else {
            send c
        }
    return
    Second PC script 2:

    And again like the main PC script, except double initialization and an extra controlsend to send the key to both instances.

    Code:
    #NoEnv
    
    sleep 2000
    WinGet, diablo2_id, ID, A
    MsgBox, Second instance set ("%diablo2_id%").
    sleep 2000
    WinGet, diablo3_id, ID, A
    MsgBox, Third instance set ("%diablo3_id%").
    
    Loop {
        commandline := ""
        if FileExist("commandPC2.txt") {
            FileReadLine, commandline, commandPC2.txt, 1
            if (commandline != "") {    
                ControlSend,, %commandline%, ahk_id %diablo2_id%
                ControlSend,, %commandline%, ahk_id %diablo3_id%
                FileDelete, commandPC2.txt
            }
        }
    }

    This is running lagfree for me now. Although at the moment it just opens inventory on all three instances across pc's. With a little work it will be copying skills.

    This is it for me today and tomorrow is beta so not sure yet what I want to do with sending mouse clicks.



    Inventory spam in action:

    Last edited by Kaynin : 08-12-2021 at 01:16 PM
    Slowly crawling back towards the experience that is Multiboxing Mayhem

  3. #3

    Default

    I'm thinking about it (D2R). I'm boxing D3 atm, season 24 just trying to get the transmogs before it's too late. I use ISBoxer on one pc for 4 accounts and it's the easiest boxing setup i have ever done. It took less then 5 minutes from "fresh start to ready" with the setup wizard, being an experienced user.

    As for multi-pc, i havent done this yet, but everyone i've seen talk about multi-pc setup says it's ridiculously easy to do.

    Weird group comp you picked. Pally is such a good support with auras you should consider one or two. Conviction is the ultimate group aura.
    Last edited by Purpleflavor : 08-13-2021 at 10:15 PM

  4. #4

    Default

    The best solution I have found so far is to run the second account on my laptop and remote access it on my other monitor. Teamviewer seems to be the client with the least frame drop for this in my experience. I was unable to find any VM that support Direct X12 3D acceleration, so it seems that for any VM solution, while it may launch, the game would run extremely laggy as it would not be able to fully (or at all) utilize your graphics card.

  5. #5

    Post

    I know the comp is weird, but I like weird builds. :P


    UPDATE:

    Might be beta things, but so far I have only gotten one instance per PC to work. Also the autohotkey scripts above that I had working, didn't work at all for D2R so I had to update those.

    Anyway, might want to hold out on buying extra copies until release and make sure it is even possible to run more than one instance on a single PC.

    Autohotkey script for mouse movement that I got to work between two pc's while using input director:

    First Instance on PC1

    Code:
    #NoEnv
    CoordMode, Mouse, Window
    SetTitleMatchMode 2
    
    $NumpadSub::
        ExitApp
    return
    
    
    #If WinActive("box1")
    LButton::
            MouseGetPos, xpos, ypos
            slavexpos := Round(3 * (xpos / 8), 0)
            slaveypos := Round(3 * (ypos / 8), 0)
            keypressPC1 := "123456789012345 " xpos " " ypos
            keypressPC2 := "123456789012345 " slavexpos " " slaveypos
            FileAppend, %keypressPC1%`n, commandPC1.txt
            FileAppend, %keypressPC2%`n, \\ALIENWOLF\shared\commandPC2.txt
            keypress := ""
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
    return
    Code:
    #NoEnv
    CoordMode, Mouse, Window
    SetTitleMatchMode 2
    SetControlDelay -1
    
    Loop {
        if FileExist("commandPC1.txt") {
        
            FileReadLine, commandline, commandPC1.txt, 1
            StringLen, Length, commandline
            if (commandline != "") {
                if (Length >= 15) {
                StringSplit, pos_array, commandline, %A_Space%
                DllCall("SetCursorPos", int, pos_array2, int, pos_array3)
                ControlClick, x%pos_array2% y%pos_array3%, box1
                FileDelete, commandPC1.txt
                } else {
                ControlSend,, %commandline%, box1
                FileDelete, commandPC1.txt
                }
            }
            commandline := ""
            pos_array := ""
        }
    }

    Second Instance on PC2


    Code:
    #NoEnv
    CoordMode, Mouse, Window
    SetTitleMatchMode 2
    
    $NumpadSub::
        ExitApp
    return
    
    #If WinActive("box2")
    LButton::
            MouseGetPos, xpos, ypos 
            slavexpos := Round(8 * (xpos / 3), 0)
            slaveypos := Round(8 * (ypos / 3), 0)
            keypressPC1 := "123456789012345 " slavexpos " " slaveypos
            keypressPC2 := "123456789012345 " xpos " " ypos
            FileAppend, %keypressPC1%`n, \\UORUFU\shared\commandPC1.txt
            FileAppend, %keypressPC2%`n, commandPC2.txt
            keypress := ""
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
    return
    Code:
    #NoEnv
    CoordMode, Mouse, Window
    SetTitleMatchMode 2
    SetControlDelay -1
    
    Loop {
        if FileExist("commandPC2.txt") {
        
            FileReadLine, commandline, commandPC2.txt, 1        
            StringLen, Length, commandline        
            if (commandline != "") {        
                if (Length >= 15) {            
                StringSplit, pos_array, commandline, %A_Space%    
                DllCall("SetCursorPos", int, pos_array2, int, pos_array3)
                ControlClick, x%pos_array2% y%pos_array3%, box2
                FileDelete, commandPC2.txt
                } else {
                ControlSend,, %commandline%, box2
                FileDelete, commandPC2.txt
                }
            }
            commandline := ""
            pos_array := ""
        }
    }
    I used Window Title Changer program to change the name of the instances to "box1" and "box2". Easier to initialize. Although unnecessary if I can't figure out how to run multiple instances on one PC. (as I could just look for the normal win title with only one instance active).

    My main instance was at 4k resolution and secondary instance at 1440x810, hence the calculation for slavexpos and slaveypos, if you run all instances in same resolution, no calculations need to be done.

    In any case, copying movement worked like a charm with this script, so a dual box at the very least is gonna be possible for me. (Really want to Tribox d2 though, there is a lot of good reason, drop wise mostly, to run at players 3.




    Right now I am trying to figure out how to open multiple instances on 1 PC, but it might be just a beta build thing why it isn't working.

    I got as far as opening two instances, one with sandboxie, but the sandboxie one could start the game and enter lobby, but not join any game. As soon as I join a game on that instance it goes black and unresponsive.


    https://ibb.co/r3Y8z58
    (Fullscreen)

    https://ibb.co/DGc9bjx
    (Fullscreen)



    Even though on the second you can see that my second instance 'technically' entered the game. ;(
    Attached Images Attached Images    
    Last edited by Kaynin : 08-13-2021 at 11:56 PM
    Slowly crawling back towards the experience that is Multiboxing Mayhem

  6. #6

    Unhappy

    Okay, I think I've got the movement mostly down.

    It still needs a few tweaks, but here are my ahk scripts for dualboxing D2R on two PC's.

    PC1 Script 1:

    Code:
    #NoEnv
    CoordMode, Mouse, Window
    SetTitleMatchMode 2
    AutoTrim, Off
    
    MouseIsOver(WinTitle) {
        MouseGetPos,,, Win
        return WinExist(WinTitle . " ahk_id " . Win)
    }
    
    #If WinActive("box1") and MouseIsOver("box1")
    LButton::
        GetKeyState, capsstate, Pause, D
        MouseGetPos, xpos, ypos
        If (capsstate == "D")
        {
            slavexpos := Round(3 * (xpos / 8), 0)
            slaveypos := Round(3 * (ypos / 8), 0)
            keypressPC2 := "MB|" slavexpos "|" slaveypos "|0|LEFT"
            FileAppend, %keypressPC2%`n, \\192.168.1.2\shared\commandPC2.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC2 := ""
        } else
        {
            slavexpos := Round(3 * (xpos / 8), 0)
            slaveypos := Round(3 * (ypos / 8), 0)
            keypressPC1 := "MB|" xpos "|" ypos "|0|LEFT"
            keypressPC2 := "MB|" slavexpos "|" slaveypos "|0|LEFT"
            FileAppend, %keypressPC1%`n, commandPC1.txt
            FileAppend, %keypressPC2%`n, \\192.168.1.2\shared\commandPC2.txt
            xpos := ""            
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC1 := ""
            keypressPC2 := ""        
        }
    return
    
    #If WinActive("box1") and MouseIsOver("box1")
    RButton::
        GetKeyState, capsstate, Pause, D
        MouseGetPos, xpos, ypos
        If (capsstate == "D")
        {
            slavexpos := Round(3 * (xpos / 8), 0)
            slaveypos := Round(3 * (ypos / 8), 0)
            keypressPC2 := "MB|" slavexpos "|" slaveypos "|0|RIGHT"
            FileAppend, %keypressPC2%`n, \\192.168.1.2\shared\commandPC2.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC2 := ""
        } else
        {
            slavexpos := Round(3 * (xpos / 8), 0)
            slaveypos := Round(3 * (ypos / 8), 0)
            keypressPC1 := "MB|" xpos "|" ypos "|0|RIGHT"
            keypressPC2 := "MB|" slavexpos "|" slaveypos "|0|RIGHT"
            FileAppend, %keypressPC1%`n, commandPC1.txt
            FileAppend, %keypressPC2%`n, \\192.168.1.2\shared\commandPC2.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC1 := ""
            keypressPC2 := ""        
        }
    return
    
    #If WinActive("box1") and MouseIsOver("box1")
    +LButton::
        GetKeyState, capsstate, Pause, D
        MouseGetPos, xpos, ypos
        If (capsstate == "D")
        {
            slavexpos := Round(3 * (xpos / 8), 0)
            slaveypos := Round(3 * (ypos / 8), 0)
            keypressPC2 := "MB|" slavexpos "|" slaveypos "|1|LEFT"
            FileAppend, %keypressPC2%`n, \\192.168.1.2\shared\commandPC2.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC2 := ""
        } else
        {
            slavexpos := Round(3 * (xpos / 8), 0)
            slaveypos := Round(3 * (ypos / 8), 0)
            keypressPC1 := "MB|" xpos "|" ypos "|1|LEFT"
            keypressPC2 := "MB|" slavexpos "|" slaveypos "|1|LEFT"
            FileAppend, %keypressPC1%`n, commandPC1.txt
            FileAppend, %keypressPC2%`n, \\192.168.1.2\shared\commandPC2.txt
            xpos := ""            
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC1 := ""
            keypressPC2 := ""        
        }
    return
    
    #If WinActive("box1") and MouseIsOver("box1")
    +RButton::
        GetKeyState, capsstate, Pause, D
        MouseGetPos, xpos, ypos
        If (capsstate == "D")
        {
            slavexpos := Round(3 * (xpos / 8), 0)
            slaveypos := Round(3 * (ypos / 8), 0)
            keypressPC2 := "MB|" slavexpos "|" slaveypos "|1|RIGHT"
            FileAppend, %keypressPC2%`n, \\192.168.1.2\shared\commandPC2.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC2 := ""
        } else
        {
            slavexpos := Round(3 * (xpos / 8), 0)
            slaveypos := Round(3 * (ypos / 8), 0)
            keypressPC1 := "MB|" xpos "|" ypos "|1|RIGHT"
            keypressPC2 := "MB|" slavexpos "|" slaveypos "|1|RIGHT"
            FileAppend, %keypressPC1%`n, commandPC1.txt
            FileAppend, %keypressPC2%`n, \\192.168.1.2\shared\commandPC2.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC1 := ""
            keypressPC2 := ""        
        }
    return
    PC1 Script 2:

    Code:
    #NoEnv
    CoordMode, Mouse, Window
    SetTitleMatchMode 2
    SetControlDelay -1
    
    Loop {
        state := GetKeyState("LShift")
        if (state == "U") {
            ControlSend,,{LShift up}, box1     
        }
        if FileExist("commandPC1.txt") {
            FileReadLine, commandline, commandPC1.txt, 1
            StringLen, Length, commandline
            if (commandline != "") {
                StringSplit, pos_array, commandline, "|"
                If (pos_array1 == "MB") {
                    DllCall("SetCursorPos", int, pos_array2, int, pos_array3)
                    If (pos_array4 == "1") {
                        ControlSend,,{RShift down}, box1 
                        ControlClick, x%pos_array2% y%pos_array3%, box1,, %pos_array5%
                        ControlSend,,{RShift up}, box1 
                    } else {
                        ControlClick, x%pos_array2% y%pos_array3%, box1,, %pos_array5%
                    }
                    pos_array := ""
                    commandline := ""
                } 
                else {
                    ControlSend,, %commandline%, box1
                    commandline := ""
                }
            FileDelete, commandPC1.txt
            }
        }
    }
    (PC2 scripts in post below, ran into character length restriction)

    Renamed PC1 instance to "box1" and PC2 instance to "box2" with window title changer and the script is now completely compatible with Input Director. (I had some issues with active windows, having both instances active at times, but an extra test to check if the mouse is over the active window as well fixed that.



    As you can see, even though I am not very familiar with this set up, it is already looking viable.
    Right now I can mute the main instance and reasjust the second char. (Using my capslock key that is remapped to pause), I also need a pause on the second char still to make things even better. After that, its just more simply key cloning to allow with skill changing and I'm set.



    All in all pretty happy with my little D2R beta project so far. Still a bit unhappy to be limited to one client per PC atm. Hoping that will change for release.
    Last edited by Kaynin : 08-14-2021 at 04:59 PM
    Slowly crawling back towards the experience that is Multiboxing Mayhem

  7. #7

    Default

    Blizzard system specs only say u need a directx GPU but not dx11 or dx12 at all.

    I tried vmware util latest v16.x but vmware do not run DX12.

    Its possible to run dx12 on vmware ESXI but u need a second GPU and config pci passthrough to run the GPU direct in the vm.
    This let u install the GPU like a real GPU in the vm.

    I tried run two battlent instances on two windows guests that have no acces to each other installations but battlent detect it when u try to run a second client.

    Now i run a second client on a notebook using AnyDesk.

  8. #8

    Default

    PC2 Script 1:

    Code:
    #NoEnv
    CoordMode, Mouse, Window
    SetTitleMatchMode 2
    AutoTrim, Off
    
    MouseIsOver(WinTitle) {
        MouseGetPos,,, Win
        return WinExist(WinTitle . " ahk_id " . Win)
    }
    
    #If WinActive("box2") and MouseIsOver("box2")
    LButton::
        GetKeyState, capsstate, Pause, D
        MouseGetPos, xpos, ypos
        If (capsstate == "D")
        {
            slavexpos := Round(8 * (xpos / 3), 0)
            slaveypos := Round(8 * (ypos / 3), 0)
            keypressPC1 := "MB|" slavexpos "|" slaveypos "|0|LEFT"
            FileAppend, %keypressPC1%`n, \\192.168.1.235\shared\commandPC1.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC2 := ""
        } else
        {
            slavexpos := Round(8 * (xpos / 3), 0)
            slaveypos := Round(8 * (ypos / 3), 0)
            keypressPC2 := "MB|" xpos "|" ypos "|0|LEFT"
            keypressPC1 := "MB|" slavexpos "|" slaveypos "|0|LEFT"
            FileAppend, %keypressPC1%`n, \\192.168.1.235\shared\commandPC1.txt
            FileAppend, %keypressPC2%`n, commandPC2.txt
            xpos := ""            
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC1 := ""
            keypressPC2 := ""        
        }
    return
    #If WinActive("box2") and MouseIsOver("box2")
    RButton::
        GetKeyState, capsstate, Pause, D
        MouseGetPos, xpos, ypos
        If (capsstate == "D")
        {
            slavexpos := Round(8 * (xpos / 3), 0)
            slaveypos := Round(8 * (ypos / 3), 0)
            keypressPC1 := "MB|" slavexpos "|" slaveypos "|0|RIGHT"
            FileAppend, %keypressPC1%`n, \\192.168.1.235\shared\commandPC1.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC2 := ""
        } else
        {
            slavexpos := Round(8 * (xpos / 3), 0)
            slaveypos := Round(8 * (ypos / 3), 0)
            keypressPC2 := "MB|" xpos "|" ypos "|0|RIGHT"
            keypressPC1 := "MB|" slavexpos "|" slaveypos "|0|RIGHT"
            FileAppend, %keypressPC1%`n, \\192.168.1.235\shared\commandPC1.txt
            FileAppend, %keypressPC2%`n, commandPC2.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC1 := ""
            keypressPC2 := ""        
        }
    return
    #If WinActive("box2") and MouseIsOver("box2")
    +LButton::
        GetKeyState, capsstate, Pause, D
        MouseGetPos, xpos, ypos
        If (capsstate == "D")
        {
            slavexpos := Round(8 * (xpos / 3), 0)
            slaveypos := Round(8 * (ypos / 3), 0)
            keypressPC1 := "MB|" slavexpos "|" slaveypos "|1|LEFT"
            FileAppend, %keypressPC1%`n, \\192.168.1.235\shared\commandPC1.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC2 := ""
        } else
        {
            slavexpos := Round(8 * (xpos / 3), 0)
            slaveypos := Round(8 * (ypos / 3), 0)
            keypressPC2 := "MB|" xpos "|" ypos "|1|LEFT"
            keypressPC1 := "MB|" slavexpos "|" slaveypos "|1|LEFT"
            FileAppend, %keypressPC1%`n, \\192.168.1.235\shared\commandPC1.txt
            FileAppend, %keypressPC2%`n, commandPC2.txt
            xpos := ""            
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC1 := ""
            keypressPC2 := ""        
        }
    return
    #If WinActive("box2") and MouseIsOver("box2")
    +RButton::
        GetKeyState, capsstate, Pause, D
        MouseGetPos, xpos, ypos
        If (capsstate == "D")
        {
            slavexpos := Round(8 * (xpos / 3), 0)
            slaveypos := Round(8 * (ypos / 3), 0)
            keypressPC1 := "MB|" slavexpos "|" slaveypos "|1|RIGHT"
            FileAppend, %keypressPC1%`n, \\192.168.1.235\shared\commandPC1.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC2 := ""
        } else
        {
            slavexpos := Round(8 * (xpos / 3), 0)
            slaveypos := Round(8 * (ypos / 3), 0)
            keypressPC2 := "MB|" xpos "|" ypos "|1|RIGHT"
            keypressPC1 := "MB|" slavexpos "|" slaveypos "|1|RIGHT"
            FileAppend, %keypressPC1%`n, \\192.168.1.235\shared\commandPC1.txt
            FileAppend, %keypressPC2%`n, commandPC2.txt
            xpos := ""
            ypos := ""
            slavexpos := ""
            slaveypos := ""
            keypressPC1 := ""
            keypressPC2 := ""        
        }
    return
    PC2 Script 2:

    Code:
    #NoEnv
    CoordMode, Mouse, Window
    SetTitleMatchMode 2
    SetControlDelay -1
    
    Loop {
        state := GetKeyState("LShift")
        if (state == "U") {
            ControlSend,,{LShift up}, box2     
        }
        if FileExist("commandPC2.txt") {
            FileReadLine, commandline, commandPC2.txt, 1
            StringLen, Length, commandline
            if (commandline != "") {
                StringSplit, pos_array, commandline, "|"
                If (pos_array1 == "MB") {
                    DllCall("SetCursorPos", int, pos_array2, int, pos_array3)
                    If (pos_array4 == "1") {
                        ControlSend,,{RShift down}, box2 
                        ControlClick, x%pos_array2% y%pos_array3%, box2,, %pos_array5%
                        ControlSend,,{RShift up}, box2 
                    } else {
                        ControlClick, x%pos_array2% y%pos_array3%, box2,, %pos_array5%
                    }
                    pos_array := ""
                    commandline := ""
                } 
                else {
                    ControlSend,, %commandline%, box2
                    commandline := ""
                }
            FileDelete, commandPC2.txt
            }
        }
    }
    PS: I am sure I could trim these scripts, and some things might be redundant. But it seems to be less robust with all the variable emptying and extra meat.
    Slowly crawling back towards the experience that is Multiboxing Mayhem

  9. #9

    Default

    Please tell me where or what those side monitors can be purchased at/found

  10. #10

    Default

    The monitors are pretty overkill for this particular usecase.

    My main monitor is an Asus PG43UQ and the side monitor is an Asus PG278Q
    Slowly crawling back towards the experience that is Multiboxing Mayhem

Tags for this Thread

Posting Rules

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