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