-
Posts
64 -
Joined
-
Last visited
-
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by .Devil.
-
-
You've to send the quest index to client.
this is what you look for.
-
The time that require the compilation depend on the performance of your computer.. so if you don't have a good computer you can't do much.
Anyway, if you clean always the project (with gmake clean) is normal.. When you compile do this:gmake -j20
or simple
gmake
and not this:
gmake clean gmake -j20
because if you run gmake clean the compiler delete all compiled files (objects).
And this is also valid for the database.
- 1
-
quest test__ begin state start begin when 20132.click with pet.is_mine() begin if (select("Change name", "Close") == 2) then return end // DO SOMETHING end end end
Where 20132 is the vnum of your pet.
-
Try with `ps aux` (to see if the games are started) or start manually the game and see the output.
PS. Wrong section.
-
Spoiler
For first, use this Main.cpp: (it's not necessary if you have your working)
http://pastebin.com/vXDefHhA
#include <direct.h> #include <sys/stat.h> #include <io.h> #include <boost/shared_ptr.hpp> #include <boost/algorithm/string.hpp> #include <fstream> #pragma warning(push, 3) #include <cryptopp/osrng.h> #pragma warning(pop) //#include <YmirBase/YmirBaseLink.h> #include <cryptopp/cryptoppLibLink.h> //#include <Mantle/MA_LibLink.h> #include <lzo-2.03/lzoLibLink.h> #pragma comment(lib, "winmm.lib") //#pragma comment(lib, "d3d8.lib") #ifdef _DEBUG #pragma comment(lib, "reducio_d.lib") #else #pragma comment(lib, "reducio.lib") #endif #include <EterBase/Utils.h> #include <EterBase/Filename.h> #include <EterLib/TextFileLoader.h> #include <EterPack/EterPackManager.h> #include <Reducio/Reducio.h> using std::string; using std::vector; using boost::unordered_map; using std::size_t; typedef unordered_map<string, bool, stringhash> NameDict; string g_st_packName; NameDict g_map_ignoreFileName; NameDict g_map_ignoreDirName; NameDict g_map_ignoreBasePath; typedef unordered_map<string, BYTE, stringhash> TStrMap; TStrMap g_PackTypeByExtNameMap; std::string g_strFolderName = "pack/"; static BYTE s_IV[32]; typedef unordered_map<string, string, stringhash> MapNameToSDBFile; MapNameToSDBFile g_map_SDBFileList; int iCompressTexQuality = 0; bool IsSDBSupportRequired( const std::string& strFile, std::string& strMapName ) { MapNameToSDBFile::const_iterator cit = g_map_SDBFileList.find(strFile); if( cit != g_map_SDBFileList.end() ) { strMapName = cit->second; return true; } return false; } //#define __ADD_CSHYBRID_ENCRYPT__ bool LoadList(const char* fileName, vector<string>* pvec_stLine) { FILE* fp; if (0 != fopen_s(&fp, fileName, "r")) return false; while (1) { char line[256]; if (!fgets(line, sizeof(line)-1, fp)) break; size_t lineLen = strlen(line); if (line[lineLen-1] == '\n') line[lineLen-1] = '\0'; if (line[lineLen-2] == '\r') line[lineLen-2] = '\0'; pvec_stLine->push_back(line); } fclose(fp); return true; } void IgnoreFileList_Append(const string& c_st_fileName) { printf("ignore_file: [%s]\n", c_st_fileName.c_str()); if (c_st_fileName.find('*') >= 0) // strchr(c_st_fileName.c_str(), '*') { WIN32_FIND_DATA findData; HANDLE hFind; hFind = FindFirstFile(c_st_fileName.c_str(), &findData); if (hFind != INVALID_HANDLE_VALUE) { std::string st_childName; do { st_childName = findData.cFileName; StringPath(st_childName); g_map_ignoreFileName.insert(NameDict::value_type(st_childName, true)); } while (FindNextFile(hFind, &findData)); } FindClose(hFind); } else { string st_fileName = c_st_fileName; StringPath(st_fileName); g_map_ignoreFileName.insert(NameDict::value_type(st_fileName, true)); } } bool IgnoreFileList_Load(const char* fileName) { vector<string> nameList; if (!LoadList(fileName, &nameList)) return false; for_each(nameList.begin(), nameList.end(), IgnoreFileList_Append); return true; } void IgnoreDirList_Append(const string& c_st_dirName) { std::string st_dirName = c_st_dirName; StringPath(st_dirName); g_map_ignoreDirName.insert(NameDict::value_type(st_dirName, true)); } bool IgnoreDirList_Load(const char* fileName) { vector<string> nameList; if (!LoadList(fileName, &nameList)) return false; for_each(nameList.begin(), nameList.end(), IgnoreDirList_Append); return true; } void IgnoreBasePathList_Append(const string& c_st_basePath) { std::string st_basePath = c_st_basePath; StringPath(st_basePath); g_map_ignoreBasePath.insert(NameDict::value_type(st_basePath, true)); } bool IgnoreBasePathList_Load(const char* fileName) { vector<string> nameList; if (!LoadList(fileName, &nameList)) return false; for_each(nameList.begin(), nameList.end(), IgnoreBasePathList_Append); return true; } using namespace Reducio; void RegisterPackTypeByExtName(const char * c_pszExt, BYTE packType, bool isOverwrite=false) { if (isOverwrite) g_PackTypeByExtNameMap[c_pszExt] = packType; else g_PackTypeByExtNameMap.insert(TStrMap::value_type(c_pszExt, packType)); } void RecursivePack(CEterPack & pack, const char * filename, std::vector<std::string>& vecCompressedTextures, std::vector<int>& vecCompressedTexMipMaps ) { WIN32_FIND_DATA fdata; HANDLE hFind; char temp[512]; if ((hFind = FindFirstFile(filename, &fdata)) != INVALID_HANDLE_VALUE) { do { if (fdata.cFileName[0] == '.') continue; if (fdata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { strcpy_s(temp, fdata.cFileName); StringPath(temp); if (g_map_ignoreDirName.end() != g_map_ignoreDirName.find(temp)) { //printf("Exclude1 %s\n", fdata.cFileName); continue; } strcpy_s(temp, filename); char *p = strchr(temp, '*'); // µÚ¿¡ * À» ¾ø¾Ø´Ù. if (p) *p = '\0'; StringPath(temp); if (g_map_ignoreBasePath.end() != g_map_ignoreBasePath.find(temp)) { //printf("Exclude2 %s\n", fdata.cFileName); continue; } sprintf_s(p, sizeof(temp) - (p - temp), "%s/*", fdata.cFileName); RecursivePack(pack, temp, vecCompressedTextures, vecCompressedTexMipMaps); continue; } strcpy_s(temp, fdata.cFileName); StringPath(temp); if (g_map_ignoreFileName.end() != g_map_ignoreFileName.find(temp)) { //printf("Exclude3 %s\n", fdata.cFileName); continue; } strcpy_s(temp, filename); char *p; if ((p = strrchr(temp, '*'))) // µÚ¿¡ * À» ¾ø¾Ø´Ù. *p = '\0'; StringPath(temp); if (g_map_ignoreBasePath.end() != g_map_ignoreBasePath.find(temp)) { //printf("Exclude4 %s\n", fdata.cFileName); continue; } if (p) sprintf_s(p, sizeof(temp) - (p - temp), "%s", fdata.cFileName); else sprintf_s(temp, sizeof(temp), "%s", fdata.cFileName); std::string ext(temp); stl_lowers(ext); //FIXME : TEMP HARD CODE if( !CFileNameHelper::GetExtension(ext).compare("wdp") ) continue; BYTE packType = COMPRESSED_TYPE_NONE; { bool bSuccessCompTexture = false; if( !CFileNameHelper::GetExtension(ext).compare("dds") && iCompressTexQuality > 0 /* && !IsSDBSupportRequired(temp, strRelatedMap)*/) { ImageHandle h = CreateImageStreamHandle(); //Texture¾ÐÃàÇϱâ eReturnCode eRet; eRet = CompressWMPImageFromFile(h, temp, iCompressTexQuality); if( eRet == eSuccess ) { std::string wdpFileName = CFileNameHelper::NoExtension(ext) + ".wdp"; DumpWMPImageToFile( h, wdpFileName.c_str() ); bSuccessCompTexture = true; strcpy(temp, wdpFileName.c_str() ); Reducio::U8* pb; int nStreamLen, nMipMapCnt; GetImageStreamInfo( h, &pb, nStreamLen, nMipMapCnt ); vecCompressedTextures.push_back(temp); vecCompressedTexMipMaps.push_back(nMipMapCnt); } else { CMakePackLog::GetSingleton().Writef("failed to compress tex: %s errorcode: %d \n", temp, eRet ); CMakePackLog::GetSingleton().WriteErrorf("failed to compress tex: %s errorcode: %d \n", temp, eRet ); } DestroyImageStreamHandle(h); } if( !bSuccessCompTexture ) { unordered_map<std::string, BYTE, stringhash>::iterator it = g_PackTypeByExtNameMap.find(ext); if (g_PackTypeByExtNameMap.end() != it) packType = it->second; } std::string strRelatedMapName; if( packType == COMPRESSED_TYPE_HYBRIDCRYPT && IsSDBSupportRequired(temp, strRelatedMapName) ) packType = COMPRESSED_TYPE_HYBRIDCRYPT_WITHSDB; if (pack.Put(temp, NULL, packType, strRelatedMapName)) { CMakePackLog::GetSingleton().Writef("pack: %s\n", temp); } else { CMakePackLog::GetSingleton().Writef("pack failed: %s\n", temp); CMakePackLog::GetSingleton().WriteErrorf("pack failed: %s\n", temp); } } } while (FindNextFile(hFind, &fdata)); } } void AddIndex(const char * c_szName, const char * c_szDirectory) { std::string strIndexFileName = g_strFolderName + std::string("Index.new"); FILE * fp; if (0 != fopen_s(&fp, strIndexFileName.c_str(), "a+")) { printf("%s append open error", strIndexFileName.c_str()); abort(); } char szTmp[MAX_PATH + 1]; strcpy_s(szTmp, c_szDirectory); char * p = strrchr(szTmp, '/'); *(++p) = '\0'; fprintf(fp, "%s\n%s\n", szTmp, c_szName); fclose(fp); } using namespace Reducio; void MakeReducioHeader( std::vector<std::string>& textures, std::vector<int>& mipMapCounts ) { string st_HeaderFilePath; st_HeaderFilePath = g_strFolderName; st_HeaderFilePath += g_st_packName; st_HeaderFilePath += ".rdch"; std::ofstream outFile( st_HeaderFilePath.c_str(), ios_base::binary | ios_base::out ); int nItemCount = textures.size(); outFile.write((const char*)&nItemCount, sizeof(int) ); for( int i = 0; i < nItemCount; ++i ) { int iNameLength = textures[i].length(); outFile.write((const char*)&iNameLength, sizeof(int) ); outFile.write((const char*)&mipMapCounts[i], sizeof(int) ); outFile.write(textures[i].c_str(), iNameLength ); } outFile.close(); } bool MakePackFiles(const std::vector<std::string>& filePaths, CEterPackManager* pPackManager) { string st_packName = g_st_packName.empty() ? "noname" : g_st_packName; string st_packFilePath; st_packFilePath = g_strFolderName; st_packFilePath += st_packName; CMakePackLog::GetSingleton().Writef("\n + Making %s\n", st_packName.c_str()); CEterFileDict fileDict; CEterPack* pPack = new CEterPack; if (!pPack->Create(fileDict, st_packFilePath.c_str(), g_strFolderName.c_str(), false, s_IV)) return false; std::vector<std::string>::const_iterator i = filePaths.begin(); std::vector<std::string>::const_iterator e = filePaths.end(); bool bAddToIndex = false; std::vector<std::string> vecCompressedTextures; std::vector<int> vecCompressedTexMipMaps; bool bSuccess = true; while (i != e) { const std::string& path = *i; std::string strRelatedMap; char temp[1024]; strcpy_s(temp, path.c_str()); StringPath(temp); std::string lowerFilePath(temp); stl_lowers(lowerFilePath); BYTE packType = COMPRESSED_TYPE_NONE; std::string ext = CFileNameHelper::GetExtension(lowerFilePath); bool bSuccessCompTexture = false; if( !ext.compare("wdp") ) { i++; continue; } if( !ext.compare("dds") && iCompressTexQuality > 0 /* && !IsSDBSupportRequired(temp, strRelatedMap)*/) { ImageHandle h = CreateImageStreamHandle(); //Texture¾ÐÃàÇϱâ eReturnCode eRet; eRet = CompressWMPImageFromFile(h, temp, iCompressTexQuality); if( eRet == eSuccess ) { std::string wdpFileName = CFileNameHelper::NoExtension(lowerFilePath) + ".wdp"; DumpWMPImageToFile( h, wdpFileName.c_str() ); bSuccessCompTexture = true; strcpy(temp, wdpFileName.c_str() ); Reducio::U8* pb; int nStreamLen, nMipMapCnt; GetImageStreamInfo( h, &pb, nStreamLen, nMipMapCnt ); vecCompressedTextures.push_back(temp); vecCompressedTexMipMaps.push_back(nMipMapCnt); } else { CMakePackLog::GetSingleton().Writef("failed to compress tex: %s errorcode: %d \n", temp, eRet ); CMakePackLog::GetSingleton().WriteErrorf("failed to compress tex: %s errorcode: %d \n", temp, eRet ); if (eRet != eFail_UnSupportedFormat) bSuccess = false; } DestroyImageStreamHandle(h); } if( !bSuccessCompTexture ) { unordered_map<std::string, BYTE, stringhash>::iterator it = g_PackTypeByExtNameMap.find(ext); if (g_PackTypeByExtNameMap.end() != it) packType = it->second; } if( packType == COMPRESSED_TYPE_HYBRIDCRYPT ) { bAddToIndex = true; if( IsSDBSupportRequired(temp, strRelatedMap) ) { packType = COMPRESSED_TYPE_HYBRIDCRYPT_WITHSDB; } } if (pPack->Put(temp, NULL, packType, strRelatedMap)) { CMakePackLog::GetSingleton().Writef("pack: %s\n", temp); } else { CMakePackLog::GetSingleton().Writef("pack failed: %s\n", temp); CMakePackLog::GetSingleton().WriteErrorf("pack failed: %s\n", temp); bSuccess = false; } i++; } pPackManager->RegisterPackWhenPackMaking(st_packFilePath.c_str(), g_strFolderName.c_str(), pPack ); if( bAddToIndex ) { AddIndex(st_packName.c_str(), g_strFolderName.c_str()); } pPack->DeleteUnreferencedData(); pPack->EncryptIndexFile(); //write it if( vecCompressedTextures.size() > 0 ) { MakeReducioHeader( vecCompressedTextures, vecCompressedTexMipMaps ); } return bSuccess; } void MakePack(const char * c_szPackName, const char * c_szDirectory, CEterPackManager* pPackManager) { string st_packName = g_st_packName.empty() ? c_szPackName : g_st_packName; string st_packFilePath; st_packFilePath = g_strFolderName; st_packFilePath += st_packName; CMakePackLog::GetSingleton().Writef("\n + Making %s\n", st_packName.c_str()); //CEterPack pack; CEterFileDict fileDict; CEterPack* pPack = new CEterPack; if (!pPack->Create(fileDict, st_packFilePath.c_str(), g_strFolderName.c_str(), false, s_IV)) return; std::string stFolder(c_szDirectory); stl_lowers(stFolder); std::vector<std::string> vecCompressedTextures; std::vector<int> vecCompressedTexMipMaps; RecursivePack(*pPack, stFolder.c_str(), vecCompressedTextures, vecCompressedTexMipMaps); AddIndex(st_packName.c_str(), stFolder.c_str()); pPack->DeleteUnreferencedData(); pPack->EncryptIndexFile(); //write it if( vecCompressedTextures.size() > 0 ) { MakeReducioHeader( vecCompressedTextures, vecCompressedTexMipMaps ); } pPackManager->RegisterPackWhenPackMaking(st_packFilePath.c_str(), g_strFolderName.c_str(), pPack ); } bool MakeRecursivePack(const char * c_szPackName, CTextFileLoader & rTextFileLoader, CEterPackManager* pPackManager) { string st_packName = g_st_packName.empty() ? c_szPackName : g_st_packName; string st_packFilePath; st_packFilePath = g_strFolderName; st_packFilePath += st_packName; string st_testName = g_strFolderName + std::string(c_szPackName); assert(st_testName == st_packFilePath); //CEterPack pack; CEterFileDict fileDict; CEterPack* pPack = new CEterPack; std::vector<std::string> vecCompressedTextures; std::vector<int> vecCompressedTexMipMaps; if (!pPack->Create(fileDict, st_packFilePath.c_str(), g_strFolderName.c_str(), false, s_IV)) return false; for (DWORD i = 0; i < rTextFileLoader.GetChildNodeCount(); ++i) { if (rTextFileLoader.SetChildNode(i)) { bool bAddIndex = false; std::string strAddIndex; if (rTextFileLoader.GetTokenString("addindex", &strAddIndex)) if (0 == strAddIndex.compare("TRUE")) bAddIndex = true; std::string strFileName; if (!rTextFileLoader.GetTokenString("filename", &strFileName)) continue; RecursivePack(*pPack, strFileName.c_str(), vecCompressedTextures, vecCompressedTexMipMaps); if (bAddIndex) { AddIndex(c_szPackName, strFileName.c_str()); } rTextFileLoader.SetParentNode(); } } pPack->DeleteUnreferencedData(); pPack->EncryptIndexFile(); //write it if( vecCompressedTextures.size() > 0 ) { MakeReducioHeader( vecCompressedTextures, vecCompressedTexMipMaps ); } pPackManager->RegisterPackWhenPackMaking(st_packFilePath.c_str(), g_strFolderName.c_str(), pPack ); return true; } int main(int argc, char **argv) { if (argc < 2) { puts("USAGE:"); printf("%s [command]\n", argv[0]); return 0; } boost::shared_ptr<CLZO> lzo(new CLZO); boost::shared_ptr<CEterPackManager> packMgr(new CEterPackManager); if (!strcmp(argv[1], "--createiv")) { // .exe --createiv <filename> if (argc != 3) { printf("Usage: %s --createiv <filename>\n", argv[0]); return 1; } CFileBase diskFile; if (diskFile.Create(argv[2], CFileBase::FILEMODE_WRITE)) { BYTE iv[32]; CryptoPP::AutoSeededRandomPool prng; prng.GenerateBlock(iv, sizeof(iv)); diskFile.Write(iv, sizeof(iv)); diskFile.Close(); char szHex[32*2+1]; for (int i = 0; i < 32; ++i) sprintf_s(szHex + i * 2, sizeof(szHex) - i * 2, "%02x", iv[i]); printf("IV %s created (hex %s)\n", argv[2], szHex); _chmod(argv[2], _S_IREAD); // Àбâ Àü¿ëÀ¸·Î ¸¸µé±â return 0; } printf("Cannot open %s, File may already exist\n", argv[2]); return 1; } else if (!strcmp(argv[1], "--openiv")) { // .exe --openiv <filename> if (argc != 3) { printf("Usage: %s --openiv <filename>\n", argv[0]); return 1; } CMappedFile file; const BYTE* iv; if (file.Create(argv[2], (const void**) &iv, 0, 32)) { char szHex[32*2+1]; for (int i = 0; i < 32; ++i) sprintf_s(szHex + i * 2, sizeof(szHex) - i * 2, "%02x", iv[i]); printf("IV %s loaded (hex %s)", argv[2], szHex); return 0; } printf("File not found or invalid format: %s\n", argv[3]); return 1; } else if (!strcmp(argv[1], "--extract")) { // .exe --extract <packname> [<IV filename>] if (argc < 3) { printf("Usage: %s --extract <packname> [<IV filename>]\n", argv[0]); return 1; } CMappedFile file; const BYTE* iv = NULL; if (argc >= 4) { if (!file.Create(argv[3], (const void**) &iv, 0, 32)) { printf("Cannot load IV file %s\n", argv[3]); return 1; } } CEterPack pack; CEterFileDict dict; if (pack.Create(dict, argv[2], "", true, iv)) { pack.Extract(); return 0; } printf("Cannot extract pack %s\n", argv[2]); return 1; } HANDLE hThread = GetCurrentThread(); SetThreadPriority(hThread, THREAD_PRIORITY_HIGHEST); SetLogLevel(1); if (2 != argc) { printf("Usage: %s [ScriptFileName]\n", argv[0]); return 1; } char* pcExt = strrchr(argv[1], '.'); if (pcExt) { std::string stLogFileName(argv[1], pcExt); CMakePackLog::GetSingleton().SetFileName(stLogFileName.c_str()); } CTextFileLoader TextFileLoader; if (!TextFileLoader.Load(argv[1])) { printf("Failed to load pack script\n"); return 1; } if (TextFileLoader.GetTokenString("foldername", &g_strFolderName)) { _mkdir(g_strFolderName.c_str()); g_strFolderName += "/"; } if (TextFileLoader.GetTokenString("packname", &g_st_packName)) { CMakePackLog::GetSingleton().Writef("\nPackName: %s\n", g_st_packName.c_str()); } TextFileLoader.GetTokenInteger("compresstexture", &iCompressTexQuality); //////////////////////////////////////////////////////////// IgnoreDirList_Load("ignore_dir_list.txt"); IgnoreFileList_Load("ignore_file_list.txt"); IgnoreBasePathList_Load("ignore_basepath_list.txt"); std::string strIndexFileName = g_strFolderName + std::string("Index.new"); FILE * fp; if (0 != fopen_s(&fp, strIndexFileName.c_str(), "w")) { char szCurDir[MAX_PATH + 1]; GetCurrentDirectory(MAX_PATH, szCurDir); printf("%s ÆÄÀÏÀ» ¿ ¼ö ¾ø½À´Ï´Ù. µð·ºÅ丮°¡ ¾ø°Å³ª ÆÄÀÏÀÌ ÀÌ¹Ì »ç¿ë Áß ÀÔ´Ï´Ù.\n" "ÇöÀç µð·ºÅ丮: %s\n", strIndexFileName.c_str(), szCurDir); return 1; } fprintf(fp, "PACK\n"); // Search Mode, 1 == ÆÑ¿¡¼ ¸ÕÀú ÀÐÀ½ fclose(fp); //////////////////////////////////////////////////////////// CTokenVector * pTokenVector; // ExcludedFolderNameList - ÇØ´ç Æú´õ À̸§Àº ÆÑÇÏÁö ¾Ê´Â´Ù. if (TextFileLoader.GetTokenVector("excludedfoldernamelist", &pTokenVector)) { //printf("\n - ExcludedFolderNameList\n"); CMakePackLog::GetSingleton().Writef("\n - ExcludedFolderNameList\n"); CTokenVector::iterator itor = pTokenVector->begin(); for (; pTokenVector->end() != itor; ++itor) { std::string & rstrName = *itor; //printf(" %s\n", rstrName.c_str()); CMakePackLog::GetSingleton().Writef(" %s\n", rstrName.c_str()); IgnoreDirList_Append("CVS"); } } // ExcludedPathList - Æнº ³»¿¡ ¸ðµç °ÍÀ» ÆÑÇÏÁö ¾Ê´Â´Ù. if (TextFileLoader.GetTokenVector("excludedpathlist", &pTokenVector)) { //printf("\n - ExcludedPathList\n"); CMakePackLog::GetSingleton().Write("\n - ExcludedPathList\n"); CTokenVector::iterator itor = pTokenVector->begin(); for (; pTokenVector->end() != itor; ++itor) { std::string & rstrName = *itor; //printf(" %s\n", rstrName.c_str()); CMakePackLog::GetSingleton().Writef(" %s\n", rstrName.c_str()); IgnoreBasePathList_Append("d:/ymir work/sound/"); } } // ExcludedFileNameList - ¸ðµç Æú´õ¿¡ ´ëÇØ ÇØ´ç ÆÄÀÏÀ̸§Àº ÆÑÇÏÁö ¾Ê´Â´Ù. if (TextFileLoader.GetTokenVector("excludedfilenamelist", &pTokenVector)) { //printf("\n - ExcludedFileNameList\n"); CMakePackLog::GetSingleton().Writef("\n - ExcludedFileNameList\n"); CTokenVector::iterator itor = pTokenVector->begin(); for (; pTokenVector->end() != itor; ++itor) { std::string & rstrName = *itor; //printf(" %s\n", rstrName.c_str()); CMakePackLog::GetSingleton().Writef(" %s\n", rstrName.c_str()); IgnoreFileList_Append(rstrName.c_str()); } } // CompressExtNameList - ÇØ´ç È®ÀåÀÚ¸¦ °¡Áø ÆÄÀÏÀº compress ÇÑ´Ù. if (TextFileLoader.GetTokenVector("compressextnamelist", &pTokenVector)) { CMakePackLog::GetSingleton().Writef("\n - CompressExtNameList\n"); CTokenVector::iterator itor = pTokenVector->begin(); for (; pTokenVector->end() != itor; ++itor) { std::string & rstrName = *itor; CMakePackLog::GetSingleton().Writef(" %s\n", rstrName.c_str()); RegisterPackTypeByExtName(rstrName.c_str(), COMPRESSED_TYPE_COMPRESS); } } // SecurityExtNameList - ÇØ´ç È®ÀåÀÚ¸¦ °¡Áø ÆÄÀÏÀº encrypt ÇÑ´Ù. if (TextFileLoader.GetTokenVector("securityextnamelist", &pTokenVector)) { CMakePackLog::GetSingleton().Writef("\n - SecurityExtNameList\n"); CTokenVector::iterator itor = pTokenVector->begin(); for (; pTokenVector->end() != itor; ++itor) { std::string & rstrName = *itor; CMakePackLog::GetSingleton().Writef(" %s\n", rstrName.c_str()); RegisterPackTypeByExtName(rstrName.c_str(), COMPRESSED_TYPE_SECURITY); } } // OldCompressExtNameList - ÇØ´ç È®ÀåÀÚ¸¦ °¡Áø ÆÄÀÏÀº ¾ÏÈ£È ÇÑ´Ù. if (TextFileLoader.GetTokenVector("oldcompressextnamelist", &pTokenVector)) { CMakePackLog::GetSingleton().Writef("\n - OldCompressExtNameList\n"); CTokenVector::iterator itor = pTokenVector->begin(); for (; pTokenVector->end() != itor; ++itor) { std::string & rstrName = *itor; CMakePackLog::GetSingleton().Writef(" %s\n", rstrName.c_str()); // OldCompressExtNameList´Â ¾ÐÃàÀ» ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¾Ïȣȸ¦ ÇؾßÇϹǷΠ// ÀǵµÀûÀ¸·Î COMPRESSED_TYPE_SECURITY¸¦ ³Ö¾úÀ½ RegisterPackTypeByExtName(rstrName.c_str(), COMPRESSED_TYPE_SECURITY); } } std::string stIVFileName; if (TextFileLoader.GetTokenString("iv", &stIVFileName)) { CMappedFile mappedFile; BYTE * pIV; if (mappedFile.Create(stIVFileName.c_str(), (const void **) &pIV, 0, 32)) memcpy(s_IV, pIV, 32); else { TraceError("IV open error: %s", stIVFileName.c_str()); return 1; } } // PanamaExtNameList - »õ·Î¿î ¾ÏÈ£È if (TextFileLoader.GetTokenVector("panamaextnamelist", &pTokenVector)) { CMakePackLog::GetSingleton().Writef("\n - PanamaExtNameList\n"); CTokenVector::iterator itor = pTokenVector->begin(); for (; pTokenVector->end() != itor; ++itor) { std::string & rstrName = *itor; CMakePackLog::GetSingleton().Writef(" %s\n", rstrName.c_str()); RegisterPackTypeByExtName(rstrName.c_str(), COMPRESSED_TYPE_PANAMA, true); } } if (TextFileLoader.GetTokenVector("cshybridencryptexenamelist", &pTokenVector)) { CMakePackLog::GetSingleton().Writef("\n - C/S Hybrid Encrypt ExtNameList\n"); CTokenVector::iterator itor = pTokenVector->begin(); for (; pTokenVector->end() != itor; ++itor) { std::string & rstrName = *itor; CMakePackLog::GetSingleton().Writef(" %s\n", rstrName.c_str()); RegisterPackTypeByExtName(rstrName.c_str(), COMPRESSED_TYPE_HYBRIDCRYPT, true); } } if (TextFileLoader.SetChildNode("rootpackitemlist")) { CMakePackLog::GetSingleton().Writef("\n + Making RootPack\n"); MakeRecursivePack("root", TextFileLoader, packMgr.get()); TextFileLoader.SetParentNode(); } if (TextFileLoader.SetChildNode("localpathpack")) { CMakePackLog::GetSingleton().Writef("\n + Making RootPack\n"); MakeRecursivePack(g_st_packName.c_str(), TextFileLoader, packMgr.get()); TextFileLoader.SetParentNode(); } if (TextFileLoader.SetChildNode("etcpackitemlist")) { CMakePackLog::GetSingleton().Writef("\n + Making ETCPack\n"); MakeRecursivePack("ETC", TextFileLoader, packMgr.get()); TextFileLoader.SetParentNode(); } if (TextFileLoader.SetChildNode("soundpackitemlist")) { CMakePackLog::GetSingleton().Writef("\n + Making SoundPack\n"); MakeRecursivePack("sound", TextFileLoader, packMgr.get()); TextFileLoader.SetParentNode(); } if (TextFileLoader.SetChildNode("sound2packitemlist")) { CMakePackLog::GetSingleton().Writef("\n + Making Sound2Pack\n"); MakeRecursivePack("sound2", TextFileLoader, packMgr.get()); TextFileLoader.SetParentNode(); } CMakePackLog::GetSingleton().Writef("\n + PackList \n"); if (TextFileLoader.SetChildNode("packlist")) { for (DWORD i = 0; i < TextFileLoader.GetChildNodeCount(); ++i) { if (TextFileLoader.SetChildNode(i)) { std::string strNodeName; if (!TextFileLoader.GetCurrentNodeName(&strNodeName)) continue; std::string strPathName; if (!TextFileLoader.GetTokenString("pathname", &strPathName)) continue; MakePack(strNodeName.c_str(), strPathName.c_str(), packMgr.get()); TextFileLoader.SetParentNode(); } } } // SDB ( Supplementary Data Block Required File List ) if (TextFileLoader.GetTokenVector("sdbfilelist", &pTokenVector)) { CTokenVector::iterator itor = pTokenVector->begin(); for (; pTokenVector->end() != itor; ++itor) { std::string & rstrName = *itor; std::string rstrNameLower = rstrName; stl_lowers(rstrNameLower); std::vector<std::string> strs; //mapname:sdbfilename boost::split(strs, rstrNameLower, boost::is_any_of("?")); if( strs.size() == 1 ) { strs.push_back(strs[0]); strs[0] = "none"; } if( strs.size() != 2 ) { CMakePackLog::GetSingleton().Writef("\n SDB File Usage: MapName:SDBFileName \n"); return -1; } StringPath(strs[1]); g_map_SDBFileList[strs[1]] = strs[0]; } } // filelist¿¡ ¼½¼Ç¿¡ ÀԷµǾî ÀÖ´Â ¸ðµç ÆÄÀÏÀ» ÆÑÇϱâ if (TextFileLoader.GetTokenVector("filelist", &pTokenVector)) { std::vector<std::string> filePaths; CTokenVector::iterator itor = pTokenVector->begin(); for (; pTokenVector->end() != itor; ++itor) { std::string & rstrName = *itor; std::vector<std::string>::iterator it = std::find( filePaths.begin(), filePaths.end(), rstrName ); if( it == filePaths.end() ) { filePaths.push_back(rstrName); } } if(!MakePackFiles(filePaths, packMgr.get())) { CMakePackLog::GetSingleton().FlushError(); return -1; } } //make key file for CS hybrid crypt std::string strCryptFileName = g_strFolderName + "/" + "cshybridcrypt_" + g_st_packName + ".dat"; packMgr->WriteHybridCryptPackInfo(strCryptFileName.c_str()); std::string strOldIndexFileName = g_strFolderName + std::string("Index"); DeleteFile(strOldIndexFileName.c_str()); MoveFile(strIndexFileName.c_str(), strOldIndexFileName.c_str()); TextFileLoader.Destroy(); CTextFileLoader::DestroySystem(); return 0; }
Open EterPackEterPack.cpp and in CEterPack::Extract function add this:
std::string filename = index->filename; if(filename.find("d:/") == 0) filename.replace(0, 3, "");
After:
for (TDataPositionMap::iterator i = m_DataPositionMap.begin(); i != m_DataPositionMap.end(); ++i) { TEterPackIndex* index = i->second; CFileBase writeFile;
And now replace all index->filename with filename.c_str() (only in CEterPack::Extract() function, because the string variable isn't global)
If you want to extract files in pack name, you have to add:
std::string foldername = m_stDataFileName; foldername.replace(foldername.length()-4, 4, ""); filename = foldername + std::string("/") + filename;
After:
std::string filename = index->filename; if(filename.find("d:/") == 0) filename.replace(0, 3, "");
Sorry if my method is bad (?) (i'm beginner in programming) and if my english has errors.
-
HI I've a problem with the game.mysql_query function. I hope somebody can give the right syntax.
This is my testquest:
quest bla begin state start begin when 9003.chat."TEST" begin local p = game.mysql_query("select 'login', 'social_id' from account.account where 'id' = '"..pc.get_account_id()"'") if not p then return chat "FAILED" end say("Dein Login: "..p[1][1]) say("Dein Code: "..p[1][2]) end end end
The string is correct but I don't receive any output. As far as I know the right syntax for query tables isresult[row][column number]
Test with this:
result.row[column number]
-
Try TXT_STARTUP: 1
-
Problem solved, the problem was the virtual machine.
#closerequest.
-
Same for me! Problem solved, and the error isn't Vanilla core, but, the method you're using for levelling the guild.If i declare war to enemy guild, it says "the enemy leader is offline" even if he's behind me.
Same channel, same map.
Help please.
-
Delete files (not folder) in mysql folder and reboot your VM.
-
For me the database not crash but, if I restart it give me this error, segmentation fault (core dumped). If I try to start it several time start again working. :
-
Try this:
ALTER TABLE `player` MODIFY COLUMN `part_main` smallint(6) UNSIGNED NOT NULL DEFAULT 0 AFTER `ip`;
-
I've reinstalled my VM and the problem persist. If I try to start database some time it work and I don't understand why.. The solution is not gcc48.
If it helps: I use the 9.2 version of FreeBSD.
-
The start script is not a problem..
-
Bump..
it's not an error just warning
Segmantation bug is fixed and public on metin2dev.org. You should be look at topics.
Kind Regards
HaveBeen
Today I searched in all forums but I don't have find the fix.. Where is?# Another problem for this is: if start dbcache from start script it don't work, if i start it manually work.
Anybody?..
-
Check with top if mysqld is now started, if not, start it with 'service mysql-server start'.
-
Try with 'pkg_add -r mysql56-server'
If you want to solve socket problem:
delete all files in mysql folder (not folders, files!) and reboot your VM or, if don't work,
start mysql in safe mode with
mysqld_safe start rehash
,after, try starting mysql.
Ah.. check if the own of mysql folder is mysql[88] in alternative give me your skype and I will try to help you with teamviewer.
- 2
-
In uitooltip.py change APPLY_DEF_GRADE with APPLY_DEF_GRADE_BONUS.
-
Database: change enum in varchar and set default 'SMALL'.
- 1
-
I see.. and thanks for your answer.
But how to solve?
This is my db core:
GNU gdb 6.1.1 [FreeBSD] Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-marcel-freebsd"...Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in module /metin2/database/db] Core was generated by `db'. Program terminated with signal 11, Segmentation fault. Reading symbols from /lib/libstdc++.so.6...Error while reading shared library sy mbols: Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in mo dule /lib/libstdc++.so.6] Reading symbols from /lib/libz.so.6...(no debugging symbols found)...done. Loaded symbols for /lib/libz.so.6 Reading symbols from /lib/libm.so.5...(no debugging symbols found)...done. Loaded symbols for /lib/libm.so.5 Reading symbols from /lib/libgcc_s.so.1...(no debugging symbols found)...done. Loaded symbols for /lib/libgcc_s.so.1 Reading symbols from /lib/libthr.so.3...(no debugging symbols found)...done. Loaded symbols for /lib/libthr.so.3 Reading symbols from /lib/libc.so.7...(no debugging symbols found)...done. Loaded symbols for /lib/libc.so.7 Reading symbols from /libexec/ld-elf.so.1...(no debugging symbols found)...done. Loaded symbols for /libexec/ld-elf.so.1 #0 0x2833c930 in strtoul_l () from /lib/libc.so.7 [New Thread 28406100 (LWP 100272/db)] [New Thread 28405e00 (LWP 100271/db)] [New Thread 28405b00 (LWP 100269/db)] [New Thread 28405800 (LWP 100268/db)] [New Thread 28405500 (LWP 100267/db)] [New Thread 28405200 (LWP 100266/db)] [New Thread 28404f00 (LWP 100265/db)] [New Thread 28404c00 (LWP 100264/db)] [New Thread 28404300 (LWP 100076/db)]
-
Hello metin2dev,
i have an error with revision 40k+ database, if I use it, after shutdown give me the error: "Segmentation fault (core dumped)".
If reboot FreeBSD it work again.. What's the problem?
This happen also with the vanilla's dbcache...
If I use the rev 33k it work perfectly.
Syserr:
SYSERR: Apr 12 22:59:34 :: pid_init: Start of pid: 989 SYSERR: Apr 12 22:59:34 :: Start: TABLE_POSTFIX not configured use default
-
It's one of my 1.233.412.412 bugs or pet system don't work with this game core?
-
Change the password of your metin2 mysql user in that you have in the CONFIG files.
-
Vanilla, thank you for your gamecore, very useful, but I can't load txt-files despite having put TXT_STARTUP: 1 in the dbcache config.
- - - Updated - - -
Solved changing database bind_port.
Problem whit auto login Item shop
in Community Support - Questions & Answers
Posted
For the auto login in your item-shop you've to receive to your PHP script the player id (pid) as GET request ([...]/ishop?pid=231). Check the received requests with:
and see how your item-shop do the login.