|
Gwaethiel Beginner
Joined: 23 Feb 2011 Posts: 13
|
Posted: Wed Mar 14, 2012 11:53 am
Help with #waitfor |
Hi!
When i'm playing on zMUD i have script which look, f.e.:
Quote: |
[...]
sd
#wa %random(7000, 8534)
n
sd
#wa %random(7000, 8534)
ne
sd
#wa %random(7000, 8534)
e
sd
[...]
|
Where 'sd' is alias with search something and it's take about 7seconds, and after waiting 7-8,5s it send next command to mud.
I found #WAITFOR in cMud and i want to improve my script with it, but i don't know how i must change my script with #wait to #waitfor.
After sd MUD can send me messages:
Znajdujesz (*)
Szukasz wszedzie, ale nie znajdujesz zadnych ziol.
Nie udaje ci sie znalezc niczego interesujacego.
Nie znajdujesz zadnych ziol.
I though to change
Quote: |
sd
#wa %random(7000, 8534)
w
sd
|
to
Quote: |
sd
#WAITFOR {Znajdujesz (*)|Szukasz wszedzie, ale nie znajdujesz zadnych ziol.|Nie znajdujesz zadnych ziol.|Nie udalo ci sie znalezc niczego interesujacego.}
#wa %random(100, 1500)
w
sd
|
But it didn't work. Any solutions? |
|
|
|
shalimar GURU
Joined: 04 Aug 2002 Posts: 4691 Location: Pensacola, FL, USA
|
Posted: Wed Mar 14, 2012 12:25 pm |
When you make an anonymous variable in a pattern you must enclose that within its own pair of {curly braces} as well.
#WAITFOR {{Znajdujesz (*)|Szukasz wszedzie, ale nie znajdujesz zadnych ziol.|Nie znajdujesz zadnych ziol.|Nie udalo ci sie znalezc niczego interesujacego.}} |
|
_________________ Discord: Shalimarwildcat |
|
|
|
Gwaethiel Beginner
Joined: 23 Feb 2011 Posts: 13
|
Posted: Wed Mar 14, 2012 12:38 pm |
Cool, it works! Thank you.
So, i have another question. I hope you can help me too.
In zMUD when i run trigger and push ESCAPE, trigger stop at all. In cMUD when i push ESC, client send next command after #wait. Can i make ESC a 'killer' for longer triggers? |
|
|
|
shalimar GURU
Joined: 04 Aug 2002 Posts: 4691 Location: Pensacola, FL, USA
|
Posted: Wed Mar 14, 2012 3:50 pm |
#WAIT was not working as intended in zMUD, so in that sense, likely not.
#WAITFOR does has a timeout feature you can use however, if you dont want them waiting indefinitely.
Alternatively, if certain #WAITFOR lines are more of an optional nature, you may want to use a fully separate trigger instead. |
|
_________________ Discord: Shalimarwildcat |
|
|
|
Rahab Wizard
Joined: 22 Mar 2007 Posts: 2320
|
Posted: Wed Mar 14, 2012 8:41 pm |
Zmud did not have threads, so everything ran in the main thread and hitting ESC would halt it. Cmud has proper threads, and using #WAIT or #WAITFOR will put that script into a separate thread. The advantage is that you can have those scripts running in the background while you continue to do other things on the command line. The disadvantage is that if you aren't careful, your background scripts might be accidentally dependent on something that gets changed by another thread.
It is possible to kill a background thread, but usually you should avoid it. Often, a better way is to write the thread in such a way that it halts itself if there are problems, or when some state changes. For instance, you could create a variable named @RunBackground, and in your background scripts you write in several places where it checks whether @RunBackground is true or false. Then, if you need to halt the background scripts, you execute an alias or fire a trigger that changes the @RunBackground variable. That's just one possible way to do it. |
|
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|