Just realized I posted the wrong bit of code. Posted the stuff I was trying before I added the copper segment. ;p
void do_change (CHAR_DATA *ch, char *argument)
{
CHAR_DATA *banker;
int amount;
int change;
char buf [MAX_STRING_LENGTH];
char arg1 [MAX_INPUT_LENGTH];
char arg2 [MAX_INPUT_LENGTH];
if ( !( banker = find_banker( ch ) ) )
{
send_to_char( "You're not in a bank!\n\r", ch );
return;
}
if ( IS_NPC( ch ) )
{
sprintf( buf, "Sorry, %s, we don't do business with mobs.", ch->short_descr );
do_say( banker, buf );
return;
}
if ( argument[0] == '\0' )
{
do_say( banker, "If you need help, see HELP BANK." );
return;
}
argument = one_argument( argument, arg1 );
argument = two_argument( argument, arg2 );
if ( arg1 == '\0' || arg2 == '\0' )
{
sprintf( buf, "%s How much silver or copper do you wish to change into gold?", ch->name );
do_tell( banker, buf );
return;
}
/* Call for changing Silver */
if ( !str_cmp( arg1, "silver" ) )
{
if ( str_cmp(arg1, "all") && !is_number( arg1 ) )
{
sprintf( buf, "%s How much silver do you wish to change?", ch->name );
do_tell( banker, buf );
return;
}
if ( !str_cmp( arg1, "all" ) )
{
amount = ch->silver/100;
change = ch->silver%100;
}
else
{
amount = atoi( arg1 );
}
if ( amount > ch->silver )
{
sprintf( buf, "%s Sorry, but you don't have that much silver to change.", ch->name );
do_tell( banker, buf );
return;
}
else
{
ch->gold += amount;
ch->silver = change;
set_char_color( AT_PLAIN, ch );
ch_printf( ch, "You change %d silver into %d gold coins.\n\r", amount );
sprintf( buf, "$n changes some currency.\n\r" );
act( AT_PLAIN, buf, ch, NULL, NULL, TO_ROOM );
save_char_obj( ch );
return;
}
/* Call for changing Copper */
if ( !str_cmp( arg2, "copper" ) )
{
if ( str_cmp(arg2, "all") && !is_number( arg2 ) )
{
sprintf( buf, "%s How much copper do you wish to change into silver?", ch->name );
do_tell( banker, buf );
return;
}
if ( !str_cmp( arg2, "all" ) )
{
amount = ch->copper/1000;
change = ch->copper%1000;
}
else
{
amount = atoi( arg2 );
}
if ( amount > ch->copper )
{
sprintf( buf, "%s Sorry, but you don't have that much copper to change.", ch->name );
do_tell( banker, buf );
return;
}
else
{
ch->silver += amount;
ch->copper = change;
set_char_color( AT_PLAIN, ch );
ch_printf( ch, "You change %d copper into %d silver coins.\n\r", amount );
sprintf( buf, "$n changes some currency.\n\r" );
act( AT_PLAIN, buf, ch, NULL, NULL, TO_ROOM );
save_char_obj( ch );
return;
}
}
}
-Toy
|