Disparitie iteme (CACHE)

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Închis
Avatar utilizator
Clawders
Nivel 2

Nivel 2
Mesaje: 267
Membru din: 31 Iul 2016, 18:58
Server: Am unul full bug
Regat: Jinno
Aprecieri: 168  
Mulţumiri: 364  
Medalii

*Problemă/Întrebare: Salut, daca inchid serverul si il redeschid, dispar iteme, dar dupa teleportare apar la loc, iar dupa alta teleportare iar dispar..
Tipologie server:
*Resursă folosită: martysama
*ServerFiles utilizat: martysama
*Syserr: Nu am syserr imi scrie doar Item (cod) is in cache..
Poză:-
*Detalii suplimentare: am dat repair la tabele.. nu pot sa-mi dau seama de la ce este.
Avatar utilizator
zaneesmecher23
Nivel 1

Nivel 1
Mesaje: 58
Membru din: 09 Feb 2022, 20:05
Aprecieri: 173  
Mulţumiri: 10  
Discord: Copiază ID
Medalii

clientmanagerplayer.cpp verifica functia TItemCacheSet ar trebui sa arate cam asa
TItemCacheSet * pkItemCache = GetItemCacheSet(packet->player_id);
if (pkItemCache)
{
sys_log(0, "PLAYER_DELETE FAILED HAS BINDED ITEM PID: %d", packet->player_id);
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, dwHandle, 1);
peer->EncodeBYTE(packet->account_index);
return;
}
Pentru acest mesaj, zaneesmecher23 for the post:
Clawders
Avatar utilizator
Clawders
Nivel 2

Nivel 2
Mesaje: 267
Membru din: 31 Iul 2016, 18:58
Server: Am unul full bug
Regat: Jinno
Aprecieri: 168  
Mulţumiri: 364  
Medalii

zaneesmecher23 scrie: ↑18 Iul 2022, 18:59 clientmanagerplayer.cpp verifica functia TItemCacheSet ar trebui sa arate cam asa
TItemCacheSet * pkItemCache = GetItemCacheSet(packet->player_id);
if (pkItemCache)
{
sys_log(0, "PLAYER_DELETE FAILED HAS BINDED ITEM PID: %d", packet->player_id);
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, dwHandle, 1);
peer->EncodeBYTE(packet->account_index);
return;
}
salut, in common am asta, cache.h , e de aici probabil?
#ifndef __INC_COMMON_CACHE_H__
#define __INC_COMMON_CACHE_H__

template <typename T> class cache
{
public:
cache()
: m_bNeedQuery(false), m_expireTime(600), m_lastUpdateTime(0)
{
m_lastFlushTime = time(0);

memset( &m_data, 0, sizeof(m_data) );
}

T * Get(bool bUpdateTime = true)
{
if (bUpdateTime)
m_lastUpdateTime = time(0);

return &m_data;
}

void Put(T * pNew, bool bSkipQuery = false)
{
thecore_memcpy(&m_data, pNew, sizeof(T));
m_lastUpdateTime = time(0);

if (!bSkipQuery)
m_bNeedQuery = true;
}

bool CheckFlushTimeout()
{
if (m_bNeedQuery && time(0) - m_lastFlushTime > m_expireTime)
return true;

return false;
}

bool CheckTimeout()
{
if (time(0) - m_lastUpdateTime > m_expireTime)
return true;

return false;
}

void Flush()
{
if (!m_bNeedQuery)
return;

OnFlush();
m_bNeedQuery = false;
m_lastFlushTime = time(0);
}

virtual void OnFlush() = 0;


protected:
T m_data;
bool m_bNeedQuery;
time_t m_expireTime;
time_t m_lastUpdateTime;
time_t m_lastFlushTime;
};

#endif
Închis
Răspunsuri
5
Vizualizări
597
Răspunsuri
8
Vizualizări
357
Răspunsuri
5
Vizualizări
375
Răspunsuri
3
Vizualizări
132

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Semrush [Bot] și 29 vizitatori