G
gSe7eN
Guide: How to ditch that rubbish EQBC and get with the times with the sexy MQ2DanNet
EQBC objectively sucks but fortunately for us, Dannuic has liberated us from its oppression. MQ2DanNet is a complete replacement for EQBC that requires virtually no set up. DanNet creates a peer to peer network across all instances of EQ on your entire LAN, regardless if they're on the same computer or a second or third PC and so on.
The conceptual difference between server based communication and peer to peer network communication can be summed up in the following graphics. In this case, the central server is EQBCS.
In the above, all clients connect to a central server and all communication goes into and out of the server. If one of the clients go offline, nothing changes. If the server goes offline or experiences lag or a bug or whatever, EQBC fails. Contrastly, in a peer to peer network:
In peer to peer, there is no central server. Client A, lets say a Warrior, knows that client B, lets say a cleric, exists and the warrior can talk directly to the cleric. On client C, let's say a druid, knows that A and B exist, likewise A and B to C, and can send messages directly to each other without the need for a middle man server. On PC 2, I have a bard, and 2 wizzies. These three also can communicate directly to ABC, bringing clients DEF into the picture. Messages can be sent to one or more of these clients directly from any client and they all live in equal unison to each other. If Client A goes offline, B-F do not care. Because there is no central server, all clients are idependent. There is no server to set up, there's nothing to configure.
Q: What is EQBC?
EQBC was designed as a blind chat, a way to forward messages to your other EQ clients without using EQ's chat window. Think of it as in game IRC. Shortly after, the ability to pass commands to other clients was added to EQBC. NetBots also uses EQBC to pass not just chat or commands but information into the EQBC server and other clients can then use that information that NetBots shotguns out into the void. Imagine this information as if you were turning on the television and Fox News, CNN, MSNBC, SkyNews, Rebecka Black, VH1 and MTV, and 10 Nickleback YouTube channels started playing at you all at once, and there's NOTHING YOU CAN DO TO SILENCE IT. However, this information is all done invisibly without you the user seeing any of it, even if you can't quite figure out why your soul died a little bit. The blind chat part of EQBC and passing commands is called the Front End, the rest that you never see is called the Back End.
Q: What is MQ2DanNet?
DanNet also has blind chat among clients. The means are slightly different but the ends are the same. DanNet also passes commands to other clients. This, like EQBC, is its front end. The commands themselves plus the syntax are different but the outcome is the same. The radical difference, however, that most users will never notice, is the back end. Information is presented in an opt in manner and isn't bundled with a bunch of other information and shotgunned violently and irresponsibily into network. In this case, you turn on the TV and...nothing happens. So you think to yourself "I think today I should like some Joy of Painting." and magically, Bob Ross appears and everything is happy and peaceful. Also, your friend wishes to bake your very fine bread so he messages you asking for the recipe, which you happily supply him with. In the end, there's a fine painting, you're in a very zen place, and your mate even shared his bread with you. Everything is harmonious and nickelback doesn't even exist in this world.
Q: What's the difference TO ME between using EQBC and DanNet?
As a user, the apparent difference is how you use it. The end result appears to be the same.
Q: G7, so who gives a shit, that's no reason to switch.
Fine. Here's the reason to switch as an end user. There are a few (read: way more complicated than it fucking needs to be) guides out there explaining how to set up and use EQBC. People get confused, they do not understand what they've done because they're not computer savvy, and they're just trusting you that all is well. (BTW, has anyone scrutinized the security of EQBC?) Next, Decide which of the 4 million available servers you're going to run, decide whether to set it up as a windows service (OMG WHY), then go in game and CONTINUE TO SET UP EQBC with in game commands. Finally, hope and pray all goes well so you can start using EQBC. And don't forget that extra slash on the command you want to execute. Also, realise that some things work on some EQBC servers but not others, and some have this and that and others don't and SERIOUSLY WHAT A PAIN IN THE ASS THIS SHIT SHOULD HAVE DIED YEARS AGO.
To set up DanNet, on all your clients, enter
Q: Whatever. What are the command differences?
Before continuing, let's define group. Group can certainly mean the people you're currently joined up with and share xp with in EQ (hence form, "in game group"). BUT, group can also have a much more sinnister meaning. Think secret societies, fellowships, fraternities, identity politics, and hidden, underground guilds. MQ2DanNet automatically assigns you to predefined groups, such as tank, priest, caster, etc., plus you can create your own, such as the Brotherhood of Magical Lockpickers, or lockpicks for short. They don't have to have anything practical in common, you do you. You want to put your most fabulous looking characters into an AbFab group, that's your business. Once loaded, do
Chat stuff
/bc:
Command stuff
MQ2DanNet front end in the real world
Assume you already have KissAssist set up and ready to go with an in game group of 6 characters. You're on the screen you'll be driving from and you want to set up an auto launch hotkey in game. Your hotkey would look pretty much like this:
All ${MQ2Vars} are parsed locally before sending the command, unless /noparse is used as normal. If however, you want to mix parsing and unparsing, this can be done, too, without any special needs to account. For example:
I like this, but all my hotbuttons and macros are already set up with MQ2EQBC commands. But I want less Nickleback and more Bob Ross. Help!
Converting your shit over to MQ2DanNet is easy. If you're still using Notepad++, the EQBC of text editors, go to Find in Files (CTRL+SHIFT+F) in the Search menu. Under find what, enter the EQBC term for Find What, Replace with the DanNet command. Under filters, use *.ini if youre looking in your EQ directory for in game hotbuttons, or MQ2 directory for INI files, or to go all in, *.mac to get rid of that crap in all macros you have. In the directory field, point to either your EQ directory for the former, MQ directory for the latter. FOR EXAMPLE.
Find what:
Replace with:
Filters
Directory:
Then click replace in Files. (note well, there's a space in the "/dgga " above. Don't miss the space.)
We can also use a thing called regular expression. Regular expression, or regex, is a tool to make powerful searches through documents and other files. The above becomes
Find what:
Replace with:
Filters:
Directory:
IF you use powershell, that's easy, too.
For me personally, once I have divorced myself from EQBC, I rarely think about it. The times I do think about it are in disdain and disgust.
If you use a plugin that depends on EQBC, ask the plugin author if the EQBC commands are just default and can be customized or ask if they're hard coded. If they're hard coded, on behalf of the entire RedGuides community, give them grief for being a terrible plugin writer. Defaults are fine, hard coding is absolutely bad and the sign of a poor and lazy programmer. At this point, EQBC should be a niche plugin for people who have obscure local network settings, MQ2DanNet should absolutely be the norm. There's no excuse other than that for not using this wonderful plugin.
The back end of DanNet, which is actually 95% of the plugin, is outside the scope of this howto. If you'd like to learn more about that, see Dannuic's github page or see Expses's Core.mac (also on GitHub). Core.mac 100% depends on the back of MQ2DanNet and is used exclusively and extensively throughout the macro. There are plenty of practical and real uses of it there.
EQBC objectively sucks but fortunately for us, Dannuic has liberated us from its oppression. MQ2DanNet is a complete replacement for EQBC that requires virtually no set up. DanNet creates a peer to peer network across all instances of EQ on your entire LAN, regardless if they're on the same computer or a second or third PC and so on.
The conceptual difference between server based communication and peer to peer network communication can be summed up in the following graphics. In this case, the central server is EQBCS.
In the above, all clients connect to a central server and all communication goes into and out of the server. If one of the clients go offline, nothing changes. If the server goes offline or experiences lag or a bug or whatever, EQBC fails. Contrastly, in a peer to peer network:
In peer to peer, there is no central server. Client A, lets say a Warrior, knows that client B, lets say a cleric, exists and the warrior can talk directly to the cleric. On client C, let's say a druid, knows that A and B exist, likewise A and B to C, and can send messages directly to each other without the need for a middle man server. On PC 2, I have a bard, and 2 wizzies. These three also can communicate directly to ABC, bringing clients DEF into the picture. Messages can be sent to one or more of these clients directly from any client and they all live in equal unison to each other. If Client A goes offline, B-F do not care. Because there is no central server, all clients are idependent. There is no server to set up, there's nothing to configure.
/plugin mq2dannet
is sufficient set up. It automagically works, as any good plugin should out of the box.Q: What is EQBC?
EQBC was designed as a blind chat, a way to forward messages to your other EQ clients without using EQ's chat window. Think of it as in game IRC. Shortly after, the ability to pass commands to other clients was added to EQBC. NetBots also uses EQBC to pass not just chat or commands but information into the EQBC server and other clients can then use that information that NetBots shotguns out into the void. Imagine this information as if you were turning on the television and Fox News, CNN, MSNBC, SkyNews, Rebecka Black, VH1 and MTV, and 10 Nickleback YouTube channels started playing at you all at once, and there's NOTHING YOU CAN DO TO SILENCE IT. However, this information is all done invisibly without you the user seeing any of it, even if you can't quite figure out why your soul died a little bit. The blind chat part of EQBC and passing commands is called the Front End, the rest that you never see is called the Back End.
Q: What is MQ2DanNet?
DanNet also has blind chat among clients. The means are slightly different but the ends are the same. DanNet also passes commands to other clients. This, like EQBC, is its front end. The commands themselves plus the syntax are different but the outcome is the same. The radical difference, however, that most users will never notice, is the back end. Information is presented in an opt in manner and isn't bundled with a bunch of other information and shotgunned violently and irresponsibily into network. In this case, you turn on the TV and...nothing happens. So you think to yourself "I think today I should like some Joy of Painting." and magically, Bob Ross appears and everything is happy and peaceful. Also, your friend wishes to bake your very fine bread so he messages you asking for the recipe, which you happily supply him with. In the end, there's a fine painting, you're in a very zen place, and your mate even shared his bread with you. Everything is harmonious and nickelback doesn't even exist in this world.
Q: What's the difference TO ME between using EQBC and DanNet?
As a user, the apparent difference is how you use it. The end result appears to be the same.
Q: G7, so who gives a shit, that's no reason to switch.
Fine. Here's the reason to switch as an end user. There are a few (read: way more complicated than it fucking needs to be) guides out there explaining how to set up and use EQBC. People get confused, they do not understand what they've done because they're not computer savvy, and they're just trusting you that all is well. (BTW, has anyone scrutinized the security of EQBC?) Next, Decide which of the 4 million available servers you're going to run, decide whether to set it up as a windows service (OMG WHY), then go in game and CONTINUE TO SET UP EQBC with in game commands. Finally, hope and pray all goes well so you can start using EQBC. And don't forget that extra slash on the command you want to execute. Also, realise that some things work on some EQBC servers but not others, and some have this and that and others don't and SERIOUSLY WHAT A PAIN IN THE ASS THIS SHIT SHOULD HAVE DIED YEARS AGO.
To set up DanNet, on all your clients, enter
/plugin mq2dannet
. That's literally it. Start using it straight away. There's no server to pick, the protocal is an internet standard, no ports or IPs to configure. There's *NO BULLSHIT*. Load the plugin, you're done. It's that easy. Seriously.Q: Whatever. What are the command differences?
Before continuing, let's define group. Group can certainly mean the people you're currently joined up with and share xp with in EQ (hence form, "in game group"). BUT, group can also have a much more sinnister meaning. Think secret societies, fellowships, fraternities, identity politics, and hidden, underground guilds. MQ2DanNet automatically assigns you to predefined groups, such as tank, priest, caster, etc., plus you can create your own, such as the Brotherhood of Magical Lockpickers, or lockpicks for short. They don't have to have anything practical in common, you do you. You want to put your most fabulous looking characters into an AbFab group, that's your business. Once loaded, do
/dnet info
to see what groups there are. "all" is also a group.Chat stuff
/bc:
/dgtell
is essentially the replacement for /bc
itself. /dgtell
expects a target, which can be someone specific, a DanNet group, or "all". For example, if you set up a trigger for tell notification, you can use /dgt all ${Me.Name} has a tell!
. Or you do /dgtell priest Hey guys, please don't suck tonight and thank you for not letting me die.
/dtell
is similar but for a specific target, which is much more rarely used. For example /dtell MikeTheShaman I need unity! No, not the spell. I just need some unity in my life =/
Command stuff
/bct <name> /
is replaced with /dexecute <name>
. For example /bct MikeTheShaman //sit
becomes /dex MikeTheShaman /sit
. Likewise with EQBC, you can do something like /dex ${Target.CleanName} /foreground
, which would cause that character to show up in the foreground window on your screen, assuming it's a valid candidate for that./bct <group> /
, which is broken on some of the servers, is replaced with /dgexecute <group>
. As an example, /multiline ; /shout I'm a strong, independent ${Me.Class} and I don't need no stinking priests;/dgex priest /exit
, which would spout some social justice and cause all the priests on your network to exit. RIP, MikeTheShaman/bcg /
becomes /dggexecute
. For example, /dgge /nav id ${Me.ID}
will summon the rest of your EQGroup to you your location, assuming MQ2Nav is set up.COMMAND NOT FOUND
becomes /dgrexecute
, ibid, but for in game raid./bcga /
becomes /dggaexecute
. Example, /dgga /camp desktop
, or /dgga /nav spawn ${Spawn[banker].CleanName}
, which will have your entire EQ group camp to desktop or run to the nearest banker in the zone, if one exists and MQ2Nav is properly set up.COMMAND NOT FOUND
becomes /dgraexecute
, ibid but for in game raid plus yourself./bca /
becomes /dgexecute
, which like /bct <group>
, can be used without a specified group. If no <group> argument is supplied, it assumes you meant "all". For example, /dge /travelto poknowledge
, which causes everyone on the network except you to use the MQ2EasyFind command to find their way to Plane of Knowledge./bcaa /
becomes /dgaexecute
, ibid, but also includes the character sending the command. For example, /dgae /mac PlatinumDupe.mac 35000000
, which would cause everyone on the network to run the macro "PlatinumDupe.mac" with a parameter of 35 million.MQ2DanNet front end in the real world
Assume you already have KissAssist set up and ready to go with an in game group of 6 characters. You're on the screen you'll be driving from and you want to set up an auto launch hotkey in game. Your hotkey would look pretty much like this:
/dgge /multiline ; /target id ${Me.ID};/mac kissassist assist
/mac kissassist manual
All ${MQ2Vars} are parsed locally before sending the command, unless /noparse is used as normal. If however, you want to mix parsing and unparsing, this can be done, too, without any special needs to account. For example:
/dgge /if (${Zone.ID}==$\{Zone.ID}) /nav id ${Me.ID}
I like this, but all my hotbuttons and macros are already set up with MQ2EQBC commands. But I want less Nickleback and more Bob Ross. Help!
Converting your shit over to MQ2DanNet is easy. If you're still using Notepad++, the EQBC of text editors, go to Find in Files (CTRL+SHIFT+F) in the Search menu. Under find what, enter the EQBC term for Find What, Replace with the DanNet command. Under filters, use *.ini if youre looking in your EQ directory for in game hotbuttons, or MQ2 directory for INI files, or to go all in, *.mac to get rid of that crap in all macros you have. In the directory field, point to either your EQ directory for the former, MQ directory for the latter. FOR EXAMPLE.
Find what:
/bcga /
Replace with:
/dgga
Filters
*.INI
Directory:
C:\MyEQDirectory
Then click replace in Files. (note well, there's a space in the "/dgga " above. Don't miss the space.)
We can also use a thing called regular expression. Regular expression, or regex, is a tool to make powerful searches through documents and other files. The above becomes
Find what:
bcg\s\/
Replace with:
dgge\s
Filters:
*.INI
Directory:
C:\MyEQDirectory
IF you use powershell, that's easy, too.
C#:
Get-ChildItem -Path "C:\EverQuest" -Filter "eqclient*.ini" | ForEach-Object {
(Get-Content $_.FullName)
ForEach-Object { $_ -replace 'bcaa\s\/', '(dgae\s)' -replace (bca\s\/), 'dge\s' -replace '(bcg\s\/)', 'dgge\s' -replace '(bct(.*)\/)', 'dex$Matches[2]` -Replace '(bcg\s\/)', 'dgge\s' -replace '(bcga\s\/)', 'dgga\s' }
Set-Content $_.FullName
}
For me personally, once I have divorced myself from EQBC, I rarely think about it. The times I do think about it are in disdain and disgust.
If you use a plugin that depends on EQBC, ask the plugin author if the EQBC commands are just default and can be customized or ask if they're hard coded. If they're hard coded, on behalf of the entire RedGuides community, give them grief for being a terrible plugin writer. Defaults are fine, hard coding is absolutely bad and the sign of a poor and lazy programmer. At this point, EQBC should be a niche plugin for people who have obscure local network settings, MQ2DanNet should absolutely be the norm. There's no excuse other than that for not using this wonderful plugin.
The back end of DanNet, which is actually 95% of the plugin, is outside the scope of this howto. If you'd like to learn more about that, see Dannuic's github page or see Expses's Core.mac (also on GitHub). Core.mac 100% depends on the back of MQ2DanNet and is used exclusively and extensively throughout the macro. There are plenty of practical and real uses of it there.
Last edited by a moderator: