From kevijeps@telusplanet.net Sat Jul 1 16:55:06 2006 Received: with ECARTIS (v1.0.0; list encore); Sat, 01 Jul 2006 16:55:06 -0500 (CDT) Return-Path: X-Original-To: encore@nobel.utdallas.edu Delivered-To: encore@nobel.utdallas.edu Received: from iq1.utdallas.edu (iq1-pmn.utdallas.edu [192.168.1.7]) by nobel.utdallas.edu (Postfix) with ESMTP id 98D665BE5 for ; Sat, 1 Jul 2006 16:55:06 -0500 (CDT) Received: from localhost (mf2-pmn.utdallas.edu [192.168.1.14]) by iq1.utdallas.edu (Postfix) with ESMTP id 5D2E64955 for ; Sat, 1 Jul 2006 16:55:06 -0500 (CDT) Received: from mx2.utdallas.edu ([129.110.10.17]) by localhost (mf2.utdallas.edu [10.110.10.14]) (amavisd-new, port 10024) with LMTP id 14433-01-45 for ; Sat, 1 Jul 2006 16:55:04 -0500 (CDT) Received: from priv-edtnes16.telusplanet.net (defout.telus.net [199.185.220.240]) by mx2.utdallas.edu (Postfix) with ESMTP id E48142CA1 for ; Sat, 1 Jul 2006 16:55:03 -0500 (CDT) Received: from priv-edtnaa05.telusplanet.net ([199.126.223.252]) by priv-edtnes16.telusplanet.net (InterMail vM.6.01.05.04 201-2131-123-105-20051025) with ESMTP id <20060701215502.THEN20995.priv-edtnes16.telusplanet.net@priv-edtnaa05.telusplanet.net> for ; Sat, 1 Jul 2006 15:55:02 -0600 Received: from lilith (d199-126-223-252.abhsia.telus.net [199.126.223.252]) by priv-edtnaa05.telusplanet.net (BorderWare MXtreme Infinity Mail Firewall) with ESMTP id 98SU0KR4JM for ; Sat, 1 Jul 2006 15:55:01 -0600 (MDT) From: "Kevin Jepson" To: Subject: [encore] MOO Database Browser Date: Sat, 1 Jul 2006 15:54:55 -0600 Message-ID: <002e01c69d58$fde5b350$5a0119ac@lilith> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_002F_01C69D26.B34FD730" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.6626 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Importance: Normal X-Virus-Scanned: amavisd-new at utdallas.edu X-archive-position: 1708 X-ecartis-version: Ecartis v1.0.0 Sender: encore-bounce@utdallas.edu Errors-to: encore-bounce@utdallas.edu X-original-sender: kevijeps@telusplanet.net Precedence: bulk Reply-to: kevijeps@telusplanet.net List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: X-List-ID: X-list: encore This is a multi-part message in MIME format. ------=_NextPart_000_002F_01C69D26.B34FD730 Content-Type: text/plain; charset="windows-1250" Content-Transfer-Encoding: quoted-printable Hi Folks =20 Happy Canada Day! =20 I just came across this page which is MOO DB browser. =20 HYPERLINK "http://neil.fraser.name/software/moobrowser/"http://neil.fraser.name/sof= twa re/moobrowser/ =20 This is pretty cool and allows looking inside a DB even if the MOO is = not running. There are many potentially useful reasons to do this, like resurrecting = data from acorrupted DB or just looking at stuff in an old archive copy of a = DB. =20 From the Home page: Moo Database Browser Tools for querying and exporting inactive Moo databases. These applications allow one to easily extract information from a Moo database which is not executing. For sporatic look-ups, they are more efficient than booting up a live Moo and faster than loading the = emergency wizard mode. This is particularly useful when one has an archive of historical databases, or if one is just looking for a verb that recently = got deleted. =20 This page also has documentation on the internals of the DB, very cool. =20 Enjoy Ciao KJ =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D Kevin Jepson R.E.T. President 4K Consulting Inc. =20 An't nanum hearm deth, doth hwaet ye willath. PHONE: (403) 875-8372 Email: kevijeps@telusplanet.net =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D =20 =20 --=20 No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: = 30/06/2006 =20 ------=_NextPart_000_002F_01C69D26.B34FD730 Content-Type: text/html; charset="windows-1250" Content-Transfer-Encoding: quoted-printable Message
Hi=20 Folks
 
Happy = Canada=20 Day!
 
I just = came across=20 this page which is MOO DB browser.
 
http://neil.fraser.= name/software/moobrowser/
 
This = is pretty cool=20 and allows looking inside a DB even if the MOO is not=20 running.
There = are many=20 potentially useful reasons to do this, like resurrecting data from = acorrupted DB=20 or just looking at stuff in an old archive copy of a = DB.
 
From = the Home=20 page:
<Begin=20 Quote>

Moo Database Browser

Tools for querying and exporting inactive Moo databases.

These applications allow one to easily extract information from a Moo = database which is not executing. For sporatic look-ups, they are more = efficient=20 than booting up a live Moo and faster than loading the emergency wizard = mode.=20 This is particularly useful when one has an archive of historical = databases, or=20 if one is just looking for a verb that recently got=20 deleted.

<End=20 Quote>
 
This = page also has=20 documentation on the internals of the DB, very cool.
 
Enjoy
Ciao
KJ

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D
Kevin=20 Jepson R.E.T.
President
4K Consulting=20 Inc.           &nb= sp;        
An't=20 nanum hearm deth, doth hwaet ye willath.

PHONE: (403) = 875-8372
Email:=20 kevijeps@telusplanet.net
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

 =20

 

--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: = 30/06/2006

------=_NextPart_000_002F_01C69D26.B34FD730-- From jean-marc.giffin@acadiau.ca Thu Jul 6 09:07:36 2006 Received: with ECARTIS (v1.0.0; list encore); Thu, 06 Jul 2006 09:07:36 -0500 (CDT) Return-Path: X-Original-To: encore@nobel.utdallas.edu Delivered-To: encore@nobel.utdallas.edu Received: from iq1.utdallas.edu (iq1-pmn.utdallas.edu [192.168.1.7]) by nobel.utdallas.edu (Postfix) with ESMTP id E621C5BB0 for ; Thu, 6 Jul 2006 09:07:35 -0500 (CDT) Received: from localhost (mf2-pmn.utdallas.edu [192.168.1.14]) by iq1.utdallas.edu (Postfix) with ESMTP id 95A5051B1 for ; Thu, 6 Jul 2006 09:07:35 -0500 (CDT) Received: from mx2.utdallas.edu ([129.110.10.17]) by localhost (mf2.utdallas.edu [10.110.10.14]) (amavisd-new, port 10024) with LMTP id 11208-01-77 for ; Thu, 6 Jul 2006 09:07:28 -0500 (CDT) Received: from stanley.acadiau.ca (stanley.acadiau.ca [131.162.201.38]) by mx2.utdallas.edu (Postfix) with ESMTP id DABED34A6 for ; Thu, 6 Jul 2006 09:07:13 -0500 (CDT) Received: from localhost (localhost [127.0.0.1]) by stanley.acadiau.ca (Postfix) with ESMTP id A4AA219BC56 for ; Thu, 6 Jul 2006 11:07:12 -0300 (ADT) Received: from stanley.acadiau.ca ([127.0.0.1]) by localhost (helios.acadiau.ca [127.0.0.1]) (amavisd-new, port 10026) with LMTP id 92739-01-9 for ; Thu, 6 Jul 2006 11:07:07 -0300 (ADT) Received: from exchange.ad.acadiau.ca (exchange.acadiau.ca [131.162.200.60]) by stanley.acadiau.ca (Postfix) with ESMTP id 692D219BB5F for ; Thu, 6 Jul 2006 11:07:05 -0300 (ADT) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C6A105.4FAC6B42" Subject: [encore] Wait For an Action? Date: Thu, 6 Jul 2006 11:06:09 -0300 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Wait For an Action? Thread-Index: AcadWRZDvfGA7O1kSkOwFy/SwYaN3gDq6Uew From: "Jean-Marc Giffin" To: X-Virus-Scanned: by amavisd-new at acadiau.ca X-Virus-Scanned: amavisd-new at utdallas.edu X-archive-position: 1709 X-ecartis-version: Ecartis v1.0.0 Sender: encore-bounce@utdallas.edu Errors-to: encore-bounce@utdallas.edu X-original-sender: jean-marc.giffin@acadiau.ca Precedence: bulk Reply-to: jean-marc.giffin@acadiau.ca List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: X-List-ID: X-list: encore This is a multi-part message in MIME format. ------_=_NextPart_001_01C6A105.4FAC6B42 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hey all! =20 Because of the nature of how I am making the MOO, I have bots that expect you to give them items. For example, to take a carriage, you have to talk to the driver and then he asks for 2 pounds. I want to make it so that he waits a bit of time for you to "give driver 2 pounds", but if you take too long, he'll get annoyed with you and move on. I was thinking that it would be possible to do a "read(player)", but then (as far as I know) it would take away from allowing the normal "give" command to take place, since it wouldn't parse the string. I then thought of making a "fork" or "suspend", but if the suspend was 10 seconds (for example), and I gave the coins after 2 seconds, I would have to wait 8 seconds for the driver to respond. Is there a good way to make the bot wait a certain amount of time for an event, and as soon as it takes place, things continue? =20 Thanks! =20 Jean-Marc Giffin -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: 30/06/2006 ------_=_NextPart_001_01C6A105.4FAC6B42 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Message

Hey = all!

 

Because of the nature of how I am = making the MOO, I have bots that expect you to give them = items.

For example, to take a carriage, = you have to talk to the driver and then he asks for 2 pounds. I want to make it = so that he waits a bit of time for you to “give driver 2 pounds”, = but if you take too long, he’ll get annoyed with you and move on. I was thinking that = it would be possible to do a “read(player)”, but then (as far as I know) = it would take away from allowing the normal “give” command to take place, since = it wouldn’t parse the string. I then thought of making a “fork” or = “suspend”, but if the suspend was 10 seconds (for example), and I gave the coins after 2 seconds, I = would have to wait 8 seconds for the driver to respond. Is there a good way to = make the bot wait a certain amount of time for an event, and as soon as it = takes place, things continue?

 

Thanks!

=

 

Jean-Marc = Giffin


--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: = 30/06/2006

------_=_NextPart_001_01C6A105.4FAC6B42-- From alexborgia@hotmail.com Thu Jul 6 09:44:23 2006 Received: with ECARTIS (v1.0.0; list encore); Thu, 06 Jul 2006 09:44:23 -0500 (CDT) Return-Path: X-Original-To: encore@nobel.utdallas.edu Delivered-To: encore@nobel.utdallas.edu Received: from iq1.utdallas.edu (iq1-pmn.utdallas.edu [192.168.1.7]) by nobel.utdallas.edu (Postfix) with ESMTP id 069115BB0 for ; Thu, 6 Jul 2006 09:44:22 -0500 (CDT) Received: from localhost (mf2-pmn.utdallas.edu [192.168.1.14]) by iq1.utdallas.edu (Postfix) with ESMTP id ACDE749AF for ; Thu, 6 Jul 2006 09:44:22 -0500 (CDT) Received: from mx2.utdallas.edu ([129.110.10.17]) by localhost (mf2.utdallas.edu [10.110.10.14]) (amavisd-new, port 10024) with LMTP id 15868-01-44 for ; Thu, 6 Jul 2006 09:44:20 -0500 (CDT) Received: from bay0-omc2-s2.bay0.hotmail.com (bay0-omc2-s2.bay0.hotmail.com [65.54.246.138]) by mx2.utdallas.edu (Postfix) with ESMTP id 03907345B for ; Thu, 6 Jul 2006 09:44:19 -0500 (CDT) Received: from hotmail.com ([65.54.161.90]) by bay0-omc2-s2.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.1830); Thu, 6 Jul 2006 07:44:19 -0700 Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Thu, 6 Jul 2006 07:44:19 -0700 Message-ID: Received: from 198.168.153.20 by BAY106-DAV18.phx.gbl with DAV; Thu, 06 Jul 2006 14:44:15 +0000 X-Originating-IP: [198.168.153.20] X-Originating-Email: [alexborgia@hotmail.com] X-Sender: alexborgia@hotmail.com From: "Alexandre Borgia" To: Subject: [encore] Re: Wait For an Action? Date: Thu, 6 Jul 2006 10:47:22 -0400 Message-ID: <000401c6a10b$16d926c0$2ac71fac@CLINFO.MCGILL.CA> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0005_01C6A0E9.8FC786C0" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.6626 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Importance: Normal In-Reply-To: X-OriginalArrivalTime: 06 Jul 2006 14:44:19.0310 (UTC) FILETIME=[A98EF0E0:01C6A10A] X-Virus-Scanned: amavisd-new at utdallas.edu X-archive-position: 1710 X-ecartis-version: Ecartis v1.0.0 Sender: encore-bounce@utdallas.edu Errors-to: encore-bounce@utdallas.edu X-original-sender: alexborgia@hotmail.com Precedence: bulk Reply-to: alexborgia@hotmail.com List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: X-List-ID: X-list: encore This is a multi-part message in MIME format. ------=_NextPart_000_0005_01C6A0E9.8FC786C0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Jean-Marc, =20 You could keep state information in a property on the driver. For = instance, after you talk with the driver set something like "waiting_for_money" to = 1 and fork a process that will check this property again 10 seconds later. = In the meanwhile, if the player decides to give him two pounds set the = property back to 0 and continue with your next actions. When your forked process responds back, make it first check if "waiting_for_money" is still set = to 1 and if so make the driver react as if he had not received the money in = time, else exit the process without doing anything since the driver got the = money and everything is all right. =20 Hope this helps! - Alex =20 =20 -----Original Message----- From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin Sent: Thursday, July 06, 2006 10:06 AM To: encore@utdallas.edu Subject: [encore] Wait For an Action? =20 Hey all! =20 Because of the nature of how I am making the MOO, I have bots that = expect you to give them items. For example, to take a carriage, you have to talk to the driver and then = he asks for 2 pounds. I want to make it so that he waits a bit of time for = you to "give driver 2 pounds", but if you take too long, he'll get annoyed = with you and move on. I was thinking that it would be possible to do a "read(player)", but then (as far as I know) it would take away from = allowing the normal "give" command to take place, since it wouldn't parse the = string. I then thought of making a "fork" or "suspend", but if the suspend was = 10 seconds (for example), and I gave the coins after 2 seconds, I would = have to wait 8 seconds for the driver to respond. Is there a good way to make = the bot wait a certain amount of time for an event, and as soon as it takes place, things continue? =20 Thanks! =20 Jean-Marc Giffin -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: = 30/06/2006 ------=_NextPart_000_0005_01C6A0E9.8FC786C0 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Message

Hi Jean-Marc,

 

You could keep = state information in a property on the driver.  For instance, after you talk with the = driver set something like “waiting_for_money” to 1 and fork a = process that will check this property again 10 seconds later.  In the meanwhile, = if the player decides to give him two pounds set the property back to 0 and = continue with your next actions.  When your forked process responds back, = make it first check if “waiting_for_money” is still set to 1 and if so = make the driver react as if he had not received the money in time, else exit the process without doing anything since the driver got the money and everything is = all right.

 

Hope this helps!

-          Alex

 

 

-----Original = Message-----
From: = encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin
Sent:
Thursday, July 06, 2006 10:06 = AM
To:
encore@utdallas.edu<= /font>
Subject: [encore] Wait = For an Action?

 

Hey = all!

 

Because of the = nature of how I am making the MOO, I have bots that expect you to give them = items.

For example, to = take a carriage, you have to talk to the driver and then he asks for 2 pounds. = I want to make it so that he waits a bit of time for you to “give driver = 2 pounds”, but if you take too long, he’ll get annoyed with = you and move on. I was thinking that it would be possible to do a “read(player)”, but then (as far as I know) it would take = away from allowing the normal “give” command to take place, since it wouldn’t parse the string. I then thought of making a = “fork” or “suspend”, but if the suspend was 10 seconds (for = example), and I gave the coins after 2 seconds, I would have to wait 8 seconds for the = driver to respond. Is there a good way to make the bot wait a certain amount of = time for an event, and as soon as it takes place, things = continue?

 

Thanks!

 

Jean-Marc = Giffin


--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: = 30/06/2006

------=_NextPart_000_0005_01C6A0E9.8FC786C0-- From jean-marc.giffin@acadiau.ca Thu Jul 6 11:47:06 2006 Received: with ECARTIS (v1.0.0; list encore); Thu, 06 Jul 2006 11:47:06 -0500 (CDT) Return-Path: X-Original-To: encore@nobel.utdallas.edu Delivered-To: encore@nobel.utdallas.edu Received: from iq1.utdallas.edu (iq1-pmn.utdallas.edu [192.168.1.7]) by nobel.utdallas.edu (Postfix) with ESMTP id DCBE55BB0 for ; Thu, 6 Jul 2006 11:47:05 -0500 (CDT) Received: from localhost (mf2-pmn.utdallas.edu [192.168.1.14]) by iq1.utdallas.edu (Postfix) with ESMTP id 9F5DB5188 for ; Thu, 6 Jul 2006 11:47:05 -0500 (CDT) Received: from mx2.utdallas.edu ([129.110.10.17]) by localhost (mf2.utdallas.edu [10.110.10.14]) (amavisd-new, port 10024) with LMTP id 29266-01-14 for ; Thu, 6 Jul 2006 11:46:55 -0500 (CDT) Received: from stanley.acadiau.ca (stanley.acadiau.ca [131.162.201.38]) by mx2.utdallas.edu (Postfix) with ESMTP id 21108346D for ; Thu, 6 Jul 2006 11:46:17 -0500 (CDT) Received: from localhost (localhost [127.0.0.1]) by stanley.acadiau.ca (Postfix) with ESMTP id 8544B19BBB2 for ; Thu, 6 Jul 2006 13:46:16 -0300 (ADT) Received: from stanley.acadiau.ca ([127.0.0.1]) by localhost (helios.acadiau.ca [127.0.0.1]) (amavisd-new, port 10026) with LMTP id 15679-01-2 for ; Thu, 6 Jul 2006 13:46:13 -0300 (ADT) Received: from exchange.ad.acadiau.ca (exchange.acadiau.ca [131.162.200.60]) by stanley.acadiau.ca (Postfix) with ESMTP id D12BA19AD0E for ; Thu, 6 Jul 2006 13:46:13 -0300 (ADT) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C6A11B.ABDC7517" Subject: [encore] Re: Wait For an Action? Date: Thu, 6 Jul 2006 13:46:11 -0300 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [encore] Re: Wait For an Action? Thread-Index: AcahCr+j2phZ74rJS7O2IDBtdg18CgAEBvIg From: "Jean-Marc Giffin" To: X-Virus-Scanned: by amavisd-new at acadiau.ca X-Virus-Scanned: amavisd-new at utdallas.edu X-archive-position: 1711 X-ecartis-version: Ecartis v1.0.0 Sender: encore-bounce@utdallas.edu Errors-to: encore-bounce@utdallas.edu X-original-sender: jean-marc.giffin@acadiau.ca Precedence: bulk Reply-to: jean-marc.giffin@acadiau.ca List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: X-List-ID: X-list: encore This is a multi-part message in MIME format. ------_=_NextPart_001_01C6A11B.ABDC7517 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hey Alex, =20 Thanks for the response. However, I have tried what you described, but there's a problem. See, as soon as the "fork" is encountered, all variables within it are what they are when the fork is called, not what they will be once it is executed. So changing the value of "waiting_for_money" after it's been done won't affect the fork at all. The alternative that I've tried is to give the fork a task name, and then kill that task once something is read in: =20 fork complain (15) statements; endfork read =3D read(player); kill_task(complain); =20 This works fine, as long as the user answers before the fork is executed. However, if the user answers after the fork is executed, then it gives an "invalid argument" error, since that task is no longer running. I tried making it conditional, like this: =20 complain =3D 0; fork complain (15) complain =3D 0; statements; endfork read =3D read(player); if (complain) kill_task(complain); endif =20 However, whatever happens within the fork doesn't seem to affect the outside, so this doesn't work either. Is there a built-in command that would quickly check if "complain" is a valid task? Something like: =20 is_running(complain) ? =20 Or any alternatives to what I have been trying? =20 Thanks! =20 Jean-Marc Giffin =20 ________________________________ From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Alexandre Borgia Sent: Thursday, July 06, 2006 11:47 AM To: encore@utdallas.edu Subject: [encore] Re: Wait For an Action? =20 Hi Jean-Marc, =20 You could keep state information in a property on the driver. For instance, after you talk with the driver set something like "waiting_for_money" to 1 and fork a process that will check this property again 10 seconds later. In the meanwhile, if the player decides to give him two pounds set the property back to 0 and continue with your next actions. When your forked process responds back, make it first check if "waiting_for_money" is still set to 1 and if so make the driver react as if he had not received the money in time, else exit the process without doing anything since the driver got the money and everything is all right. =20 Hope this helps! - Alex =20 =20 -----Original Message----- From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin Sent: Thursday, July 06, 2006 10:06 AM To: encore@utdallas.edu Subject: [encore] Wait For an Action? =20 Hey all! =20 Because of the nature of how I am making the MOO, I have bots that expect you to give them items. For example, to take a carriage, you have to talk to the driver and then he asks for 2 pounds. I want to make it so that he waits a bit of time for you to "give driver 2 pounds", but if you take too long, he'll get annoyed with you and move on. I was thinking that it would be possible to do a "read(player)", but then (as far as I know) it would take away from allowing the normal "give" command to take place, since it wouldn't parse the string. I then thought of making a "fork" or "suspend", but if the suspend was 10 seconds (for example), and I gave the coins after 2 seconds, I would have to wait 8 seconds for the driver to respond. Is there a good way to make the bot wait a certain amount of time for an event, and as soon as it takes place, things continue? =20 Thanks! =20 Jean-Marc Giffin -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: 30/06/2006 ------_=_NextPart_001_01C6A11B.ABDC7517 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Message

Hey = Alex,

 

Thanks for the response. However, I = have tried what you described, but there’s a problem. See, as soon as = the “fork” is encountered, all variables within it are what they are when the fork = is called, not what they will be once it is executed. So changing the value = of “waiting_for_money” after it’s been done won’t affect the fork at = all.

The alternative that I’ve = tried is to give the fork a task name, and then kill that task once something is = read in:

 

fork complain = (15)

      =       statements;

endfork

=

read =3D = read(player);

kill_task(complain);

 

This works fine, as long as the = user answers before the fork is executed. However, if the user answers after = the fork is executed, then it gives an “invalid argument” error, = since that task is no longer running.

I tried making it conditional, like = this:

 

complain =3D = 0;

fork complain = (15)

      =       complain =3D = 0;

      =       statements;

endfork

=

read =3D = read(player);

if = (complain)

kill_task(complai= n);

endif

 

However, whatever happens within = the fork doesn’t seem to affect the outside, so this doesn’t work = either.

Is there a built-in command that = would quickly check if “complain” is a valid task? Something = like:

 

is_running(complain) = ?

 

Or any alternatives to what I have = been trying?

 

Thanks!

=

 

Jean-Marc = Giffin

 


From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Alexandre Borgia
Sent: Thursday, July 06, = 2006 11:47 AM
To: = encore@utdallas.edu
Subject: [encore] Re: = Wait For an Action?

 

Hi = Jean-Marc,

 

You could keep = state information in a property on the driver.  For instance, after you = talk with the driver set something like “waiting_for_money” to 1 = and fork a process that will check this property again 10 seconds = later.  In the meanwhile, if the player decides to give him two pounds set the = property back to 0 and continue with your next actions.  When your forked = process responds back, make it first check if “waiting_for_money” is = still set to 1 and if so make the driver react as if he had not received the = money in time, else exit the process without doing anything since the driver got = the money and everything is all right.

 

Hope this = helps!

-          = Alex

 

 

-----Original = Message-----
From: = encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin
Sent: Thursday, July 06, = 2006 10:06 AM
To: = encore@utdallas.edu
Subject: [encore] Wait = For an Action?

 

Hey = all!

 

Because of the = nature of how I am making the MOO, I have bots that expect you to give them = items.

For example, to = take a carriage, you have to talk to the driver and then he asks for 2 pounds. = I want to make it so that he waits a bit of time for you to “give driver = 2 pounds”, but if you take too long, he’ll get annoyed with = you and move on. I was thinking that it would be possible to do a “read(player)”, but then (as far as I know) it would take = away from allowing the normal “give” command to take place, since it wouldn’t parse the string. I then thought of making a = “fork” or “suspend”, but if the suspend was 10 seconds (for = example), and I gave the coins after 2 seconds, I would have to wait 8 seconds for the = driver to respond. Is there a good way to make the bot wait a certain amount of = time for an event, and as soon as it takes place, things = continue?

 

Thanks!

 

Jean-Marc = Giffin


--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: = 30/06/2006

------_=_NextPart_001_01C6A11B.ABDC7517-- From jung@uib.no Thu Jul 6 12:19:02 2006 Received: with ECARTIS (v1.0.0; list encore); Thu, 06 Jul 2006 12:19:03 -0500 (CDT) Return-Path: X-Original-To: encore@nobel.utdallas.edu Delivered-To: encore@nobel.utdallas.edu Received: from iq1.utdallas.edu (iq1-pmn.utdallas.edu [192.168.1.7]) by nobel.utdallas.edu (Postfix) with ESMTP id CDEEC5BB0 for ; Thu, 6 Jul 2006 12:19:02 -0500 (CDT) Received: from localhost (mf2-pmn.utdallas.edu [192.168.1.14]) by iq1.utdallas.edu (Postfix) with ESMTP id B7686518D for ; Thu, 6 Jul 2006 12:19:02 -0500 (CDT) Received: from mx2.utdallas.edu ([129.110.10.17]) by localhost (mf2.utdallas.edu [10.110.10.14]) (amavisd-new, port 10024) with LMTP id 03486-01-12 for ; Thu, 6 Jul 2006 12:18:57 -0500 (CDT) Received: from noralf.uib.no (noralf.uib.no [129.177.30.12]) by mx2.utdallas.edu (Postfix) with ESMTP id 73D37350D for ; Thu, 6 Jul 2006 12:17:13 -0500 (CDT) Received: from alfred.uib.no (smtp.uib.no) [129.177.30.120] by noralf.uib.no for encore@utdallas.edu with esmtp (Exim 4.34) id 1FyXTT-0003xH-Qh; Thu, 06 Jul 2006 19:17:12 +0200 Received: from 117.84-48-30.nextgentel.com ([10.24.104.19]) [84.48.30.117] by smtp.uib.no for encore@utdallas.edu with esmtp (Exim 4.34) id 1FyXTT-0005WU-Ik; Thu, 06 Jul 2006 19:17:11 +0200 Message-ID: <44AD458F.9070804@uib.no> Date: Thu, 06 Jul 2006 19:17:03 +0200 From: Daniel Jung User-Agent: Mozilla Thunderbird 0.8 (Windows/20040913) X-Accept-Language: en-us, en MIME-Version: 1.0 To: encore Subject: [encore] Re: Wait For an Action? References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-checked-clean: by exiscan on noralf X-Scanner: d341b9c8bfd5058a93e8d8222260b430 http://tjinfo.uib.no/virus.html X-UiB-SpamFlag: NO UIB: 0 hits, 8.0 required X-UiB-SpamReport: spamassassin found; X-Virus-Scanned: amavisd-new at utdallas.edu X-Amavis-Alert: BAD HEADER Improper folded header field made up entirely of whitespace in message header 'X-UiB-SpamReport': X-archive-position: 1712 X-ecartis-version: Ecartis v1.0.0 Sender: encore-bounce@utdallas.edu Errors-to: encore-bounce@utdallas.edu X-original-sender: jung@uib.no Precedence: bulk Reply-to: jung@uib.no List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: X-List-ID: X-list: encore Jean-Marc Giffin wrote: > For example, to take a carriage, you have to talk to the driver and then > he asks for 2 pounds. I want to make it so that he waits a bit of time > for you to "give driver 2 pounds", but if you take too long, he'll get > annoyed with you and move on. Like Alex said, the best solution would be to store the value "paid|not paid" into a property. This code below is off the sleeve, NOT tested. It is a mere suggestion for structuring your verb. You need three properties: driver.received_money = 0; driver.busy = 0; driver.max_wait = 10; ******************************************************************** if (this.busy) player:tell("Please wait. There is another customer before you."); else this.received_money = 0; player:tell("Please give me two pounds"); fork() answer = read(player); if (match(answer, "give driver two pounds")) this.received_money = 1; endif endfork t = time(); while (time() - t < this.max_wait && !this.received_money) suspend(1); endwhile if (this.received_money) player:tell("Thanks. The ride begins"); else player:tell("I don't bother waiting any more. Bye."); endif this.received_money = this.busy = 0; endif ******************************************************************** The clue is the while() clause which checks every second if the condition is met, and stops at a given maximum of seconds. HTH - Daniel From jean-marc.giffin@acadiau.ca Thu Jul 6 12:34:20 2006 Received: with ECARTIS (v1.0.0; list encore); Thu, 06 Jul 2006 12:34:21 -0500 (CDT) Return-Path: X-Original-To: encore@nobel.utdallas.edu Delivered-To: encore@nobel.utdallas.edu Received: from iq1.utdallas.edu (iq1-pmn.utdallas.edu [192.168.1.7]) by nobel.utdallas.edu (Postfix) with ESMTP id AA9825BB0 for ; Thu, 6 Jul 2006 12:34:20 -0500 (CDT) Received: from localhost (mf2-pmn.utdallas.edu [192.168.1.14]) by iq1.utdallas.edu (Postfix) with ESMTP id 81DD2453C for ; Thu, 6 Jul 2006 12:34:20 -0500 (CDT) Received: from mx2.utdallas.edu ([129.110.10.17]) by localhost (mf2.utdallas.edu [10.110.10.14]) (amavisd-new, port 10024) with LMTP id 03611-01-66 for ; Thu, 6 Jul 2006 12:34:13 -0500 (CDT) Received: from stanley.acadiau.ca (stanley.acadiau.ca [131.162.201.38]) by mx2.utdallas.edu (Postfix) with ESMTP id 1F6FB34A6 for ; Thu, 6 Jul 2006 12:32:57 -0500 (CDT) Received: from localhost (localhost [127.0.0.1]) by stanley.acadiau.ca (Postfix) with ESMTP id 555C319BC54 for ; Thu, 6 Jul 2006 14:32:56 -0300 (ADT) Received: from stanley.acadiau.ca ([127.0.0.1]) by localhost (helios.acadiau.ca [127.0.0.1]) (amavisd-new, port 10026) with LMTP id 24508-01-5 for ; Thu, 6 Jul 2006 14:32:54 -0300 (ADT) Received: from exchange.ad.acadiau.ca (exchange.acadiau.ca [131.162.200.60]) by stanley.acadiau.ca (Postfix) with ESMTP id 3F24619BB61 for ; Thu, 6 Jul 2006 14:32:54 -0300 (ADT) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Subject: [encore] Re: Wait For an Action? Date: Thu, 6 Jul 2006 14:32:58 -0300 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [encore] Re: Wait For an Action? Thread-Index: AcahIGTBGSzaJFvOSPGgkXceodF6wQAAVe4g From: "Jean-Marc Giffin" To: "encore" X-Virus-Scanned: by amavisd-new at acadiau.ca X-Virus-Scanned: amavisd-new at utdallas.edu X-archive-position: 1713 X-ecartis-version: Ecartis v1.0.0 Sender: encore-bounce@utdallas.edu Errors-to: encore-bounce@utdallas.edu X-original-sender: jean-marc.giffin@acadiau.ca Precedence: bulk Reply-to: jean-marc.giffin@acadiau.ca List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: X-List-ID: X-list: encore Thanks for the reply, this method seems to run a lot more smoothly. By the way, before I do a bunch of extra work, is there already an implementation of a quantity item? By that I mean, the way the MOO is set up is that a "shovel" is a shovel object, and a "cat" is a cat object, but if I wanted to have a certain amount of money that I could transfer to another player, or bot, is there a quantity item system already set up to do that? That way all that really changes is the amount that each player has... the difficulty I'm facing is the parsing of giving, since it expects: give thing to whoever But we want: give amount thing to whoever. Any ideas? I have a few if I have to do it myself, but no need if it already exists. Thanks, Jean-Marc Giffin -----Original Message----- From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Daniel Jung Sent: Thursday, July 06, 2006 2:17 PM To: encore Subject: [encore] Re: Wait For an Action? Jean-Marc Giffin wrote: > For example, to take a carriage, you have to talk to the driver and then > he asks for 2 pounds. I want to make it so that he waits a bit of time > for you to "give driver 2 pounds", but if you take too long, he'll get > annoyed with you and move on.=20 Like Alex said, the best solution would be to store the value "paid|not=20 paid" into a property. This code below is off the sleeve, NOT tested. It is a mere suggestion=20 for structuring your verb. You need three properties: driver.received_money =3D 0; driver.busy =3D 0; driver.max_wait =3D 10; ******************************************************************** if (this.busy) player:tell("Please wait. There is another customer before you."); else this.received_money =3D 0; player:tell("Please give me two pounds"); fork() answer =3D read(player); if (match(answer, "give driver two pounds")) this.received_money =3D 1; endif endfork t =3D time(); while (time() - t < this.max_wait && !this.received_money) suspend(1); endwhile if (this.received_money) player:tell("Thanks. The ride begins"); else player:tell("I don't bother waiting any more. Bye."); endif this.received_money =3D this.busy =3D 0; endif ******************************************************************** The clue is the while() clause which checks every second if the=20 condition is met, and stops at a given maximum of seconds. HTH - Daniel From alexborgia@hotmail.com Thu Jul 6 12:36:04 2006 Received: with ECARTIS (v1.0.0; list encore); Thu, 06 Jul 2006 12:36:04 -0500 (CDT) Return-Path: X-Original-To: encore@nobel.utdallas.edu Delivered-To: encore@nobel.utdallas.edu Received: from iq1.utdallas.edu (iq1-pmn.utdallas.edu [192.168.1.7]) by nobel.utdallas.edu (Postfix) with ESMTP id 8CEE65BB0 for ; Thu, 6 Jul 2006 12:36:04 -0500 (CDT) Received: from localhost (mf2-pmn.utdallas.edu [192.168.1.14]) by iq1.utdallas.edu (Postfix) with ESMTP id 5A24E476D for ; Thu, 6 Jul 2006 12:36:04 -0500 (CDT) Received: from mx2.utdallas.edu ([129.110.10.17]) by localhost (mf2.utdallas.edu [10.110.10.14]) (amavisd-new, port 10024) with LMTP id 03611-01-80 for ; Thu, 6 Jul 2006 12:35:52 -0500 (CDT) Received: from bay0-omc1-s15.bay0.hotmail.com (bay0-omc1-s15.bay0.hotmail.com [65.54.246.87]) by mx2.utdallas.edu (Postfix) with ESMTP id D4B5D3506 for ; Thu, 6 Jul 2006 12:34:41 -0500 (CDT) Received: from hotmail.com ([65.54.161.77]) by bay0-omc1-s15.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.1830); Thu, 6 Jul 2006 10:34:41 -0700 Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Thu, 6 Jul 2006 10:34:41 -0700 Message-ID: Received: from 198.168.153.20 by BAY106-DAV5.phx.gbl with DAV; Thu, 06 Jul 2006 17:34:39 +0000 X-Originating-IP: [198.168.153.20] X-Originating-Email: [alexborgia@hotmail.com] X-Sender: alexborgia@hotmail.com From: "Alexandre Borgia" To: Subject: [encore] Re: Wait For an Action? Date: Thu, 6 Jul 2006 13:37:57 -0400 Message-ID: <000f01c6a122$eb1b6940$2ac71fac@CLINFO.MCGILL.CA> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0010_01C6A101.6409C940" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.6626 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Importance: Normal In-Reply-To: X-OriginalArrivalTime: 06 Jul 2006 17:34:41.0059 (UTC) FILETIME=[76320F30:01C6A122] X-Virus-Scanned: amavisd-new at utdallas.edu X-archive-position: 1714 X-ecartis-version: Ecartis v1.0.0 Sender: encore-bounce@utdallas.edu Errors-to: encore-bounce@utdallas.edu X-original-sender: alexborgia@hotmail.com Precedence: bulk Reply-to: alexborgia@hotmail.com List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: X-List-ID: X-list: encore This is a multi-part message in MIME format. ------=_NextPart_000_0010_01C6A101.6409C940 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi again, =20 Ops, maybe I didn't emphasize enough, but I meant "waiting_for_money" to be a property on your object, not a local = variable - this way you'll be able to share the value between different tasks. For exemple, the code that triggers the wait could look like this: =20 this.waiting_for_money =3D 1; =20 suspend(15); if (this.waiting_for_money) player has still not given the money - do something interesting! else player has given the money - nothing to do here end if =20 =20 . then create another verb that the player can use to give = the money. This verb should set the "waiting_for_money" property to 0. =20 =20 -----Original Message----- From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin Sent: Thursday, July 06, 2006 12:46 PM To: encore@utdallas.edu Subject: [encore] Re: Wait For an Action? =20 Hey Alex, =20 Thanks for the response. However, I have tried what you described, but there's a problem. See, as soon as the "fork" is encountered, all = variables within it are what they are when the fork is called, not what they will = be once it is executed. So changing the value of "waiting_for_money" after = it's been done won't affect the fork at all. The alternative that I've tried is to give the fork a task name, and = then kill that task once something is read in: =20 fork complain (15) statements; endfork read =3D read(player); kill_task(complain); =20 This works fine, as long as the user answers before the fork is = executed. However, if the user answers after the fork is executed, then it gives = an "invalid argument" error, since that task is no longer running. I tried making it conditional, like this: =20 complain =3D 0; fork complain (15) complain =3D 0; statements; endfork read =3D read(player); if (complain) kill_task(complain); endif =20 However, whatever happens within the fork doesn't seem to affect the outside, so this doesn't work either. Is there a built-in command that would quickly check if "complain" is a valid task? Something like: =20 is_running(complain) ? =20 Or any alternatives to what I have been trying? =20 Thanks! =20 Jean-Marc Giffin =20 _____ =20 From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Alexandre Borgia Sent: Thursday, July 06, 2006 11:47 AM To: encore@utdallas.edu Subject: [encore] Re: Wait For an Action? =20 Hi Jean-Marc, =20 You could keep state information in a property on the driver. For = instance, after you talk with the driver set something like "waiting_for_money" to = 1 and fork a process that will check this property again 10 seconds later. = In the meanwhile, if the player decides to give him two pounds set the = property back to 0 and continue with your next actions. When your forked process responds back, make it first check if "waiting_for_money" is still set = to 1 and if so make the driver react as if he had not received the money in = time, else exit the process without doing anything since the driver got the = money and everything is all right. =20 Hope this helps! - Alex =20 =20 -----Original Message----- From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin Sent: Thursday, July 06, 2006 10:06 AM To: encore@utdallas.edu Subject: [encore] Wait For an Action? =20 Hey all! =20 Because of the nature of how I am making the MOO, I have bots that = expect you to give them items. For example, to take a carriage, you have to talk to the driver and then = he asks for 2 pounds. I want to make it so that he waits a bit of time for = you to "give driver 2 pounds", but if you take too long, he'll get annoyed = with you and move on. I was thinking that it would be possible to do a "read(player)", but then (as far as I know) it would take away from = allowing the normal "give" command to take place, since it wouldn't parse the = string. I then thought of making a "fork" or "suspend", but if the suspend was = 10 seconds (for example), and I gave the coins after 2 seconds, I would = have to wait 8 seconds for the driver to respond. Is there a good way to make = the bot wait a certain amount of time for an event, and as soon as it takes place, things continue? =20 Thanks! =20 Jean-Marc Giffin -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: = 30/06/2006 ------=_NextPart_000_0010_01C6A101.6409C940 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Message

Hi again,

 

      =       Ops, maybe I didn’t emphasize enough, but I meant = “waiting_for_money” to be a property on your object, not a local variable – this way = you’ll be able to share the value between different tasks.  For exemple, = the code that triggers the wait could look like this:

 

      =       this.waiting_for_money =3D 1;

 

      =       suspend(15);

      =       if (this.waiting_for_money)

player has still not given the money – do something interesting!

      =       else

player has given the money – nothing to do = here

end = if

 

 

      =       … then create another verb that the player can use to give the = money.  This verb should set the “waiting_for_money” property to = 0.

 

 

-----Original = Message-----
From: = encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin
Sent:
Thursday, July 06, 2006 12:46 = PM
To:
encore@utdallas.edu<= /font>
Subject: [encore] Re: = Wait For an Action?

 

Hey = Alex,

 

Thanks for the = response. However, I have tried what you described, but there’s a problem. = See, as soon as the “fork” is encountered, all variables within it = are what they are when the fork is called, not what they will be once it is = executed. So changing the value of “waiting_for_money” after it’s = been done won’t affect the fork at all.

The alternative = that I’ve tried is to give the fork a task name, and then kill that = task once something is read in:

 

fork complain = (15)

   = ;         statements;

endfork

read =3D = read(player);

kill_task(complai= n);

 

This works fine, = as long as the user answers before the fork is executed. However, if the user = answers after the fork is executed, then it gives an “invalid = argument” error, since that task is no longer running.

I tried making = it conditional, like this:

 

complain =3D = 0;

fork complain = (15)

   = ;         complain =3D 0;

   = ;         statements;

endfork

read =3D = read(player);

if = (complain)

kill_task(complain);

endif

 

However, = whatever happens within the fork doesn’t seem to affect the outside, so this = doesn’t work either.

Is there a = built-in command that would quickly check if “complain” is a valid = task? Something like:

 

is_running(compla= in) ?

 

Or any = alternatives to what I have been trying?

 

Thanks!

 

Jean-Marc = Giffin

 


From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Alexandre Borgia
Sent: Thursday, July 06, = 2006 11:47 AM
To: = encore@utdallas.edu
Subject: [encore] Re: = Wait For an Action?

 

Hi = Jean-Marc,

 

You could keep state information in a property on the = driver.  For instance, after you talk with the driver set something like “waiting_for_money” to 1 and fork a process that will check = this property again 10 seconds later.  In the meanwhile, if the player = decides to give him two pounds set the property back to 0 and continue with your = next actions.  When your forked process responds back, make it first = check if “waiting_for_money” is still set to 1 and if so make the = driver react as if he had not received the money in time, else exit the process without doing anything since the driver got the money and everything is = all right.

 

Hope this = helps!

-          = Alex

 

 

-----Original = Message-----
From: = encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin
Sent: Thursday, July 06, = 2006 10:06 AM
To: = encore@utdallas.edu
Subject: [encore] Wait = For an Action?

 

Hey = all!

 

Because of the nature of how I am making the MOO, I have bots that expect you to = give them items.

For example, to take a carriage, you have to talk to the driver and then he = asks for 2 pounds. I want to make it so that he waits a bit of time for you = to “give driver 2 pounds”, but if you take too long, = he’ll get annoyed with you and move on. I was thinking that it would be possible to do a “read(player)”, but then (as far as I know) it would take = away from allowing the normal “give” command to take place, since it wouldn’t parse the string. I then thought of making a = “fork” or “suspend”, but if the suspend was 10 seconds (for = example), and I gave the coins after 2 seconds, I would have to wait 8 seconds for the = driver to respond. Is there a good way to make the bot wait a certain amount of = time for an event, and as soon as it takes place, things = continue?

 

Thanks!

 

Jean-Marc Giffin


--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: = 30/06/2006

------=_NextPart_000_0010_01C6A101.6409C940-- From jung@uib.no Thu Jul 6 12:38:01 2006 Received: with ECARTIS (v1.0.0; list encore); Thu, 06 Jul 2006 12:38:01 -0500 (CDT) Return-Path: X-Original-To: encore@nobel.utdallas.edu Delivered-To: encore@nobel.utdallas.edu Received: from iq1.utdallas.edu (iq1-pmn.utdallas.edu [192.168.1.7]) by nobel.utdallas.edu (Postfix) with ESMTP id 7ABA15BB0 for ; Thu, 6 Jul 2006 12:38:01 -0500 (CDT) Received: from localhost (mf2-pmn.utdallas.edu [192.168.1.14]) by iq1.utdallas.edu (Postfix) with ESMTP id 3F35E484A for ; Thu, 6 Jul 2006 12:38:01 -0500 (CDT) Received: from mx2.utdallas.edu ([129.110.10.17]) by localhost (mf2.utdallas.edu [10.110.10.14]) (amavisd-new, port 10024) with LMTP id 04889-01-57 for ; Thu, 6 Jul 2006 12:37:55 -0500 (CDT) Received: from noralf.uib.no (noralf.uib.no [129.177.30.12]) by mx2.utdallas.edu (Postfix) with ESMTP id 3E61A34FD for ; Thu, 6 Jul 2006 12:37:10 -0500 (CDT) Received: from alfred.uib.no (smtp.uib.no) [129.177.30.120] by noralf.uib.no for encore@utdallas.edu with esmtp (Exim 4.34) id 1FyXmn-0005IW-0O; Thu, 06 Jul 2006 19:37:09 +0200 Received: from 117.84-48-30.nextgentel.com ([10.24.104.19]) [84.48.30.117] by smtp.uib.no for encore@utdallas.edu with esmtp (Exim 4.34) id 1FyXmm-0005Xz-PO; Thu, 06 Jul 2006 19:37:08 +0200 Message-ID: <44AD4A3C.70001@uib.no> Date: Thu, 06 Jul 2006 19:37:00 +0200 From: Daniel Jung User-Agent: Mozilla Thunderbird 0.8 (Windows/20040913) X-Accept-Language: en-us, en MIME-Version: 1.0 To: encore Subject: [encore] Re: Wait For an Action? References: <44AD458F.9070804@uib.no> In-Reply-To: <44AD458F.9070804@uib.no> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-checked-clean: by exiscan on noralf X-Scanner: 107e3cceb91571ef1f8a3561d5748acd http://tjinfo.uib.no/virus.html X-UiB-SpamFlag: NO UIB: 0 hits, 8.0 required X-UiB-SpamReport: spamassassin found; X-Virus-Scanned: amavisd-new at utdallas.edu X-Amavis-Alert: BAD HEADER Improper folded header field made up entirely of whitespace in message header 'X-UiB-SpamReport': X-archive-position: 1715 X-ecartis-version: Ecartis v1.0.0 Sender: encore-bounce@utdallas.edu Errors-to: encore-bounce@utdallas.edu X-original-sender: jung@uib.no Precedence: bulk Reply-to: jung@uib.no List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: X-List-ID: X-list: encore Daniel Jung wrote: I suggested > fork() > answer = read(player); > if (match(answer, "give driver two pounds")) > this.received_money = 1; > endif > endfork Addendum: The read() builtin stops automatically after two minutes (I think). Of course, this is too long, and could mess up the workings when another customer comes after the ten seconds have elapsed and before the two minutes are completed. So you probably should insert a counter (or even better: a simple check) inside the fork as well, like the counter on the outside. Then kill the read(), if it's still active, or let it run, but without setting the properties. E.g., if (match(answer, "give driver two pounds") && time() - t < this.max_waiting) this.received_money = 1; endif HTH - Daniel From kevijeps@telusplanet.net Thu Jul 6 12:57:47 2006 Received: with ECARTIS (v1.0.0; list encore); Thu, 06 Jul 2006 12:57:47 -0500 (CDT) Return-Path: X-Original-To: encore@nobel.utdallas.edu Delivered-To: encore@nobel.utdallas.edu Received: from iq1.utdallas.edu (iq1-pmn.utdallas.edu [192.168.1.7]) by nobel.utdallas.edu (Postfix) with ESMTP id 6F8A95BB0 for ; Thu, 6 Jul 2006 12:57:47 -0500 (CDT) Received: from localhost (mf2-pmn.utdallas.edu [192.168.1.14]) by iq1.utdallas.edu (Postfix) with ESMTP id 1D62A50DD for ; Thu, 6 Jul 2006 12:57:47 -0500 (CDT) Received: from mx2.utdallas.edu ([129.110.10.17]) by localhost (mf2.utdallas.edu [10.110.10.14]) (amavisd-new, port 10024) with LMTP id 06551-01-23 for ; Thu, 6 Jul 2006 12:57:43 -0500 (CDT) Received: from defout.telus.net (defout.telus.net [199.185.220.240]) by mx2.utdallas.edu (Postfix) with ESMTP id 227943434 for ; Thu, 6 Jul 2006 12:57:42 -0500 (CDT) Received: from priv-edtnaa05.telusplanet.net ([199.126.223.252]) by priv-edtnes86.telusplanet.net (InterMail vM.7.05.01.01 201-2174-106-103-20060222) with ESMTP id <20060706175741.PGOB8051.priv-edtnes86.telusplanet.net@priv-edtnaa05.telusplanet.net>; Thu, 6 Jul 2006 11:57:41 -0600 Received: from lilith (d199-126-223-252.abhsia.telus.net [199.126.223.252]) by priv-edtnaa05.telusplanet.net (BorderWare MXtreme Infinity Mail Firewall) with ESMTP id F1QHDMKESQ; Thu, 6 Jul 2006 11:57:34 -0600 (MDT) From: "Kevin Jepson" To: , Subject: [encore] Re: Wait For an Action? Date: Thu, 6 Jul 2006 11:57:24 -0600 Message-ID: <004b01c6a125$a9995ce0$5a0119ac@lilith> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_004C_01C6A0F3.5EFEECE0" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.6626 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Importance: Normal In-Reply-To: X-Virus-Scanned: amavisd-new at utdallas.edu X-archive-position: 1716 X-ecartis-version: Ecartis v1.0.0 Sender: encore-bounce@utdallas.edu Errors-to: encore-bounce@utdallas.edu X-original-sender: kevijeps@telusplanet.net Precedence: bulk Reply-to: kevijeps@telusplanet.net List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: X-List-ID: X-list: encore This is a multi-part message in MIME format. ------=_NextPart_000_004C_01C6A0F3.5EFEECE0 Content-Type: text/plain; charset="windows-1250" Content-Transfer-Encoding: quoted-printable Jean-Marc Variables only exist while a verb is executing, ie they are temporary = and onlyvisible tothat verb code. Therfore don't use a "variable", which only exists during the lifetime = of a verb/task, if you want info to be persistent. That is why Alex suggested using a Property which is persistent on the object regardless of which verbs are running. Check out the LambdaMoo Programming manual for more info. Ciao KJ -----Original Message----- From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin Sent: July 6, 2006 10:46 AM To: encore@utdallas.edu Subject: [encore] Re: Wait For an Action? Hey Alex, =20 Thanks for the response. However, I have tried what you described, but there=92s a problem. See, as soon as the =93fork=94 is encountered, all = variables within it are what they are when the fork is called, not what they will = be once it is executed. So changing the value of =93waiting_for_money=94 = after it=92s been done won=92t affect the fork at all. The alternative that I=92ve tried is to give the fork a task name, and = then kill that task once something is read in: =20 fork complain (15) statements; endfork read =3D read(player); kill_task(complain); =20 This works fine, as long as the user answers before the fork is = executed. However, if the user answers after the fork is executed, then it gives = an =93invalid argument=94 error, since that task is no longer running. I tried making it conditional, like this: =20 complain =3D 0; fork complain (15) complain =3D 0; statements; endfork read =3D read(player); if (complain) kill_task(complain); endif =20 However, whatever happens within the fork doesn=92t seem to affect the outside, so this doesn=92t work either. Is there a built-in command that would quickly check if =93complain=94 = is a valid task? Something like: =20 is_running(complain) ? =20 Or any alternatives to what I have been trying? =20 Thanks! =20 Jean-Marc Giffin =20 _____ =20 From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Alexandre Borgia Sent: Thursday, July 06, 2006 11:47 AM To: encore@utdallas.edu Subject: [encore] Re: Wait For an Action? =20 Hi Jean-Marc, =20 You could keep state information in a property on the driver. For = instance, after you talk with the driver set something like = =93waiting_for_money=94 to 1 and fork a process that will check this property again 10 seconds later. = In the meanwhile, if the player decides to give him two pounds set the = property back to 0 and continue with your next actions. When your forked process responds back, make it first check if =93waiting_for_money=94 is still = set to 1 and if so make the driver react as if he had not received the money in = time, else exit the process without doing anything since the driver got the = money and everything is all right. =20 Hope this helps! - Alex =20 =20 -----Original Message----- From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin Sent: Thursday, July 06, 2006 10:06 AM To: encore@utdallas.edu Subject: [encore] Wait For an Action? =20 Hey all! =20 Because of the nature of how I am making the MOO, I have bots that = expect you to give them items. For example, to take a carriage, you have to talk to the driver and then = he asks for 2 pounds. I want to make it so that he waits a bit of time for = you to =93give driver 2 pounds=94, but if you take too long, he=92ll get = annoyed with you and move on. I was thinking that it would be possible to do a =93read(player)=94, but then (as far as I know) it would take away from = allowing the normal =93give=94 command to take place, since it wouldn=92t parse = the string. I then thought of making a =93fork=94 or =93suspend=94, but if the = suspend was 10 seconds (for example), and I gave the coins after 2 seconds, I would = have to wait 8 seconds for the driver to respond. Is there a good way to make = the bot wait a certain amount of time for an event, and as soon as it takes place, things continue? =20 Thanks! =20 Jean-Marc Giffin -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: = 30/06/2006 -- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.9/382 - Release Date: = 04/07/2006 --=20 No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.9/382 - Release Date: = 04/07/2006 =20 ------=_NextPart_000_004C_01C6A0F3.5EFEECE0 Content-Type: text/html; charset="windows-1250" Content-Transfer-Encoding: quoted-printable Message
Jean-Marc
Variables only exist while a verb is executing, ie they are = temporary and=20 onlyvisible tothat verb code.
Therfore don't use a "variable", which only exists during the = lifetime of=20 a verb/task, if you want info to be persistent.
That=20 is why Alex suggested using a Property which is persistent on the object = regardless of which verbs are running.
Check=20 out the LambdaMoo Programming manual for more info.
Ciao
KJ
-----Original Message-----
From:=20 encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On = Behalf Of=20 Jean-Marc Giffin
Sent: July 6, 2006 10:46 = AM
To:=20 encore@utdallas.edu
Subject: [encore] Re: Wait For an=20 Action?

Hey=20 Alex,

 

Thanks for = the=20 response. However, I have tried what you described, but there=92s a = problem.=20 See, as soon as the =93fork=94 is encountered, all variables within it = are what=20 they are when the fork is called, not what they will be once it is = executed.=20 So changing the value of =93waiting_for_money=94 after it=92s been = done won=92t affect=20 the fork at all.

The = alternative that=20 I=92ve tried is to give the fork a task name, and then kill that task = once=20 something is read in:

 

fork = complain=20 (15)

           = =20 statements;

endfork

read =3D=20 read(player);

kill_task(complain);

 

This works = fine, as=20 long as the user answers before the fork is executed. However, if the = user=20 answers after the fork is executed, then it gives an =93invalid = argument=94 error,=20 since that task is no longer running.

I tried = making it=20 conditional, like this:

 

complain = =3D=20 0;

fork = complain=20 (15)

           = =20 complain =3D 0;

           = =20 statements;

endfork

read =3D=20 read(player);

if=20 (complain)

kill_task(complain);

endif

 

However, = whatever=20 happens within the fork doesn=92t seem to affect the outside, so this = doesn=92t=20 work either.

Is there a = built-in=20 command that would quickly check if =93complain=94 is a valid task? = Something=20 like:

 

is_running(complain)=20 ?

 

Or any = alternatives=20 to what I have been trying?

 

Thanks!

 

Jean-Marc=20 Giffin

 


From:=20 encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] = On Behalf Of Alexandre = Borgia
Sent: Thursday, July 06, 2006 = 11:47=20 AM
To:=20 encore@utdallas.edu
Subject:=20 [encore] Re: Wait For an Action?

 

Hi=20 Jean-Marc,

 

You=20 could keep state information in a property on the driver.  For = instance,=20 after you talk with the driver set something like = =93waiting_for_money=94 to 1 and=20 fork a process that will check this property again 10 seconds = later.  In=20 the meanwhile, if the player decides to give him two pounds set the = property=20 back to 0 and continue with your next actions.  When your forked = process=20 responds back, make it first check if =93waiting_for_money=94 is still = set to 1=20 and if so make the driver react as if he had not received the money in = time,=20 else exit the process without doing anything since the driver got the = money=20 and everything is all right.

 

Hope this=20 helps!

-         =20 Alex

 

 

-----Original=20 Message-----
From:=20 encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] = On Behalf Of Jean-Marc = Giffin
Sent: Thursday, July 06, 2006 = 10:06=20 AM
To:=20 encore@utdallas.edu
Subject:=20 [encore] Wait For an Action?

 

Hey=20 all!

 

Because=20 of the nature of how I am making the MOO, I have bots that expect you = to give=20 them items.

For=20 example, to take a carriage, you have to talk to the driver and then = he asks=20 for 2 pounds. I want to make it so that he waits a bit of time for you = to=20 =93give driver 2 pounds=94, but if you take too long, he=92ll get = annoyed with you=20 and move on. I was thinking that it would be possible to do a = =93read(player)=94,=20 but then (as far as I know) it would take away from allowing the = normal =93give=94=20 command to take place, since it wouldn=92t parse the string. I then = thought of=20 making a =93fork=94 or =93suspend=94, but if the suspend was 10 = seconds (for example),=20 and I gave the coins after 2 seconds, I would have to wait 8 seconds = for the=20 driver to respond. Is there a good way to make the bot wait a certain = amount=20 of time for an event, and as soon as it takes place, things=20 continue?

 

Thanks!

 

Jean-Marc=20 Giffin


--
No virus found in this outgoing = message.
Checked by=20 AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.9.8/380 - = Release=20 Date: 30/06/2006


--
No virus found in this incoming = message.
Checked by=20 AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.9.9/382 - = Release=20 Date: 04/07/2006


--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.9.9/382 - Release Date: = 04/07/2006

------=_NextPart_000_004C_01C6A0F3.5EFEECE0-- From jean-marc.giffin@acadiau.ca Thu Jul 6 13:00:07 2006 Received: with ECARTIS (v1.0.0; list encore); Thu, 06 Jul 2006 13:00:07 -0500 (CDT) Return-Path: X-Original-To: encore@nobel.utdallas.edu Delivered-To: encore@nobel.utdallas.edu Received: from iq1.utdallas.edu (iq1-pmn.utdallas.edu [192.168.1.7]) by nobel.utdallas.edu (Postfix) with ESMTP id 1D1EB5BB0 for ; Thu, 6 Jul 2006 13:00:07 -0500 (CDT) Received: from localhost (mf2-pmn.utdallas.edu [192.168.1.14]) by iq1.utdallas.edu (Postfix) with ESMTP id E1A8F20F1 for ; Thu, 6 Jul 2006 13:00:06 -0500 (CDT) Received: from mx2.utdallas.edu ([129.110.10.17]) by localhost (mf2.utdallas.edu [10.110.10.14]) (amavisd-new, port 10024) with LMTP id 06551-01-38 for ; Thu, 6 Jul 2006 12:59:55 -0500 (CDT) Received: from stanley.acadiau.ca (stanley.acadiau.ca [131.162.201.38]) by mx2.utdallas.edu (Postfix) with ESMTP id E8E5E3430 for ; Thu, 6 Jul 2006 12:59:54 -0500 (CDT) Received: from localhost (localhost [127.0.0.1]) by stanley.acadiau.ca (Postfix) with ESMTP id 49C6519BB52 for ; Thu, 6 Jul 2006 14:59:54 -0300 (ADT) Received: from stanley.acadiau.ca ([127.0.0.1]) by localhost (helios.acadiau.ca [127.0.0.1]) (amavisd-new, port 10026) with LMTP id 27776-01-4 for ; Thu, 6 Jul 2006 14:59:51 -0300 (ADT) Received: from exchange.ad.acadiau.ca (exchange.acadiau.ca [131.162.200.60]) by stanley.acadiau.ca (Postfix) with ESMTP id 90B9719ACE9 for ; Thu, 6 Jul 2006 14:59:51 -0300 (ADT) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C6A125.F00BC408" Subject: [encore] Re: Wait For an Action? Date: Thu, 6 Jul 2006 14:59:44 -0300 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [encore] Re: Wait For an Action? Thread-Index: AcahJbwgu/oiznihSkiNwr47OOhnTgAAB3yw From: "Jean-Marc Giffin" To: X-Virus-Scanned: by amavisd-new at acadiau.ca X-Virus-Scanned: amavisd-new at utdallas.edu X-archive-position: 1717 X-ecartis-version: Ecartis v1.0.0 Sender: encore-bounce@utdallas.edu Errors-to: encore-bounce@utdallas.edu X-original-sender: jean-marc.giffin@acadiau.ca Precedence: bulk Reply-to: jean-marc.giffin@acadiau.ca List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: X-List-ID: X-list: encore This is a multi-part message in MIME format. ------_=_NextPart_001_01C6A125.F00BC408 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hey, =20 Sorry, what I said was misleading. I actually did mean an object's property, not a variable. =20 Thanks, =20 Jean-Marc Giffin =20 ________________________________ From: Kevin Jepson [mailto:kevijeps@telusplanet.net]=20 Sent: Thursday, July 06, 2006 2:57 PM To: jean-marc.giffin@acadiau.ca; encore@utdallas.edu Subject: RE: [encore] Re: Wait For an Action? =20 Jean-Marc Variables only exist while a verb is executing, ie they are temporary and onlyvisible tothat verb code. Therfore don't use a "variable", which only exists during the lifetime of a verb/task, if you want info to be persistent. That is why Alex suggested using a Property which is persistent on the object regardless of which verbs are running. Check out the LambdaMoo Programming manual for more info. Ciao KJ -----Original Message----- From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin Sent: July 6, 2006 10:46 AM To: encore@utdallas.edu Subject: [encore] Re: Wait For an Action? Hey Alex, =20 Thanks for the response. However, I have tried what you described, but there's a problem. See, as soon as the "fork" is encountered, all variables within it are what they are when the fork is called, not what they will be once it is executed. So changing the value of "waiting_for_money" after it's been done won't affect the fork at all. The alternative that I've tried is to give the fork a task name, and then kill that task once something is read in: =20 fork complain (15) statements; endfork read =3D read(player); kill_task(complain); =20 This works fine, as long as the user answers before the fork is executed. However, if the user answers after the fork is executed, then it gives an "invalid argument" error, since that task is no longer running. I tried making it conditional, like this: =20 complain =3D 0; fork complain (15) complain =3D 0; statements; endfork read =3D read(player); if (complain) kill_task(complain); endif =20 However, whatever happens within the fork doesn't seem to affect the outside, so this doesn't work either. Is there a built-in command that would quickly check if "complain" is a valid task? Something like: =20 is_running(complain) ? =20 Or any alternatives to what I have been trying? =20 Thanks! =20 Jean-Marc Giffin =20 =09 ________________________________ From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Alexandre Borgia Sent: Thursday, July 06, 2006 11:47 AM To: encore@utdallas.edu Subject: [encore] Re: Wait For an Action? =20 Hi Jean-Marc, =20 You could keep state information in a property on the driver. For instance, after you talk with the driver set something like "waiting_for_money" to 1 and fork a process that will check this property again 10 seconds later. In the meanwhile, if the player decides to give him two pounds set the property back to 0 and continue with your next actions. When your forked process responds back, make it first check if "waiting_for_money" is still set to 1 and if so make the driver react as if he had not received the money in time, else exit the process without doing anything since the driver got the money and everything is all right. =20 Hope this helps! - Alex =20 =20 -----Original Message----- From: encore-bounce@utdallas.edu [mailto:encore-bounce@utdallas.edu] On Behalf Of Jean-Marc Giffin Sent: Thursday, July 06, 2006 10:06 AM To: encore@utdallas.edu Subject: [encore] Wait For an Action? =20 Hey all! =20 Because of the nature of how I am making the MOO, I have bots that expect you to give them items. For example, to take a carriage, you have to talk to the driver and then he asks for 2 pounds. I want to make it so that he waits a bit of time for you to "give driver 2 pounds", but if you take too long, he'll get annoyed with you and move on. I was thinking that it would be possible to do a "read(player)", but then (as far as I know) it would take away from allowing the normal "give" command to take place, since it wouldn't parse the string. I then thought of making a "fork" or "suspend", but if the suspend was 10 seconds (for example), and I gave the coins after 2 seconds, I would have to wait 8 seconds for the driver to respond. Is there a good way to make the bot wait a certain amount of time for an event, and as soon as it takes place, things continue? =20 Thanks! =20 Jean-Marc Giffin =20 -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.8/380 - Release Date: 30/06/2006 =20 -- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.9/382 - Release Date: 04/07/2006 -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.9/382 - Release Date: 04/07/2006 ------_=_NextPart_001_01C6A125.F00BC408 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Message

Hey,