Board ArchivesSite FeaturesActiveworlds SupportHistoric Archives |
grimble // User Search
grimble // User SearchBots DisappearingOct 22, 2000, 7:03pm
I have the same problem and playing with it I think it is closely related to
my post this morning in the "sdk" NG (AWSDKOCX: Multiple Asynchronous Object Changes 22/10/2000 11:09). I call awWait(0) every 250 milliseconds, and the debug info proves it (or as close I can to proving it. No big gaps in the calls or anything..... but the bot disappears for a couple of seconds and then comes back up. It even gets the aw_avatar_add event because it welcomes me back !! No preceding aw_world_disconnect though. Grrrr..... very irritating !! Better learn C again I think, if I can't find out anymore. Gonna go play with aw_object_add and aw_object_delete to see what I can discover. If you managed to sort this, ctc one, I'd be very interest. Grimble. [View Quote] Bots DisappearingOct 23, 2000, 5:07pm
Thanks Xelag. Not good news, but thanks anyway. :O)
I'm going to play with it to check the session id to see if I can detect when it happens in some way. I'll post a message if I find out anything useful. Grimble [View Quote] Bots DisappearingOct 27, 2000, 8:14am
OK, incase anyone is interested, I managed to solve the problem (or about
90% of it anyway) by restricting the number of unconfirmed updates at any one time to 5 (!!!) by implementing a simple update queue in the bot (irritatingly AFTER I had tried a number of much more complex ways of getting around it. I have a number of chat calls going out at the same time (which I haven't queued yet), so I don't know if they affect the number I can have outstanding. That's the next thing (because obviously the chat and the pics are a little out of sync right now by deferring the updates for a few moments). Maybe that will stop the remaining 10%. It still disconnects every so often (still seemingly unpredictably) and the session number DOESN'T change, but you DO get the AW_EVENT_WORLD_DISCONNECT when it happens and so I do an incremental aw_query when it reconnects (on AW_EVENT_WORLD_ATTRIBUTES). There's a little pause in the overall process (only about 5 seconds in all, since this is a very quiet area apart from the picture updates) but its much less temperamental now. Five is a horribly low number when I want to make 12 updates at a time, but I guess I can try two or three update bots, controlled by a 'master' process and see if I can get that to work faster. The performance isn't too bad but not as fast as I wanted. Just through I'd share the good/bad news. Cheers, Grimble. [View Quote] Object Checker ideaOct 27, 2000, 8:43am
At the end of the day, there are only two things I can see you need, both of
which are managed in the browser (since it does all that), so therefore you can put it in your bot. (a) Writing a parser for for the action command (as you said) which isn't that difficult as its a pretty simple "language". You have to do this to a certain extent anyway to write a bot that does any form of object manipulation to change the non-location attributes of the object (and to identify them in the first place with a name). (b) Implementing a basic HTTP/FTP protocol to request the file from the relevant web/ftp server through a separate socket. You don't need to actually download the whole file, just start to. You can't rely on checking a directory listing since a lot of the web servers/sites won't allow you to navigate that way (but then i'm no expert in web technology right now). Information on these protocols can be found all over the web. I too would regard this as an essential tool for anyone managing a public building world, as well as reporting for the amount of building individuals have done, how much of your precious space they have taken up, the last time they added to it and the last time they visited. If it was my world (I haven't taken that step just yet), I would want to know what the heck was going on there. As the bot gets more complex, you can add more and more checking/reporting until you knew more than God! Now you've mentioned it, it sounds like quite a "fun" short term project. Give it a go. BTW, on the same subject (sorta), does anyone else get an error trying to download 0.jpg from the active worlds server every so often in AlphaWorld? It just goes foggy (usually between scenery changes I think). Irritating or what! I didn't want to be part of a flood of e-mails to AW on the subject so I left it for a bit, but it still happens, so I guess I'd better. Cheers, Grimble. [View Quote] Object Checker ideaOct 27, 2000, 11:34am
There is always a choice between using a generic tool and coding it
yourself. I have found that writing things in VB (if you have it) MASSIVELY reduces amount of stress in debugging the actual functionality of the bot while you're developing it. Then a quick conversion of the code to C/C++ to implement/distribute it. More work at the end, but less to think about when you've got your hands dirty trying to make it work. Besides, I HATE writing the GUI side of things in C ... can't be assed with all that low-level stuff. I haven't tried it, but I imagine you should be able to use MrGrimms AWSDKOCX from the old Control Creation Edition of VB5 (a free download from Microsoft - yep, FREE from Microsoft! Go Figure!). Think you'd need to get hold of a socket control from somewhere though, 'cuz I think MS only give you theirs with the full VB Enterprise edition. A quick search on the web should find you one though, but you might not get one for free. From what I can remember, VB5 CCE apps don't compile to EXE's through - might be wrong on that. MS VB CCE: http://msdn.microsoft.com/vbasic/downloads/cce/default.asp VB SDK Wrapper: http://members.home.net/grimmcna/ Hope this helps you on your way. Grims. [View Quote] AWSDKOCX: Multiple Asynchronous Object ChangesOct 22, 2000, 8:09am
Hi,
I'm writing a bot (in VB - thanks MrGrimm) that controls a number of picture objects and often "blasts" 14-16 asynchronous object change calls in quick succession through AWSDKOCX. This works like a dream for a while but after a seemingly arbitrary period of time, I "lose" some updates. I get a new object number back from the object change call, but no update and no callback. This has two nasty effects on the bot activity: (a) The pictures don't get updated - which is the whole point. (b) I now have an object number which doesn't actually relate to the object (since the original call gave me a new one but didn't make the change). I can get around (b) programatically if I need to, but that's not the point. I need the pictures to change at about the same time, not wait for a few seconds and reset the object number and repost the call. Anyone else have this kind on problem? I have had VB dropping important events on me before (especially with a busy winsock control), but I don't think this is related to that. Any help would be greatly appreciated. Thanks Grimble AWSDKOCX: Multiple Asynchronous Object ChangesNov 12, 2000, 7:24am
No matter which way I tried it, it still happened - even if I totally
ignored the callbacks to ensure I wasn't tying up the processor. Its all pretty arbitrary when it happens, but I've found that if I restrict the number of outstanding updates to about 5 ( :O( ) by queuing them, then it only disconnects about once every 100 updates or so. I just do an incremental requery if that happens to reset all the objects. Its all a bit aritrary really when it happens. This was the same as a post called "Bots Disappearing" (the thread in the bots NG) - seems to be an accepted problem. I was in AlphaWorld when I had the problem. I'm going to see if its still a problem in a private, locally hosted world at some point and also try it in C++. Anything significant that I learn, I'll feedback into the NG. Thanks. Grims. [View Quote] Radius stuffNov 11, 2000, 2:57pm
As long as you're not leaking memory everywhere, is there a problem with
using the struct array? For a P-10, P-20 or P-30 world, each part of the co-ordinate (X, Y and Z) can be held within 2-bytes (smallint). I *think* it'll use a single 4-byte block for 2 smallints (?) and once you've stored any additional information you need on the avatar, you should be able to arrange it to be as memory efficient as possible. Unless you're expecting hundreds of people in your "paintball game", I think memory usage is going to be the least of your problems. The important thing is to make sure you're look after the memory properly. Grims [View Quote] [View Quote] -Twisted Horizon Bots running on Unix computerNov 17, 2000, 7:49am
Not a massive Unix person, but is the SDK available for Unix platforms? I
though ppl were still waiting (for example) for a Linux SDK. Grims [View Quote] new bot? good idea? or not?Nov 19, 2000, 8:18am
I think a lot of people who write their own bots use this method anyway once
they've worked out the basics - applying some form of function library or class structure (depending on the type of language you use) and expanding that to their needs. Since you seem to sell your bots, why not keep your infrastructure to yourself (I don't mean that how it might sound lol) to enahance the capabilities of the your bots, give you a perceived advantage and make just your life easier? Grims [View Quote] new bot? good idea? or not?Nov 19, 2000, 8:23am
Twist, you ever tried distributing a tiny VB application? A simple bot in VB
requires a setup install set that is well over 1MB ZIPPED. If you add a little database processing in there, its up to 2MB because of the DAO, ADO and/or RDO libraries. Then you put some fancy controls on the user interface from one of the Windows Control Libraries (like the List control) and up it goes even more. When you're up to 3MB, you're talking about potentially a 30 minute download on a dial up :O(. Grims [View Quote] new bot? good idea? or not?Nov 20, 2000, 7:43am
HEY!.... there was no malice intended in that post ... Geesh! This is
turning into bitch-city. Perhaps I am getting you mixed up with someone else - in which case I apologise. There are a lot of "I have a bot page" posts here. It was more of a recommendation than anything - you build your own infrastructure and make the most of it. [View Quote] new bot? good idea? or not?Nov 20, 2000, 7:48am
What I have found (for the simple bots - my C/C++ is a little old and rusty
nowadays) is that bots can be DEVELOPED/DEBUGGED VERY quickly and easily in VB, but distribution (free or otherwise) is best made in a less managed language where you have more direct control over as much of the environment as possible. If the VB code is structured properly in a manner that will suit quick conversion of syntax to the new language, this works well. Just a bot of additional ime investment at the end of it all. [View Quote] AW SDK C# portDec 4, 2000, 8:54am
Its really spooky to see my initial thoughts (that went through my head
while I was reading the first post) be reflected so closely in someone elses hand. Are you telepathic JV? Have to agree with everything you say here. M$ are providing nothing new to the development community, they're just scared that they are losing their position as the supplier of the "language of choice" for serious development. If people are doing their jobs right, commercial projects now consider C++ vs Java (and any other suitable languages) for new OO developments and select the right one on its merits. C++ is a little short of merits nowadays in comparison to Java. All M$ have done here is make themselves look a little silly in my view. Grims. [View Quote] vbsdk problemDec 28, 2000, 9:43am
Ummmm nope ... but then you don't exactly explain the problem.
Firstly, have you made sure that you're setting the centre sector correctly for the aw_query? Secondly, what does "going from cell to cell incorrectly" mean? Have you read and understood http://www.activeworlds.com/sdk/property.htm ?? Grims [View Quote] vbsdk problemJan 1, 2001, 5:18pm
ok, well the position of the bot is irrelevant to the query. When you query,
the first two parms are the centre sector of the 9 that are queried. This is described in the link provided in the previous post. The cells are then returned in ascending sequence number order (also described in the linked page). Its not random - its to allow bots to requery an area quicky based on the most recent updates using the 3x3 sequence number matrix. Grims [View Quote] vbsdk problemJan 5, 2001, 11:16am
As I said, I don't have any problems ... I have simple bots that record
whole areas successfully. Sounds to me like you've got the sequence number matrix wrong or you're not handling the "incomplete" aw_callback_query messages correctly. Grims [View Quote] vbsdk problemJan 8, 2001, 10:01pm
Why don't you use the latest version and get that to work correctly instead
of trying to use an old version and having different problems with that? What was the problem you used to get with v2? [View Quote] vbsdk problemJan 8, 2001, 11:27pm
I seem to remember you need to install v2 using the MS installer. That
should look after all that kind of stuff for you. I only had conflict probs the first time I tried it before I read the instructions (Duh!). Installed it a number of times since then (I clear this machine down and reinstall it all every-so-often) with no probs. Sounds pretty wierd though. Was it the same code you are using now? Have you tried swapping them over and using the same code you are using with the old version (that gets further)? Running out of ideas ... difficult to do without getting at the code. Sorry. Grims [View Quote] HELP!!!!!!!!!Dec 28, 2000, 9:48am
Kah, Just so you don't feel ignored, I haven't had that problem from what I
can remember. Have you e-mailed Mr Grimm for any ideas? Another idea would be to NOT use the quick start method but use the individual init/create/login/enter commands instead and see which one blows up. I seem to remember that the AwSdkOcx2 needed to be installed using the MS Installer (but I might be wrong). Did you use this or just put it in the Windows system directory? Grims [View Quote] HELP!!!!!!!!!Dec 29, 2000, 3:44pm
This is how you can tellJan 3, 2001, 12:13am
Long time since I played with C/C++, but from what I remember you need to
crow-foot from a pointer or use the instance of the pointer object ... i.e. since jcurrent is a pointer to a struct ... jcurrent->next OR *jcurrent.next (might be the need for some brackets in there somewhere on the 2nd one) Is this right? Not sure ... try it. Anyone wanna shoot me to dust? Grims [View Quote] while(jcurrent.next != NULL), browsing my jackpot-holding signs to hold the jackpot amount on, and i get error C2228: left of '.next' must have class/struct/union type, but i already struct jackpot_sign *jcurrent;, any ideas? Ite.. prob with sdk.AwWorldEjectJan 6, 2001, 8:25pm
OK, this is going to be a little more work that you probably expect.
aw_world_eject (as you probably know) needs the session number of the user. When you are processing a chat message, you have the session number from the SDK. When you want to go from an avatar name, you first need to get the session number for that name. Unfortunately, the SDK only allows you to resolve the citizen details from the name ... which unfortunately do not include the current session number is any - probably something to do with the way the active users are keyed in the world server. This means that you will need to maintain a session table within the bot, monitoring the AW_AVATAR_ADD and AW_AVATAR_DELETE events and store newly arriving users and deleting the old ones. Then, when you use their name from in the bot command, you find the session from your own stores and eject using that session number. A comparatively large amount of work for simple requirement, I know, but that's the way. One thing to remember is that you only get the AW_AVATAR_ADD/DELETE messages from within the bot's speaking radius so ... (a) The bot's position needs to be announced (aw_state_change) and so must be visible in the world, and (b) The bot will only know about avatars within the speaking radius relating to the rights of the citizen number used. If you have a large world ... you will need several bots, all reporting to a central session table. I don't believe there are any such restrictions on the actual aw_world_eject call because its a world related command. I'm sure there are sites on the web with simple session table code you you can use to save you a bit of time. Otherwise, let us know what you're using (C/C++, VB, Delphi, Java, etc) and maybe someone could donate a mini-projects as an example for you to use instead. Good luck. Grims [View Quote] aw_object_change()Jan 27, 2001, 8:19pm
Is that right? (although I've never had any reason to move an object that
far before). For dozer's sake, no matter what you do to an object, the way AW effects the "change" is to add a new one with the new attributes and delete the old version, which is why it has a different object number once you do the aw_object_change - its a totally different object. Grims. [View Quote] Session NumbersJan 31, 2001, 10:51am
Can anyone tell me to what extent the avatar session numbers are unique ...
i.e. within world, within universe, etc. Thanks, Grims Session NumbersJan 31, 2001, 3:10pm
VB prob: run-time error 450Feb 17, 2001, 5:36am
Run-time errors are simply errors that weren't (or couldn't be) picked up at
compile time. Quite often they are caused by trying to use different interfaces (for example, to ActiveX components) than the ones expected at design time. As far as AwSdkOcx2 not being found, this is why VB ships with the Application Setup Wizard ... you identify all the dependencies and the VB ASW packages all the right components from your machine into a distributable package (Set Up program, CAB, etc). VB applications need too much in the way of infrastructure components to safely distribute as an executable alone. At the end of the day, the one thing Run-Time errors DO indicate is that there is insufficient error trapping one of the components, whether it is your code or someone elses. A Runtime 450 indicates a call to a procedure or member function with the wrong number of arguments (a classic symptom of having the wrong ActiveX interface installed) or you are trying to get/set a property that doesn't support that activity (like trying to set a read-only property on a control). Make a SetUp package and distribute your application that way to ensure you avoid this type of problem. If you package it up properly, identifying all the components that YOUR CODE needs, then AwSdkOcx2 will be shipped with your application. I believe there is not a dependency file for AwSdkOcx so you need to remember to include aw.dll in the package manually. You'll end up with at least a 2MB distributable package, but then that's VB for you. If you stick a Jet database call (to MS Access for example) into your code, that package size will jump to around 3.5MB - 4MB. That's the payback for the ease of use you get with VB. Grims. [View Quote] VB prob: run-time error 450Feb 17, 2001, 9:49pm
Like I said, there isn't a dependency file for AwSdkOcx2, so you need to add
aw.dll manually to the package. Unless you distribute the components you use from your machine, you aren't going to guarantee avoiding these types of errors. Its your choice at the end of the day ... distribute YOUR components or risk runtime errors. Good luck whichever way you try. Grims. [View Quote] pleaseFeb 26, 2001, 1:37pm
Surely the assumption in this NG HAS to be that someone knows one end of a
suitable programming language from the other in order to be able to use ANY SDK, not just the AW SDK. Personally, I read "i have no idea of how to make a bot" as asking how to interface with AW, and Agent1 supplied a link to the latest info on that subject. What's the problem? Starcube ... your best off learning VB 'by example' from the web (or from a good book) and suppliment that, if you're lucky enough to find someone with the time and patience, with some "mentoring" from someone who knows it well. Read some of the other threads ... there seems to be loads of people throwing bot code around in VB. Grims. [View Quote] On-Line Owner Privilege RightsNov 11, 2000, 9:24am
This is a bit of a lame question, but I'm sorting out what's going to go in
a world before I get one - so I'm jumping the gun a bit here. Does a bot, with the privilege rights of the world owner have the ability to delete objects created by someone else. I appreciate that this can be done off-line by the owner, but I don't know what a world owner can do with objects online in terms of other people's objects. Thanks. Grims |