///////////////////////////////////////////////////////////// // PseuWoW changelog // date|time: 20:31 11.12.2006 ///////// ///////////////////////////////////////////////////////////// //Format: // + added // - note // % removed // ! important // O ToDo: open, not yet done // x Todo: done ///////////////////////////////////////////////////////////// ToDo (Overall): ================ - simulation of no installed addons - more config possibilities in conf/pseuwow.conf - redo controller related code and recode controller - character creation - to be able to create chars with names bl!zz does not allow - remove hardcoded language names, use lang names via config -> string table? not sure. - ppoints system? as a workaround for maps? not sure. - much much more i cant think of yet :P #Far future: - kind of an AI that it can decide for itself what to do - add ability to use blizz/mangos maps so that it can really walk around, not only teleport - to be continued... - looting, 2D/3D GUI, killing,... you can extend the list as you wish ToDo (version after: Alpha 13) / Planned Features: ================================================== O add a ZCompressor Class (a ByteBuffer using zlib deflate/inflate) O [maybe] first touch with the UpdateFields (CMSG[_COMPRESSED]_UPDATE_OBJECT) O [maybe] add Object/Unit/Player/Creature/... classes. X cleanups to VarSet class (use vectors to store the vars) O cleanups to DefScript class: use vectors to store the script text data O DefScript: instead of only ${var} also be able to use $var like in TCL or PHP O Implement threaded movement system. tracking of player's waypoints, better following code (that does NOT tend to crash mangos!) O improve chat AI? add other AI? not sure. O logfile output [...] ToDo (next version: Alpha 12) / Planned features: ================================================= X lots of general code cleanups (remove old C functions from PseuWoW Alpha 7 and before; add objects: PseuInstance, RealmSession, WorldSession, ...; drop the old procedurel code) X opcode handler table, no more case x case y case z O move code portions of the chat handler to an external ChatAI.cpp file and improve the chat AI O -> implement a WordList class to parse sentences O a direct local console (like mangos has). drop plans about a remote controller for now. O lots of bugfixes to the DefScript system X implement zthread, zlib and remove the SDL thread functions. X change the network system from SDL_net to the system by Anders Hedstrom (the one mangos uses). no more packet errors (i hope)! O DefScript: implement a "PermissionMap" to set by the user (for internal funcions) O config options: EnableIngameCommands, EnableLocalConsole, OverrideLoginGuid (dangerous!), AutoReconnect, O DefScript fuctions: "GetGuid,var playername", "GetName,var GUID" X add WorldPacket class X -> add uint64 WorldPacket::GetPackedGUID() X fix the packed GUID code if needed (not sure if its really bugged) O When everything is done: upload to openSVN! 20:43 09.11.2006 Alpha Build 11 ===================================== + inluded modified WAD's TrayWoWemu.exe to work with PseuWoW -> TrayPseuWoW.exe =) Core: ! connecting to servers running versions above 1.10.2 is now possible! + implemented player name cache, first touch with std::vector<> :) -> players get added to the cache as soon as they move or say something -> chat messages now show player names, whispers can be sent now. -> related command: [-]savecache. + commands can now given directly ingame saying/whispering "-command" to PseuWoW + added DefScript functions _onwhisper (gets triggered when a player whispers to PseuWoW), emote #id. the emote function still needs to be fixed and linked with targeting once implemented. + included reply.def, that uses the above macros and whisper.def. use: reply to last whisp in its original language % removed some old obsoelete cpp files % removed the old config reader, replaced with dynamic reader using the classes VarSet, std::string, DefScript. + added CMSG_PING and SMSG_PONG (ping every 30 sec, like original WoW) + better detection if PseuWoW entered the world successfully + added macros: @thiswhisper,@lastwhisper,@thiscmd,@lastcmd,@thismsg,@lastmsg and related. + following a player: simply repeat movement opcodes recieved from that player. looks very shitty and is very buggy xD -> command/usage: [-]follow PlayerName to start, just [-]follow to stop. + you can access all values set in PseuWoW.conf as CAPITALIZED variables, e.g.: "${REALMLIST}" or ingame "-sayv REALMLIST". + once the conf is loaded the script "_setconf" is executed, this removes dangerous vars like ACCNAME and ACCPASS + auto-decline of group-invite and trade attempts !+ added support for packed GUIDs + added def files: outv, sayv, _nopermission, _setconf DefScript engine: - renewed variable handler (renaming *local* var to scriptname::var, #var to var, @var stays @var) - fixed lots of bugs in the ReplaceVars() function. - fixed a little bug in the script loader (wrongly loaded lines beginning with '#') + added a permission system for scripts called by players. use users.conf to set. (like that its not possible for non-GMs to execute "-say .shutdown" or similar) 17:23 06.10.2006 Alpha Build 10 =================================== + FULLY working script engine with C++ interface, only very few functions implemented yet. Dynamic loading: Scripts get only loaded if they are needed. + preparations to stop using C malloc/realloc/free and replace it with NEW, also std::string instead of char* + PseuWoW can recieve whisper/say/party/guild/server messages, but not yet link them to a name. + improved packet error/order handling, there are still some packets that get lost, i need to find out where they go. SDL thread issue? % removed yelling PseuWoW version on startup. Use the ./scripts/_worldenter.def script file to modify behaviour when entering the world. - PseuWoW can now detect if it has sent a chatmessage itself or if it came from someone else - added a little fun code and a VERY "basic" chat AI for fun :P - it will say a note if it is sure it has entered the world correctly. it might have been successful anyway even without it, but at least you can be sure when it will probably work. requires "SAY ${@version}" in scripts/_enterworld.def 18:15 10.09.2006 Alpha Build 9 =============================== + Added CircularBuffer class for world packet reciever + Added SDLTCPConnection class for easier connectivity and code readability - first preparations for builtin script engine, still excluded from build, needs cleanups and fixes. -> coded the variable handler -> coded the script loader -> coded the script line tokenizer + Added connection to world server + World Authentication done % removed old rs_... / ws_... functions, replaced with SDLTCPConnection realmCon/worldCon % disabled the controller interface for now. it will be included again as soon as the script interpreter works and everything has been cleaned up. + Integrated AuthCrypt class from mangos + CHAR_ENUM integrated, char list is now requested and parsed + read charname from conf file and login with that char YES, logging into the world finally WORKS! :DD + some checks for invalid or strange packets, which are tried to be interpreted correctly. packet ordering and fetch queue is still buggy. - PseuWoW yells its version once it has joined the world, and yells if an error occured. - only server messages get interpreted correctly so far, player chat recieve does NOT work 03:12 29.07.2006 Alpha Build 8 =============================== - completely rewrote the authentication code, Imported Sha1Hash and BigNumber classes from MaNGOS (shrunk code size to 1/4 of what it was before). The code even seems bug-free (hope it stays so) - Authentication WORKS! (after 2 months of failure) + added realmlist parser + set realm to login via conf file - Tested on WoWemu (1.8.0) & MaNGOS (1.10.2), authenticating works well + added a neat icon :) by ©haos 14:45 12.07.2006 Alpha Build 7 =============================== - complete code reorganisation (no more code including only with .h files. now we have several cpp files with each its own .h) - emulation of any version - updated comment parser, finally :) - you can now set version, build and language via conf file - merged the 2 controller tcpsocks into 1, controller can still only connect to localhost. still no conf file reading implemented into the controller. rest will be implemented later. - removed SS & server b, they were useless - fixed crash where an attemt was made to delete a const string. (seems this caused the GarbageStack:: realloc() size=112 failure) - many other general improvemens and bugfixes 02:31 10.06.2006 Alpha Build 6 - Memory handling is hard. =============================== - fixed crash when realmlist hostname could not be resolved ! forgot to malloc x_str & u_str in proof packet sender -> crash (maybe i got it fixed this time) - made more funcions work with the garbage collector - in debug build GarbageStack:: realloc() size=112 fails. dunno why. - added a server S & server b for testing. they are not important and will get removed later. - still no correct reversion. 18:12 05.06.2006 Alpha Build 5 - The I hate C++ version =============================== - crash,crash,crash. there must be a bug in the BN_reverse routine. + Added a garbage collector - updated the fileparser, because it got bugged with the garbage collector. More configs are supported now. comments still must be at the beginning of the line to be treated as comments. - still working on correct reversal :C 22:55 31.05.2006 Alpha Build 4 - The DAMN FUCKING SHIT i don't get it version =============================== - damn i just don't find it out. decided to do a random reversal on every failure. - the program got very unstable. seems i do a mistake i am not aware of. help anyone? -> added a debug output to find out where the bugged lines are. strage they change everytime i run the program. fuck. 18:16 31.05.2006 Alpha Build 3 - The YAAAY it works version ============================== - finished the packet, server still answers "password wrong". working on correct reversion now 16:52 30.05.2006 Alpha Build 2 =============================== - added more bignum calculations, now i got until S. - still not sure how they have to be reversed to be calculated corrctly in the B1!77 way. SRP demo page (srp.stanford.edu/demo) says my S is correct so far, calculated in the normal way. At least i got the right formulas. :D - next thing to do is split S up, hash it, etc... to get M1 & M2 21:51 24.05.2006 Alpha Build 1 =============================== - first release, not working yet. - connecting to realm server possible, detection for acc already in use / acc not existing - OpenSSL BIGNUM and SHA1 integrated. - first bignum calculations :), i still have to find out how the numbers are reversed and calculated correctly - controller connection possible. it uses 2 ports, i will change it to 1 port in future - config file readout (conf/pseuwow.conf) - still crashes when it cant find the realmlist. time to fix it... - controller connection is still buggy when a connection to the realm server has been established.