static bool guild_read_castledb(char* str[], int columns, int current) {// <castle id>,<map name>,<castle name>,<castle event>[,<reserved/unused switch flag>] struct guild_castle *gc; CREATE(gc, struct guild_castle, 1); gc->castle_id = atoi(str[0]); gc->mapindex = mapindex_name2id(str[1]); safestrncpy(gc->castle_name, str[2], sizeof(gc->castle_name)); safestrncpy(gc->castle_event, str[3], sizeof(gc->castle_event)); idb_put(castle_db,gc->castle_id,gc); //intif_guild_castle_info(gc->castle_id); return true; }
static int guild_read_castledb(void) { FILE *fp; char line[1024]; int j,ln=0; char *str[32],*p; struct guild_castle *gc; sprintf(line, "%s/castle_db.txt", db_path); if( (fp=fopen(line,"r"))==NULL){ ShowError("can't read %s\n", line); return -1; } while(fgets(line, sizeof(line), fp)) { if(line[0]=='/' && line[1]=='/') continue; memset(str,0,sizeof(str)); for(j=0,p=line;j<6 && p;j++){ str[j]=p; p=strchr(p,','); if(p) *p++=0; } if (j < 4) //Insufficient data for castle. [Skotlex] { ShowError("castle_db.txt: invalid line '%s'\n", line); continue; } gc=(struct guild_castle *)aCalloc(1,sizeof(struct guild_castle)); gc->castle_id=atoi(str[0]); gc->mapindex = mapindex_name2id(str[1]); safestrncpy(gc->castle_name,str[2],NAME_LENGTH); safestrncpy(gc->castle_event,str[3],NAME_LENGTH); idb_put(castle_db,gc->castle_id,gc); //intif_guild_castle_info(gc->castle_id); ln++; } fclose(fp); ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n",ln,"castle_db.txt"); return 0; }
/*========================================== * Read the instance_db.txt file *------------------------------------------*/ static bool instance_readdb_sub(char *str[], int columns, int current) { uint8 i; int id = atoi(str[0]); struct instance_db *db; bool isNew = false, defined = false; if(!id || id > USHRT_MAX) { ShowError("instance_readdb_sub: Cannot add instance with ID '%d'. Valid ID is 1 ~ %d.\n", id, USHRT_MAX); return false; } if(mapindex_name2id(str[3]) == 0) { ShowError("instance_readdb_sub: Invalid map '%s' as entrance map.\n", str[3]); return false; } if(!(db = (struct instance_db *)uidb_get(InstanceDB, id))) { CREATE(db, struct instance_db, 1); db->id = id; db->name = StringBuf_Malloc(); db->enter.mapname = StringBuf_Malloc(); isNew = true; } else {
/// lookup: map name -> castle* struct guild_castle* guild_mapname2gc(const char* mapname) { return guild_mapindex2gc(mapindex_name2id(mapname)); }
// Read party from mysql struct party_data *inter_party_fromsql(int party_id) { int leader_id = 0; int leader_char = 0; struct party_data* p; struct party_member* m; char* data; size_t len; int i; #ifdef NOISY ShowInfo("Load party request ("CL_BOLD"%d"CL_RESET")\n", party_id); #endif if( party_id <= 0 ) return NULL; //Load from memory p = (struct party_data*)idb_get(party_db_, party_id); if( p != NULL ) return p; p = party_pt; memset(p, 0, sizeof(struct party_data)); if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `party_id`, `name`,`exp`,`item`, `leader_id`, `leader_char` FROM `%s` WHERE `party_id`='%d'", party_db, party_id) ) { Sql_ShowDebug(sql_handle); return NULL; } if( SQL_SUCCESS != Sql_NextRow(sql_handle) ) return NULL; p->party.party_id = party_id; Sql_GetData(sql_handle, 1, &data, &len); memcpy(p->party.name, data, min(len, NAME_LENGTH)); Sql_GetData(sql_handle, 2, &data, NULL); p->party.exp = (atoi(data) ? 1 : 0); Sql_GetData(sql_handle, 3, &data, NULL); p->party.item = atoi(data); Sql_GetData(sql_handle, 4, &data, NULL); leader_id = atoi(data); Sql_GetData(sql_handle, 5, &data, NULL); leader_char = atoi(data); Sql_FreeResult(sql_handle); // Load members if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `account_id`,`char_id`,`name`,`base_level`,`last_map`,`online`,`class` FROM `%s` WHERE `party_id`='%d'", char_db, party_id) ) { Sql_ShowDebug(sql_handle); return NULL; } for( i = 0; i < MAX_PARTY && SQL_SUCCESS == Sql_NextRow(sql_handle); ++i ) { m = &p->party.member[i]; Sql_GetData(sql_handle, 0, &data, NULL); m->account_id = atoi(data); Sql_GetData(sql_handle, 1, &data, NULL); m->char_id = atoi(data); Sql_GetData(sql_handle, 2, &data, &len); memcpy(m->name, data, min(len, NAME_LENGTH)); Sql_GetData(sql_handle, 3, &data, NULL); m->lv = atoi(data); Sql_GetData(sql_handle, 4, &data, NULL); m->map = mapindex_name2id(data); Sql_GetData(sql_handle, 5, &data, NULL); m->online = (atoi(data) ? 1 : 0); Sql_GetData(sql_handle, 6, &data, NULL); m->class_ = atoi(data); m->leader = (m->account_id == leader_id && m->char_id == leader_char ? 1 : 0); } Sql_FreeResult(sql_handle); if( save_log ) ShowInfo("Party loaded (%d - %s).\n", party_id, p->party.name); //Add party to memory. CREATE(p, struct party_data, 1); memcpy(p, party_pt, sizeof(struct party_data)); //init state int_party_calc_state(p); idb_put(party_db_, party_id, p); return p; }