OK... I added what you suggested, recompiled, and still only accepts gold. Strangly enough though, if I deposit 300 gold I get this for a balance:
You have 300 gold, 1635017078 silver, and 114 copper in the bank.
void do_deposit( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *banker;
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
char arg3[MAX_INPUT_LENGTH];
char buf [MAX_STRING_LENGTH];
int amount;
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 = one_argument( argument, arg2 );
argument = one_argument( argument, arg3 );
if ( arg1 == '\0' || arg2 == '\0' || arg3 == '\0' )
{
sprintf( buf, "%s How much gold, silver, or copper do you wish to deposit?", ch->name );
do_tell( banker, buf );
return;
}
if ( !str_cmp( arg1, "gold" ) && !is_number( arg1 ) )
{
sprintf( buf, "%s How much gold do you wish to deposit?", ch->name );
do_tell( banker, buf );
return;
}
if ( !str_cmp( arg1, "all" ) )
{
amount = ch->gold;
}
else
{
amount = atoi( arg1 );
}
if ( amount > ch->gold )
{
sprintf( buf, "%s Sorry, but you don't have that much gold to deposit.", ch->name );
do_tell( banker, buf );
return;
}
else
{
ch->gold -= amount;
ch->pcdata->balance += amount;
set_char_color( AT_PLAIN, ch );
ch_printf( ch, "You deposit %d gold.\n\r", amount );
sprintf( buf, "$n deposits some coins.\n\r" );
act( AT_PLAIN, buf, ch, NULL, NULL, TO_ROOM );
save_char_obj( ch );
return;
}
if ( !str_cmp( arg2, "silver" ) && !is_number( arg2 ) )
{
sprintf( buf, "%s How much silver do you wish to deposit?", ch->name );
do_tell( banker, buf );
return;
}
if ( !str_cmp( arg2, "all" ) )
{
amount = ch->silver;
}
else
{
amount = atoi( arg2 );
}
if ( amount > ch->silver )
{
sprintf( buf, "%s Sorry, but you don't have that much silver to deposit.", ch->name );
do_tell( banker, buf );
return;
}
else
{
ch->silver -= amount;
ch->pcdata->balance += amount;
set_char_color( AT_PLAIN, ch );
ch_printf( ch, "You deposit %d silver.\n\r", amount );
sprintf( buf, "$n deposits some coins.\n\r" );
act( AT_PLAIN, buf, ch, NULL, NULL, TO_ROOM );
save_char_obj( ch );
return;
}
if ( !str_cmp( arg3, "copper" ) && !is_number( arg3 ) )
{
sprintf( buf, "%s How much copper do you wish to deposit?", ch->name );
do_tell( banker, buf );
return;
}
if ( !str_cmp( arg3, "all" ) )
{
amount = ch->copper;
}
else
{
amount = atoi( arg3 );
}
if ( amount > ch->copper )
{
sprintf( buf, "%s Sorry, but you don't have that much copper to deposit.", ch->name );
do_tell( banker, buf );
return;
}
if ( amount <= 0 )
{
sprintf( buf, "%s Oh, I see.. you're a comedian.", ch->name );
do_tell( banker, buf );
return;
}
else
{
ch->copper -= amount;
ch->pcdata->balance += amount;
set_char_color( AT_PLAIN, ch );
ch_printf( ch, "You deposit %d copper.\n\r", amount );
sprintf( buf, "$n deposits some coins.\n\r" );
act( AT_PLAIN, buf, ch, NULL, NULL, TO_ROOM );
save_char_obj( ch );
return;
}
}
That's do_deposit. Figure that might help too. Even when u deposit 100 silver, I still get the "you don't have enough gold" message.
-Toy
|