[NEWBIE] Communication channel

From: Phillip A. Ames (kirk47@JUNO.COM)
Date: 09/10/98


Hey all...  I've just made a new communication channel that will echo the
text sent to the screen, and I was wondering if anyone can see any
problems with the code below.  Also, I'm wondering how to log tells using
the mudlog function.  Anyone feel like helping me out? :)  I've tried
doing mudlog(buf, etc...) but it didn't work for my purposes.  I wanted
to log the player sending the tell, and the player receiving the tell, in
their(i.e. So and so tells Whositz 'blah blah blah').  Thanks!!

void perform_send(struct char_data *ch, struct char_data *vict, char
*arg)
{
  send_to_char(CCCYN(vict, C_NRM), vict);
  sprintf(buf, "Your communicator crackles and you hear $n's voice saying
'%s'", arg);
  act(buf, FALSE, ch, 0, vict, TO_VICT | TO_SLEEP);
  sprintf(buf, "$n taps $s comm badge and says '%s'",ch, vict, arg);
  act(buf, FALSE, ch, 0, vict, TO_NOTVICT | TO_SLEEP);

  send_to_char(CCNRM(vict, C_NRM), vict);

  if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_NOREPEAT))
    send_to_char(OK, ch);
  else {
    send_to_char(CCCYN(ch, C_NRM), ch);
    sprintf(buf, "You send to $N, '%s' over the communication link.",
arg);
    act(buf, FALSE, ch, 0, vict, TO_CHAR | TO_SLEEP);
        sprintf(buf, "$n's communicator crackles and you hear $N saying
'%s'", arg);
        act(buf, FALSE, vict, 0, ch, TO_ROOM);
    send_to_char(CCNRM(ch, C_NRM), ch);
  }
}

int is_send_ok(struct char_data *ch, struct char_data *vict)
{
        if (ch == vict){
    send_to_char("Your comm badge refuses to respond whenever you attempt
to send something to yourself.\r\n", ch);
        return FALSE;
        }
  if (ROOM_FLAGGED(ch->in_room, ROOM_SOUNDPROOF)){
    send_to_char("Your comm badge refuses to respond.\r\n", ch);
    act("$n's communicator badge crackles as $E attempts to send a
message with it.", FALSE, ch, 0, vict, TO_ROOM);
        return FALSE;
  }
  if (!IS_NPC(vict) && !vict->desc){        /* linkless */
    act("$E's linkless at the moment.", FALSE, ch, 0, vict, TO_CHAR |
TO_SLEEP);
  return FALSE;
  }

  if (PLR_FLAGGED(vict, PLR_WRITING)){
    act("$E's writing a message right now; try again later.", FALSE, ch,
0, vict, TO_CHAR | TO_SLEEP);
  return FALSE;
  }
  else
    return TRUE;

}


ACMD(do_send)
{
  struct char_data *vict;

  half_chop(argument, buf, buf2);

  if (!*buf)
    send_to_char("Who do you wish to send a communication message
to?\r\n", ch);
  else if(!*buf2)
          send_to_char("What do you wish to send to them?\r\n", ch);
  else if(!*buf && !*buf2)
          send_to_char("Usage: send <character> <message>\r\n", ch);
  else if (!(vict = get_char_vis(ch, buf)))
    send_to_char(NOPERSON, ch);
  else if (is_send_ok(ch, vict))
    perform_send(ch, vict, buf2);
}



_____________________________________________________________________
You don't need to buy Internet access to use free Internet e-mail.
Get completely free e-mail from Juno at http://www.juno.com
Or call Juno at (800) 654-JUNO [654-5866]


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST