private void OnExport(object sender, EventArgs e) { int i, nString; _lb_output.Items.Clear(); _lb_output.Items.Add("Exporting !"); _lb_output.Refresh(); _lb_output.Invalidate(); CheckBox[] chkbox = new CheckBox[(int)eSTRING.MAX] { _chk_string, _chk_help1, _chk_item, _chk_setitem, _chk_option, _chk_opt_rare, _chk_npcname, _chk_quest, _chk_skill, _chk_sskill, _chk_action, _chk_combo, _chk_affinity, _chk_lacarette, _chk_itemcollection }; CheckBox[] chk_nation = new CheckBox[(int)eNATION.MAX] { _chk_nation_dev, _chk_nation_ger, _chk_nation_fra, _chk_nation_ita, _chk_nation_pol, _chk_nation_esp, _chk_nation_bra, _chk_nation_mex, _chk_nation_rus, _chk_nation_usa, _chk_nation_tha, _chk_nation_uk, }; _BitString = 0; _BitNation = 0; for (i = 0; i < (int)eSTRING.MAX; ++i) { if (chkbox[i].Checked == true) { _BitString |= (1 << i); } } string path = Directory.GetCurrentDirectory(); path += "\\"; const string ini_name = "config.ini"; UTIL.INI ini_reader = new UTIL.INI(path + ini_name); string strRet, strNation; string strPathKey = "Path_Ship"; if (_radio_pre.Checked == true) { strPathKey = "Path_Pre"; } for (i = 0; i < (int)eNATION.MAX; ++i) { if (chk_nation[i].Checked == true) { _BitNation |= (1 << i); strNation = ((eNATION)(i)).ToString(); strRet = ini_reader.GetIniValue(strPathKey, strNation); if (strRet == string.Empty) { using (FolderBrowserDialog dialog = new FolderBrowserDialog()) { dialog.Description = strNation + " Set Data Path"; dialog.ShowNewFolderButton = false; dialog.SelectedPath = path; if (dialog.ShowDialog() == DialogResult.OK) { ini_reader.SetIniValue(strPathKey, ((eNATION)(i)).ToString(), dialog.SelectedPath + "\\"); } } } } } for (nString = 0; nString < (int)eSTRING.MAX; ++nString) { if ((_BitString & (1 << nString)) != 0) { QueryProc(nString); for (i = 0; i < (int)eNATION.MAX; ++i) { if ((_BitNation & (1 << i)) != 0) { switch (nString) { case (int)eSTRING.STRING: exportData(nString, i, "strClient", "a_index", 1, "a_string"); break; case (int)eSTRING.HELP1: exportData(nString, i, "strHelp", "a_index", 2, "a_name", "a_desc"); break; case (int)eSTRING.ITEM: exportData(nString, i, "strItem", "a_index", 2, "a_name", "a_descr"); break; case (int)eSTRING.ITEM_SET: exportData(nString, i, "strSetItem", "a_set_idx", 1, "a_set_name"); break; case (int)eSTRING.OPTION: exportData(nString, i, "strOption", "a_index", 1, "a_name"); break; case (int)eSTRING.OPTION_RARE: exportData(nString, i, "strRareOption", "a_index", 1, "a_prefix"); break; case (int)eSTRING.NPC_NAME: // descr ?? exportData(nString, i, "strNpcName", "a_index", 2, "a_name", "a_descr"); break; case (int)eSTRING.QUEST: exportData(nString, i, "strQuest", "a_index", 4, "a_name", "a_desc", "a_desc2", "a_desc3"); break; case (int)eSTRING.SKILL: exportData(nString, i, "strSkill", "a_index", 3, "a_name", "a_client_description", "a_client_tooltip"); break; case (int)eSTRING.SKILL_SPECIAL: exportData(nString, i, "strSSkill", "a_index", 2, "a_name", "a_desc"); break; case (int)eSTRING.ACTION: exportData(nString, i, "strAction", "a_index", 2, "a_name", "a_client_description"); break; case (int)eSTRING.COMBO: exportData(nString, i, "strCombo", "a_index", 1, "a_name"); break; case (int)eSTRING.AFFINITY: exportData(nString, i, "strAffinity", "a_index", 1, "a_name"); break; case (int)eSTRING.LACARETTE: exportData(nString, i, "strLacarette", "a_index", 1, "a_name"); break; case (int)eSTRING.ITEMCOLLECTION: exportData(nString, i, "strItemCollection", "a_theme", 2, "a_theme_string", "a_desc_string"); break; } } } // for (i } } // for (nString _lb_output.SelectedIndex = _lb_output.Items.Add("Exported Completed!"); }
//---------------------------------------------------------------------------- // args[0] - string 종류 // args[1] - 국가 // //---------------------------------------------------------------------------- private bool exportData(params object[] args) { int i; Int32 nString = Convert.ToInt32(args[0]); Int32 nNation = Convert.ToInt32(args[1]); string strOutName = args[2].ToString(); string strIdxName = args[3].ToString(); Int32 nOutCount = Convert.ToInt32(args[4]); if (nOutCount == 0) { return(false); } string[] strOut = new string[nOutCount]; for (i = 0; i < nOutCount; ++i) { strOut[i] = args[5 + i].ToString(); strOut[i] += NationPostfix[nNation]; } // Log _lb_output.Items.Add(string.Format("{0}", strOutName)); _lb_output.Refresh(); _lb_output.Invalidate(); // 출력 경로를 얻는다. string path = Directory.GetCurrentDirectory(); path += "\\"; const string ini_name = "config.ini"; UTIL.INI ini_reader = new UTIL.INI(path + ini_name); string strPathKey = "Path_Ship"; if (_radio_pre.Checked == true) { strPathKey = "Path_Pre"; } string strPath = ini_reader.GetIniValue(strPathKey, ((eNATION)(nNation)).ToString()); strPath += string.Format("{0}{1}.lod", strOutName, OutputNationPost[nNation]); FileStream fs = new FileStream(strPath, FileMode.Create, FileAccess.Write); BinaryWriter bw = new BinaryWriter(fs); DataTable dt = _sql2.dt; DataRow[] Rows = dt.Select(string.Format("{0} = MAX({0})", strIdxName)); Int32 nMax = Convert.ToInt32(Rows[0][strIdxName]); bw.Write(dt.Rows.Count); bw.Write(nMax); Encoding encLatin_1 = Encoding.GetEncoding("ISO-8859-1"); foreach (DataRow row in dt.Rows) { bw.Write(Convert.ToInt32(row[strIdxName])); for (i = 0; i < nOutCount; ++i) { string strTmp = row[strOut[i]].ToString(); string debug = EncodingString(strTmp, (int)eNATION.DEV); byte[] data = encLatin_1.GetBytes(strTmp); bw.Write(data.Length); if (data.Length > 0) { bw.Write(data); } } } bw.Close(); fs.Close(); return(true); }
public bool ConfigLoad(string fileName) { // ini 파일 읽기 UTIL.INI ini = new UTIL.INI(fileName); int i; string strKey; int[] nMax = new int[(int)eSECTION.MAX] { _nLocalMax, _nPrefixMax, _nVerMax, _nLangMax }; // Count for(i = 0; i < (int)eSECTION.MAX; ++i) { nMax[i] = Convert.ToInt32(ini.GetIniValue(((eSECTION)(i)).ToString(), "Count")); } _nLocalMax = nMax[(int)eSECTION.LOCAL]; _nPrefixMax = nMax[(int)eSECTION.DB_PREFIX]; _nVerMax = nMax[(int)eSECTION.VERSION]; _nLangMax = nMax[(int)eSECTION.LANGUAGE]; // 로컬 스트링 if (_nLocalMax > 0) _strLocal = new string[nMax[(int)eSECTION.LOCAL]]; for (i = 0; i < _nLocalMax; ++i) { strKey = string.Format("{0}{1}", eKEY.LOCAL.ToString(), i); _strLocal[i] = ini.GetIniValue(eSECTION.LOCAL.ToString(), strKey); } // 프리픽스 스트링 if (_nPrefixMax > 0) _strPreFix = new string[nMax[(int)eSECTION.DB_PREFIX]]; for (i = 0; i < _nPrefixMax; ++i) { strKey = string.Format("{0}{1}", eKEY.PREFIX.ToString(), i); _strPreFix[i] = ini.GetIniValue(eSECTION.DB_PREFIX.ToString(), strKey); } // 버전 스트링 if (_nVerMax > 0) _strVersion = new string[nMax[(int)eSECTION.VERSION]]; for (i = 0; i < _nVerMax; ++i) { strKey = string.Format("{0}{1}", eKEY.VER.ToString(), i); _strVersion[i] = ini.GetIniValue(eSECTION.VERSION.ToString(), strKey); } // 랭귀지 스트링 if (_nLangMax > 0) _strLang = new string[nMax[(int)eSECTION.LANGUAGE]]; for (i = 0; i < _nLangMax; ++i) { strKey = string.Format("{0}{1}", eKEY.LANG.ToString(), i); _strLang[i] = ini.GetIniValue(eSECTION.LANGUAGE.ToString(), strKey); } return true; }