OgreConsole - What is it and feedback.

OgreConsole - What is it and feedback.

Postby Kannkor » 14 Jul 2015, 03:16

This IS released now!!!

What is the OgreConsole?
I feel like to properly answer this.. we need to go back in time.. many, many years. Back in the day, there was no extra window, and if Ogre wanted to give you any information, you had to open the console (the blue one at the top of your screen when you hit ~) and look.
Then years later, we needed to be smarter, and know if someone ever sent you a tell. So the TellWindow (also known as "Mini") was created. A simple window that would be created if you got a tell. Was ugly but simple and served a single purpose.
Fastforward many more years, and I needed a way to communicate with other peoples bots. I figured this would be something only I would use, so I just created OgreIRC, figuring 3 of us who needed it would use it. OgreIRC allowed for some very nifty usage. Like EASY to stack MCP commands. More on this later, but a quick example is, I always hit "RepairGear" and "GetFlag" before I hit "UseFlag". This was 3 buttons.. now it's 1.
OgreIRC did everything it needed to do, plus it took over what the TellWindow did. This made the TellWindow obsolete for anyone using OgreIRC.
For years I've wanted to make something (OgreConsole) that would officially combine both windows. I was then playing with Everquest1 a bit, and I needed to create a tell window. "Here we go again".
I did not want to end up with 2 EQ2 windows, 2 EQ1 windows, and who knows what else to update. That's where this new window, called OgreConsole came from. A one stop shop for every game, for every message Ogre, or anything Ogre related needs to give you information about.

Combines TellWindow/OgreIRC.
This means instead of having a TellWindow (Mini), or OgreIRC window, you will now have an OgreConsole window instead. YOU CAN EVEN RESIZE IT IN GAME! You can use the right side, bottom side, or bottom right hand corner (it's a little tricky) to resize the window to your desire. Make sure after you do so, on the OGRECONSOLE tab in Ogrebot, you hit "Use current Window Position" then save your profile.

Some other changes of note:
MCP actually got a complete overhaul also... Well, MCP Commands did.
Previously, when you pressed an MCP command, it would send an invisible command to all your sessions to do something.
Likewise, when an OgreIRC user used a command, it would process the command and send it to all their sessions to do something.
This mean I had to maintain two lists of things the bot could do. One via IRC, and one via MCP. This also meant OgreIRC users could stack commands since it was CLI (Command Line Interface), whereas MCP users could not, since it was actual commands.
I rewrote the entire system to CLI since it was WAY more powerful. Made MCP and IRC both use the exact same code file. This means when I add a new command, it will automatically work for MCP and IRC!
You will notice when you press an MCP button, it actually shows you the command in OgreConsole. For example, if you press the MCP button 'LetsGo' you will see something like this:
Code: Select all
!c -letsgo all

In short it stands for !c = Command, -letsgo is the command we want to do, and all is the parameter we're passing it.
Likewise, if we press pause, we would see:
Code: Select all
!c -pause all

Same thing. !c = command, -pause is the command, and all is the parameter.
If you'd prefer not to see what the bot is actually doing, you can have these commands be sent invisible instead. On the OgreConsole, hit the 'setup', and check the box that says to make them invisible. Then it just does it behind the scenes.

Stacking commands:
There is a new MCP command, called "OgreConsoleCommand". This is simply a button that does !c. Which tells OgreConsole it is a command.
Using the two examples above, we could stack them. We could make the entire line the following:
Code: Select all
!c -pause all -letsgo all

Which would tell OgreConsole the following:
!c = command
-pause all = pause everyone.
-letsgo all = Tell everyone to letsgo.
Okay... so this probably isn't the most realistic example to use.
Here is another example... Again maybe not the most realistic, but it will show what you can do, very easily.
Code: Select all
!c -cast mystic "Spirit Tap" -cast guardian "Tower of Stone" -cast Warden "Tunare's Watch"

The above should be pretty easy to read. This tells mystics to cast Spirit tap, tells guardians to cast Tower of Stone, and Warden's to cast Tunare's watch.
Here is an old button that should be updated.. but again just shows an example:
Code: Select all
!c -letsgo all -ass Tankname all -Ofol all Tankname -ofol-- -ofol-- -ofol--

This makes everyone 'LetsGo', assist (-ass) the Tankname (you put your actual tank name, or ${Me.Name} in here), makes everyone OgreFollow TankName, then makes everyone follower closer than the defaults ( -ofol-- means reduce the distance they are following... in this case 3 times).

Wait... all MCP buttons are changing? WHAT ABOUT ALL MY PRECIOUS BUTTONS?!?!?!?!?!?!
If you think for a minute, you have more MCP buttons than I do, you're likely wrong. And trust me, I do not want to change any, let alone all of my buttons!!!
The good news is, MCP was set up in a way, that behind the scenes changes could happen without affecting the buttons, as long as the parameter order did not change.
To the best of my knowledge, 99.9% of MCP buttons will have backwards compatibility. This means every single button you have now, will work the same as it does before... Just.. "differently". (I say 99.9% because every single one of my buttons works fine, but I'm sure someone some where will find a button that has to be changed).
Some MCP Commands are no longer supported, and can no longer be added. However, any existing buttons will continue to work. These are outlined in the revision history, but it's basically duplicate buttons. For example, Letsgo and Letsgo_ForWho do the exact same thing with the new system. Therefore I removed the Letsgo_ForWho.

OgreConsole Options
There are some options available. There are two places for these options. 1) Inside Ogrebot, and 2) On the 'Setup' button on OgreConsole itself.
Lets start with the options in Ogrebot. There is a new tab called 'OgreConsole'. It has the following options.
[Button] Use current Window Position
*** This will set the values below based on where the window actually is. For best results, you should move the window/size it using the UI, then click this button to populate the window.
OgreConsole X Coord:
*** The X coordinate of where OgreConsole window.
OgreConsole Y Coord:
*** The Y coordinate of where OgreConsole window.
OgreConsole Width:
OgreConsole Height:
[X] Hide console on load
*** When Ogrebot is opened, it will hide OgreConsole.
On the right side, you will notice some OgreIRC information. This is NOT needed unless you are already using OgreIRC. And if you are, these options are identical to what you are currently using.
Next up, the "Setup" button on the OgreConsole itself.
[X] Make any OgreConsole command invisible. This includes from MCP buttons. Does not include IRC commands.
*** For example: When you press pause, you see "!c -pause all" into the OgreConsole. It's showing you exactly what it is doing. If you would prefer to not see any of these messages, check this box and they will not be displayed.
[X] Send text typed into OgreConsole to IRC.
*** When you type into OgreConsole, it will send the text to IRC instead of just to your own OgreConsole. This is obviously only useful if you're using OgreIRC.
[X] Send all OgreConsole commands to IRC. Does not include text typed into Ogreconsole.
*** For example: When you press pause, instead of "!c -pause all" being done locally, it sends that message to IRC. Only useful if you're using OgreIRC. As noted, this does not include text typed into OgreConsole. Use the option above for that.
[X] Send all IRC commands to OgreConsole instead of IRC.
*** If you have an MCP IRC button, it will send it to OgreConsole instead. (This is much like the [IRC Me only] option on the MCP, except no one else can see it.).

What's this "Control+~"?
If you want to show or hide the window, press control + ~. Press it and see. Then press it a second time.
(Unrelated, if you have OgreMCP open, press Alt + ~ to show/hide it.)

Colours colours and more colours!
I've attempted to colour code various messages, based on what they do.
Red: For example, you'll notice any command (starts with !c, or !eq2) is red.
Purple: For OgreIRC users, any command specifically for yourself ( !c me ), is purple.
White: System messages/notices/etc. Generally just information you may want, but usually isn't OMG IN YOUR FACE. For example: When you zone into a heroic zone and there are set ups, these messages are considered system messages.
Orange/Light Blue: Tells are Orange and light blue.
Orange/Yellow: Guild messages are Orange and yellow.
Green: Regular typed text. Type something into the OgreConsole.. such as: Ogres are the best!
Orange/Green: IRC messages.
Orange/Red: IRC Commands. (Exact same as red, but who typed it is in Orange).
I'm sure there are others... Unfortunately at this time (and unlikely to ever come as a feature) you cannot change the colour scheme. If you have a suggestion on a change, please do let me know and I'll review it. Some of these are hardcoded in various spots, etc. It was one of those things I never thought I would use other than for a small specific need... Then it got out of control!

My MCP button ____ no longer works!
Fortunately, I've tested as many buttons, and used various parts of the new OgreConsole for a few weeks now and knocked out all bugs I have found.
Unfortunately, because this new system is used by so many subsystems, it wasn't realistic for me to be able to have a dev bot and a live bot that could contain all of these two systems at the same time. This means all testing was done only by me, and there are only so many combinations I can test.
Having said all that, if you find you have an MCP button that no longer works, post it here in this thread. I will need the following information.
When you right click on the button, I need the EXACT "Select Command" drop down, and what all the parameters are in order. (Note: You can substitute TankName for your actual tank name, etc). Then a brief description about what happens (such as "nothing"). Does the command show up in OgreConsole? Etc. Give me as much information as possible.
Then I will see if I can reproduce it, then provide a solution. (Ideally me fixing it and life is great, or possibly a different way to make the button etc. Depending on the situation etc).

Can I opt out of this and just use the old TellWindow/OgreIRC?
No primalz, you cannot. I mean, no you can't. Ogrebot sends this information, and it has been switched from being sent to those windows, to this new window. Embrace the change.

When will this be coming to EQ1?
Unknown. Once it gets a bit of testing, and bug free with EQ2, it should be a relatively simple port to make it work for EQ1, since it was designed specifically to be able to. There are a few game-specific things that need coding for it to work, and requires some work inside of the extension to tie everything together, but once it's bug free, it shouldn't take too long.

When will OgreConsole be released?
As soon as I feel like it's ready, OR as soon as I *have* to patch. Every day I change things, it makes patching the extension or Ogrebot core without releasing OgreConsole MUCH more difficult. I'm hoping for within the week to have it released, pending any issues.

Images:
OgreConsole.PNG

OgreBotOgreConsole.PNG

OgreConsoleSetup.PNG


P.S. I'd like to thank primalz for the swashbuckler screen shot.
Kannkor
 
Posts: 354
Joined: 06 Nov 2013, 11:49

Re: OgreConsole - What is it and feedback.

Postby Kannkor » 16 Jul 2015, 00:49

Scripters!

This post is for people to script and/or do OgreBot commands (such as MCP commands from their own scripts).

First, nothing that I'm aware of, or have tested should break right off the bat.

Having said that... you SHOULD update to use the new system. Because the new system is a (better than old system) API. And unless it's an absolute extreme circumstance, I will never change the API (such as order of parameters, or the actual functionality of said API).

Whereas the crude calling functions and atoms directly, could change, since there is no access control on it.

Previously, you had two files, MCPCommands.xml and OgreIRClib.iss where you could look for how to do various OgreBot things. You will still kind of have two files.
MCPCommands.xml has had a 99% overhaul. Nearly every single command has changed. They all do OgreConsole commands now. Which are then parsed in the file: Scripts/OgreConsole/Everquest2/Object_Everquest2CommandParser.iss (yes, I was going for the longest name possible :P). You'll see at the top a switch with all possible OgreConsole commands. They may have parameters, but that is handled... differently... I'll get to that here shortly.

Find the command you want to review, then search for the method.
For example.. -pause, we'd go to Command_Pause
Any time parameters can exist (remember they no longer are required), you will see what the defaults are. Some times I made up silly defaults just for the sake of having them. So take some with a grain of salt where it makes no sense to have defaults :)
Here we see, CommandForWho=All. That means the default is set to All. Then the next two lines change the parameter if it exists.
For example... -pause fighter
Would change the parameter to fighter. If no parameter is given, it uses the default (all).
Then it fires off OgreBotAPI to handle the request.

It is like this for nearly every example.
Here is a larger example, but same concept.
-OgreFollow which takes us to method OgreFollow()
You will see the 5 defaults at the top (all/${Me.Name}/2/200/FALSE). Here is an example of a silly default. Remember, this is NOT relayed. This is local. So the ${Me.Name} default will always be the toon. If you did an OgreFollow with no parameters, everyone would be following themselves (or not following anyone, to be more appropriate). So you'd want to pass ${Me.Name} as the second parameter, not let it use the default... Anyways..
Then it goes through each parameter 1 at a time and updates them if they exist.
Then it fires off OgreFollowOb. (Basically an API for OgreFollow).

For things completely unrelated to Ogrebot, it handles the request right in the file.
For example: EndScript
You can see it just handles the request right in the script.



Best way to approach adding a Ogrebot function now?
Best way (IMO), is to simply: oc ____________________ (or irc ____________________). You do NOT relay this, because oc WILL relay it for you, properly escaped etc etc.

If you wanted to do a lets go in a script, your line of code could be:
oc !c -Letsgo
(Remember, we don't need parameters unless you want something other than the defaults)... Which to be honest you should do incase I ninja change the defaults :)
So.. oc !c -Letsgo all
Or irc !c all -letsgo all
Kannkor
 
Posts: 354
Joined: 06 Nov 2013, 11:49

Re: OgreConsole - What is it and feedback.

Postby Kannkor » 16 Jul 2015, 13:20

This has been fixed.

Few bugs to report.

So far only for OgreIRC users.
In Ogrebot, on the OgreConsole tab, when you update the OgreIRC part, after you save, you have to reload Ogrebot AND OgreConsole for it to work ( ogre end console, then ogre console ).
(Or restart your session).
Kannkor
 
Posts: 354
Joined: 06 Nov 2013, 11:49

Re: OgreConsole - What is it and feedback.

Postby Kannkor » 16 Jul 2015, 13:24

If you patch while in the game, you will need to reload OgreMCP to load the new commands ( ogre mcp ).
Kannkor
 
Posts: 354
Joined: 06 Nov 2013, 11:49

Re: OgreConsole - What is it and feedback.

Postby Kannkor » 16 Jul 2015, 13:45

OgreIRC
On the OgreConsole tab in Ogrebot, you MUST have filled out the OgreIRC uplink name appropriately.
For ease, you can copy this file from your main computer to your secondary computers.
Scripts\OgreConsole\IRC\Data.xml

You do NOT need to check the 'connect to irc' button on your secondary computers. That's for making it do the actual connection which is handled by the main PC.
Kannkor
 
Posts: 354
Joined: 06 Nov 2013, 11:49

Re: OgreConsole - What is it and feedback.

Postby Kannkor » 16 Jul 2015, 13:50

Typing slashes into OgreIRC and (probably) OgreConsole may cause it to crash.
/ and/or \
Will investigate later.. but for now.. don't do it.
Kannkor
 
Posts: 354
Joined: 06 Nov 2013, 11:49

Re: OgreConsole - What is it and feedback.

Postby Sadoru » 16 Jul 2015, 14:56

Please make the ogre console keybind configurable.

For us with non-English keyboards keybinds involving ~ or ^ are bad. Additionally my CTRL is called STRG.

Would be awesome! :D
Sadoru
 
Posts: 1
Joined: 16 Jul 2015, 14:48

Re: OgreConsole - What is it and feedback.

Postby DiBi » 16 Jul 2015, 17:47

1) Tried to use Poison_AutoConsume MCP command, specified 3 parameters: all, TRUE, Gnostic's Hemotoxin
But it seems that third parameter is ignored - console says that it is trying to enable "Cerebral Caustic Poison"
Also this wasn't working for me before console, but I have no idea why back in these days, now console gives me a hint about poison name


2) There is no built-in way to hide console on all sessions



Edit by Kannkor:
MCP
** Added button: ToggleConsoleWindow_OgreBot
*** Takes 2 parameters:
**** ForWho = All
**** Value = Toggle
*** Note: This requires Ogrebot to be running.
OgreConsole:
* Added -OgreBotToggleConsoleWindow[ForWho,Value] Acceptable values are: Toggle, TRUE, or FALSE. (Any other value will count as FALSE)
* Note: This requires Ogrebot to be running.
DiBi
 
Posts: 9
Joined: 20 Jun 2015, 10:01

Re: OgreConsole - What is it and feedback.

Postby Kannkor » 16 Jul 2015, 18:20

Feature request from saha...
(OC) !c -letsgo to turn into an (IRC) !c me -letsgo

Edit by Kannkor:
This will have to be down the road. In order to implement I will need to break apart the string and inject the Me into it. Will look into this later.
Kannkor
 
Posts: 354
Joined: 06 Nov 2013, 11:49

Re: OgreConsole - What is it and feedback.

Postby Kannkor » 16 Jul 2015, 19:11

Bug report from: isnewbie
With the new update, change_campspot_whox2 and greater is no longer working. Change_campspot_who is still working fine.

Edit by Kannkor:
Can't reproduce...
Just made an MCP button with:
Change_Campspot_Whox2
Parameters:
${Me.Name}
-30
0
16
ToonName2
-37
0
25

I was in my GH. Campspot in the area, hit the button, both toons moved to the position in the button above.

If you have existing buttons not working, get me the exact Select Command and parameters (substituting names, of course)
Kannkor
 
Posts: 354
Joined: 06 Nov 2013, 11:49

Next

Return to General Discussion

Who is online

Users browsing this forum: No registered users and 6 guests

cron