Jump to content
SubSpace Forum Network

ExplodyThingy

Member
  • Posts

    308
  • Joined

  • Last visited

Contact Methods

  • AIM
    thexavier2005
  • Website URL
    http://
  • ICQ
    0

ExplodyThingy's Achievements

Newbie

Newbie (1/14)

  1. I did more. 0.3.0 I realize I haven't updated this about 9 months, which is nearly long enough to create another human being, but instead I created a bot. What have I done lately? Well, I lived a normal life for a while, but now I'm back to creating crap for this silly old game that just won't go away. Its like a puppy, constantly returning, looking for someone to love it. In terms of this nuance of the realm of ss, I scrapped the whole bot. By scrapped I mean I created a new project in Eclipse, and copied functions one at a time until I hit the problems, and solved those problems. I completely rebuilt the packet classes, and there are no more random errors in it. It seems to stay connected eternally, but won't attempt to reconnect. It runs each bot in its own thread, but I haven't tested more than 1 bot, nor have I tested spawning and immediately killing two bots. There is no proper thread reaping, so there is the potential for zombie threads. It stays connected and stable, as long as you don't put it in Public(0) for some reason, I'm working on that. The plugin loader still works as it did before. For some reason the cluster packet breaks quite often, that's something to do with calculating the next packet in the cluster, but it recovers gracefully. Player command authorization is still hardcoded in command.cpp, in isauth(). If you want to play with plugins, the previous version of lagbot works perfectly, and any plugin you've made should work. If you have done any personal development on this bot, send me code, and I will be sure to incorporate it. Not much serious has changed in terms of functionality. Rock on, feedback much appreciated. explbot_0.3.0.zip
  2. So I'd like to make a modification to bounty rabbit but I don't feel like reinventing the wheel. Does anyone have the source out there?
  3. Not really. I did some stuff, I got really busy the past few weeks and I don't see it lightening up until Christmas time. I've fallen in love with Go in the past two days and may try that out, see what I can get going for it. Otherwise you should probably go ahead and do a bunch of stuff. The big issues I can think of are an undetected lagout, improper reliable handling, and not enough events sent to plugins. The latter should be the easiest, I just have to sit down and do it, and one day I will. The former the hardest, but not impossible. The reliable order handling is my priority, and I'm working on a priority queue for it, just as soon as I solve this referencing deallocated memory issue.
  4. Attached is version 0.2.1 Reliables should be handled properly by next release, more handling has been added, more plugin support has been added, and lots more comments. Some framework for reliables is there but not really in use. Two plugins with their sources are attached, helloworld and lagbot. You need to give !load a path tot he file. I use "!load ../../lagbot/debug/lagbot.dylib" so whatever you need to do, do. LYNX got his to compile properly by using Eclipse. I can't find out why yet but eclipse just uses GCC. For some reason you will get iterator errors when running it otherwise. Not sure what thats about.\ I've moved all the settings for everything, even the plugins, into expl.conf You'll see, keep a naming convention so there are no conflicts later. Have fun, bye. explbot_0.2.1.zip helloworld_c0.2.1.zip lagbot_core0.2.1.zip
  5. I have released version 0.2.0. Many versions in between existed but they suck and here is this one. Plugins work. Attached is the source to the bot, the binary of the bot, and the source / binary of a HelloWorld plugin that offers a !hello command. Use !load and the relative path to the bot to load it. I need to use !load ../../hellworld/debug/libhelloworld.dylib. I will later release a tutorial on how to make a plugin. If you have Eclipse, create a new C++ project of type Share Library and use the three source files. Fix the one include to the relative path of the core bot. Have fun. Make some plugins, like eightball or some sort of logger for player entering and exiting. The plugins right now can only react to a player enter, player exit, chat, and tick. It should be as feature complete as mervbot one day. explbot_0.2.0.zip ExplBot_binary.zip helloworld.zip
  6. Attached is the latest version. It is a release candidate, therefore I am scraping the current version coding I was using, and calling it version 0.1.0 Previously released code will be collected at a later date and placed onto a webserver, and they will be reversioned as 0.0.1, 0.0.2, etc. Yes, it's revisionist history. No major known problems exist with it yet, and it appears stable. There is, however, one that issue manifests itself as very similar to the lag coma of HS's yore. This only appears once in a while, I cannot induce it, and it is not a crash. I have been unable to isolate it, but it has only happened to me 3 times. I don't know if the program enters perpetual sleep, of if the server just stop sending, or if recv stops returning useful data. Backtracing after interrupting it after a hang says it's either asleep, or in recv(), which is a normal main idle loop. Occasionally a very large packet appears, and it starts with several screens of lines all of which are null, contains some junk in the middle, and ends with more nulls. I think it's the map but nothing identified it, it just starts off with a bunch of zero value characters. The arena change and crash bug has been solved. It was a deallocated but not dereferenced pointer to the chunk class message buffer. That's why it would only work 1 time. Therefore, !go is now functional. The settings loader appears to behave properly. There are no more detected issues with that, except for a blank value on a key-value pair will cause a segfault. This should be an easy fix, but it's low priority, so just don't do it for the time being. Either remove the line, or put a value there. There are no threads yet. I planned to stabilize a threadless version before adding them, and I appear to have done so. I will welcome feedback before attempting to introduce threads. A high priority fix is non-thread-safe code, excluding parts that will require mutex locks, they will be added. One can search for marked areas of code that require work by searching for //FIXME:, //HACK:, and //TODO:. Eclipse will mark these for you if you add them as Task tags. These are the order of priority, and DEBUG doesn't actually require fixing, it's just debug code that will be removed. There is no modular coding, yet. That will come after threads. Many packets are handled, but simply ignored. This is what I intend to address over the next several releases. Player and flag information is a big issue and will take some time to get right, lots of packet processing. Reliables are still not handled properly, the bot merely pretends and just acks everything right away without logging it. This means data can be processed out of sequence. Nothing is sent reliably. Bot ops are hard coded in bool auth(player *p) in command.cpp. Add yourself, it's case sensitive. Right now me, CRe, Dav1, LtNirvana, Dr Brain, JoWiE, and L Y N X are the ops. The only thing requiring op access is !die and !go. It compiles clean with Eclipse using G++ (gcc) on OSX 10.4.11. There are depreciated headers and they will be removed. It is unix only, and should be fairly easy to compile on Linux. Comments and feedback are encouraged. explbot_0.1.0.zip ExplBot_binary.zip
  7. Alright, new update. Lots of player event handlers added, so there are a lot less unknown packets. Multiple player entries per packet is now handled properly. You can spawn it into a pub and it will get the list of players just fine. This was a big fix. The malloc and free errors with the chunk class are eliminated but now I have a EAX_BAD_ACCESS problem when I replaced the char array in chunk with a datagram class. This shouldn't ever be an issue except when using !go. This absolutely top priority. More commands added, and it appears to be more stable overall. The continuum encryption is now in the system, but nothing uses it, yet. It will be added soon. The config file has been modified to handle more stuff. src.zip
  8. More stuff. Mostly house cleaning, a little tiny bit of protocol work. It's denser, and a little more streamlined. Lots of generalized fixes and todos taken care of, but much remains the same. I don't have Internet, so I'm using a coffee shop. When I get it setup, I'll work on it some more. From what I can think of: ExplBot.cpp renamed main.cpp All settings functions moved to settings.cpp A single setlist exists for all "global" settings. command.h made irrelevant and removed. Some possible problems with the playerlist resolved, but not all of them. Help info hashmap made universal instead of unique to each bot. More comments. Of everything I've written, I'd say its about 2:1 comments to code ratio. Thats about how it should be, if not higher. Nothing of the aforementioned fixmes have been addressed, and more FIXME and TODOs are present. Eclipse indicates at least 23 exist in code. I'm also no longer attaching my explbot.conf file because removing my bot's info to make it safe for upload irritates me. Use your existing unless I change it. Hi-Five. explbot.zip
  9. Unimplemented.
  10. Yes, if you used the bot to CREATE the account since BEFORE the last posted version, the password is the username. The problem is fixed as of the previously posted version. More: I added more comments throughout the project. I moved some stuff around, bots.h now only has class bot in it. util.h and .c exist and hold the logger and some time control stuff. I'd like to make the logger completely static or remove it from a class altogether, that should be an easy find-replace style fix if they feel like fixing it themselves. STL's hashmap has been used to remake the command structure. It is now very very similar to ASSS, of which I approve. There is also the start of man pages for the commands. I'd like to keep it best practice to have the commands man information be written as the command is written and added to the hashmap as the command is added. I do _not_ have any sort of permissions setup. If someone familiar with the permissions setup of ASSS would like to do that for themselves it is highly encouraged, even if you don't have such extensive knowledge, as long as it's better than MERV. I'd like to find a way to isolate people to permission on certain spawns but also give other people full functional capabilities on every spawn. The packet handlers are still naive and dispatch every packet to its handler regardless of sequence. This should probably be rectified with the hashmap to call functions, and add or remove functions from the map as appropriate for the protocol. Top priority fix: The player enter packet is sometimes repeated several times in the same packet, sort of like the cluster packet. The bot only handles 1 player per one of these packets. If there are two players in the arena when the bot enters, only one of them will register. The other must exist and reenter the arena to get the bot to notice. Many packet types are simply implemented, like player death, score update, KotH info, and such toys. This should be fixed, it would really easy to handle a lot of it now the way I deal with flags, but its sort of a band-aid approach. It would be nice if some handlers were written for it. Reliable packets are simply ACKed and nothing is done to ensure sequencing or in-order processing. This should be fixed and I'm giving it a high priority. Also nothing is sent by the bot reliably. Nothing is clustered, outbound packets should probably be queued up so they can be sent as a cluster if possible. Modules or plugins would be super helpful, once I get to that stage I will begin to think of it as a bot, and no longer a "bot". explbot.zip
  11. Next update and the first major bugfix. When the Bot class was instantiated it copied the username into the password variable. Everything else used password correctly, therefore the bot was sending the username as the password. If you've created bot accounts with this bot, you may want to change their passwords. There are a couple of stability things fixed, and some more that need fixing. Someone should check on my chunk class and see if they can isolate the malloc problem that free() freaks out about on the proper unload of the bot. You can see the issue if you don't terminate it with CTRL-C like I do alot. A couple of commands now work. They function exactly like MERV did, with a switch to control operator access and a long line of ifs to control the commands. I disapprove of that. I want to remake it like ASSS with a hashtable that jumps to functions. I'll burn those bridges later. Keep in mind, !login is uncontrolled and immediately gives everyone full access to the bot. On the plus side, the only restricted command is !die. The config reader is fucked up. Sometimes it works, sometimes it doesn't. It'll load out all the [spawn0] stuff properly and work well with that, but for some reason the [clocks] variables will not load. Others seem to come and go, I haven't quite worked out the issue but I'll get on it. There may not be any updates for a bit, as I'm moving to the other side of the country this weekend, and need to take the time to organize myself and make the move. If people want to contribute, I gladly approve of it. Post it in this forum until I work out a SVN or something. This still requires no outside libraries, I'd like to keep it that way as long as possible. It should also compile error free if you just throw it all at gcc. IOStream is still in there, may throw a warning. That is my highest priority fix, eliminating all warnings. Comments encouraged, positive or negative. Contributions even more so. explbot.zip
  12. I did more. Have more fun. It won't lag out anymore because it syncs every couple of seconds. I'm not sure if that's how its supposed to work, but it looks like what MERVBot does. It enters spec, according to subgame. It has a config file now, but it doesn't do too much with it, just the 4 important settings for login: server, port, user, and password. The other settings are there as I will add them to the core. The program has grown pretty large, and includes libraries taken from MERVBot and a few places on the Internet. It's fairly well commented, everything I wrote has about 1 comment for every 2 lines, so if you need to follow along, you should be able to. explbot.zip
  13. Yea! I count that as a major success in my book. I'll keep working on it and posting more as I develop it.
  14. Major improvements on this one. Encryption is supported, and boy was that irritating to tear out of MERVBot, Catid liked to write his own functions for EVERYTHING, even strlen. I got it now though, and it's all loaded into a single header and single source file. Printfs have been removed and replaced with a logger class that will deal with that as well as control verbosity. Not much added to the protocol, except a few random effectively worthless handlers. Line commenting has also increased and I'll go back and add a few more. Still doesn't use a cfg file, everything's hard coded. Comments and input appreciated. explbot.zip
  15. 5 issues addressed or will be: IO Stream is depreciated, that should just throw a warning. The only reason that IOStream is used is to call close() on the socket descriptor. If anyone knows a better method or a different header I'll use it instead. I know that stl list iterator error too. Should only happens when ~Bot is called, which it is when it disconnects, as it did up there. I've got it bandaged but not properly fixed, meaning it will leak memory at every spawn unload. Since it can only do 1 spawn at a time, that's not a scary issue yet. It involves the STL list that keeps track of player objects, since it's a list of pointers I need to remove them from the list as well as delete them. From time to time malloc throws a hissy fit over a double free() or misplaced free(), and I haven't found it yet, but I've isolated it to the "chunk" class. It doesn't yet support encryption, that's the issue you're seeing there with the inability to connect. It's really verbose. I'll add some command line switches for silent (no output), normal (like merv), verbose (like above, showing inbound/outbound data) and very verbose (showing hexdumps).
×
×
  • Create New...