DG-Scripts/Zecho

From: The Merciless lord of Everything (serces@MUD.DK)
Date: 05/22/98


Heya all..

As promised, here are some of my additions to the DG-Scripts, All
credits must go to the original coder, since It's only a very nasty
ripoff from WZONEEHCO (But I would like an Email if you do use it
though.. :)

Earlier today I sent a mail regarding the send_to_zone function, all
of these functions uses that send_to_zone (If you didn't get the mail
first time, just ask.. :)

A function that allows mobs to echo something through a zone.
-----------------------Start  MZONEECHO -----------------------
Command: MZONEECHO
Usage: MZONEECHO <zoneVNUM> <message>
Code in dg_mobcmd.c:
Find : extern struct room_data *world;
add: extern int top_of_zone_table;
add: void send_to_zone(char *messg, int zone_vnum);

In the end of the file add everything between *SNIP*
*SNIP*
ACMD(do_mzoneecho)
{
    int zone, i;
    char zone_name[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH], *msg;
    bool found = FALSE;

    if (!MOB_OR_IMPL(ch)) {
     send_to_char("Huh?!?\r\n", ch);
     return;
    }

    if (AFF_FLAGGED(ch, AFF_CHARM))
     return;


    msg = any_one_arg(argument, zone_name);
    skip_spaces(&msg);

    if (!*zone_name || !*msg)
        mob_log(ch, "mzoneecho called with too few args");

    zone = atoi(zone_name);
    for (i=0;i<=top_of_zone_table;i++)
     if (zone_table[i].number == zone) {
      found = TRUE;
      break;
     }
    if (!found)
     mob_log(ch, "mzoneecho called for nonexistant zone");
    else {
        sprintf(buf, "%s\r\n", msg);
        send_to_zone(buf, zone);
    }
}
*SNIP*

In Interpreter.c you need to add :
ACMD(do_mzoneecho); /* Put this with all the other ACMD's */

/* Put this one around MECHOAROUND */
{ "mzoneecho", POS_DEAD, do_mzoneecho, 0, 0},

That should do the trick for MZONEECHO.
------------------------END MZONEECHO -----------------------

Then I made OZONEECHO :

------------------------START OZONEECHO -----------------------
Command: OZONEECHO
Usage: OZONEECHO <zoneVNUM> <message>
Code in dg_wldcmd.c:
Find : void die(struct char_data * ch, struct char_data *killer);
add: extern struct *zone_table;
add: void send_to_zone(char *messg, int zone_vnum);

Somewhere between some OCMD (You decide) put everything between the
*snip* things..
*SNIP*
in: OCMD(do_ozoneecho)
{
    int zone, i;
    char zone_name[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH], *msg;
    cbool found = FALSE; msg = any_one_arg(argument, zone_name);
    skip_spaces(&msg);

    if (!*zone_name || !*msg)
        obj_log(obj, "ozoneecho called with too few args");

    zone = atoi(zone_name);
    for (i=0;i<=top_of_zone_table;i++)
     if (zone_table[i].number == zone) {
      found = TRUE;
      break;
     }

   if (!found)
        obj_log(obj, "ozoneecho called for nonexistant zone");
    else {
        sprintf(buf, "%s\r\n", msg);
        send_to_zone(buf, zone);
    }
}
*SNIP*

You also need to add the command into the definition of obj_cmd_info,
like this:
{ "ozoneecho", do_ozoneecho, 0, 0},
------------------------END OZONEECHO -----------------------

Oh yeah.. and while I was at it, I made it possible for IMMS to echo
throughout a zone with :


ACMD(do_zecho)
{
 int zone, i;
 char zone_name[MAX_INPUT_LENGTH], *msg;
 cbool found = FALSE;

 msg = any_one_arg(argument, zone_name);
 skip_spaces(&msg);
 zone = atoi(zone_name);
 for (i = 0; i<=top_of_zone_table;i++)
 if (zone_table[i].number == zone) {
   found = TRUE;
   break;
  }

 if (!found || !*msg)
  send_to_char("Usage: zecho <zonenumber> <msg>\r\n", ch);
 else if (!found)
  send_to_char("Please enter a zone that exists, Hint: show
zones)!!!\r\n", ch); else {  sprintf(buf, "%s\r\n", msg);
send_to_zone(buf, zone);  sprintf(buf, "(GC) %s echoes %s to zone
%d", GET_NAME(ch), msg,  zone); mudlog(buf, NRM, MAX(LVL_GOD,
GET_INVIS_LEV(ch)), TRUE); }
}

this one also needs to be defined in Interpreter.c :)
---------------------------------------------------------------------
currently I'm pondering why I put all this in 4 different functions,
everything could be called in one function. Just with different
SCMD's .. *ponder* maybe I'll do that at some point.

Not now.. have too much other things to do..

Usual Disclaimer (I claim Dis) for this.. :

"If you use this, and it breaks your code, I cannot be held
responsible, you put it in, your fault if anything breaks."

comments and bugreports are very welcome.. :) Flames are forwarded
directly towards /dev/null

S. P. Skou
Serces - Ancient at the Realm of Chaos - Chaos.mud.dk 4000


     +------------------------------------------------------------+
     | 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