Beispiel #1
0
int func_table_key_index(func_t *f, const char *name)
{
  int i,k,n;
  if(f==NULL || !func_is_table(f) || func_asize(f)<=0 || name==NULL){ FUNC_ERROR_ARG1("func_table_key_index",f); }
  n=PJWHash(name);
  i=(n % func_asize(f));
  if(f->a[i]==NULL || char_eq(func_key_name(f->a[i]),name)){ return i; }
  k=i;
  do{
    if(++i>=func_asize(f)){ i=0; }
    if(f->a[i]==NULL || char_eq(func_key_name(f->a[i]),name)){ return i; }
  }while(k!=i);
  return -1;
}
Beispiel #2
0
int get_player(char *name) {
	for ( int i = 0; i < player_database_n; i++ ) {
		if ( char_eq(player_database[i].name, name) ) {
			return i;
		}
	}
	return -1;
}
Beispiel #3
0
int player_create(char *name, char *password) {
	if ( char_eq(name, "admin") || char_eq(name, "root") || strlen(name) >= 16 ) {
		return 1;
	}
	for ( int i = 0; name[i]; i++ ) {
		char c = name[i];
		if ( !RANGE(c, 'a', 'z') && !RANGE(c, 'A', 'Z') && !RANGE(c, '0', '9') && c != '_' && c != '-' && c != '.' ) {
			return 1;
		}
	}
	player_database_t *new_player = &player_database[player_database_n];
	strcpy(new_player->name, name);
	memcpy(new_player->password_hash, password, sizeof(char) * 16);
	// fill up properties
	double r = 100 + 400 * (double)rand() / RAND_MAX;
	double fi = 2 * 3.14159265359 * (double) rand() / RAND_MAX;
	new_player->x = (int)( r * cos(fi) );
	new_player->y = (int)( r * sin(fi) );
	new_player->hp = 100;
	new_player->movement_speed = 1;
	player_database_n++;
	return database_backup();
}