Hello again list,
     I need a second opinion on this shop code I have in place in my
meditor.  It keeps crashing when you try to assign the last number for
hours.  IE:

shop hours 0 23<---it's fine until you put that last number.

void medit(CHAR_DATA *ch, char *argument)
{
    AREA_DATA *pArea;
    MOB_INDEX_DATA *pMob;
    char arg[MAX_STRING_LENGTH];
    char arg1[MAX_STRING_LENGTH];
    char arg2[MAX_STRING_LENGTH];
    char buf[MAX_STRING_LENGTH];
    int  value;
    int  iHash;

    arg[0] = '\0';
    arg1[0] = '\0';
    arg2[0] = '\0';

    strcpy(arg,argument);
    smash_tilde(argument);
    argument = one_argument(argument, arg1);
    strcpy(arg2,argument);
    value = atoi(arg2);

    pMob = (MOB_INDEX_DATA *)ch->desc->pEdit;
    pArea = pMob->area;


    if (!str_cmp(arg1, "show") || arg1[0] == '\0')
    {
        sprintf(buf, "%d", pMob->vnum);
        do_mshow(ch, buf);
        return;
    }


    if (!str_cmp(arg1, "done"))
    {
        ch->desc->pEdit = NULL;
        ch->desc->connected = CON_PLAYING;
        return;
    }


    if (!str_cmp(arg1, "shop"))
    {
        argument = one_argument(argument, arg1);
        strcpy(arg2, argument);

        if (arg1[0] == '\0')
        {
            send_to_char("Syntax:  shop hours [#opening] [#closing]\n\r",
ch);
            send_to_char("         shop profit [#buying%] [#selling%]\n\r",
ch);
            send_to_char("         shop type [#1-5] [item type]\n\r", ch);
            send_to_char("         shop delete\n\r", ch);
            return;
        }


        if (!str_cmp(arg1, "hours"))
        {
            argument = one_argument(argument, arg1);
            one_argument(argument,arg2);

            if (arg1[0] == '\0' || !is_number(arg1) || arg2[0] == '\0' ||
!is_number(arg2))
            {
                send_to_char("Syntax:  shop hours [#opening]
[#closing]\n\r", ch);
                return;
            }

            if (pMob->pShop == NULL)
            {
                pMob->pShop         = new_shop();
                pMob->pShop->keeper = pMob->vnum;
                shop_last->next     = pMob->pShop;
                return;
            }
           else
              send_to_char("Mob already exists.\n\r",ch);

            pMob->pShop->open_hour = atoi(arg1);
            pMob->pShop->close_hour = atoi(arg2);

            SET_BIT(pArea->area_flags, AREA_CHANGED);
            send_to_char("Shop hours set.\n\r", ch);
            return;
        }


As always Thank you for your help.

Arkham


Reply via email to