Board ArchivesSite FeaturesActiveworlds SupportHistoric Archives |
decastro@cable.a2000.nl (xelag) // User Search
decastro@cable.a2000.nl (xelag) // User SearchObject Delete EventJan 5, 1999, 11:10am
I was wondering if the object number is unique for any object in a
given world. If so, I would see the use of the mentioned attributes as a method to speed up recovery of the object in the case of a search for the object in the server-database (object_x, object_z) or for maintenance of the sequence array (cell_x, cell_z). Am I correct in assuming the uniqueness of the object number for ID purposes? XelaG. On Mon, 04 Jan 1999 13:06:58 -0800, Canopus <aek2 at ix.netcom.com> [View Quote] >The documents state that an object is uniquely identified by its Object >Number, Object X, and Object Z attributes. But during an >EVENT_OBJECT_DELETE, the only available attributes are Object Session, >Object Number, Cell X, Cell Z, and Cell Sequence. Will Object Number, >Cell X, and Cell Z also be sufficient to uniquely identify an object? Building methods and AW_CALLBACK_OBJECT_RESULT...Jan 6, 1999, 6:31am
I have a few questions about building objects.
1. I've installed AW_CALLBACK_OBJECT_RESULT, the callback for the methods aw_object_add, aw_object_change and aw_object_delete, but I'm not sure which attributes apply. The documentation mentions somewhere only aw_int(AW_OBJECT_NUMBER). 2. In aw_object_change, aw_int_set(AW_OBJECT_OWNER, Owner) should be specified acording to the docs, but that's not the case in the other 2 methods. Is that correct? 3. Does one have to call aw_instance_set(Instance) before setting attributes in these 3 methods? 4. What is the function of AW_OBJECT_SESSION? Is this attribute also used here, or in the callback? 5. I assume that aw_instance applies everywhere in querying and building events and callbacks: am I correct? XelaG. Building methods and AW_CALLBACK_OBJECT_RESULT...Jan 6, 1999, 9:22pm
On Wed, 06 Jan 1999 12:49:00 -0800, Canopus <aek2 at ix.netcom.com>
[View Quote] >A visible bot can also query a zone that is far away from the zone its avatar >is in. Try doing Sample 2 with a visible bot avatar located far from its >midispk. In effect, the API has two independent systems, one for avatars/chat, >and one for property. Three in my experience: one for avatars, one for chat, one for property. The bot perceives chat farther than avatars, says my Delph at least.... XelaG. Building methods and AW_CALLBACK_OBJECT_RESULT...Jan 7, 1999, 2:05am
Mine's south american, telepathic.... LOL.
Try it out. I can see his reaction through the program's chatbox and talk to him thought the program and the awb and, unless he had lost his lists somewhere, the list dump didn't show me any more, I had been 'goodbyed', he could not perform 'join' or follow commands, but he did execute a teleport when i told him to do so through the aw brouwser, and was answering my questions on his screen, questions I was putting to him through the browser, although I couldnt hear his answer through it, only through the prog.... Maybe Roland has an explanation... On Thu, 7 Jan 1999 03:18:24 +0100, "Walter Knupe" <wak at faber.ping.de> [View Quote] >well, according to daniel, the distance matches those from avatars >exactly :) Building methods and AW_CALLBACK_OBJECT_RESULT...Jan 7, 1999, 5:26pm
Maybe the safest way is to combine building activities and query,
which provides much more information. XelaG. On Thu, 07 Jan 1999 09:55:50 -0800, Canopus <aek2 at ix.netcom.com> [View Quote] >It's hard to see how to match up multiple building requests using only object >number. Suppose you have done two object_adds, two object_changes, and one >object_delete. The object_adds don't already have an object number, and the >object_changes have an old object number, but the server will give them a new >object number after the change is successful. (For object_delete, the old object >number could be returned and recognized.) When using OBJECT_RESULT, should you >use aw_int_set (AW_OBJECT_NUMBER, aw_random) to suggest an object number to the >server? (is it an offer the server cannot refuse)? > [View Quote] Building methods and AW_CALLBACK_OBJECT_RESULT...Jan 8, 1999, 2:50am
On Thu, 7 Jan 1999 16:44:46 -0800, "Roland Vilett" <roland at lmi.net>
[View Quote] >Did I forget to document this as well? Damn. > >The object number is not created on the server, it is created by the SDK for >you and stored in the attribute AW_OBJECT_NUMBER. Immediately after calling >aw_object_add() or aw_object_change() (even in the asynchronous case) >AW_OBJECT_NUMBER holds the newly assigned object number. You can remember >its value at that point to match up the later results with the requests. > >-Roland Does this mean that the object number itself is not sent to the server at all and stored there? If this were so, the life-span of the object number would be determined by the the programme session, and the object number would be of no use as an ID number accross sessions. Could you clarify this as well, Roland? Thanks. XelaG. Building methods and AW_CALLBACK_OBJECT_RESULT...Jan 8, 1999, 10:52am
I think I can answer this one myself: in AW_EVENT_CELL_OBJECT the
AW_OBJECT_NUMBER is received from the server (hopefully its not re-invented by the sdk !), therefore.... XelaG. On Fri, 08 Jan 1999 04:50:12 GMT, decastro at cable.a2000.nl (XelaG) [View Quote] >On Thu, 7 Jan 1999 16:44:46 -0800, "Roland Vilett" <roland at lmi.net> [View Quote] WFS, aw_wait and aw_enterJan 7, 1999, 8:21pm
With the help and suggestions of Roland and Walter in previous
postings, I've been experimenting with WFS, using the technique of unplugging the modem, equivalent, I supposed, to a connection failure of my provider. AW_WORLD_DISCONNECT does help if you have an instance logged into a world. You get the (new) reason 471 RC_CONNECTION_LOST. It takes about a minute before you get this message. In my experience, after getting this message, aw_wait blocks. The program responds once every half minute approximately. aw_wait also does not return an error code. If the instance is only logged into the universe and not into a world when disconnection occurs, you don't get any message at all: aw_wait blocks as previously, and you can, in the brief moments that the program does respond, log into any imaginary world you want, aw_enter returns 0 SUCCESS. You'll get then the world attributes of the world you were previously visiting. I haven't yet experimented with disconnection caused by the world or uniserver. I suppose aw_wait will block only if you attempt to stay in a world that fails to connect, or the uniserver fails. I reason that since aw_wait serves all instances in a multi-instance case, a failure of aw_wait will affect every instance, even those connected. Haven't tested this. Something to work on when the 2.1 rush is over? Any suggestions of enlightments welcome. XelaG. object_build_timestamp ?Jan 8, 1999, 3:06pm
Roland,
According to my calculations, the timestamp on objects is the number of seconds since January 1st, 1970, expressed in GMT, and the browsers convert it to local time. Are these observations correct? Why not all see the same timestamp, e.g. in VRT? Just a suggestion for 2.2 ... LOL XelaG. values for certain attributesJan 18, 1999, 3:23pm
Roland:
I would like to know which are the possible values for these attributes: AW_WORLD_BACKDROP_RED/GREEN/BLUE AW_WORLD_CELL_LIMIT AW_WORLD_RATING AW_WORLD_OBJECT_REFRESH Some of these, like CELL_LIMIT and RATING, have textual values as well as numerical. Could you say which ones? I'm not a caretaker, so I can't see this information in the awb. Thanks. values for certain attributesJan 18, 1999, 4:55pm
Thanks Ima and Dthknight for your answer, I wonder what the large
number is, Ima :o) XelaG. aw_session & error numbersFeb 1, 1999, 1:50am
Roland,
aw_session seems to switch between two modes: in the 'normal' mode, it returns the session code. In the 'error' mode, it returns the error code: for instance, RC_NO_CONNECTION seems to be a standard aw_session return code when a 'non-world-caused-wfs' interrupts the session. These two systems overlap: my session number was, a few moments ago, according to the bot, within the range of the published error numbers, a very low number, but did not coincide with a published error code. This put the automatic 'error dectect' in my bot on the alert, so i could not get the bot to respond properly. I know it was no real error code, because the bot was visible in my aw browser, and I could check he had received an aw_avatar_add event for my humble avatar. could you specify if aw_session is using a double system and, if so, which (range of) rc numbers for aw_session are session numbers and which are error codes? there must be some way, other than guessing, to determine the validity and usability of the return code of this function. XelaG AW System ArchitectureFeb 5, 1999, 1:53pm
A most instructive page, thanks Edward.
XelaG. http://members.xoom.com/esumerfd/ActiveWorlds/Frames.htm -- Xelagot 46ADB [Delph] creator: XelaG email: decastro at cable.a2000.nl Bye bye blackbird...no not the application the bird!Feb 8, 1999, 7:17am
Abbot, my solution in Delphi is to put birde back to zero once
destroyed. Then, in the main loop, you test: If birde is different to zero, call the birde routines, otherwise skip them. If you call them when there is no "birde" defined (you just destroyed it), then you crash the program. XelaG. On Sun, 7 Feb 1999 16:32:31 -0500, "Abbot Pabisoko" [View Quote] >I changed the code so now it looks like this: > > if (aw_instance() == birde) > { > if (strncmp(message, "BYE BYE BLACKBIRD", 14) == 0) > { > aw_instance_set(birde); > aw_say("SQUAAWWWWKK!"); > aw_destroy(); > } > } > >the bird squawks, then I get that message again...maybe im missing a >parameter in aw_destroy or something... > > [View Quote] -- Xelagot 46ADB [Delph] creator: XelaG email: decastro at cable.a2000.nl Subject: Scanning objects (jeanphi)Feb 8, 1999, 8:26am
Hi jeanphi:
A short diggression about querying in Delphi. Before starting, I install the following: procedure InstallBuild(); var rc, x, z: Integer; begin aw_kallback_set(AW_CALLBACK_QUERY, at cbkQuery); rc := aw_event_set(AW_EVENT_CELL_BEGIN, at evtCellBegin); rc := aw_event_set(AW_EVENT_CELL_OBJECT, at evtCellObject); rc := aw_event_set(AW_EVENT_CELL_END, at evtCellEnd); rc := aw_event_set(AW_EVENT_OBJECT_ADD, at evtObjectAdd); rc := aw_event_set(AW_EVENT_OBJECT_DELETE, at evtObjectDelete); aw_kallback_set(AW_CALLBACK_OBJECT_RESULT, at cbkObjectResult); end; Then I calculate the cell (cNS, cWE) and sector (sNS, sWE) coords for a given position (pNS, pWE) in cm: procedure SectorFromPosition(pNS, pWE: Integer; var cNS, cWE, sNS, sWE: Integer); begin cNS := Round((pNS-499.5)/1000); {is NOT the central cell of sector} cWE := Round((pWE-499.5)/1000); sNS := aw_sector_from_cell(cNS); {central sector of the zone} sWE := aw_sector_from_cell(cWE); end; Your Sequence[<NS from 0 to 2>, <WE from 0 to 2>] array has the following meaning: - each pair "represents" a sector of your 9-sector zone, organised so: (2,2) NW | (2,1) NC | (2,0) NE .... (0,2) SW | (0,1) SC | (0,0) SE the central (2,1) representing your sNS, sWE calculated above. This array of integers should contain zeros or a valid sequence from a previous query, and will be updated in the following order: (1,1), (0,0) etc as in this diagram (thanks Canopus for this tip): 9 8 7 6 1 5 4 3 2 If you use multi-instances, dont forget to set your intstance before querying. aw_instance_set(Instance); rc := aw_query (sWE, sNS, Sector); where Sector, of type SectorSeqs, is my Sequence array in disguise: type SectorSeqs = Array[0..2, 0..2] of Integer; NB: in aw_query you pass in this order: WE, NS, but in the Sequence array the order is reversed: NS, WE! If everything went right, this should start off the query, getting events: AW_EVENT_CELL_BEGIN, my evtCellBegin with the following attributes: aw_instance; aw_int(AW_CELL_Z); aw_int(AW_CELL_X); aw_int(AW_CELL_SIZE); aw_int(AW_CELL_SEQUENCE); and a series of AW_EVENT_CELL_OBJECT, my evtCellObject with attributes: aw_instance; aw_int(AW_OBJECT_NUMBER); aw_int(AW_OBJECT_OWNER); aw_int(AW_OBJECT_BUILD_TIMESTAMP); aw_int(AW_OBJECT_Z); aw_int(AW_OBJECT_X); aw_int(AW_OBJECT_Y); aw_int(AW_OBJECT_YAW); aw_string(AW_OBJECT_MODEL); aw_string(AW_OBJECT_DESCRIPTION); aw_string(AW_OBJECT_ACTION); followed by a useless event AW_EVENT_CELL_END This CellBegin to CellEnd will repeat itself, and then: if you didnt install the the callback AW_CALLBACK_QUERY then aw_query will block until all this is done. If you installed the callback, then this series of events ends inthis callback, my cbkQuery(rc: Integer), where you can retreive the following attributes: aw_instance; aw_bool(AW_QUERY_COMPLETE); If AW_QUERY_COMPLETE is false, you must call aw_query again to continue the query (if you wish a complete query). If it is true, then the query is complete, and live update starts if the event handlers aw_event_set(AW_EVENT_OBJECT_ADD, at evtObjectAdd); aw_event_set(AW_EVENT_OBJECT_DELETE, at evtObjectDelete); are installed. This is the first part of the story. It's in AW_EVENT_CELL_OBJECT where you can test whether your required object was found. XelaG. -- Xelagot 46ADB [Delph] creator: XelaG email: decastro at cable.a2000.nl Subject: Scanning objects (jeanphi)Feb 8, 1999, 8:29am
Errata:
the central (2,1) representing your sNS, sWE calculated above. This array of integers should contain zeros or a valid sequence from a previous query, and will be updated in the following order: (1,1), (0,0) etc as in this diagram (thanks Canopus for this tip): should read: the central (1,1) .... etc... -- Xelagot 46ADB [Delph] creator: XelaG email: decastro at cable.a2000.nl Subject: Scanning objects (jeanphi)Feb 8, 1999, 8:59am
Another clarification. In
AW_EVENT_CELL_BEGIN cNS := aw_int(AW_CELL_Z) cWE := aw_int(AW_CELL_X) qSeq := aw_int(AW_CELL_SEQUENCE) sxNS := aw_sector_from_cell(cNS); sxWE := aw_sector_from_cell(cWE); sapNS := sxNS - sNS + 1; sapWE := sxWE - sWE + 1; where sNS, sWE are the central sector coords as calculated above. Overflow := (sapNS < 0) or (sapNS > 2) or (sapWE < 0) or (sapWE > 2); Update the Sequence array, if not Overflow: Sector[sapNS, sapWE] := qSeq; XelaG. -- Xelagot 46ADB [Delph] creator: XelaG email: decastro at cable.a2000.nl Build 13 upgrade reminderFeb 17, 1999, 11:57pm
On Wed, 17 Feb 1999 09:15:44 -0800, "Roland Vilett"
[View Quote] >I am not sure what the plans are yet in this department. I will have to >check with mgmt and get back to you on that...allowing bots in these worlds >isn't so much related to whether the SDK is beta or released, it's related >to the potential for bot abuse in these worlds (e.g. massive robo building >projects) and whether or not people are actually going to abuse them. > >-Roland Roland, You will always have cases of citizen / tourist abuse. Even without sdk bots, anyone can use a keyboard accelerator, even tourists. The problem is being examined, in my humble but firm opinion, from the wrong angle. I think one should seriously start to consider ways to control human misbehaviour in a more effective way. This becomes more urgent when tools become better and more elaborate. At the moment, control on human abuse is not being implemented well, maybe due to lack of resources. It's illogical to develop new techniques only to ban them because they might be missused, when it is technically perfectly possible, in the case of bots, to trace the owner of the bot. Only, unluckily, the sdk itself can't do that at the present moment. As we all know, a bot logs in identifying its owner at the universe level. Therefore, if a person uses a bot to build in an undesirable way, get that person, but not the bots in general. One step in the good direction would be to have the sdk producing automatically the citizen number of the owner of the bot, as a companion attribute to the session number. This would help world owners and bot makers to identify the culprits. I don't know how 'banning' is implemented, but it seems to me that a list like the rights list (255 chars i believe) is totally inadequate. Some way must be found at universe and world level to register and implement negative rights. In short, concentrate in solving *human* abuse. We wouldn't have cars, airplanes nor computers if the current trend of 'ban the bot' had prevailed in those areas. Congrats for the launching of the 2.1 browser! XelaG :o) > [View Quote] -- Xelagot 46ADB [Delph] creator: XelaG email: decastro at cable.a2000.nl Security issueFeb 20, 1999, 5:05pm
Baggis, I think yours is a real issue. More that one bot around
communicates with the maker's server: Hambots, Imabots. Mine would if I knew how to. The bot maker can encryt whatever he wishes, there is no control on that. And like any other program, the bot could contain a virus or be a trojan. I guess the same will have to apply as with any executable: you'll have to trust the maker. XelaG. On Sat, 20 Feb 1999 08:49:36 +0100, "Baggis" <baggis at swipnet.se> [View Quote] >Hi folks, > >I've 'bumped' into the situation that the person I wrote a SDK bot for was >afraid starting it because the bot could send the privilege pwd ( or some >other information ) to me. > >Hmmm... I thought... that is a problem... how can anyone using a SDK bot >trust the creator of it ? Guess they can't.... The bot is a program and >therefore it's capable of doing almost everthing..... > >But, is there some way of convincing the user it's safe atleast when it >comes to the privilege pwd ? > >Is there a controlmechanism in the universe-server that tracks SDK bots and >what citnum and pwd they use when logging in ? > >/Baggis > > -- Xelagot 46ADB [Delph] creator: XelaG email: decastro at cable.a2000.nl Negative Yaw?Mar 3, 1999, 11:25am
In my experience, the SDK doesn't seem to mind if you write East as
-900 or 2700, both seem to be treated correctly. Querying property I found out that some objects have their yaw stored as negative angles, maybe due to a clockwise rotation. I myself use only positive values. XelaG. On Tue, 2 Mar 1999 18:35:46 +0100, "Walter Knupe" <wak at faber.ping.de> [View Quote] > >Well, i have. When examining it i found that starting from direction 0 it counts up to 1799 when turning clockwise and down to >-1800 when turning counterclockwise. > >Its not what i expected, but once you know its ok :) > >Walter aka Faber > > > Edward Sumerfield schrieb in Nachricht <36DC01C5.294FED91 at poboxes.com>... > I've never seen that before. What code are you using to get it? [View Quote] -- Xelagot 46ADB [Delph] creator: XelaG email: decastro at cable.a2000.nl Bot access in AWMar 15, 1999, 10:55pm
Thank you BjarteS!
(please read the ng, may enlighten you, most sdk developpers are aware of these updates, we've been working on it for months) .... AW is open again, but it did scare the wits out of me... XelaG [View Quote] >That's why the aw browser is updated to asign rights on bots, so you can >restrict bot's to only some people or everyone.....caus some bot scripts and >bot programs can bee anoying to other people in the world... > >BjarteS > -- Xelagot 46ADB [Delph] creator: XelaG email: decastro at cable.a2000.nl Bots and Bot RightsMar 17, 1999, 5:33pm
I fully agree with Canopus on this issue.
Some time ago I pointed out the necessity of identifying the bot's owner: this is still not possible and is CRUCIAL in controlling OWNER misbehaviour. A bot doesn't misbehave, just as a car doesn't: it is the owners who do, and they must be identifiable. True, a bot can act faster than a citizen. When bicycles came, we went faster, when cars came even more so. What would be the state of things if you couldn't identify a car's owner? Restricting bots is putting technology there and forbidding its use. Bloddy useful! Unless COF dares to allow bots generally and cope with owner misbehaviour, bots will remain an elitaire technology, privilege of few, and chatbots will keep predominating. Responsible bot makers would have a better tool for disciplining their bots if the citizen number were sent together with the session number: other bots could then easily identify the owners, the aw browser might even incorporate that as a feature: bot id known, culprit known! By the way, building misbehaviour without sdk bots is very easy: just use a keyboard controller, its been around for a long time. XelaG. -- Xelagot 46ADB [Delph] creator: XelaG email: decastro at cable.a2000.nl xelagot bug fixJul 26, 1999, 8:02am
Xelagot beta-testers and users,
Please download the latest version of Xelagot 2.69. A very infrequently occuring bug has been fixed. This bug could put the bot in an endless loop querying for a non existing citizen at a frequency of one query per second, possibly resulting in a universe-server overload. Only two cases of this were noticed (in months of testing), both last Saturday, in two different universes. Thanks, XelaG. -- XelaG email: xelag at 3dee.com http://www.imatowns.com/xelagot [delphi]teleportingJul 31, 1999, 6:06pm
[View Quote]
>How do I teleport a bot winthin a world? If I use the
>"mybot.setposition" the bot goes walking, but I want him to teleport The browser has its own peculiar idea of how to handle short distance teleports: it wil try to smooth a curved path to the new location, so the bot will appear to walk. In reality, the world server has already registered the final coordinates, but the browser tricks our senses. There is nothing we can really do to change this. XelaG WOOHOOOO i got the SDK sample proggy working all by myselfAug 3, 1999, 9:54am
Congratulations :)
[View Quote] >HAHHAHAHAHAHHAHA i'm a 13 year old that has no experience in c++ and TODAY, >i got the sample greeter bot WORKING!!!! HAHAHAHAHAHHAHAHAHAHHAAA!!! I'm >soooo happy! >(i'm using c++) > -- XelaG email: xelag at 3dee.com http://www.imatowns.com/xelagot sdk error in error codesAug 7, 1999, 10:27pm
Hi Roland,
My question as such is formulated at the end of this message :) We are testing bots to run on the WorldconVR words e_xpo and e_trek. I have been getting this message, which, if i follow the error codes (which i do), forces the bots to leave the world and stop executing their tasks: 21:09:24 VRT: vrcon503 expelled from e_xpo, reason 467 Not welcome 21:09:24 VRT: vrcon503 left e_xpo the first time i noticed this was yesterday, the 3rd bot on a multi-instance application using the same citizen number got this message, while the first 2 bots got a normal wfs message. The example I just quoted also happened during a wfs. I had two bot programs running, each using a different copy or aw.dll build 15: Delph on one, vrcon501, vrcon502, and vrcon503 on the other program. [Delph] got this message (he has a Caretaker status in e_xpo): 21:09:23 [vrcon501] exits s# 46653 at 7.5n 2.7w 4.0a 180 21:09:23 [vrcon502] exits s# 46768 at 7.8n 2.7w 4.0a 180 21:09:23 [vrcon503] exits s# 45755 at 8.0n 2.7w 4.0a 180 21:09:27 [vrcon501] enters s# 46653 at 7.2n 2.6w 4.0a 199 21:09:41 [vrcon501] exits s# 46653 at 6.4n 2.3w 4.0a 234 At the same time, the 3 bots in the other application (using one and the same citizen number, have only bot and eject rights, no enter) got these messages. The first bot got: 21:09:24 VRT: vrcon501 disconnected from e_xpo, reason 471 Connection lost 21:09:27 VRT: vrcon501 re-established contact with e_xpo, code EventAvatarAdd-54445 21:09:27 [Delph] enters s# 54445 at 0.0n 0.0w 0.0a 0 21:09:41 VRT: vrcon501 expelled from e_xpo, reason 467 Not welcome 21:09:42 VRT: vrcon501 left e_xpo The other 2 bots got a direct 467: 21:09:24 VRT: vrcon502 expelled from e_xpo, reason 467 Not welcome 21:09:24 VRT: vrcon502 left e_xpo 21:09:24 VRT: vrcon502 expelled from e_xpo, reason 467 Not welcome 21:09:24 VRT: vrcon502 left e_xpo All disconnect messages (reason 471 and reason 467) are produced by aw_world_disconnect, re-connect messages depend on which function 'detects' re-connection, in this case it was the avatar_add event. The last line, vrcon501, is a bot-program message as a result or the reason 'not welcome', and shows that all functions the bot was accoplishing have been stopped for good; a simple disconnect due to wfs does not stop the bot permanently, any other reason kills it. My question: due to the fact the bots have to work unattended and work reliably (for Worldcon VR and av99, where they will be fulfilling vital tasks), should i ignore the reason codes the sdk produces, or is there a workaround i have missed. Or, what is likely, have I mis-interpreted the enter/bots rights? bot rights give enter automatically to bots, even if they are not in the enter field. Until now i have assumed that that was the correct interpretation for all situations, but in this case I am doubting this interpretation: maybe they should be in both fields, just in case? Thanks in advance for reading and replying, XelaG. |