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

📄 packets.cpp

📁 WYD Server 753 (Development)
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        SetString(Client->Account.Username, 1784);    }    // Envia o pacote    cClient::Send(*Client->Socket, pak, len);}// Envia as informacoes do personagem para entrar no jogovoid cPacket::SendCharacter(cClient *Client){    // Header    SetShort(1244, 0);    SetShort(0x114, 4);    SetShort(0x7531, 6);    // Posicao inicial    SetBytes(&Client->Pos, 12, sizeof(sPoint));    // Nome do personagem    SetString(Client->Character->Name, 16);    // Pontos de fama    SetByte(Client->Character->kPoint, 28);    SetByte(Client->Character->currentKill, 29);    SetShort(Client->Character->totalKill, 30);    // Informacao do mob    SetByte(Client->Character->Race, 32);    SetByte(Client->Character->City.x, 33);    // Unknown    SetShort(0xFFFF, 34);    // Classe do personagem e Informacoes da quest    SetShort(Client->Character->charClass, 36);    SetShort(Client->Character->Quest, 38);    // Experiencia e dinheiro    SetInt(Client->Character->Gold, 40);    SetInt(Client->Character->Exp, 44);    // Posicao salva na gema    SetBytes(&Client->Character->Last, 48, sizeof(sPoint));    // Informacoes sobre o Status    SetBytes(&Client->Character->bStatus, 52, sizeof(sStatus));    SetBytes(&Client->Character->Status, 80, sizeof(sStatus));    // Items do equipamento e do inventorio    SetBytes(Client->Character->Equip, 108, sizeof(sItem) * 16);    SetBytes(Client->Character->Inventory, 236, sizeof(sItem) * 64);    // Pontos de atributos    SetInt(Client->Character->sLearn, 748);    SetShort(Client->Character->pStatus, 752);    SetShort(Client->Character->pMaster, 754);    SetShort(Client->Character->pSkill, 756);    SetByte(Client->Character->Critical, 758);    // Unknown    SetByte(0xFF, 759);    // Primeira parte da barra de skill    SetBytes(Client->Character->qSkillBar1, 760, 4);    // Unknown    SetByte(0xFF, 764);    SetByte(0xFF, 765);    SetByte(0xFF, 766);    SetByte(0xFF, 767);    // Outras informacoes    SetInt(Client->Character->Resist.x, 768);    // Unknown    SetByte(0xFF, 772);    SetByte(0xFF, 773);    // ID do client    SetShort(Client->Character->clientID, 774);    // Unknown    SetByte(0xFF, 776);    SetByte(0xFF, 777);    // Segunda parte da barra de skill    SetBytes(Client->Character->qSkillBar2, 778, 16);    // Unknown    SetByte(0xCC, 794);    SetByte(0xCC, 795);    // Experiencia perdida    SetInt(Client->Character->Hold, 796);    // Skills em uso    SetBytes(Client->Character->Skill, 828, sizeof(sSkill) * 16);    // Envia o pacote    cClient::Send(*Client->Socket, pak, len);}// Envia as informacoes do personagem para entrar no jogovoid cPacket::SendSpawn(sCharacter *ptrchar, sPoint &pos, const char *tab, sSocket &sSock, u32 typeOfSpawn = 0){    // Header    SetShort(176, 0);    SetShort(0x364, 4);    SetShort(30000, 6);    // Posicao do client    SetBytes(&pos, 12, sizeof(sPoint));    // ID do client    SetShort(ptrchar->clientID, 16);    // Nome do personagem    SetString(ptrchar->Name, 18);    // Pontos de fama    SetByte(ptrchar->kPoint, 30);    SetByte(ptrchar->currentKill, 31);    SetShort(ptrchar->totalKill, 32);    for(u32 x = 0; x < 16; ++x)    {        // Escreve o id do item com a refinacao        SetShort(GetItemIDAndEffect(&ptrchar->Equip[x], x == 14), (2 * x) + 34);        SetByte(GetAnctCode(&ptrchar->Equip[x], x == 14), x + 130);        // Escreve as skill
        SetByte(ptrchar->Skill[x].sTime, (2 * x) + 66);        SetByte(ptrchar->Skill[x].Effect, (2 * x) + 67);    }

    // Unknown
    SetByte(0, 99);
    // Informacoes do status    SetBytes(&ptrchar->Status, 100, sizeof(sStatus));    // Tipo do efeito    SetShort(typeOfSpawn, 128);    // Tab    SetString(tab, 146);    // Unknown    SetInt(0xCCCCCCCC, 172);

    // Cidadania
    SetByte(ptrchar->Equip[0].EFV3, 172);
    // Envia o pacote    cClient::Send(sSock, pak, len);}// Envia as informacoes das skill que o personagem esta usandovoid cPacket::SendSkill(sCharacter *ptrchar, sSocket &sSock){    // Header    SetShort(140, 0);    SetShort(0x3B9, 4);    SetShort(ptrchar->clientID, 6);    // Skill em uso    SetBytes(ptrchar->Skill, 12, sizeof(sSkill) * 16);    // Envia o pacote    cClient::Send(sSock, pak, len);}/**    Pacotes enviados pela database**/// Mostra o log na janela
void cPacket::RequestLog(sSocket &sSock, pGS_1h *pServer){    if(pServer->Header.packetSize == sizeof(pGS_1h))    {        // Escreve a mensagem no log        Log(INFO, pServer->strMessage);    }}// Envia uma mensagem para o clientvoid cPacket::RequestMessage(sSocket &sSock, cClient *Client, pGS_2h *pServer){    if(pServer->Header.packetSize == sizeof(pGS_2h))    {        // Envia a mensagem para o client        SendServerMessage(*Client->Socket, pServer->strMessage);    }}// Desconecta e deleta o client do servidorvoid cPacket::RequestDisconnectClient(sSocket &sSock, pGS_3h *pServer){    if(pServer->Header.packetSize == sizeof(pGS_3h))    {        // Desconecta o client        Server.DeleteSocket(pServer->Header.clientID);    }}// Atualiza as informacoes da conta do clientvoid cPacket::RequestAccount(sSocket &sSock, cClient *Client, pGS_4h *pServer){    if(pServer->Header.packetSize == sizeof(pGS_4h))    {        // Client esta logado        Client->isLogged = true;        // Copia as informacoes da conta        memcpy(&Client->Account, &pServer->account, sizeof(sAccount));    }}// Envia a lista dos personagens do char listvoid cPacket::RequestCharList(sSocket &sSock, cClient *Client, pGS_5h *pServer){    if(pServer->Header.packetSize == sizeof(pGS_5h))    {        if(pServer->isReSend)        { // Personagem criado ou deletado            Client->Account.Info.Flag.CharInfo = pServer->charinfo;        }        // Envia a lista para o client        SendCharList(Client, pServer->Character, pServer->isReSend);    }}// Envia o personagem para o jogovoid cPacket::RequestCharacter(sSocket &sSock, cClient *Client, pGS_6h *pServer){    if(pServer->Header.packetSize == sizeof(pGS_6h))    {        // Define o slot que o personagem esta        Client->charIndex = pServer->charIndex;        // Copia as informacoes do personagem        Client->Character = new sCharacter;        memcpy(Client->Character, &pServer->Character, sizeof(sCharacter));        // Define o id no personagem        Client->Character->clientID = Client->clientID;        // Define a posicao inicial do personagem        if(Client->Character->Status.Level <= 35)        { // Campo inicial            Client->Pos.X = 2112;            Client->Pos.Y = 2042;        }        else        { // Verifica a ultima cidade acessada            srand(time(NULL));            switch(Client->Character->City.Flag.ID)            {                // Armia                case 0:                    Client->Pos.X = 2090;                    Client->Pos.Y = 2096;                break;                // Azran                case 1:                    Client->Pos.X = 2500;                    Client->Pos.Y = 1708;                break;                // Erion                case 2:                    Client->Pos.X = 2456;                    Client->Pos.Y = 1992;                break;                // Gelo                case 3:                    Client->Pos.X = 3642;                    Client->Pos.Y = 3126;                break;            }            Client->Pos.X += rand() % 12;            Client->Pos.Y += rand() % 12;        }        // Verificar se existe um client nesta posicao        ;        // Envia as informacoes do personagem        SendCharacter(Client);

        // Envia as informacoes do personagem no mapa        SendSpawn(Client->Character,
                  Client->Pos,
                  Client->Tab,
                 *Client->Socket,
                  Client->typeOfSpawn);

        // Envia as skill em uso        SendSkill(Client->Character,
                 *Client->Socket);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -