⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.cpp

📁 WYD Server 753 (Development)
💻 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 + -