Beispiel #1
0
void free_instruments(void)
{
  int i=128;
  while(i--)
    {
      if (tonebank[i])
	free_bank(0,i);
      if (drumset[i])
	free_bank(1,i);
    }
}
Beispiel #2
0
void free_banks( void )
{
    BANK_DATA              *bank,
                           *bank_next;
    int                     hash;

    for ( hash = 0; hash < 126; hash++ ) {
        for ( bank = bank_index[hash]; bank; bank = bank_next ) {
            bank_next = bank->next;
            unlink_bank( bank );
            free_bank( bank );
        }
    }
}
Beispiel #3
0
void free_mob_index( MOB_INDEX_DATA *pMob )
{
    free_string( pMob->player_name );
    free_string( pMob->name2 );
    free_string( pMob->name3 );
    free_string( pMob->name4 );
    free_string( pMob->name5 );
    free_string( pMob->name6 );
    free_string( pMob->short_descr );
    free_string( pMob->long_descr );
    free_string( pMob->description );
    free_prog( pMob->progs );

    free_shop( pMob->pShop );
    free_repair( pMob->pRepair );
    free_bank( pMob->pBank );
    pMob->pShop   = NULL;
    pMob->pBank   = NULL;
    pMob->pRepair = NULL;

    pMob->next              = mob_index_free;
    mob_index_free          = pMob;
    return;
}
Beispiel #4
0
void __fastcall__
free_scroll (struct obj * s)
{
    free_bank (((struct scroll *) s)->bank);
}
Beispiel #5
0
void do_bankedit( CHAR_DATA *ch, char *argument )
{
    BANK_DATA              *bank;
    int                     type = DEFAULT_CURR;
    char                    arg1[MAX_INPUT_LENGTH];
    char                    arg2[MAX_INPUT_LENGTH];
    char                    arg3[MAX_INPUT_LENGTH];
    char                    arg4[MIL];
    char                    arg5[MSL];

    int                     amount;

    if ( IS_NPC( ch ) ) {
        return;
    }

    if ( argument[0] == '\0' ) {
        send_to_char
            ( "Syntax:\tbankedit [delete/password/amount] [name] [new password or amount] [currency] [add/subtract]\r\n",
              ch );
        return;
    }

    argument = one_argument( argument, arg1 );
    argument = one_argument( argument, arg2 );

    bank = find_bank( arg2 );

    if ( !bank ) {
        send_to_char( "There is no account with that name!\r\n", ch );
        return;
    }

    if ( !str_cmp( arg1, "delete" ) ) {
        ch_printf( ch, "Deleting... (%s)\r\n", bank->name );
        free_bank_to_chars( bank );
        unlink_bank( bank );
        free_bank( bank );
        save_bank(  );
        send_to_char( "The account has successfully been deleted.\r\n", ch );
        return;
    }

    argument = one_argument( argument, arg3 );

    if ( !str_cmp( arg1, "password" ) ) {
        char                   *pwdnew,
                               *p;

        if ( arg3 == '\0' ) {
            send_to_char( "You have to have something for a password.\r\n", ch );
            return;
        }
        if ( strlen( arg3 ) < 5 ) {
            send_to_char( "Invalid Password.  Must be at least 5 characters in length.\r\n", ch );
            return;
        }
        if ( arg3[0] == '!' ) {
            send_to_char( "Password cannot begin with the '!' character.\r\n", ch );
            return;
        }

        pwdnew = crypt( arg3, bank->name );
        for ( p = pwdnew; *p != '\0'; p++ ) {
            if ( *p == '~' ) {
                send_to_char( "Password not acceptable, try again.\r\n", ch );
                return;
            }
        }

        STRFREE( bank->password );
        bank->password = STRALLOC( pwdnew );
        bank->lastused = current_time;
        save_bank(  );
        ch_printf( ch, "The password has been changed to %s.\r\n", arg3 );
        return;
    }
    argument = one_argument( argument, arg4 );
    if ( !str_cmp( arg1, "amount" ) ) {
        amount = atoi( arg3 );

        if ( arg3 && arg4 )
            type = get_currency_type( arg4 );

        if ( amount < 0 ) {
            send_to_char( "A positive value please.\r\n", ch );
            return;
        }

        if ( !str_cmp( arg5, "add" ) ) {
            if ( type == CURR_BRONZE ) {
                bank->bronze += amount;
            }
            if ( type == CURR_COPPER ) {
                bank->copper += amount;
            }
            if ( type == CURR_GOLD ) {
                bank->gold += amount;
            }
            if ( type == CURR_SILVER ) {
                bank->silver += amount;
            }
        }

        if ( !str_cmp( arg5, "subtract" ) ) {
            if ( type == CURR_BRONZE ) {
                bank->bronze -= amount;
            }
            if ( type == CURR_COPPER ) {
                bank->copper -= amount;
            }
            if ( type == CURR_GOLD ) {
                bank->gold -= amount;
            }
            if ( type == CURR_SILVER ) {
                bank->silver -= amount;
            }

        }
        bank->lastused = current_time;
        save_bank(  );
        ch_printf( ch, "The amount has been changed to %d.\r\n", bank->amount );
        return;
    }
}
Beispiel #6
0
void do_account( CHAR_DATA *ch, char *argument )
{
    BANK_DATA              *bank;
    CHAR_DATA              *banker;
    char                    arg1[MAX_INPUT_LENGTH];
    char                    arg2[MAX_INPUT_LENGTH];
    char                    arg3[MAX_INPUT_LENGTH];
    char                    buf[MSL],
                           *pwdnew,
                           *p;
    int                     currtime = time( 0 );

    /*
     * arg1 == account name
     * arg2 == password (if none, close it)
     */

    if ( !( banker = find_banker( ch ) ) ) {
        send_to_char( "You're not in a bank!\r\n", ch );
        return;
    }

    if ( IS_NPC( ch ) || IS_IMMORTAL( ch ) ) {
        snprintf( buf, MSL, "say Sorry, %s, we don't do business with mobs, or 6D STAFF.",
                  ch->name );
        interpret( banker, buf );
        return;
    }

    if ( argument[0] == '\0' ) {
        send_to_char( "Syntax: account [account name] [account password]\n", ch );
        send_to_char( "Syntax: account [account name] [account password] [create/delete]\n", ch );
        send_to_char( "Syntax: account [account name]\n", ch );
        interpret( banker, ( char * ) "say if you need help type &WHELP BANK&D." );
        return;
    }

    argument = one_argument( argument, arg1 );
    argument = one_argument( argument, arg2 );
    argument = one_argument( argument, arg3 );

    bank = find_bank( arg1 );

    if ( !str_cmp( arg3, "create" ) ) {
        if ( strlen( arg1 ) < 4 ) {
            send_to_char( "Account name must be at least 4 characters.\r\n", ch );
            return;
        }

        if ( strlen( arg2 ) < 5 ) {
            send_to_char( "Invalid Password.  Must be at least 5 characters in length.\r\n", ch );
            return;
        }
        if ( arg2[0] == '!' ) {
            send_to_char( "Password cannot begin with the '!' character.\r\n", ch );
            return;
        }

        if ( bank ) {
            send_to_char( "There is already an account with that name!\r\n", ch );
            return;
        }

        if ( ( currtime - ch->pcdata->lastaccountcreated ) < 3600 ) {
            send_to_char
                ( "Please wait at least one hour from previous creation time to make a new account.\r\n",
                  ch );
            return;
        }

        pwdnew = crypt( arg2, arg1 );
        for ( p = pwdnew; *p != '\0'; p++ ) {
            if ( *p == '~' ) {
                send_to_char( "Password not acceptable, try again.\r\n", ch );
                return;
            }
        }

        CREATE( bank, BANK_DATA, 1 );
        bank->lastused = current_time;
        bank->name = STRALLOC( arg1 );
        bank->password = STRALLOC( pwdnew );
        bank->bronze = 0;
        bank->copper = 0;
        bank->gold = 0;
        bank->silver = 0;
        add_bank( bank );
        save_bank(  );
        ch->pcdata->lastaccountcreated = currtime;
        save_char_obj( ch );
        saving_char = NULL;
        send_to_char( "Your account has been added.\r\n", ch );
        return;
    }
    else if ( !str_cmp( arg3, "delete" ) ) {
        if ( !bank ) {
            send_to_char( "There is no account with that name!\r\n", ch );
            return;
        }

        if ( strcmp( crypt( arg2, bank->password ), bank->password ) ) {
            send_to_char( "Invalid password.\r\n", ch );
            return;
        }

        GET_MONEY( ch, CURR_GOLD ) += bank->gold;
        GET_MONEY( ch, CURR_SILVER ) += bank->silver;
        GET_MONEY( ch, CURR_BRONZE ) += bank->bronze;
        GET_MONEY( ch, CURR_COPPER ) += bank->copper;
        ch_printf( ch, "Deleting... (%s)\r\n", bank->name );
        free_bank_to_chars( bank );
        unlink_bank( bank );
        free_bank( bank );
        save_bank(  );
        ch->pcdata->lastaccountcreated = 0;
        save_char_obj( ch );
        saving_char = NULL;
        send_to_char( "Your account has successfully been deleted.\r\n", ch );
        return;
    }

    if ( !bank ) {
        send_to_char( "There is no account by that name!\r\n", ch );
        return;
    }

    if ( !str_cmp( arg2, "" ) ) {
        if ( ch->pcdata->bank == NULL ) {
            send_to_char( "You don't have any bank account open now.\r\n", ch );
            return;
        }
        snprintf( buf, MSL, "You have closed the account %s.\r\n", ch->pcdata->bank->name );
        send_to_char( buf, ch );
        ch->pcdata->bank = NULL;
        return;
    }

    if ( strcmp( crypt( arg2, bank->password ), bank->password ) ) {
        send_to_char( "Invalid password.\r\n", ch );
        return;
    }

    snprintf( buf, MSL, "You have opened the account %s.\r\n", bank->name );
    send_to_char( buf, ch );
    ch->pcdata->bank = bank;
}
Beispiel #7
0
void add_bank( BANK_DATA * bank )
{
    int                     hash,
                            x;
    BANK_DATA              *tmp,
                           *prev;

    if ( !bank ) {
        bug( "Add_bank: NULL bank" );
        return;
    }

    if ( !bank->name ) {
        bug( "Add_bank: NULL bank->name" );
        return;
    }

    if ( !bank->password ) {
        bug( "Add_bank: NULL bank->password" );
        return;
    }

    /*
     * make sure the name is all lowercase 
     */
    for ( x = 0; bank->name[x] != '\0'; x++ )
        bank->name[x] = LOWER( bank->name[x] );
    if ( bank->name[0] < 'a' || bank->name[0] > 'z' )
        hash = 0;
    else
        hash = ( bank->name[0] - 'a' ) + 1;

    if ( ( prev = tmp = bank_index[hash] ) == NULL ) {
        bank->next = bank_index[hash];
        bank_index[hash] = bank;
        return;
    }

    for ( ; tmp; tmp = tmp->next ) {
        if ( ( x = strcmp( bank->name, tmp->name ) ) == 0 ) {
            bug( "Add_bank: trying to add duplicate name to bucket %d", hash );
            free_bank( bank );
            return;
        }
        else if ( x < 0 ) {
            if ( tmp == bank_index[hash] ) {
                bank->next = bank_index[hash];
                bank_index[hash] = bank;
                return;
            }
            prev->next = bank;
            bank->next = tmp;
            return;
        }
        prev = tmp;
    }

    /*
     * add to end 
     */
    prev->next = bank;
    bank->next = NULL;
    return;
}
Beispiel #8
0
int main(int argc, char *argv[])
{
  Parameters *parameters; // user defined parameters
  Geometry *geometry; // homogenous cube geometry
  Material *material; // problem material
  Bank *source_bank; // array for particle source sites
  Tally *tally; // scalar flux tally
  double *keff; // effective multiplication factor
  double t1, t2; // timers

  #ifdef _OPENMP
    unsigned long counter = 0; //counter to decide the start pos of master bank copy from sub banks
    Bank *g_fission_bank; //global fission bank
  #endif

  // Get inputs: set parameters to default values, parse parameter file,
  // override with any command line inputs, and print parameters
  parameters = init_parameters();
  parse_parameters(parameters);
  read_CLI(argc, argv, parameters);
  print_parameters(parameters);


  // Set initial RNG seed
  set_initial_seed(parameters->seed);
  set_stream(STREAM_INIT);

  // Create files for writing results to
  init_output(parameters);

  // Set up geometry
  geometry = init_geometry(parameters);

  // Set up material
  material = init_material(parameters);

  // Set up tallies
  tally = init_tally(parameters);

  // Create source bank and initial source distribution
  source_bank = init_source_bank(parameters, geometry);

  // Create fission bank
  #ifdef _OPENMP
    omp_set_num_threads(parameters->n_threads); // Set number of openmp threads
    printf("threads num: %d\n", parameters->n_threads);
    // Allocate one master fission bank
    g_fission_bank = init_bank(2*parameters->n_particles);
  #endif

  // Set up array for k effective
  keff = calloc(parameters->n_active, sizeof(double));

  center_print("SIMULATION", 79);
  border_print();
  printf("%-15s %-15s %-15s\n", "BATCH", "KEFF", "MEAN KEFF");

  #ifdef _OPENMP
    // Start time
    t1 = omp_get_wtime();

    run_eigenvalue(counter, g_fission_bank, parameters, geometry, material, source_bank, fission_bank, tally, keff);

    // Stop time
    t2 = omp_get_wtime();
  #endif

  printf("Simulation time: %f secs\n", t2-t1);

  // Free memory
  #ifdef _OPENMP
    free_bank(g_fission_bank);
  #endif

  free(keff);
  free_tally(tally);
  free_bank(source_bank);
  free_material(material);
  free(geometry);
  free(parameters);

  return 0;
}
Beispiel #9
0
int main(int argc, char *argv[])
{
  Parameters *parameters; // user defined parameters
  Geometry *geometry; // homogenous cube geometry
  Material *material; // problem material
  Bank *source_bank; // array for particle source sites
  Bank *fission_bank; // array for particle fission sites
  Tally *tally; // scalar flux tally
  double *keff; // effective multiplication factor
  double t1, t2; // timers

  // Get inputs: set parameters to default values, parse parameter file,
  // override with any command line inputs, and print parameters
  parameters = init_parameters();
  parse_parameters(parameters);
  read_CLI(argc, argv, parameters);
  print_parameters(parameters);

  // Set initial RNG seed
  set_initial_seed(parameters->seed);
  set_stream(STREAM_OTHER);

  // Create files for writing results to
  init_output(parameters);

  // Set up geometry
  geometry = init_geometry(parameters);

  // Set up material
  material = init_material(parameters);

  // Set up tallies
  tally = init_tally(parameters);

  // Create source bank and initial source distribution
  source_bank = init_source_bank(parameters, geometry);

  // Create fission bank
  fission_bank = init_fission_bank(parameters);

  // Set up array for k effective
  keff = calloc(parameters->n_active, sizeof(double));

  center_print("SIMULATION", 79);
  border_print();
  printf("%-15s %-15s %-15s %-15s\n", "BATCH", "ENTROPY", "KEFF", "MEAN KEFF");

  // Start time
  t1 = timer();

  run_eigenvalue(parameters, geometry, material, source_bank, fission_bank, tally, keff);

  // Stop time
  t2 = timer();

  printf("Simulation time: %f secs\n", t2-t1);

  // Free memory
  free(keff);
  free_tally(tally);
  free_bank(fission_bank);
  free_bank(source_bank);
  free_material(material);
  free(geometry);
  free(parameters);

  return 0;
}