bool MEmblemMgr::CreateCache() { TCHAR szEmblemPath[MAX_PATH]=""; TCHAR szPath[MAX_PATH]=""; if(GetMyDocumentsPath(szPath)) { strcpy_safe(szEmblemPath, szPath); strcat_safe(szEmblemPath, GUNZ_FOLDER); CreatePath(szEmblemPath); strcat_safe(szEmblemPath, MPATH_EMBLEMFOLDER); CreatePath(szEmblemPath); strcat_safe(szEmblemPath, MPATH_EMBLEMFILE); } else { return false; } MXmlDocument xmlDoc; xmlDoc.Create(); bool bResult = xmlDoc.SaveToFile(szEmblemPath); xmlDoc.Destroy(); return bResult; }
/// MAP이라는 Element의 ID가 bird인 항목을 찾아 HEIGHT와 WIDTH를 /// 500으로 변환하고 new.xml로 저장한다. void Sample2() { MXmlDocument aXml; aXml.Create(); if (!aXml.LoadFromFile("sample1.xml")) return; int iCount, i; char szBuf1[65535], szBuf2[65535]; MXmlElement aParent, aChild; aParent = aXml.GetDocumentElement(); iCount = aParent.GetChildNodeCount(); for (i = 0; i < iCount; i++) { aChild = aParent.GetChildNode(i); aChild.GetTagName(szBuf1); if (szBuf1[0] == '#') continue; if (!strcmp(szBuf1, "MAP")) { aChild.GetAttribute(szBuf2, "ID"); if (!strcmp(szBuf2, "bird")) { aParent = aChild; if (aParent.FindChildNode("WIDTH", &aChild)) { sprintf(szBuf1, "%d", 500); aChild.SetContents(szBuf1); } if (aParent.FindChildNode("HEIGHT", &aChild)) { sprintf(szBuf1, "%d", 500); aChild.SetContents(szBuf1); } } } } aXml.SaveToFile("new.xml"); aXml.Destroy(); printf("Done!!!\n"); }
// xml 파일 만들기 예제 void Sample3() { MXmlDocument aXml; aXml.Create(); aXml.CreateProcessingInstruction(); MXmlElement aRootElement; MXmlElement aElement; MXmlElement aChildElement; aRootElement = aXml.CreateElement("XML"); aXml.AppendChild(aRootElement); aRootElement = aXml.GetDocumentElement(); /// text aRootElement.AppendText("\n\t"); aElement = aXml.CreateElement("TEST"); aRootElement.AppendChild(aElement); aElement.AddAttribute("id", "1"); aElement.AddAttribute("map", "bird"); /// text aElement.AppendText("\n\t\t"); aChildElement = aXml.CreateElement("CHILD"); aChildElement.AddAttribute("attr", 500); aChildElement.SetContents("자식 노드"); aElement.AppendChild(aChildElement); /// text aElement.AppendText("\n\t"); /// text aXml.GetDocumentElement().AppendText("\n"); aXml.SaveToFile("new2.xml"); printf("Done!!!\n"); }
bool MEmblemMgr::SaveCache() { list<MEmblemNode*> sortedQueue; for (MEmblemMap::iterator i=m_EmblemMap.begin(); i!=m_EmblemMap.end(); i++) { MEmblemNode* pNode = (*i).second; sortedQueue.push_back(pNode); } sortedQueue.sort(CompareEmblem); MXmlDocument xmlDoc; char szBuf[256]=""; xmlDoc.Create(); xmlDoc.CreateProcessingInstruction(); MXmlElement rootElement; rootElement=xmlDoc.CreateElement("XML"); xmlDoc.AppendChild(rootElement); int nCount = 0; for (list<MEmblemNode*>::iterator i=sortedQueue.begin(); i!=sortedQueue.end(); i++) { MEmblemNode* pNode = (*i); rootElement.AppendText("\n\t"); MXmlElement emblemElement = rootElement.CreateChildElement(MTOK_EMBLEM); emblemElement.AppendText("\n\t\t"); MXmlElement childElement; sprintf_safe(szBuf,"%u", pNode->GetCLID()); childElement = emblemElement.CreateChildElement(MTOK_EMBLEM_CLID); childElement.SetContents(szBuf); emblemElement.AppendText("\n\t\t"); childElement = emblemElement.CreateChildElement(MTOK_EMBLEM_URL); childElement.SetContents(pNode->GetURL()); emblemElement.AppendText("\n\t\t"); sprintf_safe(szBuf,"%u", pNode->GetChecksum()); childElement = emblemElement.CreateChildElement(MTOK_EMBLEM_CHECKSUM); childElement.SetContents(szBuf); emblemElement.AppendText("\n\t\t"); sprintf_safe(szBuf, "%u", (unsigned int)pNode->GetTimeLastUsed()); childElement = emblemElement.CreateChildElement(MTOK_EMBLEM_TIMELASTUSED); childElement.SetContents(szBuf); emblemElement.AppendText("\n\t"); if (++nCount >= 1000) break; } rootElement.AppendText("\n"); bool bResult = xmlDoc.SaveToFile(GetEmblemDataFile()); xmlDoc.Destroy(); SetSaveFlag(false); sortedQueue.clear(); return bResult; }
bool ZConfiguration::SaveToFile(const char *szFileName, const char* szHeader) { char buffer[256]; MXmlDocument xmlConfig; xmlConfig.Create(); xmlConfig.CreateProcessingInstruction(szHeader); MXmlElement aRootElement; aRootElement=xmlConfig.CreateElement("XML"); aRootElement.AppendText("\n\t"); xmlConfig.AppendChild(aRootElement); // Check FirstTime Loading // Server { MXmlElement serverElement=aRootElement.CreateChildElement(ZTOK_SERVER); serverElement.AppendText("\n\t\t"); MXmlElement aElement; aElement = serverElement.CreateChildElement(ZTOK_IP); aElement.SetContents(m_szServerIP); serverElement.AppendText("\n\t\t"); aElement = serverElement.CreateChildElement(ZTOK_PORT); sprintf(buffer,"%d",m_nServerPort); aElement.SetContents(buffer); serverElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Skin { MXmlElement skinElement=aRootElement.CreateChildElement(ZTOK_SKIN); skinElement.SetContents(m_szInterfaceSkinName); skinElement.AppendText(""); } aRootElement.AppendText("\n\n\t"); // Video { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_VIDEO); parentElement.AppendText("\n\t\t"); MXmlElement aElement; aElement = parentElement.CreateChildElement(ZTOK_VIDEO_WIDTH); char temp[256]; sprintf(temp, "%d", m_Video.nWidth); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_HEIGHT); sprintf(temp, "%d", m_Video.nHeight); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_COLORBITS); sprintf(temp, "%d", m_Video.nColorBits); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_GAMMA); sprintf(temp, "%d", m_Video.nGamma); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_FULLSCREEN); if(m_Video.bFullScreen==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_REFLECTION); if(m_Video.bReflection==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_LIGHTMAP); if(m_Video.bLightMap==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_DYNAMICLIGHT); if(m_Video.bDynamicLight==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_SHADER); if(m_Video.bShader==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_CHARTEXLEVEL); sprintf(temp, "%d", m_Video.nCharTexLevel); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_MAPTEXLEVEL); sprintf(temp, "%d", m_Video.nMapTexLevel); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_EFFECTLEVEL); sprintf(temp, "%d", m_Video.nEffectLevel); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_VIDEO_TEXTUREFORMAT); sprintf(temp, "%d", m_Video.nTextureFormat); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_MOVINGPICTURE_RESOLUTION); sprintf(temp, "%d", m_MovingPicture.iResolution); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_MOVINGPICTURE_FILESIZE); sprintf(temp, "%d", m_MovingPicture.iFileSize); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement("NHARDWARETNL"); sprintf(temp, "%s", m_Video.bTerrible ? "true" : "false" ); aElement.SetContents(temp); parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Audio { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_AUDIO); parentElement.AppendText("\n\t\t"); MXmlElement aElement; char temp[256]; aElement = parentElement.CreateChildElement(ZTOK_AUDIO_BGM_MUTE); if(m_Audio.bBGMMute==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_BGM_VOLUME); sprintf(temp, "%f", m_Audio.fBGMVolume ); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_EFFECT_MUTE); if(m_Audio.bEffectMute==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_EFFECT_VOLUME); sprintf(temp, "%f", m_Audio.fEffectVolume); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_3D_SOUND); sprintf(temp, "%d", m_Audio.b3DSound); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_8BITSOUND); if(m_Audio.b8BitSound==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_INVERSE); if(m_Audio.bInverse==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_HWMIXING); if(m_Audio.bHWMixing==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_HITSOUND); if(m_Audio.bHitSound==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_AUDIO_NARRATIONSOUND); if(m_Audio.bNarrationSound==true) strcpy(temp, "true"); else strcpy(temp, "false"); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement( ZTOK_AUDIO_CUSTOMMUSIC ); if( m_Audio.bCustomMusic ) strcpy( temp, "true" ); else strcpy( temp, "false" ); aElement.SetContents( temp ); parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Mouse { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_MOUSE); parentElement.AppendText("\n\t\t"); MXmlElement aElement; aElement = parentElement.CreateChildElement(ZTOK_MOUSE_SENSITIVITY); char temp[256]; // 버그리포트 => 옵션->키보드->마우스->마우스 감도에서 최하로 설정했을때 마우스가 안움직인다. // 최소인 0바로전 값이 0.0135f이기때문에 이값보다 낮으면 0.0125f로 세팅 20090313 by kammir /*if(m_Mouse.fSensitivity < 0.01f) m_Mouse.fSensitivity = 0.0125f;*/ m_Mouse.fSensitivity = ValidateMouseSensitivityInFloat(m_Mouse.fSensitivity); sprintf(temp, "%f", m_Mouse.fSensitivity); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_MOUSE_INVERT); if(m_Mouse.bInvert==true) strcpy(temp, "TRUE"); else strcpy(temp, "FALSE"); aElement.SetContents(temp); parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Joystick { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_JOYSTICK); parentElement.AppendText("\n\t\t"); MXmlElement aElement; aElement = parentElement.CreateChildElement(ZTOK_JOYSTICK_SENSITIVITY); char temp[256]; sprintf(temp, "%f", m_Joystick.fSensitivity); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_JOYSTICK_INVERT); if(m_Joystick.bInvert==true) strcpy(temp, "TRUE"); else strcpy(temp, "FALSE"); aElement.SetContents(temp); parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Control { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_KEYBOARD); for(int i=0; i<ZACTION_COUNT; i++){ char szItemName[256]; strcpy(szItemName, m_Keyboard.ActionKeys[i].szName); _strupr(szItemName); if(szItemName[0]!=0){ parentElement.AppendText("\n\t\t"); MXmlElement aElement; aElement = parentElement.CreateChildElement(szItemName); char temp[256]; sprintf(temp, "%d", m_Keyboard.ActionKeys[i].nVirtualKey); aElement.SetContents(temp); aElement.SetAttribute("alt",m_Keyboard.ActionKeys[i].nVirtualKeyAlt); } } parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Macro // if( parentElement.FindChildNode(ZTOK_MACRO, &childElement) ) { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_MACRO); parentElement.AppendText("\n\t\t"); MXmlElement aElement; char* _temp[ZCONFIG_MACRO_MAX] = { ZTOK_MACRO_F1, ZTOK_MACRO_F2, ZTOK_MACRO_F3, ZTOK_MACRO_F4, ZTOK_MACRO_F5, ZTOK_MACRO_F6, ZTOK_MACRO_F7, ZTOK_MACRO_F8, }; for(int i=0;i<ZCONFIG_MACRO_MAX;i++) { aElement = parentElement.CreateChildElement( _temp[i] ); aElement.SetContents(m_Macro.szMacro[i]); parentElement.AppendText("\n\t\t"); } parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Etc { MXmlElement parentElement=aRootElement.CreateChildElement(ZTOK_ETC); MXmlElement aElement; // Network port parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_NETWORKPORT1); char temp[256]; sprintf(temp, "%d", m_Etc.nNetworkPort1); aElement.SetContents(temp); parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_NETWORKPORT2); sprintf(temp, "%d", m_Etc.nNetworkPort2); aElement.SetContents(temp); // Boost parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_BOOST); sprintf(temp, "%s", m_Etc.bBoost?"TRUE":"FALSE"); aElement.SetContents(temp); // 언어 선택 #ifdef _MULTILANGUAGE parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_LANGUAGE); sprintf(temp, "%s", GetSelectedLanguage()); aElement.SetContents(temp); #ifdef LOCALE_NHNUSA //NHNUSA는 config.xml에 의존하지 않으므로 언어변경후 재시작을 위해서 언어설정을 별도로 보존해둔다 g_LanguageSettingForNHNUSA.SetLanguageSetting( GetSelectedLanguageIndex()); #endif #endif //_MULTILANGUAGE // Reject normal chat parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_REJECT_NORMALCHAT); sprintf(temp, "%s", m_Etc.bRejectNormalChat?"TRUE":"FALSE"); aElement.SetContents(temp); // Reject team chat parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_REJECT_TEAMCHAT); sprintf(temp, "%s", m_Etc.bRejectTeamChat?"TRUE":"FALSE"); aElement.SetContents(temp); // Reject clan chat parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_REJECT_CLANCHAT); sprintf(temp, "%s", m_Etc.bRejectClanChat?"TRUE":"FALSE"); aElement.SetContents(temp); // Reject whisper parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_REJECT_WHISPER); sprintf(temp, "%s", m_Etc.bRejectWhisper?"TRUE":"FALSE"); aElement.SetContents(temp); // Reject invite parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_REJECT_INVITE); sprintf(temp, "%s", m_Etc.bRejectInvite?"TRUE":"FALSE"); aElement.SetContents(temp); // crosshair parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_CROSSHAIR); sprintf(temp, "%d", m_Etc.nCrossHair); aElement.SetContents(temp); // FrameLimit parentElement.AppendText("\n\t\t"); aElement = parentElement.CreateChildElement(ZTOK_ETC_FRAMELIMIT_PERSECOND); sprintf(temp, "%d", m_Etc.nFrameLimit_perSecond); aElement.SetContents(temp); parentElement.AppendText("\n\t"); } aRootElement.AppendText("\n\n\t"); // Bind : 봉인 /* aRootElement.AppendText("\n\t"); MXmlElement bindsElement=aRootElement.CreateChildElement(ZTOK_BINDS); for(ZHOTKEYS::iterator i=m_HotKeys.begin();i!=m_HotKeys.end();i++) { bindsElement.AppendText("\n\t\t"); MXmlElement bind=bindsElement.CreateChildElement(ZTOK_BIND); ZHOTKEY *photkey=(*i).second; bind.SetContents(photkey->command.c_str()); char buffer[256]; bind.SetAttribute(ZTOK_KEY,GetKeyName(photkey->nVirtKey,buffer)); bind.SetAttribute(ZTOK_KEY_CTRL,photkey->nModifier & MOD_CONTROL ? 1 : 0); bind.SetAttribute(ZTOK_KEY_ALT,photkey->nModifier & MOD_ALT ? 1 : 0); bind.SetAttribute(ZTOK_KEY_SHIFT,photkey->nModifier & MOD_SHIFT ? 1 : 0); } bindsElement.AppendText("\n\t"); */ aRootElement.AppendText("\n"); // LANGID LangID = LANG_KOREAN; /* Korean : 이거 정말 하드코딩 박기 싫었는디... 쩝... -_-;;; */ //#ifdef LOCALE_JAPAN // LangID = LANG_JAPANESE; /* Japanese */ //#elif LOCALE_US // LangID = LANG_ENGLISH; /* International */ //#elif LOCALE_BRAZIL // LangID = LANG_PORTUGUESE; /* Brazil */ //#elif LOCALE_INDIA // LangID = LANG_ENGLISH; /* India */ //#endif return xmlConfig.SaveToFile(szFileName); }