Szerző Téma: Kliens levédés utáni hiba.  (Megtekintve 515 alkalommal)

Nem elérhető TheSLESH

  • Intermediate
  • **
  • Thank You
  • -Given: 12
  • -Receive: 31
  • Hozzászólások: 251
  • Segített: -18
  • Várom a napfelkeltét
Kliens levédés utáni hiba.
« 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á:)
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

Nem elérhető Distraught

  • Professional
  • ***
  • Thank You
  • -Given: 105
  • -Receive: 318
  • Hozzászólások: 544
  • Segített: 269
    • Facebook
Re:Kliens levédés utáni hiba.
« Válasz #1 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++ programmer at Gameloft

Nem elérhető TheSLESH

  • Intermediate
  • **
  • Thank You
  • -Given: 12
  • -Receive: 31
  • Hozzászólások: 251
  • Segített: -18
  • Várom a napfelkeltét
Re:Kliens levédés utáni hiba.
« Válasz #2 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?
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

Nem elérhető Radox

  • Intermediate
  • **
  • Thank You
  • -Given: 48
  • -Receive: 4
  • Hozzászólások: 180
  • Segített: -11
Re:Kliens levédés utáni hiba.
« Válasz #3 Dátum: 2019-09-05, 10:44:12 »
egyszerűen csak szar vagy és annyi..."publikus" védelmet nme tudsz be rakni xdd
Véletlennek azt nevezzük, amikor a számításaink kudarcot vallanak.

Nem elérhető Distraught

  • Professional
  • ***
  • Thank You
  • -Given: 105
  • -Receive: 318
  • Hozzászólások: 544
  • Segített: 269
    • Facebook
Re:Kliens levédés utáni hiba.
« Válasz #4 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++ programmer at Gameloft

Nem elérhető TheSLESH

  • Intermediate
  • **
  • Thank You
  • -Given: 12
  • -Receive: 31
  • Hozzászólások: 251
  • Segített: -18
  • Várom a napfelkeltét
Re:Kliens levédés utáni hiba.
« Válasz #5 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?
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

Nem elérhető Distraught

  • Professional
  • ***
  • Thank You
  • -Given: 105
  • -Receive: 318
  • Hozzászólások: 544
  • Segített: 269
    • Facebook
Re:Kliens levédés utáni hiba.
« Válasz #6 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++ programmer at Gameloft

Nem elérhető TheSLESH

  • Intermediate
  • **
  • Thank You
  • -Given: 12
  • -Receive: 31
  • Hozzászólások: 251
  • Segített: -18
  • Várom a napfelkeltét
Re:Kliens levédés utáni hiba.
« Válasz #7 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;
}
« Utoljára szerkesztve: 2019-09-05, 11:51:46 írta TheSLESH »
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

Nem elérhető Distraught

  • Professional
  • ***
  • Thank You
  • -Given: 105
  • -Receive: 318
  • Hozzászólások: 544
  • Segített: 269
    • Facebook
Re:Kliens levédés utáni hiba.
« Válasz #8 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.

C++ programmer at Gameloft