📄 client.cpp
字号:
#include "client.h"#include "server.h"#include "packets.h"
// Lista dos clients/npcs
cList List;// Apaga todas as informa珲escVisible::cVisible(u32 _thisID){ listCount = 0; thisID = _thisID; memset(list, 0, sizeof(list));}// Apaga a info nos outros clientscVisible::~cVisible(){ uVisible *ptrVisible = list; for(u32 var = 0; var < listCount; ptrVisible++) { if(ptrVisible->X != 0) { /* id valida */ if(ptrVisible->Flag.typeOf == ID_CLIENT) { /* id de client */ cClient *ptrClient = (cClient*)List.Get(ptrVisible->Flag.thisID); if(ptrClient != NULL) ptrClient->Visible->Remove(thisID); } else if(ptrVisible->Flag.typeOf == ID_NPC) { /* id de npc */ // pegar o npc // deletar o client no npc } var++; } }}// Adiciona um novo id nos visiveisvoid cVisible::Insert(u32 idCode, u32 id){ uVisible *ptrVisible = list; for(u32 var = 0; var < MAX_VISIBLE_LIST; var++, ptrVisible++) { if(ptrVisible->X == 0) { /* espa鏾 vazio encontrado */ listCount++; ptrVisible->Flag.thisID = id; ptrVisible->Flag.typeOf = idCode; return ; } }}// Verifica se o id ja esta na lista//// Retorna false se o id nao foi encontrado// Retorna true se o id ja esta na listabool cVisible::Contains(u32 id){ uVisible *ptrVisible = list; for(u32 var = 0; var < listCount; ptrVisible++) { if(ptrVisible->X != 0) { /* id valida */ if(ptrVisible->Flag.thisID == id) { /* id encontrada */ return true; } var++; } } return false;}// Remove o id dos clients visiveis//// Retorna false se o id nao foi achado// Retorna true se o id foi deletadobool cVisible::Remove(u32 id){ uVisible *ptrVisible = list; for(u32 var = 0; var < listCount; ptrVisible++) { if(ptrVisible->X != 0) { /* id valida */ if(ptrVisible->Flag.thisID == id) { /* id encontrada */ listCount--; ptrVisible->X = 0; return true; } var++; } } return false;}
// Apaga todas os dados
cList::cList()
{
listCount = 0;
memset(list, 0, sizeof(list));
}
// Deleta todos os ponteiros
cList::~cList()
{
void **ptrList = list;
for(u32 var = 0; var < listCount; ptrList++)
if(*ptrList != NULL)
var++, delete (u8*)(*ptrList);
}
// Procura o ponteiro na lista
//
// Retorna INVALID_CLIENTID se nao foi encontrado
// Retorna o id se o client/npc foi achado
u32 cList::Search(u32 nBase, void *val)
{
void **ptrList = &list[nBase];
for(u32 var = nBase; var < MAX_LIST; var++, ptrList++)
if(*ptrList == val)
return var;
return INVALID_ID;
}
// Adiciona um novo client/npc na lista
//
// Retorna NULL se n鉶 tem mais espa鏾
// Retorna o ponteiro se adicionou com sucesso
void* cList::Insert()
{
u32 var = Search(CLIENT_BASE, NULL);
if(var != INVALID_ID)
{
listCount++;
cClient *Client = new cClient;
Client->clientID = var;
list[var] = Client;
return Client;
}
return NULL;
}
// Procura o client este id
//
// Retorna NULL se o id eh invalido
// Retorna o ponteiro do client/npc se foi achado
void* cList::Get(u32 id) const
{
return list[id];
}
// Deleta o client/npc que est
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -