Board ArchivesSite FeaturesActiveworlds SupportHistoric Archives |
x@x.com (xelag) // User Search
x@x.com (xelag) // User SearchHamBot using SDK, no entry in Atlantis?Oct 22, 1998, 8:13pm
I started using the SDK option in HamBot today. In Beta world it logs
fine, in Atlantis the program freezes when getting world info. Can somebody explain that? I've been working at a bot script for HamBot for a few days in 'hambot mode', and this developmen is frustrating, since I 'live' in Atlantis. What priviliges do SDK bots have. May they build, send telegrams... just as its citizen owner does? TIA, XelaG Alex Grigny de Castro name: agrigny domain: xs4all.nl e-mail: <name> at <domain> HamBot using SDK, no entry in Atlantis?Oct 23, 1998, 2:27pm
On 22 Oct 1998 15:57:22 -0800, "HamFon" <ncrowle at sprintmail.com>
[View Quote] Thanks, HamFon, for your reply. Yesterday night I parked 2 bots in my home in Atlantis and closed the browser. When I returned (hours later), they were gone. The log says: Sending AvatarPosition 445106NS 308156WE 50A 1326, Av 22(0) for bot 0 Sending World message 0x08, length 19, for instance 0 Socket send returned error 10058 Socket send to world failed - instance 0 Sending AvatarPosition 445256NS 308306WE 100A 1326, Av 3(0) for bot 1 Sending World message 0x08, length 19, for instance 1 Socket send returned error 10058 Socket send to world failed - instance 1 Sending AvatarPosition 445183NS 308093WE 50A 1407, Av 22(0) for bot 0 Sending World message 0x08, length 19, for instance 0 Socket does not exist - can not send .... Sending AvatarPosition 445201NS 308117WE 50A 422, Av 22(0) for bot 0 Sending World message 0x08, length 19, for instance 0 Socket does not exist - can not send Socket send to world failed - instance 0 Sending AvatarPosition 445351NS 308267WE 100A 422, Av 3(0) for bot 1 Sending World message 0x08, length 19, for instance 1 Socket does not exist - can not send Socket send to world failed - instance 1 .... This went on for hours, I suppose (the log file is 4.7 megabytes!). But I've had this happen before after a few minutes. Does this mean that the connection to the server was lost at a certain point? Can one recover the bots at the same place and state? The script in HamBot goes on running, messages in MainLoop are still processed, HamBot attempts to send them to the server, and the bots are not actually 'killed', although they dont have a socket. This means IMHO that the information about the bots is still present. Can I, as user, trap this refusal 'event' in the script, so that I can KillBot and StartBot my bots at the same place and state? BTW, I'm having a lot of fun with this program. Hope things like string processing and trigonometry (for a 'move forward' action, for instance) will be added, and more user variables. A suggestion that would add more possibilities easily: ChopFirstWord B$ A$ , where B$ is the chopped bit? Old syntax ChopFirstWord A$ (one parameter) should still work for compatibility. And maybe IfVarIsEqual A$ x Text (case insensitive)? Cheers and thanks for your answer. XelaG XelaG: > HamFon: >The problem is that Atlantis is a newer (2.1) world, with a list of citizen >numbers who are allowed to run bots. (A bot-rights parameter, similar to >build-rights, etc). I just checked, and the only citizen number allowed to >run bots at this very instant is Cryonics. > >The call to aw_enter() seems to have a problem (or the implementation in >HamBot does, maybe ;-) , causing HamBot to hang. > >To fix this problem, you need to talk to Cryonics to get your citizen >number enabled to run bots. > >HamBot will continue to run in "native" mode (non-SDK), tho, even in worlds >with bot-rights. This will probably work until the encryption is >*required*. > XelaG: > HamFon: >The SDK bots may build, but may not (currently... ;-) send telegrams or >keep contact lists. HamBot allows telegrams and contact lists, but only >when you log in your bot as a REAL citizen (not as a tourist, and not using >the SDK). Alex Grigny de Castro name: agrigny domain: xs4all.nl e-mail: <name> at <domain> HamBot using SDK, no entry in Atlantis?Oct 23, 1998, 8:48pm
On 22 Oct 1998 15:57:22 -0800, "HamFon" <ncrowle at sprintmail.com>
[View Quote] HamFon: Refering to your suggestion of asking Cryonics, I got this message: Telegram from Cryonics, sent 15 minutes ago: At this time we are not allowing SDK bots in COF worlds other than COF bots. XelaG's question: HamFon's answer: >The problem is that Atlantis is a newer (2.1) world, with a list of citizen >numbers who are allowed to run bots. (A bot-rights parameter, similar to >build-rights, etc). I just checked, and the only citizen number allowed to >run bots at this very instant is Cryonics. Alex Grigny de Castro name: agrigny domain: xs4all.nl e-mail: <name> at <domain> cant find build number of aw.dllNov 8, 1998, 9:31am
Hi, I've looked everywhere I know of, especially in
www.activeworlds.com/sdk, for the build number of aw.dll. Can anybody enlighten me? TIA XelaG more than1 bot: creation/selection problemNov 9, 1998, 3:12pm
Thanks to Kevin MacLennan's help i got VisualBasic6 to make me a bot.
Deaf he is (and will remain until VB6 can use the API, who can help?), but cool. I wish to create more than one, and here's (one of) my problem(s): Whatever bot I create seems to count, but only the first one reacts, talks etc (etc=not much more at this stage!). I suspect my understanding of aw_instance and aw_instance_set is defective, I get one number per session, something like 215550416, no matter how many bots I make. I would like to register the instances to be able to switch from one to the other. My definitions of both (which might be wrong) are: 'AWAPI void* aw_instance (void); Public Declare Function aw_instance Lib "aw.dll" () As Long 'AWAPI int aw_instance_set (void *instance); Public Declare Function aw_instance_set Lib "aw.dll" (ByRef instance As Any) As Long Also, av_create has an 'instance', by default set to 0? How can I set Bot0, Bot1, and Bot2 to be the actors? Here's part of the code I use. I first create a form, and in Form_Load i do the preliminaries: ====<code> Private Sub Form_Load() Dim rc As Long Dim c as String ' Ini File On Error GoTo Form_Load_Error IniFile = App.Path & "\Bot1.ini" ' etc, i initialize ApplicationName, MaxBot to 3, LoginOwner, ' and PrivilegePassword. MaxBot = Int(MaxBot): If MaxBot < 1 Then MaxBot = 1 ReDim botSlot(0 To MaxBot) ' initialize ActiveWorlds API rc = aw_init(AW_BUILD) If rc <> 0 Then MsgBox "Unable to initiate API (reason " & rc & ")." End End If ' install handler for avatar_add event ' should this be here or is it instance related???? rc = aw_event_set(AW_EVENT_AVATAR_ADD, AddressOf evtAvatarAdd) Exit Sub Form_Load_Error: Err.Clear Resume Next End Sub '====</code> Then I start creating my bots like this, triggered by some user input: the type of botSlot() is roBot, defined as Type roBot Logged As Boolean instance As Long Caption As String World As String NS As Long WE As Long Altitude As Long Rotation As Long Avatar As Long Gesture As Long End Type '====<code> Public Function BotLogin(ByVal botNr) Dim rc As Long, c As String On Error GoTo BotLoginError BotLogin = False With botSlot(botNr) If .Logged = True Then GoTo BotLoginEnd If .Caption = "" Then .Caption = "DeafBot" & botNr If .World = "" Then .World = "Beta" ' create bot instance rc = aw_create("auth.activeworlds.com", 5670, botNr) If rc <> 0 Then GoTo BotLoginFailed ' log bot into the universe rc = aw_int_set(AW_LOGIN_OWNER, LoginOwner) rc = aw_string_set(AW_LOGIN_PRIVILEGE_PASSWORD, PrivilegePassword) rc = aw_string_set(AW_LOGIN_APPLICATION, ApplicationName) rc = aw_string_set(AW_LOGIN_NAME, .Caption) rc = aw_login() If rc <> 0 Then GoTo BotLoginFailed ' log bot into a world rc = aw_enter(.World, 0) If rc <> 0 Then GoTo BotLoginFailed rc = aw_int_set(AW_MY_X, .WE) rc = aw_int_set(AW_MY_Z, .NS) rc = aw_int_set(AW_MY_Y, .Altitude) rc = aw_int_set(AW_MY_YAW, .Rotation) rc = aw_int_set(AW_MY_TYPE, .Avatar) rc = aw_state_change() .instance = aw_instance() Call aw_say("Hi, I'm " & .Caption & ", a VB6.0 freak...") .Logged = True End With BotLogin = True Exit Function BotLoginError: ' debug code omitted Resume Next BotLoginEnd: ' degug code omitted Exit Function BotLoginFailed: ' debug code omitted End Function '====</code> TIA, XelaG more than1 bot: creation/selection problemNov 9, 1998, 6:21pm
I solved the mystery:
1. my VB6 definition of aw_instance_set was incorrect, should be ByVal instead of ByRef: 'AWAPI int aw_instance_set (void *instance); Public Declare Function aw_instance_set Lib "aw.dll" (ByVal Instance As Any) As Long 2. the definition and example for aw_create given in the specs in www.activeworlds.com/sdk is confusing, at least for a non C/C++ human: the third parameter returns the new bot's instance number and, at least in VB, should pass a variable to retreive its value. XelaG. 2 questions.Nov 10, 1998, 12:40pm
I use vb6.0 and have managed to login 3 bots at a time, roughly
following the greeter bot script (no greetings i'm afraid). I have 2 questions at the moment. Can anyone help explaining these matter?. 1. Whether i log in 1 or more bots, they disappear from the world (Beta GZ) after some time, about a minute. Their instance number is still valid (selectable) but they are gone. The only way to get them back on stage is to select one of the bots with rc = aw_instance_set(<instance number>) and start from aw_enter(.World,0) to aw_state_changed() all over again. Strangely enough, this method sometimes gets all three bots back, even if I only explicitely select one of them and bring it back. The sequence i follow to create the bots is this one: rc = aw_create("auth.activeworlds.com", 5670, Inst) rc = aw_int_set(AW_LOGIN_OWNER, .LoginOwner) rc = aw_string_set(AW_LOGIN_PRIVILEGE_PASSWORD, .PrivilegePassword) rc = aw_string_set(AW_LOGIN_APPLICATION, ApplicationName) rc = aw_string_set(AW_LOGIN_NAME, .Caption) rc = aw_login() rc = aw_enter(.World, 0) rc = aw_int_set(AW_MY_X, .we) rc = aw_int_set(AW_MY_Z, .ns) rc = aw_int_set(AW_MY_Y, .Altitude) rc = aw_int_set(AW_MY_YAW, .Rotation) rc = aw_int_set(AW_MY_TYPE, .Avatar) rc = aw_int_set(AW_MY_GESTURE, .Gesture) rc = aw_state_change() Call aw_say("Hi, I'm " & .Caption & ", a VB6.0 freak...") 2. I cant seem toget char* aw_string (AW_ATTRIBUTE a) working in VB6. The code I use Public Declare Function aw_string Lib "aw.dll" (ByVal awAttribute As AW_ATTRIBUTE) As String is useless, although a similar syntax for aw_int() works ok. I think it is because this is the only function retuning a string. Is there any workaround? <wishfull thinking> Maybe having a function with no return value that accepts a fixed length string as parameter, as in Kernel's GetPrivateProfileString. TIA. XelaG, agrigny at xs4all.nl 2 questions.Nov 11, 1998, 1:20am
No, I wasn't calling aw_wait. I don't use a loop as such, the windows
form just sits and waits for events to pour on it. I wrongly assumed that since i cant get events from the server using VB6 anyway, aw_wait() was unnecessary. Facter (Walter) first put me on the right track: use a timer object instead of a loop, set the Timer.Interval to 1 second, and let the timer call aw_wait(10) i.e. for 10 milliseconds every minute. Thanks for your explanation about how aw_wait() works. On Tue, 10 Nov 1998 16:01:23 -0800, "Roland Vilett" <roland at lmi.net> [View Quote] >Are you calling aw_wait() at all? You must call aw_wait() in order to >receive any events. Also, aw_wait() periodically sends heartbeats to the >servers so they know your bot is still alive. I assume the reason your bots >are vanishing is that you are not calling aw_wait(), so after about a minute >the world server gives up on your bots and disconnects them. > >After setting up your bots, your program should spend the majority of its >time in a loop calling aw_wait(), as demonstrated in the sample programs. > >-Roland > [View Quote] 2 questions.Nov 11, 1998, 1:33am
On Tue, 10 Nov 1998 14:46:04 -0500, Canopus <aek2 at ix.netcom.com>
[View Quote] I sort of tried that trick today, i'll try it later again more systematically. It didn't work. Wat VB does fine is using a string of a sufficient length as an argument to an api, for instance, GetPrivateProfileString uses that method. Searching for ascii zero is unnecessary, VB shortens the string to the right VB-length, so you can't use a constant which has fixed length. What i don't yet know is if this also works for a returned string. I've noticed awapi has AW_MAX_ATTRIBUTE_LENGTH = 255& which i declared Public Const. That didn't work. I'll retry later. >In earlier versions of VB, you could get round VB's preference for VB >strings by providing a fixed-length string that was long enough to hold >whatever was returned by a C DLL function (Dim ReceiverString As String * >255, or ReceiverString = String(255,0)). VB would convert VB string >parameters to C strings if you declared them ByVal, but that only worked >for passing strings TO a C DLL, not for getting them FROM a C DLL. It was >up to you to find the ASCII Zero that C uses to mark the end of a returned >string. Don't know if this is still true. > >Walter Knupe's idea about aw_wait is worth trying, as some callback events >seem to depend on it. But the Delphi version of the multibot program >worked without any mention of aw_wait (it just had a "repeat...until Stop" >loop). See my thread to Roland about this. Thanks for your answer. > [View Quote] 2 questions.Nov 11, 1998, 1:52am
Facter, thanks for your posting and the online help this afternoon.
Its stable now with 2 SDK bots, the 3rd one crashes the syten. (and I had my 2 other Hambots there at the same time, I thought the limit was 3). Got the forward/ back/ sidewards/ up/ down and turning around movements ready, sorted out the trigonometry this evening. Next: climbing at an angle, random-walking and figure-skating! I can also have him say through keyboard input, I'm working on the teleport option now and trimming the GUI. Pity he can't interact. On Tue, 10 Nov 1998 18:05:55 +0100, "Walter Knupe" <wak at faber.ping.de> [View Quote] >Xelag, > >XelaG schrieb in Nachricht <36484701.31444845 at news.activeworlds.com>... > >I found my bots to dissappear if i don't call aw_wait anymore.... > >It happens in my C++ programm when i am debugging it and keeping it on hold >on a breakpoint. > >so make sure you have some kind of mainloop that calls aw_init().... i do >this using a WM_TIMER and calling aw_wait(10); in there, about once a >second. > > > >i have no clue there since I am not into VB. but char * is a common >expressions for API functions as well i think. >For example, lstrcpy is a WIN32 function (exported from kernel32.dll) and it >returns a string pointer like that. So see if you can find a declaration for >that one and use it to create your proper aw_string prototype. > >Walter > > 2 questions.Nov 11, 1998, 10:14am
Canopus, i made a mistake in my previous posting: windows does require
an ascii zero check,as you said, doesn't conveniently clip the string. It's just that I use a constantly a routine that masks that fact...! ;o) 2 questions.Nov 11, 1998, 10:21am
Sorry for the confusion, both Walter and Facter, I haven't slept for
48 hours because of my deafbot. Walter (I forgot your aw- nickname), you and your bot [Daniel] were very helpful to me yesterday, many thanks. On Wed, 11 Nov 1998 13:49:40 +0800, facter <facterinvurt at hotmail.com> [View Quote] > > > >Me and Walt are different people Xela =)) > >Fac. P.S. he is called [Daniel] your bot, Walter, or am I again mistaken? P.P.S. and thanks to you, Fac, for your help a few days ago (or am I again confused?). I'm going to bed! 2 questions.Nov 11, 1998, 10:25am
Thank you for your posting. I only hope we'll soon be able to use all
the aw.dll features in Visual Basic... XelaG. Loosing focusNov 12, 1998, 5:56am
Same happens to me, also with Hambots. I've made a narrow vertical
panel which fits next to the browser, and click back and forth. It would be great if the next version of the brouwser could draw in the background. Another option is using 2 computers on a network, one for your browser and one for your bot <hehe>. Pas d' chance, hein..? XelaG On Wed, 11 Nov 1998 20:31:34 +0100, "jeanphi" [View Quote] >Hello, > >How do you guys do to recover the focus of active world browser ? >I am programming under Delphi, and when I enter a command, or press a button >on my application, I loose the focus of the activeworlds brwoser. That leads >to not seeing the updates until I reclick inside AW browser. > >Can someone give me a hint ? > >thx >jeanphi > aw_enter hangs in hostile worldsNov 12, 1998, 6:05am
Is it VisualBasic or does it also happen in the C community that
aw_enter() hangs and doesn't return rc when attempting to enter certain worlds? Shouldn't it time out and return an error code? This happens e.g. in Atlantis - that doesn't allow SDK bots, but also in Amigos, which I think has no policy against bots. If there is a workaround, I'd like to know. XelaG. agrigny at xs4all.nl aw now closed for bots ?Nov 17, 1998, 7:39pm
As I understand it, an invisible bot is one that entered a world with
aw_enter() but has not called aw_state_change(). If so, how can it be located in gz or anywhere else. Maybe Roland or someone else could expand on the subject of invisible bots, or post a url where I could get more details bout what they can/not do: i.e. can they speak? Thanks. On Tue, 17 Nov 1998 12:08:20 -0800, "Roland Vilett" <roland at lmi.net> [View Quote] >No, the no-GZ rule only applies to visible bots. > >-Roland > [View Quote] movement etc...Nov 15, 1998, 10:31pm
I'd like to give my bot some autonomous movement (like the hambot's
random movement), but don't quite know where to start. I recently migrated from windows 3.11 (shame on me) so know nothing about threads, except that they exist. What are the options? I could create a timer object for each bot (would that be = to creating a new thread?). I already have one timer object for aw_wait(). Can anybody give a hint? I use vb, its bad enough having a deaf bot, I don't want him to look paralized as well! ;o) confused, XelaG movement etc...Nov 16, 1998, 8:02am
Thanks Walter aka Faber ! I'll try this later today, your synchretic
code is clear. XelaG. On Mon, 16 Nov 1998 02:08:18 +0100, "Walter Knupe" <wak at faber.ping.de> [View Quote] >Hey Xelag, > >XelaG schrieb in Nachricht <364f700e.6446890 at news.activeworlds.com>... > >a WM_TIMER is not at all the same as a seperate thread, but since the SDK is >not thread safe anyway and since it doesn't make sense to move more than >once a second, a WM_TIMER does the job. > >so set up a second timer, and add a routine to it which does the following >(pseudo code following) > >OnMoveTimer () >{ > get_old_position(); > my_current_x := my_current_x + random_value_between(-100, 100); > my_current_z := my_current_x + random_value_between(-100, 100); > my_current_yaw := my_current_x + random_value_between(-100, 100); > my_current_yaw := my_current_yaw MODULO 3600; > int success = aw_change_state(); > > if (success) > { > save_current_position(); > } >} > >well, i think i got 3 languages in the above code, but the point should be >clear :) > >hope that help a little, > >Walter aka Faber > > movement etc...Nov 17, 1998, 7:55pm
Thanks again, Walter, it works fine. I use the same timer for aw_wait
and for the random walk for 3 bots, an array of boleans regulates the traffic in the movement routine, combining with the 'if success' bit. The bots step 70 cm per second, from time to time if the browser skips a heartbeat they gliiiiiiiiide. XelaG. On Mon, 16 Nov 1998 02:08:18 +0100, "Walter Knupe" <wak at faber.ping.de> [View Quote] >Hey Xelag, > >XelaG schrieb in Nachricht <364f700e.6446890 at news.activeworlds.com>... > >a WM_TIMER is not at all the same as a seperate thread, but since the SDK is >not thread safe anyway and since it doesn't make sense to move more than >once a second, a WM_TIMER does the job. > >so set up a second timer, and add a routine to it which does the following >(pseudo code following) > >OnMoveTimer () >{ > get_old_position(); > my_current_x := my_current_x + random_value_between(-100, 100); > my_current_z := my_current_x + random_value_between(-100, 100); > my_current_yaw := my_current_x + random_value_between(-100, 100); > my_current_yaw := my_current_yaw MODULO 3600; > int success = aw_change_state(); > > if (success) > { > save_current_position(); > } >} > >well, i think i got 3 languages in the above code, but the point should be >clear :) > >hope that help a little, > >Walter aka Faber > > Sick of VB6 !Nov 20, 1998, 10:08pm
Just to say I'll have to find another programming language that has
GUI support. VB6 can't read aw_string and crashes, sometimes unexpectedly crashes on aw_int, in both cases with an ACCESS VIOLATION in aw.dll... Can't spend more efforts on this rubbish language. And my bot was getting so nice: walking, dancing, flying, travelling by foot to new destinations... I could cry. I tried compiling the 1st SDK example in C with VC++6, within 15 minutes I had the Speaker bot running and HEARING, a new experience for me. But GUI support is lacking there, and I really want that too. Help! Canopus, how's Delphi? I havent programmed in Pascal since Turbo times under DOS, that's years ago. Does object Pascal support dlls in C? I have now Delphi 2, it's been given away for free. Desperately seeking.... XelaG Sick of VB6 !Nov 21, 1998, 12:34am
Hi Canopus,
I'll give Delphi 2.0 a try. I need some help, though, to get started. I have your akSample2eForm.pas and akAWAPI.pas (build 9), but don't really know how to start. I've been through the code, understand most of it at first glance, and have a few remarks or questions, besides a fundamental one: 1. how do you build this project in Delphi for this to work (I know how to make a form and position buttons etc, thats about it in Delphi). In akAWAPI: 2. why do you have to declare the apis twice? 3. you have a PInteger type in function aw_data (a : AW_ATTRIBUTE; length : PInteger) : PChar; cdecl; is this intentional? 4. what does 'const' mean in, for instance, function aw_create (const domain : PChar; port : Integer; instance : PAWhInst) : Integer; cdecl; can't it be just 'domain: PChar'? I couln't find this in the Delphi help, only the syntax 'const xxx = yyy'. Any help or suggestions, also about books to read, is welcome! My e-mail is decastro at cable.a2000.nl, just in case its not appropriate to answer to the ng. Thanx, XelaG On Fri, 20 Nov 1998 19:55:42 -0500, Canopus <aek2 at ix.netcom.com> [View Quote] >Delphi uses Object Pascal, and so is object-oriented, like C++. It has a >graphics user interface, with lots of built-in forms and controls, like >VB6. Unlike some versions of C, even, Delphi's compiler links the aw.dll >into the AWAPI (now updated to Build 9) smoothly and automatically. Check >and see how quickly the Delphi versions of Sample 1 and 2 came out >compared to other languages. I have the 5 construction bot applications >that I came to the SDK to do finished: I'm just waiting for Beta to be >over so I can use them. > [View Quote] Sick of VB6 !Nov 21, 1998, 12:35am
Walter, i'll try Delphi first :o)
On Sat, 21 Nov 1998 01:33:45 +0100, "Walter Knupe" <wak at faber.ping.de> [View Quote] >maybe its the right time to look into c++ ? > >just if you wonder, its possible to write a GUI bot using c++ in VC5.0, so >6.0 should work too.. this is what [Daniel] is. > >Walter > >XelaG schrieb in Nachricht <36560038.28775246 at news.activeworlds.com>... > Sick of VB6 !Nov 21, 1998, 3:13am
Got it working for your akSample2eForm.pas, Canopus. Took me a few
hours, wasted time trying to use your pas file as is. I still can't figure out how to change the name of Unit1. Form1 I can rename through the properties. I moved Stop := False from Form.Create to just before the loop, otherwise I coudn't repeat Button1Click and keep the bots there! Can one add units without forms? I suppose public procedures etc are reachable from all units. I definitely nead a Delphi Tutorial and a good book. None included in the free distribution, but lots of online help. I coudn't find any code example yet, except for your code. I need to learn quite fast how to read/write to file, to INI files, how to manage arrays, and lots more... XelaG Sick of VB6 !Nov 21, 1998, 3:28am
Thanks, I didn't read your answer till after I posted my "Got it
working" bit... On Fri, 20 Nov 1998 22:55:53 -0500, Canopus <aek2 at ix.netcom.com> [View Quote] >There's other useful Delphi information in the earlier Delphi threads, >especially the instructions on how to build your own Form from the Delphi >version of Sample 1 and the comments following the Delphi version of Sample >2. > >The declaration part is for support of the other declarations; the >implementation part is a peculiarity imposed by the way the DLL is linked in >(a little more info there too). Other than mentioning it in your Uses clauses >and looking up the correct call format, you don't have to worry about the >AWAPI unit. > >There's a predefined PointerToInteger type in Delphi called PInteger. > >Delphi 2 has these constant parameters, I think: it's a way to tell the >compiler that the value passed will not be changed during the procedure (more >efficient code, at least with arrays, sets, etc.). > >The best Delphi books are those by Marco Cantu, in my opinion. He even has a >section on connecting to DLL's, which is helpful in understanding our >situation. Sick of VB6 !Nov 21, 1998, 3:36am
>The declaration part is for support of the other declarations; the
>implementation part is a peculiarity imposed by the way the DLL is linked in >(a little more info there too). Other than mentioning it in your Uses clauses >and looking up the correct call format, you don't have to worry about the >AWAPI unit. Does this mean that the dll is actually linked when building the programme? or is it an equivalent of the aw.lib file which is linked? Sick of VB6 !Nov 21, 1998, 7:22pm
None on my copy of Delphi 2.0. PCPlus claims its the full version. If
you still have the help file, my e-mail is decastro at cable.a2000.nl. ;o) On Sat, 21 Nov 1998 14:17:35 -0500, Canopus <aek2 at ix.netcom.com> [View Quote] >Look and see if there's a file with Delphi 2 called VB2Delphi or something >like that: it came along with Delphi 1, to help VB programmers make the >move to Pascal. Most versions of Delphi come with a lot of examples; only >the source for Delphi itself was restricted to Delphi Pro editions. Sick of VB6 !Dec 1, 1998, 2:00pm
Thanks for the tip, BB. I'm not the only one who's had these problems
with VB, and I have asked for help regularly here. I didn't hear your voice then. Maybe you would care to publish your variable declarations? That would be most helpful. XelaG On Tue, 01 Dec 1998 00:21:13 -0500, Leo Mauk <lmauk at netonecom.net> [View Quote] >"It's a poor workman that blames his tools." >You need to make sure your Variables are being declared properly. >VB has the best GUI going. > >BB > > [View Quote] Moving the botsNov 21, 1998, 11:35am
The bot reacts to changes in avatar position, gesture and type. If an
avatar comes within range of the bot (or the bot comes within range of the avatar), the event handler for AW_EVENT_AVATAR_ADD is triggered, if any avatar within range changes position etc, the handler for AW_EVENT_AVATAR_CHANGE is triggered, on leaving the avatar triggers the handler AW_EVENT_AVATAR_DELETE. These handlers must be installed by you before creating the bot. When one of these handlers is triggered, you can get the session number of the avatar in AW_AVATAR_SESSION (call it avS), the position in AW_AVATAR_X, AW_AVATAR_Z, AW_AVATAR_Y. Say you call these avX, avZ. avY, your pposition (known to you, you positioned the bot) are myX, myZ, myY. Then, delta_x = avX - myX etc. and hor_h is the distance between your bot and the avatar whose event you trapped. If this hor_h is near enough for your purpose, register the position of your bot (so it can return there after the chase), the session number avS of the avatar you are chasing and start keeping track of any event that has the same avS, until the avatar gets out of range by leaving or when hor_h gets too large (hor_h is always positive), or you time out the case. Whenever an event has your victim's avS, adjust the position of your own bot to follow the avatar. If you only have one bot, you can adjust the position of your avatar when you trap the event that would justify the change. If you have more than one bot running its slightly more complicated: you'll have to register the proposed changes to your bot's position when the event occurs, but only call aw_instance_set (select the bot), aw_int_set (for the new position) and aw_state_change (to send the data to the world server) from a place where this will not interfere with ongoing action, for instance, from the aw_wait loop. XelaG [View Quote] >I am not sure I see what you are going for. I am using the GNU, which I >think is of somwhat difference from the AWCPP. I don't know what the >delta_x, z variables represent in the programming source. >I also want to understand what each of the values represent (ie, what >sets the react range, and the follow distance) so I can modify the code >myself once I get successfull implementation. Also, where in the source >of the bot would these lines take place? I am not sure if you would need >to call another event header or what... > [View Quote] Moving the botsNov 21, 1998, 11:45am
Remember that the world server may reject your request to update the
position of the bot, if two requests reach the server within one second, so that you must keep track of that and re-send a request after a second. |