Discussion:
Help
Rainer Roomet
2006-08-04 06:03:49 UTC
Permalink
I have some kind of pre-delayed commands.
bash hassan
<pre_delay> (if delay expires)
You slam into Hassan, and send him flying!


Now problem is, if you are PRE_DELAYED, you can't use any commands (similar
as wait state) but I want to interpret the delay through "STOP" command. But
how I can do it?

I am spent tons of hours to solve the problem, looking another codebases -
but result is nothing.

If i do following:

if (d->inbuf[i] == 'S')
{
send_to_char("You stop your bash attempt!\n\r", d->character);
GET_TWIDDLE(d->character) = 0;
return;
}
else
return;


then it works if I enter "S" letter in first command then he stops the bash
attempt but if I enter the second command command (bash hassan;worth;S) then
it won't work - it just waiting for delay, bash and then do these commands!

Any ideas? Or I have to make some kind of "command history" but how?

Please help!

One thing more - I am note 100% sure I am subscribed (Sometimes I have
received some ROM mail list mails but i said sometimes - it looks like it is
dead - please, if you answer to my mail, send copy to me - just in case.
***@hotmail.com)

Rainer Roomet
Phone: (+372) 58133281
Mail/MSN: ***@hotmail.com

_________________________________________________________________
FREE pop-up blocking with the new MSN Toolbar - get it now!
http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/
--
ROM mailing list
***@rom.org
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
Michael Barton
2006-08-04 06:32:26 UTC
Permalink
Post by Rainer Roomet
if (d->inbuf[i] == 'S')
{
send_to_char("You stop your bash attempt!\n\r", d->character);
...
Post by Rainer Roomet
then it works if I enter "S" letter in first command then he stops the bash
attempt but if I enter the second command command (bash hassan;worth;S) then
it won't work - it just waiting for delay, bash and then do these commands!
Any ideas? Or I have to make some kind of "command history" but how?
I don't think it'll be strictly necessary, but it might be easier to
work with a list of incoming commands as opposed to a buffer if you
intend to do much manipulation to it.

It would help some to know exactly how you've implemented the pre-lag
and where you're trying to insert this code. It *looks* like it's in
read_from_buffer, which makes me wonder where you're short-circuiting
user input at when they're lagged. Because normally it'd be before
that.

--Palrich.
--
ROM mailing list
***@rom.org
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
Rainer Roomet
2006-08-04 06:47:30 UTC
Permalink
Ok. Some extra information:

do_bash.

If your bash is succesful (You know the skill, you see the victim etc)

Then you start pre_lagging (perform_twiddle)

void perform_twiddle(void)
{
CHAR_DATA *i, *next_char;

/* characters */
for (i = char_list; i; i = next_char)
{
next_char = i->next;

if (i->position >= POS_STUNNED && GET_TWIDDLE(i) )
{
GET_TWIDDLE(i)--;

if( GET_TWIDDLE(i))
{
// Twiddle prompt


if (!IS_NPC(i) && i->desc != NULL)
{
write_to_descriptor(i->desc->descriptor, GET_TWIDDLE(i) % 2 ? "-" :
"|", 1);
}

// Verify the victim and or item is here
if( GET_TWIDDLE_VICTIM(i) != NULL )
{
if( i->in_room != (GET_TWIDDLE_VICTIM(i))->in_room )
{
send_to_char( "Your victim has disappeared!\r\n", i );
GET_TWIDDLE(i) = 0;
}
}

// TODO: ought to verify item is here too
// Verify we are in the room we started doing this

if (GET_TWIDDLE_ACTION(i) == 2 && GET_TWIDDLE_INT(i) != -1)
{
EXIT_DATA *pexit;

pexit = i->in_room->exit[GET_TWIDDLE_INT(i)];

if ( !IS_SET(pexit->exit_info, EX_CLOSED))
{
send_to_char( "Oopps... You can't concentrate
anymore..\n\rYou stop picking!\n\r",i);
GET_TWIDDLE(i) = 0;
}
}

if (GET_TWIDDLE_ACTION(i) == 1 && GET_TWIDDLE_VICTIM(i)->bash_delay > 1)
{
send_to_char("Bash someone already bashed? Aren't we
funny?\r\n", i);
GET_TWIDDLE(i) = 0;
}

if( GET_TWIDDLE_INROOM(i) != i->in_room->vnum )
{
send_to_char( "You were not able to keep your concentration while
moving.\r\n", i );
GET_TWIDDLE(i) = 0;
}
}
else
{
// Twiddle expired, do the thing
switch( GET_TWIDDLE_ACTION( i ) )
{
case 1:
actual_bash(i, GET_TWIDDLE_VICTIM(i) );
break;

case 2:
actual_pick(i, GET_TWIDDLE_INT(i) );
break;

case 3:
actual_backstab(i, GET_TWIDDLE_VICTIM(i) );
break;

default:
send_to_char("Error: unknown twiddle target\r\n", i);
break;
}
}
}
}
}

It is executed in each pulse. If delay expires DO:
// Twiddle expired, do the thing
switch( GET_TWIDDLE_ACTION( i ) )
{
case 1:
actual_bash(i, GET_TWIDDLE_VICTIM(i) );
break;

case 2:
actual_pick(i, GET_TWIDDLE_INT(i) );
break;

case 3:
actual_backstab(i, GET_TWIDDLE_VICTIM(i) );
break;


Now.

comm.c, "game_loop_unix", after the "decrease the wait"

I USED the following code but I need other code:

if( d->connected == CON_PLAYING && GET_TWIDDLE(d->character))
{
if (d->incomm[0] != '\0' && !IS_NPC(d->character))
{
char buf[MSL];

GET_TWIDDLE(d->character) = 0;

sprintf(buf, "You stop your %s attempt!\n\r",
GET_TWIDDLE_ACTION(d->character) == 1 ? "bashing" :
GET_TWIDDLE_ACTION(d->character) == 2 ? "picking" : "stabing");
send_to_char(buf, d->character);
}
else
continue;
}


currently:

bash elrond;worth

<Room:7924 Incog:0 Invis:0: >bash elrond
worth
-
You stop your bashing attempt!
You have 606 gold 33 silver 100 copper pennies, and 30,000,000 exp (0 exp to
level).


It means ANY COMMANDS cancels the delay but I NEED:


bash elrond;worth
<Room:7924 Incog:0 Invis:0: >bash elrond
-|-|-|-|-|-|-|-
You slam into [#7823] Elrond the King of Elves, and send him flying!
[#7823] Elrond the King of Elves says 'I was your last mistake, Orc!'
Your bash grazes [#7823] Elrond the King of Elves. [5]

You have 606 gold 33 silver 100 copper pennies, and 30,000,000 exp (0 exp to
level).

----
It means as "usual wait state". If the delay expires then the next command
will be executed. Yes it's easy but I need "STOP" command to cancel the
delay. Why? For example, you start to bash elrond but your sanc suddenly
wears off and now you want to cancel the delay to avoid death, or suddenly
too many enemies have arrived. Example:

bash elrond;worth
-|-|-|-
stop

You stop your bashing attempt!
You have 606 gold 33 silver 100 copper pennies, and 30,000,000 exp (0 exp to
level).



I have tried todo it about 100 hours - but I failed. I added different codes
to different place - but no success. I have been asked from many, many mud
forums - nothing..



It's my last chance.

### NB! Again, please send answer copy to my original mail :) Just in case
:)
***@hotmail.com

Thank you for listening my problem.




Rainer Roomet
Phone: (+372) 58133281
Subject: Re: Help
Date: Fri, 4 Aug 2006 01:32:26 -0500
Post by Rainer Roomet
if (d->inbuf[i] == 'S')
{
send_to_char("You stop your bash attempt!\n\r", d->character);
...
Post by Rainer Roomet
then it works if I enter "S" letter in first command then he stops the bash
attempt but if I enter the second command command (bash hassan;worth;S) then
it won't work - it just waiting for delay, bash and then do these commands!
Any ideas? Or I have to make some kind of "command history" but how?
I don't think it'll be strictly necessary, but it might be easier to
work with a list of incoming commands as opposed to a buffer if you
intend to do much manipulation to it.
It would help some to know exactly how you've implemented the pre-lag
and where you're trying to insert this code. It *looks* like it's in
read_from_buffer, which makes me wonder where you're short-circuiting
user input at when they're lagged. Because normally it'd be before
that.
--Palrich.
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
--
ROM mailing list
***@rom.org
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
Michael Barton
2006-08-04 07:17:13 UTC
Permalink
Post by Rainer Roomet
if (d->incomm[0] != '\0' && !IS_NPC(d->character))
So probably this line will have to be changed, to look through the
buffer for a specific string rather than just 'not empty'. Maybe
something along the lines of...

if (!str_prefix("stop", d->incomm) || !str_infix("\rstop", d->incomm)
|| !str_infix("\nstop", d->incomm))

Well, that's probably not optimal. But you see that the commands are
in that buffer, delimited by newline chars. str_infix or strstr or
something may be good enough to look through it, or you may have to
step through the chars yourself, depending on exactly how you want it
to work.
Post by Rainer Roomet
do_bash.
If your bash is succesful (You know the skill, you see the victim etc)
Then you start pre_lagging (perform_twiddle)
void perform_twiddle(void)
{
CHAR_DATA *i, *next_char;
/* characters */
for (i = char_list; i; i = next_char)
{
next_char = i->next;
if (i->position >= POS_STUNNED && GET_TWIDDLE(i) )
{
GET_TWIDDLE(i)--;
if( GET_TWIDDLE(i))
{
// Twiddle prompt
if (!IS_NPC(i) && i->desc != NULL)
{
"|", 1);
}
// Verify the victim and or item is here
if( GET_TWIDDLE_VICTIM(i) != NULL )
{
if( i->in_room != (GET_TWIDDLE_VICTIM(i))->in_room )
{
send_to_char( "Your victim has disappeared!\r\n", i );
GET_TWIDDLE(i) = 0;
}
}
// TODO: ought to verify item is here too
// Verify we are in the room we started doing this
if (GET_TWIDDLE_ACTION(i) == 2 && GET_TWIDDLE_INT(i) != -1)
{
EXIT_DATA *pexit;
pexit = i->in_room->exit[GET_TWIDDLE_INT(i)];
if ( !IS_SET(pexit->exit_info, EX_CLOSED))
{
send_to_char( "Oopps... You can't concentrate
anymore..\n\rYou stop picking!\n\r",i);
GET_TWIDDLE(i) = 0;
}
}
if (GET_TWIDDLE_ACTION(i) == 1 && GET_TWIDDLE_VICTIM(i)->bash_delay > 1)
{
send_to_char("Bash someone already bashed? Aren't we
funny?\r\n", i);
GET_TWIDDLE(i) = 0;
}
if( GET_TWIDDLE_INROOM(i) != i->in_room->vnum )
{
send_to_char( "You were not able to keep your concentration while
moving.\r\n", i );
GET_TWIDDLE(i) = 0;
}
}
else
{
// Twiddle expired, do the thing
switch( GET_TWIDDLE_ACTION( i ) )
{
actual_bash(i, GET_TWIDDLE_VICTIM(i) );
break;
actual_pick(i, GET_TWIDDLE_INT(i) );
break;
actual_backstab(i, GET_TWIDDLE_VICTIM(i) );
break;
send_to_char("Error: unknown twiddle target\r\n", i);
break;
}
}
}
}
}
// Twiddle expired, do the thing
switch( GET_TWIDDLE_ACTION( i ) )
{
actual_bash(i, GET_TWIDDLE_VICTIM(i) );
break;
actual_pick(i, GET_TWIDDLE_INT(i) );
break;
actual_backstab(i, GET_TWIDDLE_VICTIM(i) );
break;
Now.
comm.c, "game_loop_unix", after the "decrease the wait"
if( d->connected == CON_PLAYING && GET_TWIDDLE(d->character))
{
if (d->incomm[0] != '\0' && !IS_NPC(d->character))
{
char buf[MSL];
GET_TWIDDLE(d->character) = 0;
sprintf(buf, "You stop your %s attempt!\n\r",
GET_TWIDDLE_ACTION(d->character) == 2 ? "picking" : "stabing");
send_to_char(buf, d->character);
}
else
continue;
}
bash elrond;worth
<Room:7924 Incog:0 Invis:0: >bash elrond
worth
-
You stop your bashing attempt!
You have 606 gold 33 silver 100 copper pennies, and 30,000,000 exp (0 exp to
level).
bash elrond;worth
<Room:7924 Incog:0 Invis:0: >bash elrond
-|-|-|-|-|-|-|-
You slam into [#7823] Elrond the King of Elves, and send him flying!
[#7823] Elrond the King of Elves says 'I was your last mistake, Orc!'
Your bash grazes [#7823] Elrond the King of Elves. [5]
You have 606 gold 33 silver 100 copper pennies, and 30,000,000 exp (0 exp to
level).
----
It means as "usual wait state". If the delay expires then the next command
will be executed. Yes it's easy but I need "STOP" command to cancel the
delay. Why? For example, you start to bash elrond but your sanc suddenly
wears off and now you want to cancel the delay to avoid death, or suddenly
bash elrond;worth
-|-|-|-
stop
You stop your bashing attempt!
You have 606 gold 33 silver 100 copper pennies, and 30,000,000 exp (0 exp to
level).
I have tried todo it about 100 hours - but I failed. I added different codes
to different place - but no success. I have been asked from many, many mud
forums - nothing..
It's my last chance.
### NB! Again, please send answer copy to my original mail :) Just in case
:)
Thank you for listening my problem.
Rainer Roomet
Phone: (+372) 58133281
Subject: Re: Help
Date: Fri, 4 Aug 2006 01:32:26 -0500
Post by Rainer Roomet
if (d->inbuf[i] == 'S')
{
send_to_char("You stop your bash attempt!\n\r", d->character);
...
Post by Rainer Roomet
then it works if I enter "S" letter in first command then he stops the bash
attempt but if I enter the second command command (bash hassan;worth;S) then
it won't work - it just waiting for delay, bash and then do these commands!
Any ideas? Or I have to make some kind of "command history" but how?
I don't think it'll be strictly necessary, but it might be easier to
work with a list of incoming commands as opposed to a buffer if you
intend to do much manipulation to it.
It would help some to know exactly how you've implemented the pre-lag
and where you're trying to insert this code. It *looks* like it's in
read_from_buffer, which makes me wonder where you're short-circuiting
user input at when they're lagged. Because normally it'd be before
that.
--Palrich.
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
--
ROM mailing list
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
--
ROM mailing list
***@rom.org
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
Rainer Roomet
2006-08-04 07:24:54 UTC
Permalink
Thank but it's still buggy. Now the main problem will raise from the ash :)

If I type:
<Room:7801 Incog:0 Invis:0: >bash heldor
stop
-
You stop your bashing attempt!

Yes now it work perfectly but if I add one command more:

<Room:7801 Incog:0 Invis:0: >bash heldor
worth
stop
-|-|-|-|-|-|-|-
You slam into [#7830] Heldor, and send him flying!
[#7830] Heldor says 'I was your last mistake, Orc!'
Your bash hits [#7830] Heldor. [12]

: HP:Perfect Heldor:Scratches>You have 546 gold 33 silver 100 copper
pennies, and 30,000,000 exp
(0 exp to level).
Stop? Huh? What's that?


It means if you are inserted one command more then you can't use "stop"
command anymore. It's the problem.


Rainer Roomet
Phone: (+372) 58133281
Subject: Re: Help
Date: Fri, 4 Aug 2006 02:17:13 -0500
Post by Rainer Roomet
if (d->incomm[0] != '\0' && !IS_NPC(d->character))
So probably this line will have to be changed, to look through the
buffer for a specific string rather than just 'not empty'. Maybe
something along the lines of...
if (!str_prefix("stop", d->incomm) || !str_infix("\rstop", d->incomm)
|| !str_infix("\nstop", d->incomm))
Well, that's probably not optimal. But you see that the commands are
in that buffer, delimited by newline chars. str_infix or strstr or
something may be good enough to look through it, or you may have to
step through the chars yourself, depending on exactly how you want it
to work.
Post by Rainer Roomet
do_bash.
If your bash is succesful (You know the skill, you see the victim etc)
Then you start pre_lagging (perform_twiddle)
void perform_twiddle(void)
{
CHAR_DATA *i, *next_char;
/* characters */
for (i = char_list; i; i = next_char)
{
next_char = i->next;
if (i->position >= POS_STUNNED && GET_TWIDDLE(i) )
{
GET_TWIDDLE(i)--;
if( GET_TWIDDLE(i))
{
// Twiddle prompt
if (!IS_NPC(i) && i->desc != NULL)
{
"|", 1);
}
// Verify the victim and or item is here
if( GET_TWIDDLE_VICTIM(i) != NULL )
{
if( i->in_room != (GET_TWIDDLE_VICTIM(i))->in_room )
{
send_to_char( "Your victim has disappeared!\r\n", i );
GET_TWIDDLE(i) = 0;
}
}
// TODO: ought to verify item is here too
// Verify we are in the room we started doing this
if (GET_TWIDDLE_ACTION(i) == 2 && GET_TWIDDLE_INT(i) != -1)
{
EXIT_DATA *pexit;
pexit = i->in_room->exit[GET_TWIDDLE_INT(i)];
if ( !IS_SET(pexit->exit_info, EX_CLOSED))
{
send_to_char( "Oopps... You can't concentrate
anymore..\n\rYou stop picking!\n\r",i);
GET_TWIDDLE(i) = 0;
}
}
if (GET_TWIDDLE_ACTION(i) == 1 &&
GET_TWIDDLE_VICTIM(i)->bash_delay > 1)
{
send_to_char("Bash someone already bashed? Aren't we
funny?\r\n", i);
GET_TWIDDLE(i) = 0;
}
if( GET_TWIDDLE_INROOM(i) != i->in_room->vnum )
{
send_to_char( "You were not able to keep your concentration while
moving.\r\n", i );
GET_TWIDDLE(i) = 0;
}
}
else
{
// Twiddle expired, do the thing
switch( GET_TWIDDLE_ACTION( i ) )
{
actual_bash(i, GET_TWIDDLE_VICTIM(i) );
break;
actual_pick(i, GET_TWIDDLE_INT(i) );
break;
actual_backstab(i, GET_TWIDDLE_VICTIM(i) );
break;
send_to_char("Error: unknown twiddle target\r\n", i);
break;
}
}
}
}
}
// Twiddle expired, do the thing
switch( GET_TWIDDLE_ACTION( i ) )
{
actual_bash(i, GET_TWIDDLE_VICTIM(i) );
break;
actual_pick(i, GET_TWIDDLE_INT(i) );
break;
actual_backstab(i, GET_TWIDDLE_VICTIM(i) );
break;
Now.
comm.c, "game_loop_unix", after the "decrease the wait"
if( d->connected == CON_PLAYING && GET_TWIDDLE(d->character))
{
if (d->incomm[0] != '\0' && !IS_NPC(d->character))
{
char buf[MSL];
GET_TWIDDLE(d->character) = 0;
sprintf(buf, "You stop your %s attempt!\n\r",
GET_TWIDDLE_ACTION(d->character) == 2 ? "picking" : "stabing");
send_to_char(buf, d->character);
}
else
continue;
}
bash elrond;worth
<Room:7924 Incog:0 Invis:0: >bash elrond
worth
-
You stop your bashing attempt!
You have 606 gold 33 silver 100 copper pennies, and 30,000,000 exp (0 exp to
level).
bash elrond;worth
<Room:7924 Incog:0 Invis:0: >bash elrond
-|-|-|-|-|-|-|-
You slam into [#7823] Elrond the King of Elves, and send him flying!
[#7823] Elrond the King of Elves says 'I was your last mistake, Orc!'
Your bash grazes [#7823] Elrond the King of Elves. [5]
You have 606 gold 33 silver 100 copper pennies, and 30,000,000 exp (0 exp to
level).
----
It means as "usual wait state". If the delay expires then the next command
will be executed. Yes it's easy but I need "STOP" command to cancel the
delay. Why? For example, you start to bash elrond but your sanc suddenly
wears off and now you want to cancel the delay to avoid death, or suddenly
bash elrond;worth
-|-|-|-
stop
You stop your bashing attempt!
You have 606 gold 33 silver 100 copper pennies, and 30,000,000 exp (0 exp to
level).
I have tried todo it about 100 hours - but I failed. I added different codes
to different place - but no success. I have been asked from many, many mud
forums - nothing..
It's my last chance.
### NB! Again, please send answer copy to my original mail :) Just in case
:)
Thank you for listening my problem.
Rainer Roomet
Phone: (+372) 58133281
Subject: Re: Help
Date: Fri, 4 Aug 2006 01:32:26 -0500
Post by Rainer Roomet
if (d->inbuf[i] == 'S')
{
send_to_char("You stop your bash attempt!\n\r",
d->character);
...
Post by Rainer Roomet
then it works if I enter "S" letter in first command then he stops the bash
attempt but if I enter the second command command (bash hassan;worth;S) then
it won't work - it just waiting for delay, bash and then do these commands!
Any ideas? Or I have to make some kind of "command history" but how?
I don't think it'll be strictly necessary, but it might be easier to
work with a list of incoming commands as opposed to a buffer if you
intend to do much manipulation to it.
It would help some to know exactly how you've implemented the pre-lag
and where you're trying to insert this code. It *looks* like it's in
read_from_buffer, which makes me wonder where you're short-circuiting
user input at when they're lagged. Because normally it'd be before
that.
--Palrich.
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
--
ROM mailing list
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
_________________________________________________________________
FREE pop-up blocking with the new MSN Toolbar - get it now!
http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/
--
ROM mailing list
***@rom.org
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
Rainer Roomet
2006-08-04 13:11:56 UTC
Permalink
You can't understand. Basically the pre-delay (twiddle) is the same as usual
wait state but there is only one different - you can cancel the delay.

Try to hack you usual wait state thing - do the same thing - the letter "S"
or "STOP" will cancel the wait state delay - if you can manage it please
help me too. Yes you can, if you use "S" command as first command but if you
type "S" at secondary or more later, then you can't anymore.

There should be some kind of command buffer or i don't know.

It's the hardest problem to me in the mud coding history.

Again if anyone will find the solution, please send to copy to:
***@hotmail.com


And one question more: I receiving mails from rom mailing list as some kind
of "day conclussion". All receiving it ?



Rainer Roomet
Phone: (+372) 58133281
Subject: Re: Help
Date: Fri, 4 Aug 2006 08:50:56 -0400
if I enter the second command command (bash hassan;worth;S) then it won't
work - it just waiting for delay, bash and then do these commands!
My guess is that your ";" (more then one command?) i am assuming is the one
causing you to hang.
I suppose it will work more like an alias.
Just put a stop to it the same way you did with the actual command.
if (d->inbuf->alias?[i] == 'S')
break; ? return; ?
_________________________________________________________________
FREE pop-up blocking with the new MSN Toolbar - get it now!
http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/
--
ROM mailing list
***@rom.org
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
Davion Kalhen
2006-08-04 13:17:39 UTC
Permalink
Hey, I think what you need is an actual event code to handle this. The
simple wait_state cannot facilitate the features you want. If you
check out MudBytes's code repository and look for an event code I
released, you could probably make something off that. It allows for
you to define the commands a player can use whilst owning an event.
You could simply make a 'stop' command which will stop the bash, -or-,
alter the code, so the command allowance changes, and sets that all
the commands within the table stop, any other command will execute as
normal. I'm sure it wouldn't be to far to stretch that code that far.

Davion
Post by Rainer Roomet
You can't understand. Basically the pre-delay (twiddle) is the same as usual
wait state but there is only one different - you can cancel the delay.
Try to hack you usual wait state thing - do the same thing - the letter "S"
or "STOP" will cancel the wait state delay - if you can manage it please
help me too. Yes you can, if you use "S" command as first command but if you
type "S" at secondary or more later, then you can't anymore.
There should be some kind of command buffer or i don't know.
It's the hardest problem to me in the mud coding history.
And one question more: I receiving mails from rom mailing list as some kind
of "day conclussion". All receiving it ?
Rainer Roomet
Phone: (+372) 58133281
Subject: Re: Help
Date: Fri, 4 Aug 2006 08:50:56 -0400
if I enter the second command command (bash hassan;worth;S) then it won't
work - it just waiting for delay, bash and then do these commands!
My guess is that your ";" (more then one command?) i am assuming is the one
causing you to hang.
I suppose it will work more like an alias.
Just put a stop to it the same way you did with the actual command.
if (d->inbuf->alias?[i] == 'S')
break; ? return; ?
_________________________________________________________________
FREE pop-up blocking with the new MSN Toolbar - get it now!
http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/
--
ROM mailing list
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
--
A MudBytes Administrator
http://www.mudbytes.net - A Code Repository
--
ROM mailing list
***@rom.org
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
Ammaross Danan
2006-08-04 21:26:09 UTC
Permalink
Post by Rainer Roomet
You can't understand. Basically the pre-delay (twiddle) is the same as
usual wait state but there is only one different - you can cancel the
delay.
Try to hack you usual wait state thing - do the same thing - the letter
"S" or "STOP" will cancel the wait state delay - if you can manage it
please help me too. Yes you can, if you use "S" command as first command
but if you type "S" at secondary or more later, then you can't anymore.
Why don't you just put a check in interpret() to sniff out 'stop' being
used as a command and if GET_TWIDDLE(ch) > 0, then GET_TWIDDLE(ch) = 0;
You could simply return; after that and they should no longer be in a
'twiddle' state.
Post by Rainer Roomet
There should be some kind of command buffer or i don't know.
It's the hardest problem to me in the mud coding history.
Code more. There is harder things in store for your future. *evil cackle*
Post by Rainer Roomet
And one question more: I receiving mails from rom mailing list as some
kind of "day conclussion". All receiving it ?
No, I did not subscribe to the digest mailing.
--
ROM mailing list
***@rom.org
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
Loading...