selam öncelikle neden paylaşıyorum onu anlatıyım osman denen ********le takas yaptığımızda bana karşılık olarak bir kaç şey vermesi gerekiyordu konuşmanın başında karkter bilgilieri bozuluyor bende bunu düzeltmek için stritemleri 400 yapıyorum demiştim ozamanda banka 8.sayfa bozuluyor demiştim oda o kolay değiştirirz fln demişti bende euko sistemini yapıcaktım ona geldi bide packed logger istedi verdim neyse girdi yaptı eukoyu dedim ver işte bunları dedi daha sonra ben onun o oldugunu bilmiyodum vermem fln fln sonra dedi en sonunda packed logger source verdim verdi geri kalanıda vermedi.ozaman verdiği kodu gösteriyim size.
// koyduğum yerlere socketid sinden tekrar oluşturmayı yapmış yani 1 user için 2 socket açıyor ufak bir havıza sorunu için yaptığı şeye bakın bide bana en düzgünü bu diyordu başka türlü olmaz ...
// 1 Person Offset are 4000 bytes
yukarada dediği gibi 1 kullanıcı için 4000byte lık alan açılıyor user_data array ınıda tamer stritemi 1200 olarak genişlettiği için ve bu malda tamerin source larını kullanıp o bölümde oynama yapmadığı için böyle bir sorun olmuştu
sorunun çözümü basit 4000 yerine oraya _USER_DATA struct unun lenght ini yazıcaz yani.
bundan 4 tane yerde var 2 si aujard 2si ebenezer
kolay gelsin
Kod:
int CIOCPort::GetNewSid()
{
if( m_SidList.empty() ) {
TRACE("SID List Is Empty !!\n");
return -1;
}
int ret = m_SidList.front();
m_SidList.pop_front();
// ret = m_SidList.front();
// m_SidList.pop_front();
return ret;
}
// koyduğum yerlere socketid sinden tekrar oluşturmayı yapmış yani 1 user için 2 socket açıyor ufak bir havıza sorunu için yaptığı şeye bakın bide bana en düzgünü bu diyordu başka türlü olmaz ...
Kod:
BOOL CEbenezerDlg::InitializeMMF()
{
BOOL bCreate = TRUE;
CString logstr;
DWORD filesize = MAX_USER * 4000; // 1¸í´ç 3000 bytes À̳» ¼Ò¿ä
m_hMMFile = CreateFileMapping ( (HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, filesize, "KNIGHT_DB" );
if (m_hMMFile != NULL && GetLastError() == ERROR_ALREADY_EXISTS)
{
m_hMMFile = OpenFileMapping( FILE_MAP_ALL_ACCESS, TRUE, "KNIGHT_DB" );
if( m_hMMFile == NULL ) {
logstr = "Shared Memory Load Fail!!";
m_hMMFile = INVALID_HANDLE_VALUE;
return FALSE;
}
bCreate = FALSE;
}
logstr = "Shared Memory Create Success!!";
m_StatusList.AddString( logstr );
m_lpMMFile = (char *)MapViewOfFile (m_hMMFile, FILE_MAP_WRITE, 0, 0, 0);
if( !m_lpMMFile )
return FALSE;
memset( m_lpMMFile, NULL, filesize );
m_bMMFCreate = bCreate;
CUser* pUser = NULL;
for(int i=0; i< MAX_USER; i++)
{
pUser = (CUser*)m_Iocport.m_SockArrayInActive[i];
if( pUser ) {
pUser->m_pUserData = (_USER_DATA*)(m_lpMMFile + i*4000); // 1 Person Offset are 4000 bytes
}
}
return TRUE;
}
yukarada dediği gibi 1 kullanıcı için 4000byte lık alan açılıyor user_data array ınıda tamer stritemi 1200 olarak genişlettiği için ve bu malda tamerin source larını kullanıp o bölümde oynama yapmadığı için böyle bir sorun olmuştu
sorunun çözümü basit 4000 yerine oraya _USER_DATA struct unun lenght ini yazıcaz yani.
bundan 4 tane yerde var 2 si aujard 2si ebenezer
Kod:
CEbenezerDlg::InitializeMMF()
CAujardDlg::InitializeMMF()
kolay gelsin