// RebalanceConverter.cpp : ÄÜ¼Ö ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÁøÀÔÁ¡À» Á¤ÀÇÇÕ´Ï´Ù. // #include "stdafx.h" #include "Rebalance.h" #include #include #include #include #include #include #include #include void PrintUsage() { printf("usage : RebalanceConverter DBAddress DBName DBAccount DBPassword " "ServerGroupNum(0~9) RenumberingUID(0/1)\n"); } int _tmain(int argc, _TCHAR* argv[]) { if(7 != argc) { PrintUsage(); return -1; } if(!Item::CItemMgr::GetInstance().LoadItemProtoType("./NewItemScript.txt")) { printf("NewItemScript.txt load failed\n"); return -1; } else if(!OldItem::CItemMgr::GetInstance().LoadItemProtoType("./OldItemScript.txt")) { printf("OldItemScript.txt load failed\n"); return -1; } using namespace RebalanceLib; CoInitialize(0); int nServerGroup = atoi(argv[5]); bool bRenumberingUID = (1 == atoi(argv[6])); SERVER_ID serverID; serverID.sID.Type = CServerSetup::AuthServer; serverID.sID.Group = nServerGroup; serverID.sID.Channel = 0; serverID.sID.ID = 0; HRESULT hr = S_OK; ATL::CDataSource dataSource; ATL::CSession Session; CDBItemSerialMgr dbItemSerialMgr; #define LOG_CONVERT0(str) { ERRLOG0(g_Log, (str)); printf(str "\n"); } #define LOG_CONVERT1(str, arg1) { ERRLOG1(g_Log, (str), (arg1)); printf(str "\n", (arg1)); } #define LOG_CONVERT2(str, arg1, arg2) { ERRLOG2(g_Log, (str), (arg1), (arg2)); printf(str "\n", (arg1), (arg2)); } if(FAILED(hr = CRylDBProcess::ConnectDB(dataSource, argv[1], argv[2], argv[3], argv[4]))) { LOG_CONVERT1("Connect DB failed : hr:0x%08X", hr); } else if(FAILED(hr = Session.Open(dataSource))) { LOG_CONVERT1("Open session failed : hr:0x%08X", hr); } else if(FAILED(hr = dbItemSerialMgr.ClearAllSerialDB(Session))) { LOG_CONVERT1("Clear itemSerial failed : hr:0x%08X", hr); } else if(FAILED(hr = dbItemSerialMgr.LoadItemSerialDB(Session, serverID.dwID))) { LOG_CONVERT1("Insert itemSerial failed : hr:0x%08X", hr); } else { CRylDBProcess rylDBProcess(Session); CConsoleCounter consoleCounter(1000); SkillDataMap UIDSkillDataMap; SkillDataMap CIDSkillDataMap; CDBReadSkill readDBSkill(CIDSkillDataMap, true); CDBItemConvert convertDBItem(dbItemSerialMgr, Item::CItemMgr::GetInstance(), OldItem::CItemMgr::GetInstance(), &UIDSkillDataMap, &CIDSkillDataMap, true, bRenumberingUID); // ½ºÅ³ Àбâ if(FAILED(hr = rylDBProcess.CharSkill(readDBSkill, consoleCounter))) { LOG_CONVERT1("Skill process failed : hr:0x%08X", hr); } // CharItemÄÁ¹öÆ® else if(FAILED(hr = rylDBProcess.CharItem(convertDBItem, consoleCounter))) { LOG_CONVERT1("CharItem process failed : hr:0x%08X", hr); } // CharItemExÄÁ¹öÆ® else if(FAILED(hr = rylDBProcess.CharItemEx(convertDBItem, consoleCounter))) { LOG_CONVERT1("CharItemEx process failed : hr:0x%08X", hr); } // ÅëÇÕ¼­¹ö â°í ÄÁ¹öÆ® else if(FAILED(hr = rylDBProcess.UnifiedStore1(convertDBItem, consoleCounter))) { LOG_CONVERT1("UnifiedStore1 process failed : hr:0x%08X", hr); } else if(FAILED(hr = rylDBProcess.UnifiedStore2(convertDBItem, consoleCounter))) { LOG_CONVERT1("UnifiedStore2 process failed : hr:0x%08X", hr); } else { GoldDataMap UIDGoldDataMap; GoldDataMap CIDGoldDataMap; CDBItemConvert::ChangeSkillBookToGold(UIDSkillDataMap, UIDGoldDataMap); CDBItemConvert::ChangeSkillBookToGold(CIDSkillDataMap, CIDGoldDataMap); CDBAddUnifiedStoreGold addUnifiedStoreGold(UIDGoldDataMap); CDBAddCharGold addCharGold(CIDGoldDataMap); if(FAILED(hr = rylDBProcess.UnifiedStore1(addUnifiedStoreGold, consoleCounter))) { LOG_CONVERT1("Add store gold process failed : hr:0x%08X", hr); } else if(FAILED(hr = rylDBProcess.CharInfo(addCharGold, consoleCounter))) { LOG_CONVERT1("Add character gold process failed : hr:0x%08X", hr); } // ³²Àº ½ºÅ³ºÏ ¾çÀ» È®ÀÎ. LogRemainSkillBook(UIDSkillDataMap, "UIDBook"); LogRemainSkillBook(CIDSkillDataMap, "CIDBook"); // ³²Àº µ· ¾çÀ» È®ÀÎ. LogRemainGold(UIDGoldDataMap, "UIDGold"); LogRemainGold(CIDGoldDataMap, "CIDGold"); // ÃÖÁ¾ ¾ÆÀÌÅÛ ½Ã¸®¾ó ÀúÀå. if(FAILED(hr = dbItemSerialMgr.SaveItemSerialDB(Session, serverID.dwID))) { LOG_CONVERT1("ItemSerial save failed : hr:0x%08X", hr); } // ¾ÆÀÌÅÛ µî±Þ Ãâ·Â CItemGrade::GetInstance().WriteGradeNum(); INFLOG2(g_Log, "MaxUID : (0x%08X / %016I64X)", serverID.dwID, dbItemSerialMgr.GetItemSerial()); } } INFLOG0(g_Log, "Convert Complete"); Session.Close(); dataSource.Close(); CoUninitialize(); return 0; }