// initialize int inter_init_sql(const char *file) { //int i; inter_config_read(file); //DB connection initialized sql_handle = Sql_Malloc(); ShowInfo(read_message("Source.char.inter_init_sql")); if(SQL_ERROR == Sql_Connect(sql_handle, char_server_id, char_server_pw, char_server_ip, (uint16)char_server_port, char_server_db)) { Sql_ShowDebug(sql_handle); Sql_Free(sql_handle); exit(EXIT_FAILURE); } if(*default_codepage) { if(SQL_ERROR == Sql_SetEncoding(sql_handle, default_codepage)) Sql_ShowDebug(sql_handle); } wis_db = idb_alloc(DB_OPT_RELEASE_DATA); inter_guild_sql_init(); inter_storage_sql_init(); inter_party_sql_init(); inter_pet_sql_init(); inter_homunculus_sql_init(); inter_mercenary_sql_init(); inter_elemental_sql_init(); inter_mail_sql_init(); inter_auction_sql_init(); geoip_readdb(); msg_config_read("conf/messages.conf", false); return 0; }
// initialize int inter_init_sql (const char *file) { inter_config_read (file); //DB connection initialized sql_handle = Sql_Malloc(); ShowInfo ("Conectando à DB de chars.... (Character Server)\n"); if (SQL_ERROR == Sql_Connect (sql_handle, char_server_id, char_server_pw, char_server_ip, (uint16) char_server_port, char_server_db)) { Sql_ShowDebug (sql_handle); Sql_Free (sql_handle); exit (EXIT_FAILURE); } if (*default_codepage) { if (SQL_ERROR == Sql_SetEncoding (sql_handle, default_codepage)) Sql_ShowDebug (sql_handle); } ShowStatus ("Conectado ao banco de dados principal '"CL_WHITE"%s"CL_RESET"'.\n", char_server_db); Sql_PrintExtendedInfo (sql_handle); wis_db = idb_alloc (DB_OPT_RELEASE_DATA); inter_guild_sql_init(); inter_storage_sql_init(); inter_party_sql_init(); inter_pet_sql_init(); inter_homunculus_sql_init(); inter_mercenary_sql_init(); inter_elemental_sql_init(); inter_accreg_sql_init(); inter_mail_sql_init(); inter_auction_sql_init(); geoip_readdb(); msg_config_read ("conf/msg_athena.conf"); return 0; }
/** * Reads Message Data. * * This is a modified version of the mapserver's msg_config_read to * only read messages with IDs between 550 and 550+MAX_JOB_NAMES. * * @param[in] cfg_name configuration filename to read. * @param[in] allow_override whether to allow duplicate message IDs to override the original value. * @return success state. */ bool msg_config_read(const char *cfg_name, bool allow_override) { int msg_number; char line[1024], w1[1024], w2[1024]; FILE *fp; static int called = 1; if((fp = fopen(cfg_name, "r")) == NULL) { ShowError(read_message("Source.reuse.reuse_file_not_found"), cfg_name); return 1; } if((--called) == 0) memset(msg_table, 0, sizeof(msg_table[0]) * MAX_JOB_NAMES); while(fgets(line, sizeof(line), fp)) { if(line[0] == '/' && line[1] == '/') continue; if(sscanf(line, "%[^:]: %[^\r\n]", w1, w2) != 2) continue; if(strcmpi(w1, "import") == 0) msg_config_read(w2, true); else { msg_number = atoi(w1); if(msg_number < 550 || msg_number > (550+MAX_JOB_NAMES)) continue; msg_number -= 550; if(msg_number >= 0 && msg_number < MAX_JOB_NAMES) { if (msg_table[msg_number] != NULL) { if (!allow_override) { ShowError("Duplicate message: ID '%d' was already used for '%s'. Message '%s' will be ignored.\n", msg_number, w2, msg_table[msg_number]); continue; } aFree(msg_table[msg_number]); } msg_table[msg_number] = (char *)aMalloc((strlen(w2) + 1)*sizeof (char)); strcpy(msg_table[msg_number],w2); } } } fclose(fp); return 0; }
/** * Reads Message Data. * * This is a modified version of the mapserver's msg_config_read to * only read messages with IDs between 550 and 550+MAX_JOB_NAMES. * * @param[in] cfg_name configuration filename to read. * @param[in] allow_override whether to allow duplicate message IDs to override the original value. * @return success state. */ bool msg_config_read(const char *cfg_name, bool allow_override) { int msg_number; char line[1024], w1[1024], w2[1024]; FILE *fp; static int called = 1; if ((fp = fopen(cfg_name, "r")) == NULL) { ShowError("Arquivo inexistente: %s\n", cfg_name); return 1; } if ((--called) == 0) memset(msg_table, 0, sizeof(msg_table[0]) * MAX_JOB_NAMES); while(fgets(line, sizeof(line), fp) ) { if (line[0] == '/' && line[1] == '/') continue; if (sscanf(line, "%[^:]: %[^\r\n]", w1, w2) != 2) continue; if (strcasecmp(w1, "import") == 0) msg_config_read(w2, true); else { msg_number = atoi(w1); if( msg_number < 550 || msg_number > (550+MAX_JOB_NAMES) ) continue; msg_number -= 550; if (msg_number >= 0 && msg_number < MAX_JOB_NAMES) { if (msg_table[msg_number] != NULL) { if (!allow_override) { ShowError("Mensagem duplicada! (ID:'%d' | Uso:'%s'). Mensagem '%s' ignorada.\n", msg_number, w2, msg_table[msg_number]); continue; } aFree(msg_table[msg_number]); } msg_table[msg_number] = aMalloc((strlen(w2) + 1)*sizeof (char)); strcpy(msg_table[msg_number],w2); } } } fclose(fp); return 0; }
/*========================================== * Read Message Data -- at char server we only keep job names. *------------------------------------------*/ int msg_config_read (const char *cfgName) { int msg_number; char line[1024], w1[1024], w2[1024]; FILE *fp; static int called = 1; if ( (fp = fopen (cfgName, "r")) == NULL) { ShowError ("Arquivos de mensagens não encontrado: %s\n", cfgName); return 1; } if ( (--called) == 0) memset (msg_table, 0, sizeof (msg_table[0]) * MAX_JOB_NAMES); while (fgets (line, sizeof (line), fp)) { if (line[0] == '/' && line[1] == '/') continue; if (sscanf (line, "%[^:]: %[^\r\n]", w1, w2) != 2) continue; if (strcmpi (w1, "import") == 0) msg_config_read (w2); else { msg_number = atoi (w1); if (msg_number < 550 || msg_number > (550 + MAX_JOB_NAMES)) continue; msg_number -= 550; if (msg_number >= 0 && msg_number < MAX_JOB_NAMES) { if (msg_table[msg_number] != NULL) aFree (msg_table[msg_number]); msg_table[msg_number] = (char *) aMalloc ( (strlen (w2) + 1) * sizeof (char)); strcpy (msg_table[msg_number], w2); } } } fclose (fp); return 0; }
/*========================================== * map鯖初期化の大元 *------------------------------------------ */ int do_init(int argc,char *argv[]) { srand(gettick()); if(map_config_read((argc<2)? MAP_CONF_NAME:argv[1])) exit(1); battle_config_read((argc>2)? argv[2]:BATTLE_CONF_FILENAME); atcommand_config_read((argc>3)? argv[3]:ATCOMMAND_CONF_FILENAME); script_config_read((argc>4)? argv[4]:SCRIPT_CONF_NAME); msg_config_read((argc>5)? argv[5]:MSG_CONF_NAME); atexit(do_final); id_db = numdb_init(); map_db = strdb_init(16); nick_db = strdb_init(24); charid_db = numdb_init(); grfio_init((argc>6)? argv[6]:GRF_PATH_FILENAME); map_readallmap(); add_timer_func_list(map_clearflooritem_timer,"map_clearflooritem_timer"); do_init_chrif(); do_init_clif(); do_init_itemdb(); do_init_mob(); // npcの初期化時内でmob_spawnして、mob_dbを参照するのでinit_npcより先 do_init_script(); do_init_npc(); do_init_pc(); do_init_storage(); do_init_party(); do_init_guild(); do_init_skill(); do_init_pet(); npc_event_do_oninit(); // npcのOnInitイベント実行 return 0; }
// initialize int inter_init_sql(const char *file) { //int i; ShowInfo ("interserver initialize...\n"); inter_config_read(file); //DB connection initialized sql_handle = Sql_Malloc(); ShowInfo("Connect Character DB server.... (Character Server)\n"); if( SQL_ERROR == Sql_Connect(sql_handle, char_server_id, char_server_pw, char_server_ip, (uint16)char_server_port, char_server_db) ) { Sql_ShowDebug(sql_handle); Sql_Free(sql_handle); exit(EXIT_FAILURE); } if( *default_codepage ) { if( SQL_ERROR == Sql_SetEncoding(sql_handle, default_codepage) ) Sql_ShowDebug(sql_handle); } wis_db = idb_alloc(DB_OPT_RELEASE_DATA); inter_guild_sql_init(); inter_storage_sql_init(); inter_party_sql_init(); inter_pet_sql_init(); inter_homunculus_sql_init(); inter_mercenary_sql_init(); inter_elemental_sql_init(); inter_accreg_sql_init(); inter_mail_sql_init(); inter_auction_sql_init(); geoip_readdb(); msg_config_read("conf/msg_athena.conf"); return 0; }
// initialize int inter_init_sql(const char *file) { //int i; inter_config_read(file); //DB connection initialized sql_handle = SQL->Malloc(); ShowInfo("Conectando-se a base de dados do Servidor de Personagens...\n"); if( SQL_ERROR == SQL->Connect(sql_handle, char_server_id, char_server_pw, char_server_ip, (uint16)char_server_port, char_server_db) ) { Sql_ShowDebug(sql_handle); SQL->Free(sql_handle); exit(EXIT_FAILURE); } if( *default_codepage ) { if( SQL_ERROR == SQL->SetEncoding(sql_handle, default_codepage) ) Sql_ShowDebug(sql_handle); } wis_db = idb_alloc(DB_OPT_RELEASE_DATA); inter_guild_sql_init(); inter_storage_sql_init(); inter_party_sql_init(); inter_pet_sql_init(); inter_homunculus_sql_init(); inter_mercenary_sql_init(); inter_elemental_sql_init(); inter_mail_sql_init(); inter_auction_sql_init(); geoip_init(); msg_config_read("conf/messages.conf", false); return 0; }