/* * Bank Code - Adapted By Xeroth from Judson Knott's Banking System */ #include "include.h" #include "interp.h" #include "tables.h" void do_balance ( CHAR_DATA *ch, char *argument ) { char buf[MAX_STRING_LENGTH]; if (IS_NPC(ch)) return; sprintf( buf, "You have %ld gold and %ld silver in the bank.\n\r", ch->pcdata->bankGold, ch->pcdata->bankSilver); send_to_char( buf, ch ); return; } void do_deposit ( CHAR_DATA *ch, char *argument ) { CHAR_DATA *banker; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; long amnt; if (IS_NPC(ch)) return; if (!IS_SET(ch->in_room->room_flags, ROOM_BANK) ) { sprintf( buf, "But you are not in a bank.\n\r" ); send_to_char( buf, ch ); return; } banker = NULL; for ( banker = ch->in_room->people; banker; banker = banker->next_in_room ) { if ( IS_NPC( banker ) && IS_SET(banker->pIndexData->act, ACT_BANKER) ) break; } if ( !banker ) { sprintf( buf, "The banker is currently not available.\n\r" ); send_to_char( buf, ch ); return; } argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); if ( arg1[0] == '\0' ) { sprintf( buf, "How much do you wish to deposit?\n\r" ); send_to_char( buf, ch ); return; } amnt = atoi( arg1 ); if(!str_cmp (arg2, "gold")) { if ( amnt >= (ch->gold + 1) ) { sprintf( buf, "%s, you do not have %ld gold coins.\n\r", ch->name, amnt ); send_to_char(buf, ch); return; } ch->pcdata->bankGold += amnt; ch->gold -= amnt; sprintf( buf, "%s tells you, 'Your account now contains: %ld gold and %ld silver'\n\r", banker->short_descr, ch->pcdata->bankGold, ch->pcdata->bankSilver ); send_to_char(buf, ch); return; } if(!str_cmp (arg2, "silver")) { if ( amnt >= (ch->silver + 1) ) { sprintf( buf, "%s, you do not have %ld silver coins.\n\r", ch->name, amnt ); send_to_char(buf, ch); return; } ch->pcdata->bankSilver += amnt; ch->silver -= amnt; sprintf( buf, "%s tells you, 'Your account now contains: %ld gold and %ld silver'\n\r", banker->short_descr, ch->pcdata->bankGold, ch->pcdata->bankSilver ); send_to_char(buf, ch); return; } sprintf(buf, "Invalid syntax: deposit <amount> <gold/silver>\n\r"); send_to_char(buf, ch); } void do_withdraw ( CHAR_DATA *ch, char *argument ) { CHAR_DATA *banker; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; long amnt; if (IS_NPC(ch)) return; if (!IS_SET(ch->in_room->room_flags, ROOM_BANK) ) { sprintf( buf, "But you are not in a bank.\n\r" ); send_to_char( buf, ch ); return; } banker = NULL; for ( banker = ch->in_room->people; banker; banker = banker->next_in_room ) { if ( IS_NPC( banker ) && IS_SET(banker->pIndexData->act, ACT_BANKER) ) break; } if ( !banker ) { sprintf( buf, "The banker is currently not available.\n\r" ); send_to_char( buf, ch ); return; } argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); if ( arg1[0] == '\0' ) { sprintf( buf, "How much gold do you wish to withdraw?\n\r" ); send_to_char( buf, ch ); return; } amnt = atoi( arg1 ); if(!str_cmp (arg2, "gold")) { if ( amnt >= (ch->pcdata->bankGold + 1) ) { sprintf( buf, "%s, you do not have %ld gold coins in the bank.\n\r", ch->name, amnt ); send_to_char(buf, ch); return; } ch->pcdata->bankGold -= amnt; ch->gold += amnt; sprintf( buf, "%s tells you, 'Your account now contains: %ld gold and %ld silver'\n\r", banker->short_descr, ch->pcdata->bankGold, ch->pcdata->bankSilver ); send_to_char(buf, ch); return; } if(!str_cmp (arg2, "silver")) { if ( amnt >= (ch->pcdata->bankSilver + 1) ) { sprintf( buf, "%s, you do not have %ld silver coins in the bank.\n\r", ch->name, amnt ); send_to_char(buf, ch); return; } ch->pcdata->bankSilver -= amnt; ch->silver += amnt; sprintf( buf, "%s tells you, 'Your account now contains: %ld gold and %ld silver'\n\r", banker->short_descr, ch->pcdata->bankGold, ch->pcdata->bankSilver ); send_to_char(buf, ch); return; } sprintf(buf, "Invalid syntax: withdraw <amount> <gold/silver>\n\r"); send_to_char(buf, ch); }