Goto page 1, 2, 3, 4  Next Software Documentation MQ2EmuTiler
Reply
MQ2EmuTiler




Overview
MQ2EmuTiler replaces the window tiling in MQ2EmuBotMan. Window tiling automatically lays out your client windows so that multiple characters can be seen at once. The primary characters window will take up a majority of the window, while characters without focus will be in smaller thumbnails. Clicking a thumbnail brings that thumbnail into the larger slot and the previous foreground window shrinks and settles into the now empty thumbnail slot.

This rebuilt, from the ground up, version is more automated, less buggy and easier to use. Improvements include:

  ● The borders from all windows have been removed giving us a little more screen space.
  ● Higher level functions have been used that overcome the blurry screen and out of sync mouse issues.
  ● The layouts are now automated; no more building layouts in the INI.
  ● The layouts automatically change based on client counts.
  ● Characters can individually be enabled/disabled.
  ● You don't need to assign characters to slots, they seek out empty slots on their own.
  ● The windows now detect each other through centralized control.
  ● There is now Z-Order handling to make sure windows are on top.
  ● There is a check for minimized windows so they should always display.
  ● New slash commands let you interact instantly with the plugin without visiting the INI file.
  ● Dual Monitors are now supported. I'm excited about this.
  ● A TLO has been added, so you can even automate the plugin in your macro.
  ● A command to minimize all windows has been added.
  ● A command to swap toons has been added with the intent of incorporating it into MQ2EmuCharacters.

As of writing this the plugin is longer than any other plugins posted, even the whoppers like mq2emuinventory. About two thirds of the code is all there to make it operate smoothly and in a way that will enhance your botting.



Commands
The plugin won't need much user interaction but it should all be able to be accomplished in game -- as opposed to in the ini file -- by using the following commands.

/min
This will minimize all of your client windows all at once.

/swap <charname>
This will bring <charname>'s window to the foreground. You might consider putting this command into your MQ2EmuCharacter pods. This would give you a button to bring each character to the front.

/tile
A blank tile command will enable the plugin, reparse the ini file, and then retile the windows. It does this for every client, not just the one the command was issued from.

This plugin counts on each clients windows coming up with the same numbers as the other client windows. In certain scenarios the client will behave differently. Issue a /tile to correct.

If you manually edit the ini file and would like your clients to update with the new changes issue a /tile.

When new clients are enabled the plugin will automatically detect them and rearrange the tile layout so that the client will fit. However, when decreasing the enabled client count the plugin will not automatically retile the windows. This is intentional since client removal isn't always planned. If you have removed client(s) and want to reoptimize the layout issue a /tile command.

/tile help
Prints syntax help into the MQ window.

/tile on|off
This enables or disables the plugin for the character the command was issued from.

/tile pip
In a layout with only 2 character windows on a single monitor the thumbnail window will appear as a picture-in-picture window. This command will rotate its position from corner to corner.

/tile tb
This will toggle the display of the taskbar in front of, or behind the game clients.

/tile dm
This will enable or disable the support of dual monitors. If you have hide mode enable and you use this command to enable dual monitor support hide mode will automatically be disabled.

/tile switch
This will swap the primary and secondary monitors. For example: if you main character is on the left monitor and you issue this command they will be moved to the right monitor. Be cautious about issueing this command if you don't have dual monitors.

/tile hide
This will make the foreground window will fill up the primary screen and the rest of the windows will get stuck behind it. If you are using this with dual monitors it may behave a little wonky the first time you use it. It's also important to note that hide mode overrides dual monitor mode.

/tile pm|sm <monitor index>
This will set the index of your primary or secondary monitor. It is 1-based and you can get your monitors from the "identify" button on the windows monitor setup dialog. If your primary monitor is desired as 2, then issue a /tile pm 2.

/tile z
Toggles the automatic Z-Ordering effect of the plugin. If you bring, for example, notepad into the foreground, and then switch back to EQ your thumbnail windows will be behind notepad. Enabling this plugin will cause a Z-Order to hit each thumbnail the first pulse after a client acquires focus. This corrects the layering issues but at the cost of screen-swaps being slightly slower.



TLO
  ● bool ${EmuTiler.ToString}
   TRUE/FALSE for if the plugin is enabled.
  ● int ${EmuTiler.ClientCount}
   How many clients are currently enabled on this PC.
  ● bool ${EmuTiler.DualMonitorSupport}
   TRUE/FALSE for if Dual Monitor Support is enabled.
  ● bool ${EmuTiler.Enabled}
   TRUE/FALSE for if the plugin is enabled on this character.
  ● int ${EmuTiler.FreeSlots}
   How many slots don't have a client in them.
  ● bool ${EmuTiler.MonitorExists[<index>]}
   TRUE/FALSE for if the supplied index is a valid monitor on the system.
  ● int ${EmuTiler.PIPLocation}
   1-4 for what corner to PIP thumbnail will appear.
  ● int ${EmuTiler.PrimaryMonitor}
   The index of the primary monitor.
  ● int ${EmuTiler.SecondaryMonitor}
   The index of the secondary monitor.
  ● int ${EmuTiler.SlotCount}
   How many slots the current layout has.
  ● bool ${EmuTiler.TaskbarOnTop}
   TRUE/FALSE for if the taskbar will display in front of the client windows.
  ● bool ${EmuTiler.ZOrderEnabled}
   TRUE/FALSE for if the automatic z-ordering is enabled.
  ● bool ${EmuTiler.Hide}
   TRUE/FALSE for if the background windows are hidden behind the foreground.



Dependencies

Gold Membership
This does require a gold membership to use. Because of this you'll need to have MQ2VMQNet Loaded, and have type /login <user> <pass>, or have set your user and pass in the VMQNet INI file for autologin. You can sign up for membership here.



Limitations

Not available on SoF
It can be used on all other clients.

Maximum Handled Clients
With a single monitor the dynamic layout routine can only handle 15 clients. After that you will start to notice problems. It is recommended that if you go beyond 15 that you either disable tiling on some of your clients, or setup a second monitor. With two monitors you can go up to 50 clients. There currently isn't any error handling for this scenario.



Frequently Asked Questions
  Q: Why are there empty slots on the screen?
  A: The option existed to stretch the client windows out to fill any voids. This would have caused some of the
   windows to not be an proportion. In most cases you will only ever see 1 to 2 empty slots. If you have unloaded
   characters and created extra empty slots you can issue a /tile command to have the slots
   recalculated.

  Q: How do I find out my monitor index?
  A: On Windows 7, right click your desktop. Select Screen resolution. In the resulting popup click the Identify
   button.

  Q: Sometimes when I swap to non-Everquest windows my window layering doesn't function properly.
  A: Check out the /tile z command.



Full INI example
INI
More +
[Settings]
PIP_Location=1
Taskbar_On_Top=1
Primary_Monitor=1
Secondary_Monitor=2
Dual_Monitor_Support=1
Z_Order_Enabled=1
Hide=0

[Maudigan]
Enabled=1
Last edited by Maudigan on Sun Sep 29, 2019 11:04 am; edited 5 times in total
Mon Nov 07, 2011 11:24 am
Project Lead
Looks awesome!
Great work Maud, now I can scrap ISBoxer completely. I prefer a single program governing all functions.

You guys are the bomb!
_________________
Is all that we see or seem but a dream within a dream?
Last edited by Shanefpt on Mon Oct 15, 2012 7:08 am; edited 1 time in total
Mon Oct 15, 2012 3:55 am
I'm glad it's working for ya!
Mon Oct 15, 2012 6:50 am
Project Lead
Hiya Maudigan

I am currently using a 6 man box on dual monitor setup on THF server of EQEMU.

My issue is that when I load all with Tile, I get my main screen, and I will get anything up to 4 clients on second screen ( mainly only three though ) with at least 1 full size screen behind the main screen.

If I turn dual monitor off, then I get all 6 clients on the main screen.

Just seems the positioning is a little off.

Any suggestions?

Kind regards

Loq

I should add that I am very happy as usual with the gold service
Wed Oct 24, 2012 6:05 am
It may be an error, with 6 on a dual monitor I think the layout should be 1 on main monitor and two rows, three columns on 2nd monitor with one spot being unoccupied. In your case it is overlapping two tiles on the main screen? Sometimes when the screens get wonky like that just doing a blank /tile command will straighten it out. There isn't alot in the way of troubleshooting with this one since its supposed to be all automatic for the most part.

If you think it's an error you might do a fresh setup. Redownload mq, load characters, /tile each one, then snap a screenshot so I can take a look.
Wed Oct 24, 2012 6:51 am
Project Lead
I'm not sure if it's tiler that's doing this but; there is a bug that is causing glitches upon switching windows. It seems to be opening bags and UI windows for me or saving the last "state" it was in when I switch around.

For example:

Toon 1: I summon a pet, dismiss him. Make some hotkeys, and close the social page after im done.

Switch to another toon (2) and loot an item and put it in bag and close the bag and inventory window.

Switch back to toon 1 and my last macro I made is open for editing, social page is up again. Pet window is open. Inventory is open.

Switch back to toon 2 and the last item i looted is on my cursor and the inventory is open, although it is just a graphical glitch, not an actual dupe.

Anyone experiencing anything like this? Seems to be a combination of caching or somehow doing actions. If I disable Emutiler and just use regular windows, the bugs cannot be reproduced with all the other plugins.
Fri Oct 26, 2012 11:51 am
That's wild. If it won't do it with tiler loaded then it is almost guaranteed to be the culprit. The way tiler works is basically whatever window is in the foreground is the boss window. The FG window moves and sizes all other windows. In this model no window ever shrinks itself, but no window competes for control as only 1 can be in the FG at a time.

The FG window loops through every other client window and makes sure they are in a tile location. If not it loops through every tile location to find an empty slot and minimizes that delinquent window into it. It uses two different methods to resize. One causes a UI resize and one doesn't. If we shrunk the window with a UI resize then the window would be 100pixels wide but your HP bar would also be 100pixels wide and would fill the entire window. So for shrinks it uses windows resize function. Basically EQ has no idea it's been shrunk. To stretch the window it uses a hook into everquests own resize function. It's basically like going into the menu a quickly selecting a new resolution. This is necessary since you will be interacting with the window so EQ mist know the dimensions so it knows what you are clicking on. If we stretched with a windows function EQ would think it was 500pixels wide when it was really 1000px and your mouse clicks wouldn't be landing where you intended.

That is basically all it does. At least that's the business end of it. There are other little segments that build tile layouts and handle the swap commands and all that. It's not creating snapshots for tiles or anything like that. It's almost unfathomable that it could cause the glitch you describe but that not doing it when unloaded is pretty tell-tale.

You may have mentioned this, but what client/server are you on (can PM if you want privacy). Is it just visual, does it all disappear when you do something or do you have to go close the windows that reopened? Are you running anything other than MQ? If you are you might try it with the other stuff unloaded-just MQ up.

It could also be something other than TIler by itself. You might unload every plugin except mq2vmqnet (so u can login) and emutiler. If it goes away the it may be a sign that it's some kind of conflict.

Once I get your client/server I'll try to recreate it. Do you have a sure fire method to cause it?
Sat Oct 27, 2012 8:41 am
Project Lead
Sorry for the late reply Maud, I was out of town for a bit.

I'm runnin the SoD client on EZ server. It seems to only happen when I have more than 3 toons running. I am also only going off 1 install. It might also be complicated by the fact that the server is having a special event right now and there is horrible server lag.

The phantom items on the cursor are not really a problem. But what is the most pronounced is the fact that option windows or windows in general that were once previously accessed and closed will re-open themselves upon switching back.

Another issue I also ran into which I'm not sure if anyone else is:
If one of the toon is in the processes of loading a zone, all of the windows become unresponsive. They will just freeze out and you can't swap anymore.

I should also mention that I am using a dual monitor setup, where I have the right monitor (2) as primary, and main monitor (1) as the secondary so I can use windows and the taskbar etc.

here is a rundown of the Plugins I am using:
[Plugins]
mq2emuart=mq2emuart
mq2emumap=mq2emumap
mq2emumouseapi=mq2emumouseapi
mq2emunetadvpath=mq2emunetadvpath
mq2emuwindowtitles=mq2emuwindowtitles
mq2vmqnet=mq2vmqnet
mq2chatwnd=mq2chatwnd
mq2eqbc=mq2eqbc
mq2itemdisplay=mq2itemdisplay
mq2labels=mq2labels
mq2map=mq2map
mq2moveutils=mq2moveutils
mq2netbots=mq2netbots
mq2autogroup=mq2autogroup
Mon Oct 29, 2012 6:10 pm
Alright, I'll try to recreate it soon so that I can start troubleshooting. It's possible, but pretty doubtfull that the zoneing issue is related to tiler. Tiler is actually really unstable while zoneing so it shuts itself all off before a zone starts and reverts it to almost an identical state to being unloaded.
Tue Oct 30, 2012 7:31 am
Project Lead
Loaded 4 toons on SoD Gold Build on EZ Server this afternoon. I basically ran around popping inventory windows and bags open and closed for about 10 minutes. I wasn't really able to get it to do anything out of the ordinary. Tiler was a little slow a couple times but I got no phantom windows or anything.

I noticed in your plugin list that you didn't have tiler. Can you ever get it to happen without tiler loaded?
Tue Oct 30, 2012 5:14 pm
Project Lead
I just switched to the UF client and that fixed all my problems. Tiler works wonderfully now and UF is so much faster. I'm not sure why it was happening; but it was localized to my SoD client. Tiler is also more responsive to the UF client while loading for reasons unbeknownst to me.

I don't know why I was having those "reverting state" bugs but I would suggest if anyone else is encountering them in the future, to change to the UF client, its a better client overall IMO.

Thanks for the responses Maud: if you want to hammer down the bugs, I still have the SoD clients on my secondary SSD. I can try to localize the environment in which the bugs occur. If not, that is fine also. Seems I am the only one having those issues.
Tue Oct 30, 2012 11:05 pm
If I can come up with some kind of game plan to nail it down ill message you, but honestly I'm pretty perplexed.
Tue Oct 30, 2012 11:50 pm
Project Lead
Hidden tiles.
Is it possible to use just the character pods to swap windows/tiles? I would like to hide the tiles and just use the pod swapper. Or alternatively make the tiles much smaller so the main tile is much much larger.

Thanks for any feed back.
Fri Oct 25, 2013 8:21 pm
I'm not sure I understand. Do you mean swap character windows without having the tiler enabled?
Fri Oct 25, 2013 9:23 pm
Project Lead
He wants tiler enabled, but for the non main tile to be completely hidden (or very tiny). and then a button on the pod to swap windows.

This is an interesting use of two plugins that I honestly never thought about.
_________________
Sorvani
Sat Oct 26, 2013 8:07 am
Senior Project Member
Goto page 1, 2, 3, 4  Next Software Documentation MQ2EmuTiler
Reply