Can't possibly see why you're messing with do_say, but here goes
anyways...
Matthew Kuebbeler wrote:
> ACMD(do_say)
> {
> skip_spaces(&argument);
>
> if (!*argument)
> send_to_char("Yes, but WHAT do you want to say?\r\n", ch);
> else {
> delete_doubledollar(argument);
Note the following comment from interpreter.c...
/*
* Given a string, change all instances of double dollar signs ($$) to
* single dollar signs ($). When strings come in, all $'s are changed
* to $$'s to avoid having users be able to crash the system if the
* inputted string is eventually sent to act(). If you are using user
* input to produce screen output AND YOU ARE SURE IT WILL NOT BE SENT
* THROUGH THE act() FUNCTION (i.e., do_gecho, do_title, but NOT
do_say),
* you can call delete_doubledollar() to make the output look correct.
*
* Modifies the string in-place.
*/
char *delete_doubledollar(char *string)
In other words DO NOT USE delete_doubledollar() ON A STRING WHICH WILL
BE PASSED TO act()!
> sprintf(buf, "You say, '%s'\r\n", argument);
> act(buf, FALSE, ch, 0, 0, TO_ROOM);
Here you're sending "You say..." to the rest of the room, shouldn't this
be "$n says..."?
>
> if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_NOREPEAT))
> send_to_char(OK, ch);
> else {
Why are you using "you tell the group" here? Isn't this do_say, or did
I miss something? At any rate, I would recommend using act if you
haven't run it through delete_doubledollar, otherwise run it through
delete_doubledollar and use send_to_char.
> sprintf(buf, "You tell the group, '%s'\r\n", argument);
> send_to_char(buf, ch);
> }
> }
> }
Regards, Peter
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/11/01 PDT