- Re-created StayConnected plugin. Implements another attempt at detecting disconnects and acting upon them.
- Moved the 0x00 sending code from Ping to StayConnected, as it's more fitting there.
- Switched the code in the Ping plugin from SID_EXTRAWORK to the intended SID_OPTIONALWORK so it is now properly caught, and also added SID_REQUIREDWORK parsing, in responce to IX86BlueDrake.mpq and IX86FarSight.mpq annoying the life out of me. Both are debug messages.
- Re-enabled CheckRevision on a by-product basis. Currently, it is set up to throw a InvalidVersion exception (which is caught, of course) if the product is STAR, SEXP, or W2BN. This allows D2DV D2XP, WAR3, and W3XP to hash locally, although they will need their local hashing information updated (see below about _GameData.txt).
- All clients now use BNLS_VERSIONCHECKEX2, where STAR and SEXP originally used BNLS_VERSIONCHECK. This reduces the code size of BNetLogin.versioning.BNLSClient by a fair deal, and removes an ugly kludge that I had for a reason I can't even remember.
- Removed a few debugging message that I put in for myself and forgot to remove. They didn't even have any debugging value if you didn't know exactly where they were firing from, either.
- Removed all coding for RCRS. I have no intention of rewriting it for Lockdown, nor does iago, and the code was getting out of date quickly with the new BNLS support.
-
Changed the BNLSClient class to save the instance of the BNLS socket once it's created. Now you only connect to BNLS once for all your data, instead of before, where it connected for both version byte and checkrevision causing twice the stress on both you and BNLS. I started this but due to some problems I ran into it's been postponed until [eventually]. It's still pretty high priority on my list though.
- Updated some hardcoded values, so we're getting closer to supporting local hashing out of the box again. However, I don't have time or resources to get the version hashes so they may still need to be updated manually, although rumor is that Battle.net doesn't care about them anymore. Delete your _GameData.txt to revert to my new settings if you'd like.
- Why was BotCore setting the version number to BotCoreStatic in it's constructor?! I've changed it so it's returned straight from BotCore as a "magic string". The Version plugin as well as StaticExposedFunctions (interface) has been updated to reflect this, and I note the API change below.
- Some pieces of data in the login blob, notably the formula and version statstring, were removed along with their terminator -- something that never should have happened. With the new removeNtByteArray() function this is corrected, and they are now followed by a terminator which is added in the function they are used in -- not to the data itself.
- BNLSClient's creation of it's socket is now tied in with the global timeout value. Previously, this was hardcoded to 5000 miliseconds and the global timeout was only used in connecting to Battle.net.
- Fixed the error where you'll fail login when using a password with some upper-case characters. Passwords are supposed to be case insensitive, but JavaOp2 wasn't setting them to all lowercase. This has been fixed for account creation, password changing, and account login.
- Better documented the BNLSClient methods, and rewrote some to do it's work slightly better.
- BNetLogin now uses the username as the CD-Key owner instead of "
www.javaop.com". It just makes more sense to me. The only attention it got us was negative attention.
- JavaOp2 is once again built against 1.4!API changes:
- javaop2_pub.util.Buffer has a new method --
byte[] removeNtByteArray(). This can be used for removing a field that is treated as a null-terminated String, but is not safe to treat as a java.lang.String due to non-printable characters (examples being the Lockdown-Style formulas and the new Version Statstrings).
- javaop2_pub.util.Buffer has a new method --
void addNtByteArray(byte[]). This is exactly the same as the above function, only backwards.
- javaop2_pub.callback_interfaces.StaticExposedFunctions has a new method --
String getVersion(). This simply returns a plain-text string stating the bot's version.