Metin2 Hungarian Forum

Metin2 => Szerver készítés => Privát szerverek => Segítség => A témát indította: TheSLESH Dátum 2019-08-30, 10:13:42

Cím: Kliens levédés utáni hiba.
Írta: TheSLESH Dátum 2019-08-30, 10:13:42
Betettem a Publikált Eter védelmet, átírtam a Tea ROUND-ot, bontóban, indítóban, és dump-ban is, újra csomagoltam az egész klienst, és egy érdekes hibám lett.

CEffectManager::RegisterEffect - LoadScript(d:/ymir work/effect/etc/dropitem/dropitem.mse) Error

továbbá a kliens indulásakor, egy ilyen hibaablak ugrik fel:
Cannot load image (filename: D:/Ymir Work/UI/Cursor/cursor_hvsize.sub)

Természetesen, minden a helyén van, és próbáltam azt is, hogy át csomagoltam egy másik fájlba az érintett mse-t, és sub-ot.
Kerestem a neten is, két témát találtam, pont ezzel a hibával, (http://metin2hungary.net/index.php?topic=199087.0) csak sajnos, ott a srác nem kapott segítséget.
Ha valaki tudja a megoldást, azt szívesen várom nagy szükségem lenne rá:)
Cím: Re:Kliens levédés utáni hiba.
Írta: Distraught Dátum 2019-09-04, 08:56:57
Elég generikus hibaüzenet, nem tudja beolvasni. Bárhol elronthattad a kódot, ebből hogy találná ki bárki? Másold ide az összes részt, amit módosítottál (meg az eredetiket is mellé).
Cím: Re:Kliens levédés utáni hiba.
Írta: TheSLESH Dátum 2019-09-05, 08:46:59
A hiba nem a kliens védésnél történt, hanem a csomagolásnál valami... Pár napja próbálgatom, de sajnos ugyan úgy hibádzik, és már ötletem sincsen... Ha visszarakom a tea-t 32-re, akkor is, tehát a csomagolás közben rontottam el valamit..

List SecurityExtNameList
{
"txt"
"msk"
"msa"
"msm"
"py"
"mss"
"mse"
"msf"
"spt"
"atr"
"dds"
"raw"
"wtr"
"mde"
"tga"
"sub"
"jpg"
"gr2"
}

List CompressExtNameList
{
"txt"
"msk"
"msa"
"msm"
"py"
"mss"
"mse"
"msf"
"spt"
"atr"
"dds"
"raw"
"wtr"
"mde"
"tga"
"sub"
"jpg"
"gr2"
}


lehet itt?
Cím: Re:Kliens levédés utáni hiba.
Írta: Radox Dátum 2019-09-05, 10:44:12
egyszerűen csak szar vagy és annyi..."publikus" védelmet nme tudsz be rakni xdd
Cím: Re:Kliens levédés utáni hiba.
Írta: Distraught Dátum 2019-09-05, 10:45:15
Igazából ez csak 2 tömb, a C++ kódot rakd ide, abból látom, hogy mi történik.
Cím: Re:Kliens levédés utáni hiba.
Írta: TheSLESH Dátum 2019-09-05, 10:53:17
a két tömörítési eljárás (type 2 és type1) használható együtt, vagy csak külön-külön működőképesek?
Cím: Re:Kliens levédés utáni hiba.
Írta: Distraught Dátum 2019-09-05, 11:07:06
Nem emlékszem már hogyan néz ki ez konkrétan a Metinben, mert jó ideje nincs még egy kliens se a gépemen, de működniük kell szerintem. Ha jól értelmezem, kétszer tömöríted a fájlokat. Arra figyeltél, hogy kicsomagoláskor fordított sorrendben fusson le a két kitömörítő algoritmus?
Cím: Re:Kliens levédés utáni hiba.
Írta: TheSLESH Dátum 2019-09-05, 11:44:32
Az egér hibát sikerült orvosolnom, viszont azt még mindig nem, hogy nem tudja "kibontani" az ui fájlokat (corner, bottom stb)

SYSERR: CResourceManager::GetResourcePointer: File not exist d:/ymir work/ui/pattern/Board_Corner_LeftTop.tga
SYSERR: CANNOT_FIND_PACK_FILE [d:/ymir work/ui/pattern/board_corner_lefttop.tga]
CResource::Load file not exist d:\ymir work\ui\pattern\board_corner_lefttop.tga
SYSERR: CResourceManager::GetResourcePointer: File not exist d:/ymir work/ui/pattern/Board_Corner_LeftBottom.tga
SYSERR: CANNOT_FIND_PACK_FILE [d:/ymir work/ui/pattern/board_corner_leftbottom.tga]
CResource::Load file not exist d:\ymir work\ui\pattern\board_corner_leftbottom.tga
SYSERR: CResourceManager::GetResourcePointer: File not exist d:/ymir work/ui/pattern/Board_Corner_RightTop.tga
SYSERR: CANNOT_FIND_PACK_FILE [d:/ymir work/ui/pattern/board_corner_righttop.tga]
CResource::Load file not exist d:\ymir work\ui\pattern\board_corner_righttop.tga
SYSERR: CResourceManager::GetResourcePointer: File not exist d:/ymir work/ui/pattern/Board_Corner_RightBottom.tga
SYSERR: CANNOT_FIND_PACK_FILE [d:/ymir work/ui/pattern/board_corner_rightbottom.tga]
CResource::Load file not exist d:\ymir work\ui\pattern\board_corner_rightbottom.tga


Természetesen, ott van a helyén, illetve megpróbáltam újra csomagolni egy másik fájlba, hátha az sérült, de ugyan az...  Ezért kérdeztem, hogy hátha az a hiba, hogy a két tömörítési algoritmus nem fér meg egymás mellett, most viszont újra csomagoltam az egész klienst, elöbb type2-vel, most csak type1-el, viszont a hiba ugyan az még mindig... Mintha nem lennének becsomagolva a board részek, megnéztem kicsomagolva is, ott vannak, megnéztem becsomagolás elött az mbscypt fájlt, abban is benne vannak... Érdekes minden esetre.

CResource * CResourceManager::GetResourcePointer(const char * c_szFileName)
{
if (!c_szFileName || !*c_szFileName)
{
TraceError("CResourceManager::GetResourcePointer: filename error!");
return NULL;
}

const char * c_pszFile;
DWORD dwFileCRC = __GetFileCRC(c_szFileName, &c_pszFile);
CResource * pResource = FindResourcePointer(dwFileCRC);

if (pResource) // 이미 리소스가 있으면 리턴 한다.
return pResource;

const char * pcFileExt = strrchr(c_pszFile, '.');

#ifdef _DEBUG
if (!IsFileExist(c_szFileName) )
{
if( pcFileExt == NULL || (stricmp( pcFileExt, ".fnt" ) != 0) ) {
TraceError("CResourceManager::GetResourcePointer: File not exist %s", c_szFileName);
}
}
#endif

CResource * (*newFunc) (const char *) = NULL;

if (pcFileExt)
{
static char s_szFileExt[8 + 1];
strncpy(s_szFileExt, pcFileExt + 1, 8);

TResourceNewFunctionPointerMap::iterator f = m_pResNewFuncMap.find(s_szFileExt);

if (m_pResNewFuncMap.end() != f)
newFunc = f->second;
}

if (!newFunc)
{
TraceError("ResourceManager::GetResourcePointer: NOT SUPPORT FILE %s", c_pszFile);
return NULL;
}

pResource = InsertResourcePointer(dwFileCRC, newFunc(c_pszFile));
return pResource;
}


Üzenet összefésülés: 2019-09-05, 11:49:15

bool CEterPackManager::GetFromPack(CMappedFile & rMappedFile, const char * c_szFileName, LPCVOID * pData)
{
FinderLock lock(m_csFinder);

static std::string strFileName;

if (0 == ConvertFileName(c_szFileName, strFileName))
{
LPCVOID Protect;
return m_RootPack.Get(rMappedFile, strFileName.c_str(), pData, &Protect);
}
else
{
DWORD dwFileNameHash = GetCRC32(strFileName.c_str(), strFileName.length());
SCache* pkCache = __FindCache(dwFileNameHash);

if (pkCache)
{
rMappedFile.Link(pkCache->m_dwBufSize, pkCache->m_abBufData);
return true;
}

CEterFileDict::Item* pkFileItem = m_FileDict.GetItem(dwFileNameHash, strFileName.c_str());

if (pkFileItem)
if (pkFileItem->pkPack)
{
LPCVOID Protect;
bool r = pkFileItem->pkPack->Get2(rMappedFile, strFileName.c_str(), pkFileItem->pkInfo, pData, &Protect);
//pkFileItem->pkPack->ClearDataMemoryMap();
return r;
}
}
#ifdef _DEBUG
TraceError("CANNOT_FIND_PACK_FILE [%s]", strFileName.c_str());
#endif

return false;
}


a CANNOT_FIND_PACK_FILE hiba pedig ide vezet vissza, (protect-et adtam itt hozzá)

Üzenet összefésülés: 2019-09-05, 11:51:46

Ez pedig a Get2 függvény, a Get függvényt is hasonló képpen módosítottam.


bool CEterPack::Get2(CMappedFile& out_file, const char * filename, TEterPackIndex * index, LPCVOID * data, LPCVOID * Protect)
{
if (!index)
{
return false;
}

out_file.Create(m_stDataFileName.c_str(), data, index->data_position, index->data_size);

bool bIsSecurityCheckRequired = ( index->compressed_type == COMPRESSED_TYPE_SECURITY ||
  index->compressed_type == COMPRESSED_TYPE_PANAMA );

if( bIsSecurityCheckRequired )
{
#ifdef CHECKSUM_CHECK_MD5
MD5_CTX context;
GenerateMD5Hash( (BYTE*)(*data), index->data_size, context );

if( memcmp( index->MD5Digest, context.digest, 16 ) != 0 )
{
return false;
}
#else
DWORD dwCrc32 = GetCRC32((const char*)(*data), index->data_size);

if( index->data_crc != dwCrc32 )
{
return false;
}
#endif
}


if (COMPRESSED_TYPE_COMPRESS == index->compressed_type)
{
CLZObject * zObj = new CLZObject;

if (!CLZO::Instance().Decompress(*zObj, static_cast<const BYTE *>(*data)))
{
TraceError("Failed to decompress : %s", filename);
delete zObj;
return false;
}

out_file.BindLZObject(zObj);
*data = zObj->GetBuffer();
}
else if (COMPRESSED_TYPE_SECURITY == index->compressed_type)
{
CLZObject * zObj = new CLZObject;

if (!CLZO::Instance().Decompress(*zObj, static_cast<const BYTE *>(*data), s_adwEterPackSecurityKey))
{
TraceError("Failed to encrypt : %s", filename);
delete zObj;
return false;
}

out_file.BindLZObject(zObj);
*data = zObj->GetBuffer();
}
else if (COMPRESSED_TYPE_PANAMA == index->compressed_type)
{
CLZObject * zObj = new CLZObject;
__Decrypt_Panama(filename, static_cast<const BYTE*>(*data), index->data_size, *zObj);
out_file.BindLZObjectWithBufferedSize(zObj);
*data = zObj->GetBuffer();
}
else if (COMPRESSED_TYPE_HYBRIDCRYPT == index->compressed_type || COMPRESSED_TYPE_HYBRIDCRYPT_WITHSDB == index->compressed_type)
{
#ifdef __THEMIDA__
VM_START
#endif

CLZObject * zObj = new CLZObject;

if( !m_pCSHybridCryptPolicy->DecryptMemory(string(filename), static_cast<const BYTE*>(*data), index->data_size, *zObj) )
{
return false;
}

out_file.BindLZObjectWithBufferedSize(zObj);

if( COMPRESSED_TYPE_HYBRIDCRYPT_WITHSDB == index->compressed_type)
{
BYTE* pSDBData;
int   iSDBSize;

if( !m_pCSHybridCryptPolicy->GetSupplementaryDataBlock(string(filename), pSDBData, iSDBSize) )
{
return false;
}

*data = out_file.AppendDataBlock( pSDBData, iSDBSize );
}
else
{
*data = zObj->GetBuffer();
}
#ifdef __THEMIDA__
VM_END
#endif
}

*Protect = *data;
return true;
}
Cím: Re:Kliens levédés utáni hiba.
Írta: Distraught Dátum 2019-09-05, 16:10:29
A __GetFileCRC és a FindResourcePointer függvényeket is másold be. Legelőször azok közül hasal el valamelyiknél. Bár kelleni fog valószínűleg még jópár függvény majd, mire eljutunk a hibához.
EhPortal 1.39 © 2025, WebDev