MQ2EQBC¶
Description¶
MQ2EQBC \(EQ box chat\) is a plugin composed of two parts, a server \(EQBCS\) and a client \(MQ2EQBC\).
- The server provides a similar service to an IRC server but is much easier to setup.
- The client is similar to the MQ2IRC client in that it monitors text that is sent to the EQBC
server.
- The main advantage of MQ2EQBC is that it allows remote commands to be sent directly to a single or all connected
clients.
This plugin was originally written by Omnictrl, with ascii38 and pms providing maintenance for a period. The plugin and server currently have no active maintainer.
The discussion thread regarding this plugin is found in the VIP forums here. The current client source release is located here. The current compiled server application, which also will compile and run on Linux, can be found at the link in this post.
For the development history of this plugin see the article here.
Features¶
- Allows remote commands via box chat much like mastermind does.
- Allows you to control any connected client anywhere (ie. someone in your raid needs to afk for a while: they connect
to your server, you remotely load macros and control their toon as needed until they return).
- Is mostly compatible with scripts that already support MQ2Irc \(replace '/i say' with '/bc'\).
- Offers private chat \(and private chat channels\) that do not go through EQ servers.
- Optional dedicated UI window for chat output.
- Input typed in dedicated UI window defaults to private '/bc' chat much like EQ's chat window defaults to /say.
- Dedicated UI window supports a configurable keybind for fast private chatting.
Commands¶
/bccmd¶
- /bccmd connect
Connect to server on port using password \(defaults: 127.0.0.1 2112\). Note: Once you connect, it will remember that connection, so next time you just have to type: /bccmd connect
- /bccmd forceconnect
Connect to server on port using password \(defaults: 127.0.0.1 2112\). This differs from connect in that it works while already connected to a server.
- /bccmd iniconnect
Connect to a server by ini key name using information defined in your MQ2EQBC.ini file. Example:
;2100 would be the keyname
[2100]
Server=10.0.0.1
Port=2100
;2150 would be the keyname
[2150]
Server=10.0.0.1
Port=2150
Password=mypassword
- /bccmd quit
Disconnects from the server
- /bccmd help
Show Help
- /bccmd status
Show if connected or not
- /bccmd reconnect
Close the current connection and connect again
- /bccmd names
List everyone that is connected to the server
- /bccmd colordump
Show color codes
- /bccmd toggle option
- /bccmd set option \< on | off >
Toggle or set option on or off. Valid options:
:* autoconnect
Auto connect to server when plugin loads
:* control
Allow remote control
:* compatmode
IRC compatibility mode keeps name formatting IRC friendly and echoes outgoing /bct
:* reconnect
Auto-reconnect on server disconnect or zone change
:* window
Use dedicated EQBC UI window
:* localecho
Echoing outgoing commands back if in a channel \(echo is server-driven\)
:* tellwatch
Relay received tells to /bc
does not support tell windows
:* guildwatch
Relay guild chat received to /bc
:* groupwatch
Relay group chat received to /bc
:* fswatch
Relay fellowship chat received to /bc
:* silentcmd
Squelch 'CMD: ' echo
:* savebychar
Saving custom UI window settings to CharName sections of the configuration file \(saves to _Window_ if disabled\)
:* silentinccmd
Squelches incoming eqbc command requests
:* silentoutmsg
Squelches outgoing /bct with compatmode on
:* notifycontrol
Relays a message to /bc if the control option is disabled when a command request is received
:* echoall
Echoes outgoing /bca commands if enabled
- /bccmd set reconnectsecs #
Set the number of seconds to wait until reconnecting \(default 15\)
- /bccmd stopreconnect
Stop trying to reconnect for now
- /bccmd channels
Set the list of channels to receive tells from.
- /bccmd version
Show plugin version
/bc¶
- /bc your text here
Send "your text here" to the server.
/bct¶
- /bct ToonName your text here
Send "your text here" to ToonName
- /bct ToonName //command
Send /command to ToonName
/bca¶
- /bca //command
Send /command to all connected clients, excluding the client you issued the command from.
/bcaa¶
- /bcaa //command
Send /command to all connected clients, including the client you issued the command from.
/bcfont¶
- /bcfont #
Sets the font size of the UI window, similar to the /mqfont command
/bcmin¶
- /bcmin
Minimizes the UI window, similar to the /mqmin command
/bcclear¶
- /bcclear
Clears the buffer of the UI window, similar to the /mqclear command
Configuration File¶
The EQBC client will create the configuration file MQ2EQBC.ini in your root MQ2 folder. An example of this configuration file is as follows:
[Settings]
AllowControl=1
AutoConnect=1
AutoReconnect=1
ReconnectRetrySeconds=15
LocalEcho=0
SaveByCharacter=0
SilentCmd=1
TellWatch=1
GuildWatch=1
GroupWatch=1
FSWatch=1
UseWindow=1
Keybind=.
[Window]
ChatTop=600
ChatBottom=800
ChatLeft=700
ChatRight=1100
Fades=0
Alpha=255
FadeToAlpha=255
Duration=500
Locked=1
Delay=2000
BGType=1
BGTint.red=0
BGTint.green=0
BGTint.blue=0
FontSize=3
UseMyTitle=1
WindowTitle=Custom Title Goes Here With No Quotes
[Last Connect]
Server=10.0.0.1
Port=2112
[Custom1]
Server=10.0.0.1
Port=2115
Password=custompass
[Custom2]
Server=soe.sony.com
[Custom3]
Server=eqbc.google.com
Port=1337
- *If you wish to use a custom window title you must set UseMyTitle to 1 and change the WindowTitle* line before
loading the plugin**.
Top-Level Objects¶
${EQBC}¶
Type | Member Name | Description |
bool | Connected | Client connection status |
string | Names | List of connected characters |
string | Port | OFFLINE if not connected, port if connected |
string | Server | hostname or IP of server you connected to |
string | ToonName | Character name as seen by EQBC \(may reflect YouPlayer\) |
bool | Setting | Option enabled/disabled status. \(see **/bccmd set** for complete list\) |
Examples¶
Sending commands to other toons:
/bct ToonName //sit
/bct ToonName //stand
/bct ToonName //macro ninjalooter
/bct ToonName //endmacro
Sending commands to channels:
/bccmd channels chatchan, commands
/bct chatchan hey there guys
/bct commands //bct chatchan My zone: $\{Zone.ShortName}
Sending commands to all other connects clients:
/bca //target id ${Me.ID}
/bca //timed 10 /stick 10
Sending commands to all clients including yourself:
/bcaa //makecamp return
Using noparse to get MQData with bca & bcaa \(one day this will be fixed\):
/noparse /bcaa //bc I am ${Me.PctExp} into ${Me.Level}
Taking advantage of escape characters instead of noparse \(only works with _/bct_ at this time\):
/bct Mycleric //bc I am level $\{Me.Level}
EQBCS¶
EQBCS is a server that can be run as a console application on windows, or as either a foreground application or daemon on a Unix-like system \(tested with Linux and FreeBSD\).
It currently takes the following command line parameters:
- -p which is the port you want to bind to \(default is 2112, which is dedicated to the Canadian trio Rush\).
- -i
which is the IP address that you want to the server to listen on if there is more than one network interface in the computer \(default is to listen on all interfaces, which is what you want unless you know otherwise\).
- -l will send all output to rather than to the screen.
- -d will cause the application to run as a deamon process in the background \(UNIX only\).
Examples:
C:\> eqbcs Listens on port 2112
C:\> eqbcs -p 4224 Listens on port 4224
C:\> eqbcs -l log.txt Listens on port 2112 and sends all server output to the file log.txt.
C:\> eqbcs ftp Does not work, it does not look up service names to map to port, and the text won't work.
Compiling EQBCS \(Windows\)¶
'''This guide for compiling EQBCS for Windows is credited to Tinydru from this post
Copy the two parts of the eqbsc post in to a single eqbcs.cpp file (you can just use Notepad to do this - just¶
remember to replace the .txt extension with .cpp).
- Launch Visual Studio 2005
- Create a new project. For the project type, select Visual C++ | Win32 and then Win32 Console Application template.
- Name the project \(I used eqbcs\). Make sure to pay attention as to where it is creating the directory for the project
\(so you know where to grab the app files after you build the solution\). Click the OK button after you've given it a
name.
- Click the Next button on the first page of the Win32 Application Wizard
- On the Applications Settings window:
- Leave the default Application type as "Console application"
- Uncheck "Precompiled header"
- Check "Empty project"
- Click the Finish button
- Your empty project should now be open. In the Solution Explorer, right click on the "Source Files" folder and select
Add -> Existing Item from the list.
- Navigate to the folder where you saved the eqbcs.cpp file you created in step 1 and double click on it \(eqbcs.cpp\).
This will add eqbcs.cpp to the Source Files folder.
- In the Solution Explorer, double click on the eqbcs.cpp file - this will open the code in the code window.
-
In the code, find "tempPort = atoi\(argv\[1\]\);" and replace it with "tempPort = atoi\(\(const char \*\)argv);"
\(this will be on or near line 1983\). Thanks much to Bardomatic for fixing this piece of code.
-
From the File menu, select Save All.
- From the Build menu, select "Configuration Manager..."
- In the Active solution configuration: drop down box, select "Release" and then click the Close button.
-
From the Project menu, select eqbcs Properties... ("eqbcs" might be diffent if you named the project something
else).
-
In the Configuration: drop down at the top of the Property Pages window, select "Release" from the list.
-
Open the Configuration Properties node \(click on the little +\) and then the Linker node. Now click on "Input" (found
beneath "Linker").
-
In the right hand window of the Propery Pages window, click on "Additional Dependencies". When you click on that, a
little box with elipses \(...\) will appear on the right side of the field - click on that. The Additional
Dependencies window will open.
-
Type wsock32.lib in the text box and then click the OK button.
- Click the OK button on the Property Pages window.
- From the File menu, select Save All.
- From the Build menu, select Build solution. The build *should* succeed.
- You are done - go get your new eqbcs.exe from the Release folder where you created the solution!!
Compiling EQBCS \(Windows cmd line\)¶
'''This guide for compiling EQBCS from the Windows cmd line is credited to dont_know_at_all from this post
ctrl-esc Run¶
- cmd
- in the cmd.exe window type the following:
- c:\Program Files\Microsoft Visual <add your version/path here>/common7/tools/vsvars32.bash
- cl eqbcs.cpp
- that's it.
=== Compiling EQBCS \(Linux\) === '''This guide for compiling EQBCS for Linux is credited to ascii38 from this post
g++ -fpermissive eqbcs.cpp -o eqbcs¶
EQBCS as a Windows Service¶
- Download the [Windows Resource Kit
2003]\([http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en](http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en)\)
- Run the executable to install the Resource Kit
- Open up a command prompt and run the following to install a service stub (*default install location used in this
example*):
'''You may substitute "EQBC Service" with whatever name you would like to give to the service for display purposes
"C:\Program Files\Windows Resource Kits\Tools\instsrv.exe" "EQBC Service" "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"
- Run regedit to edit the Windows registry, and navigate to the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EQBC Service
- From the Edit menu, select New, select Key, and name the new key Parameters
- Highlight the Parameters key
- From the Edit menu, select New, select String Value, and name the new value Application
- From the Edit menu, select Modify, and type in the full path name and application name of EQBCS, including
the drive letter and file extension. You would use the following example if you had the server located in folder
MQ2 on your C: drive
C:\MQ2\eqbcs.exe
- Now go to Start and Run and type in services.msc
- From here scroll down to EQBC Service \(or whatever name you gave the service above\), right-click and select
Properties
- On the General tab, change the Startup type to Automatic
- Click the Start button to start your service
- Select the Recovery tab, and you have the option of changing the drop-down boxes for First-Failure and so on to
Restart the service
- Select OK and you are finished
Problems¶
- This application has failed to start because the application configuration is incorrect. Reinstalling this application may fix the problem
This is the most common issue with EQBCS failing to run in Windows. Your system is missing runtime libraries. Get both below.
EQBC Interface¶
EQBC Interface is an application developed by ieatacid to allow communication with EQBCS outside of the EverQuest game client. The discussion thread for this application is found in the VIP forums here. The most recent release of this application also allows you to view detailed information about characters connected to your server by selecting their name, which will display their statistics on the right-hand side of EQBC Interface. The interval of how often to poll the selected character is configurable by the user so that this information can be very close to real-time.
Jimbob extended the functionality of this program in July 2015. The discussion thread for his fork of the project is found in the VIP forums here.