Jump to content

Get Index From Client


Recommended Posts

  • Honorable Member

UserInterface.cpp find:

bool PackInitialize(const char * c_pszFolder)

 change:

bool PackInitialize(const char * c_pszFolder)
{
	if (_access(c_pszFolder, 0))
		return true;

	std::string stFolder = c_pszFolder + std::string("/");
	CTextFileLoader::SetCacheMode();
#if defined(USE_RELATIVE_PATH)
	CEterPackManager::Instance().SetRelativePathMode();
#endif
	CEterPackManager::Instance().SetCacheMode();
	CEterPackManager::Instance().SetSearchMode(true);
	CSoundData::SetPackMode();
	std::vector<std::string> packlist 
	{
		"icon",
		"locale",
		"uiscript",
		"textureset",
		"Map",
		"Property",
		"Sound",
		"Terrain",
		"examplepack",
		"ymir_pack",
	};
	for (const auto & pack : packlist)
		CEterPackManager::Instance().RegisterPack((stFolder + pack).c_str(), "*");
	CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str());
	return true;
}

 

  • Love 3

 

Link to comment
Share on other sites

  • Gold

@Mali61 Do I understand right?

We have to replace this function:

Spoiler

bool PackInitialize(const char * c_pszFolder)
{
	NANOBEGIN

	if (_access(c_pszFolder, 0) != 0)
		return true;

	std::string stFolder(c_pszFolder);
	stFolder += "/";

	std::string stFileName(stFolder);
	stFileName += "Index";

	CMappedFile file;
	LPCVOID pvData;

	if (!file.Create(stFileName.c_str(), &pvData, 0, 0))
	{
		LogBoxf("FATAL ERROR! File not exist: %s", stFileName.c_str());
		TraceError("FATAL ERROR! File not exist: %s", stFileName.c_str());
		return true;
	}

	CMemoryTextFileLoader TextLoader;
	TextLoader.Bind(file.Size(), pvData);

	bool bPackFirst = TRUE;

	const std::string& strPackType = TextLoader.GetLineString(0);

	if (strPackType.compare("FILE") && strPackType.compare("PACK"))
	{
		TraceError("Pack/Index has invalid syntax. First line must be 'PACK' or 'FILE'");
		return false;
	}

#ifdef _DISTRIBUTE
	Tracef("ľË¸˛: ĆŃ ¸đµĺŔÔ´Ď´Ů.\n");

	//if (0 == strPackType.compare("FILE"))
	//{
	//	bPackFirst = FALSE;
	//	Tracef("ľË¸˛: ĆÄŔĎ ¸đµĺŔÔ´Ď´Ů.\n");
	//}
	//else
	//{
	//	Tracef("ľË¸˛: ĆŃ ¸đµĺŔÔ´Ď´Ů.\n");
	//}
#else
	bPackFirst = TRUE;
	Tracef("ľË¸˛: ĆÄŔĎ ¸đµĺŔÔ´Ď´Ů.\n");
#endif

	CTextFileLoader::SetCacheMode();
#if defined(USE_RELATIVE_PATH)
	CEterPackManager::Instance().SetRelativePathMode();
#endif
	CEterPackManager::Instance().SetCacheMode();
	CEterPackManager::Instance().SetSearchMode(bPackFirst);

	CSoundData::SetPackMode(); // Miles ĆÄŔĎ ÄÝąéŔ» ĽÂĆĂ

	std::string strPackName, strTexCachePackName;
	for (DWORD i = 1; i < TextLoader.GetLineCount() - 1; i += 2)
	{
		const std::string & c_rstFolder = TextLoader.GetLineString(i);
		const std::string & c_rstName = TextLoader.GetLineString(i + 1);

		strPackName = stFolder + c_rstName;
		strTexCachePackName = strPackName + "_texcache";

		CEterPackManager::Instance().RegisterPack(strPackName.c_str(), c_rstFolder.c_str());
		CEterPackManager::Instance().RegisterPack(strTexCachePackName.c_str(), c_rstFolder.c_str());
	}

	CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str());
	NANOEND
		return true;
}

 

With this function?:

Spoiler

bool PackInitialize(const char * c_pszFolder)
{
	if (_access(c_pszFolder, 0))
		return true;

	std::string stFolder = c_pszFolder + std::string("/");
	CTextFileLoader::SetCacheMode();
#if defined(USE_RELATIVE_PATH)
	CEterPackManager::Instance().SetRelativePathMode();
#endif
	CEterPackManager::Instance().SetCacheMode();
	CEterPackManager::Instance().SetSearchMode(true);
	CSoundData::SetPackMode();
	std::vector<std::string> packlist 
	{
		"icon",
		"locale",
		"uiscript",
		"textureset",
		"Map",
		"Property",
		"Sound",
		"Terrain",
		"uiscript",
		"ymir_pack",
	};
	for (const auto & pack : packlist)
		CEterPackManager::Instance().RegisterPack((stFolder + pack).c_str(), "*");
	CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str());
	return true;
}

 

And how does it work? Is enough to write below packlist all .eix files from client pack?

Btw. Thanks for the release!

Sincerely,

ReFresh

I'll be always helpful! 👊 

Link to comment
Share on other sites

  • Honorable Member
1 minute ago, ReFresh said:

@Mali61 Do I understand right?

We have to replace this function:

  Reveal hidden contents


bool PackInitialize(const char * c_pszFolder)
{
	NANOBEGIN

	if (_access(c_pszFolder, 0) != 0)
		return true;

	std::string stFolder(c_pszFolder);
	stFolder += "/";

	std::string stFileName(stFolder);
	stFileName += "Index";

	CMappedFile file;
	LPCVOID pvData;

	if (!file.Create(stFileName.c_str(), &pvData, 0, 0))
	{
		LogBoxf("FATAL ERROR! File not exist: %s", stFileName.c_str());
		TraceError("FATAL ERROR! File not exist: %s", stFileName.c_str());
		return true;
	}

	CMemoryTextFileLoader TextLoader;
	TextLoader.Bind(file.Size(), pvData);

	bool bPackFirst = TRUE;

	const std::string& strPackType = TextLoader.GetLineString(0);

	if (strPackType.compare("FILE") && strPackType.compare("PACK"))
	{
		TraceError("Pack/Index has invalid syntax. First line must be 'PACK' or 'FILE'");
		return false;
	}

#ifdef _DISTRIBUTE
	Tracef("ľË¸˛: ĆŃ ¸đµĺŔÔ´Ď´Ů.\n");

	//if (0 == strPackType.compare("FILE"))
	//{
	//	bPackFirst = FALSE;
	//	Tracef("ľË¸˛: ĆÄŔĎ ¸đµĺŔÔ´Ď´Ů.\n");
	//}
	//else
	//{
	//	Tracef("ľË¸˛: ĆŃ ¸đµĺŔÔ´Ď´Ů.\n");
	//}
#else
	bPackFirst = TRUE;
	Tracef("ľË¸˛: ĆÄŔĎ ¸đµĺŔÔ´Ď´Ů.\n");
#endif

	CTextFileLoader::SetCacheMode();
#if defined(USE_RELATIVE_PATH)
	CEterPackManager::Instance().SetRelativePathMode();
#endif
	CEterPackManager::Instance().SetCacheMode();
	CEterPackManager::Instance().SetSearchMode(bPackFirst);

	CSoundData::SetPackMode(); // Miles ĆÄŔĎ ÄÝąéŔ» ĽÂĆĂ

	std::string strPackName, strTexCachePackName;
	for (DWORD i = 1; i < TextLoader.GetLineCount() - 1; i += 2)
	{
		const std::string & c_rstFolder = TextLoader.GetLineString(i);
		const std::string & c_rstName = TextLoader.GetLineString(i + 1);

		strPackName = stFolder + c_rstName;
		strTexCachePackName = strPackName + "_texcache";

		CEterPackManager::Instance().RegisterPack(strPackName.c_str(), c_rstFolder.c_str());
		CEterPackManager::Instance().RegisterPack(strTexCachePackName.c_str(), c_rstFolder.c_str());
	}

	CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str());
	NANOEND
		return true;
}

 

With this function?:

  Reveal hidden contents


bool PackInitialize(const char * c_pszFolder)
{
	if (_access(c_pszFolder, 0))
		return true;

	std::string stFolder = c_pszFolder + std::string("/");
	CTextFileLoader::SetCacheMode();
#if defined(USE_RELATIVE_PATH)
	CEterPackManager::Instance().SetRelativePathMode();
#endif
	CEterPackManager::Instance().SetCacheMode();
	CEterPackManager::Instance().SetSearchMode(true);
	CSoundData::SetPackMode();
	std::vector<std::string> packlist 
	{
		"icon",
		"locale",
		"uiscript",
		"textureset",
		"Map",
		"Property",
		"Sound",
		"Terrain",
		"uiscript",
		"ymir_pack",
	};
	for (const auto & pack : packlist)
		CEterPackManager::Instance().RegisterPack((stFolder + pack).c_str(), "*");
	CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str());
	return true;
}

 

And how does it work? Is enough to write below packlist all .eix files from client pack?

Btw. Thanks for the release!

Sincerely,

ReFresh

just write packnames without eix or epk

  • Love 1

 

Link to comment
Share on other sites

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.