Well, for some strange reason my pervious mail got cut in half. :( Here is the
complete mail (hopefully).
I am trying to add a new zone command but I am a little confused with the way
the current zone commands work. I have added mounts into my MUD and I want to
make it so you can mount one mobile onto a another. The format I set up is
very similiar to the format for putting an object in another. It looks like
this
N <if_flag> <mob_rider> <max_existing> <mount>
So, you have to load the <mount> before you call the mount command in the zone
file.
Here is what I have so far:
In db.c
case 'M': /* read a mobile */
if (mob_index[ZCMD.arg1].number < ZCMD.arg2) {
mob = read_mobile(ZCMD.arg1, REAL);
char_to_room(mob, ZCMD.arg3);
last_cmd = 1;
} else
last_cmd = 0;
break;
case 'N': /* mobile on mount */
if (mob_index[ZCMD.arg1].number < ZCMD.arg2) <--- What does this do?
{
mob = read_mobile(ZCMD.arg1, REAL);
if (!(mount = read_mobile(ZCMD.arg3,REAL)))
{
ZONE_ERROR("target mount not found");
break;
}
if(GET_CLASS(mount) != CLASS_MOUNT)
{
ZONE_ERROR("attempt to mount on a NON-mount mob");
break;
}
mob_to_mount(mob, mount);
last_cmd = 1;
}
else
last_cmd = 0;
break;
case 'O': /* read an object */
if (obj_index[ZCMD.arg1].number < ZCMD.arg2) {
if (ZCMD.arg3 >= 0) {
obj = read_object(ZCMD.arg1, REAL);
It never gets past :
if (mob_index[ZCMD.arg1].number < ZCMD.arg2)
I'm not sure exactly what this line does.
Here is the mob_to_mount function in handler.c I wrote:
/* put a mobile on a mount (quaint) */
void mob_to_mount(struct char_data * mob, struct char_data * mount)
{
int in_room;
if (!mob || !mount || mob == mount)
{
log("SYSERR: NULL mobile or same source and target mount passed to
mob_to_mount");
return;
}
if(MOUNTED(mount) != 0)
{
log("SYSERR: Mount not free. Attempting to mount a mobile on a non-free
mount.");
return;
}
char_to_room(mob, mount->in_room);
MOUNTED(mount) = mob;
MOUNTED(mob) = mount;
GET_POS(mob) = POS_MOUNTED;
}
I have been banging my head against the wall on this one. I don't reall
understand the code for zone files too well. Any help on this would be greatly
appreciated.
--
"Take my advice and go back to the time | Brian Menges
you came from. The future isn't what | NASA Ames Research Center
it used to be."--G'kar, "The Long Dark" | Mail Stop: N262-2
0__0 | Phone: (415) 604-0069
=============ooO==(__)==Ooo=============| menges@eos.arc.nasa.gov
This archive was generated by hypermail 2b30 : 12/07/00 PST