• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Guide - How to ditch that rubbish EQBC and get with the times with the sexy MQ2DanNet

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.

computer_network.jpg

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:

peer-to-peer-4-728.jpg

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:
G7

Just wanted to say that this was exactly what I was looking for and what was needed to get everyone on board with MQ2Dannet. While not quite novel length, it still explained everything in a concise manner. I really like the part about no setup required. Makes my life a lot easier. I am going to implement this today. Thanks for taking the time to explain.
 
I didn't finish the sentence... I'll make the switch and if my toons die horribly or get banned for doing crazy bot stuff I'll sue g7! J/k

As far as dying horribly, you're on your own for that. But banned? Yeah, I mean, that's my end goal here, so.... shouldn't be a problem. Follow my instructions and you should get the hammer in no time...err...flat. Hah.
 
Don't sleep on this one, its the way of the future!
This is a required plugin for the next major version of my mac's also.
For macro writers the ability to observer and query other characters data that you dont normally have access to without preforming some other action like targeting them ( slow and wasteful ) is game changing and makes for much faster, smarter and more efficient marco.
 
Is there a link to this core.mac? Guessing its something in the vein of KA/modbot?

There is in fact a link to this Core.mac. As far as similar to those two, it's similar in the fact that it's an all classes script, but unlike Kiss, which has emphasis ease of use and ease of reading the actual macro, Core emphasizes power, sacrificing ease of use or understanding (at least initially). However, as I said, if you're interested in learning the back end of MQ2DanNet for macros or just neat tricks (such as throwing up your group's current XP on your main screen HUD), Core is a great place to do research. Macro writers like ihc385 and Exspes will absolutely get the most use out of DanNet, none of which the end user will know anything about.
 
So, I've tried this and there's a few things to change in KA. Here's my git patch (zipped) for the changes. It *might* not work out-of-the-box since I've added a few things here and there into KA and so the line numbers might be off.

I must admit my changes are a bit hacky, but they got me up and running in the little time I had.

Code:
-    /declare EQBCSay                            string      outer   bc
+    /declare EQBCSay                            string      outer   dgt all

For Sub Broadcast it normally checks that EQBC is loaded and you're connected. I simply moved it out of the check. As I said, super hacky:-

Code:
     Sub BroadCast(doirc, doeqbc, eqbcolor, message)
         /if (${eqbcolor.Equal[null]}) /varset eqbcolor w
         /if (${doeqbc}) {
+        /${EQBCSay} [+${eqbcolor}+] [${Time}] ${message} [+x+]

@gSe7eN is there a way to specify colours in Dannet? The ones above don't work since they are EQBC specific.
 

Attachments

  • 0001-mimic-me-broked.patch.zip
    834 bytes · Views: 14
So, I've tried this and there's a few things to change in KA. Here's my git patch (zipped) for the changes. It *might* not work out-of-the-box since I've added a few things here and there into KA and so the line numbers might be off.

I must admit my changes are a bit hacky, but they got me up and running in the little time I had.

Code:
-    /declare EQBCSay                            string      outer   bc
+    /declare EQBCSay                            string      outer   dgt all

For Sub Broadcast it normally checks that EQBC is loaded and you're connected. I simply moved it out of the check. As I said, super hacky:-

Code:
     Sub BroadCast(doirc, doeqbc, eqbcolor, message)
         /if (${eqbcolor.Equal[null]}) /varset eqbcolor w
         /if (${doeqbc}) {
+        /${EQBCSay} [+${eqbcolor}+] [${Time}] ${message} [+x+]

@gSe7eN is there a way to specify colours in Dannet? The ones above don't work since they are EQBC specific.

Try the usual method of colorization, that is \ar Red \ar White etc etc. I’m not at the PC to test at the moment.
 
Unfortunately none of the colorization works right now, was going to pm a request for it to be added, the colored messages help me figure out whats going on in combat sometimes without having to actually read whats going on
 
I dunno should post it here or the discussion thread of DanNet or even Github, so I gonna post here.

The channel broadcast is a brilliant idea of DanNet per se, but it seems you just can not do cross-channel broadcasting.

For example, your tank, which you will play foreground, hit /dge priest /sit.

It won't actually work unless you /djoin priest on your tank first.

But then /djoin generates another problem if you have MORE THAN ONE TANK joined the priest channel, like one of your tank fires /dge priest /follow

all your priests and all your OTHER tanks will do follow which is not your initial intention to ONLY move the priests.

So that loses the majority of the advantage of designing those channels.

Is it possible to make a cross-channel broadcasting function please? Countless Thanks to @dannuic

P.S. I knew we can achieve what i was saying by using this
/dge /if ($\{Select[${Me.Class.ShortName},ENC,WIZ,MAG,NEC]}) /mqp on
That will put all caster pause the macro without joining any channel, but still, that's a long ass command which can be simplfied if we got the cross-channel broadcasting.
 
Last edited:
Yeah, go ahead and make an issue on the github page. I do look at that, and will certainly look into the issue when my computer get dug out of all the boxes it has been packed in.
 
maybe he's just coding on the boxes they're packed in?

I will say that I've been hesitant to dive into dannet. After the time it took me to get straightened out in eqbcs, now I need to wrap this old brain around a new method, but this post explains the differences pretty well, so I'm a lot less hesitant to dive in now. I think I'll do some playing around with it this evening.

G7- I noticed a couple of things in your post that confused me. "COMMAND NOT FOUND" was listed a couple of times as a pre-reference to a dannet command for raid commands I assume? Were those supposed to be EQBCS commands that don't exist as a corollary? And what does "ibid" mean, immediately following that?
 
"Command Not Found" was him joking that there's no way to do that in EQBC.

Ibid is footnote notation, short for ibidem but in this context you can read it as "same as above"
 
got a question about buffs, eqbc and dannet, currently KA uses EQBC to know if your group needs buffing or rebuffing, so if you change over to DANnet how would that work? would you still need eqbc for that?
 
got a question about buffs, eqbc and dannet, currently KA uses EQBC to know if your group needs buffing or rebuffing, so if you change over to DANnet how would that work? would you still need eqbc for that?

Yes, what Knightly said. To add, there’s a setting in the [general] section of the INI for Kiss. EQBC something rather =BOOL. KissAssist does not depend on EQBC for anything.

You should absolutely give Maskoi feedback but he’s so old and salty he grew scales especially over his ears and eyes.
 
I used MQ2DanNet exclusively this weekend and even unplugged EQBC. Everything was flawless and had no issues. Yes I had to rewrite my commands but it was pretty easy for a simpleton like me. I 6 box on one computer so I don’t need a server to help command my group. I use MQ2Berzerker for my 2 zerk era and kiss for the rest.
 
got a question about buffs, eqbc and dannet, currently KA uses EQBC to know if your group needs buffing or rebuffing, so if you change over to DANnet how would that work? would you still need eqbc for that?

one way is to simply ask the other client (character) if they need the buff (query)
the other way is to watch the other client and give the the buff when they need it. (observer)

both are easily doable and extremely fast.
 
I have converted from eqbc ot mq2dannet but I wanted to post some information that effected the quality of life buttons I had become use to.

Just to note if you convert from mq2EQBC to mq2dannet the quality of life buttons as shown below will not work correctly. Parts of the Followme and Mimicme are coded in the dll's. For instance the followme button will turn on and work correctly if you changed the info in the mq2targetinfo.ini but it will not turn off because the followme turn off is hardcoded into the mq2targetinfo.dll files.


1560196766808.png


BTW I have converted to mq2dannet and its so much more responsive then eqbc. I highly do recommend it. If a newb like me can do it anyone can!

Here are three stop buttons to help and run with mq2dannet. I just edited them [mee6bot] for dannet instead of eqbc. Copy/paste each of these lines into your MQ2 chat window to quickly create 3 different socials that will stop any and all movement for mq2dannet.

/hot StopMe 13 /squelch /multiline ; /afollow off ; /stick off ; /moveto off ; /nav stop ; /play off

/hot StopAll 13 /dgaexecute /squelch /multiline ; /afollow off ; /stick off ; /moveto off ; /nav stop ; /play off

/hot StopGrp 13 /dgexecute /squelch /multiline ; /afollow off ; /stick off ; /moveto off ; /nav stop ; /play off
 
Last edited:
I have converted from eqbc ot mq2dannet but I wanted to post some information that effected the quality of life buttons I had become use to.

Just to note if you convert from mq2EQBC to mq2dannet the quality of life buttons as shown below will not work correctly. Parts of the Followme and Mimicme are coded in the dll's. For instance the followme button will turn on and work correctly if you changed the info in the mq2targetinfo.ini but it will not turn off because the followme turn off is hardcoded into the mq2targetinfo.dll files.


View attachment 17075

“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.”
 
“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.”

Too lazy is a perfectly legit excuse.
 
“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.”

There is nothing wrong with people choosing to run the option they want. I have macros coded to use eqbc and quite honestly if it isn't broken why fix it?

Also as for the hard coded plugins like mq2targetinfo that controls the follow me button, I'll let you tell eqmule he's wrong thanks :)
 
There is nothing wrong with people choosing to run the option they want. I have macros coded to use eqbc and quite honestly if it isn't broken why fix it?

Also as for the hard coded plugins like mq2targetinfo that controls the follow me button, I'll let you tell eqmule he's wrong thanks :)

That's objectively false on so many levels.

And EQMule knows full well what I think of that asinine part of that plugin, including twice so far in this thread. It's terrible execution full stop. I just looked up a quotation that was perfect for this specific topic and it turned out to actually be about this very subject. "good idea + bad implementation does not equal a good idea."
 
whats the actual benefit from using this over eqbc ? I dont see it. What does it do better ?
there's no server side to setup - since it is automatic detection boom it just *is*. From a barrier to entry for newer folks it is immensely easier. It also appears to be hella more responsive
 
I have been using it exclusively and have no issues. EQBC would lag. Also it would cause my tank, who I actively play, to lag 20 seconds behind the rest of the group. I would have to close out the server and restart to fix the lag. With MQDannet I have not found any lag after hours and hours of use.
 
whats the actual benefit from using this over eqbc ? I dont see it. What does it do better ?

i dropped eqbc instantly when this came out. have not looked back. what does it do? Well, it can completely get rid of eqbc, netbots, mq2debuffs and that's just a start. Anything I can get on a toon, I can get with DanNet to another toon and its practically instant. I have been hard pressed to find any limitations so far.

The more ways you look at it, the more ways you can apply it.
 
Help me understand something - when trying to mimic some NetBots functionality, you set up an observer, (is that right)? This observer will check for a particular Buff / Stat / whatever. You can then do a ${Dannet.Target.TLO} type query. Can this be incorporated into KA conditions? If so, does the observer setup need to be 'injected' into the KA mac somewhere ?

Anyone have an example ?

thanks
 
Guide - How to ditch that rubbish EQBC and get with the times with the sexy MQ2DanNet

Users who are viewing this thread

Back
Top