Help with editing mpoload.

Posted by Rob Harper on Wed 10 Mar 2004 11:34 PM — 4 posts, 15,734 views.

#0
I dont find my self lost too much anymore, but I found a case that stumped me, I was making a prog for one of my areas when I realised that mpoload worked on mob progs, and room progs, but it wouldnt work off of another object, could someone give me a hand with this one? (changing mpoload to work when used off an object). The mpoload code is below.





void do_mpoload( CHAR_DATA *ch, char *argument )
{
    char arg1[ MAX_INPUT_LENGTH ];
    char arg2[ MAX_INPUT_LENGTH ];
    OBJ_INDEX_DATA *pObjIndex;
    OBJ_DATA       *obj;
    int             level;
    int             timer = 0;

    if ( !IS_NPC( ch ) || IS_AFFECTED( ch, AFF_CHARM ))
    {
          send_to_char( "Huh?\n\r", ch );
          return;
    }


    argument = one_argument( argument, arg1 );
    argument = one_argument( argument, arg2 );

    if ( arg1[0] == '\0' || !is_number( arg1 ) )
    {
        progbug( "Mpoload - Bad syntax", ch );
        return;
    }

    if ( arg2[0] == '\0' )
        level = get_trust( ch );
    else
    {
        /*
         * New feature from Alander.
         */
        if ( !is_number( arg2 ) )
        {
            progbug( "Mpoload - Bad level syntax", ch );
            return;
        }
        level = atoi( arg2 );
        if ( level < 0 || level > get_trust( ch ) )
        {
            progbug( "Mpoload - Bad level", ch );
            return;
        }

        /*
         * New feature from Thoric.
         */
        timer = atoi( argument );
        if ( timer < 0 )
        {
           progbug( "Mpoload - Bad timer", ch );
           return;
        }
    }

    if ( ( pObjIndex = get_obj_index( atoi( arg1 ) ) ) == NULL )
    {
        progbug( "Mpoload - Bad vnum arg", ch );
        return;
    }

    obj = create_object( pObjIndex, level );
    obj->timer = timer;
    if ( CAN_WEAR(obj, ITEM_TAKE) )
        obj_to_char( obj, ch );
    else
        obj_to_room( obj, ch->in_room );

    return;
}


Australia Forum Administrator #1
I tried this with variable results. Sometimes it seemed to work. What object did you try to load?
#2
A simple low level, non-prototype, no other flags shield shield.
Australia Forum Administrator #3
I ran gdb and put a breakpoint in do_mpoload, however I didn't pursue it too far when I realised the object was in fact loading.

I suggest you do the same, work out which test it is failing.