sexta-feira, 20 de abril de 2012

[Source]Atualizar Inventário em forma de Packet

Bom, fiz essa func para enviar o packet de atualizar o inventário (0x185). Já é bem antiguinha minha. Quando fiz essa gambiarra pra poder atualizar sem o SendAll pra ver se o packet não abria o inventário automaticamente. Aí fui ver que mesmo assim ele abre. Daí tem o mandar um sinal para o cliente fechar.

struct p185 {
PacketHeader Header;
st_Item Item[64];
int gold;
};


void AtualizaInvt(int clientid)
{
p185 p = *(p185*)malloc(sizeof(p185));
st_Mob *player = (st_Mob*)GetMobFromIndex(clientid);
p.Header.ClientId = clientid; p.Header.PacketId = 0x185; p.Header.Size = sizeof(p185);
memcpy(&p.Item, &player->Inventory, sizeof(player->Inventory));
memcpy(&p.gold, &player->Gold, sizeof(p.gold));
SendPacket((BYTE*)&p, clientid, sizeof(p185));
SendClientSignalParm(clientid,0x7530, 0x3A7, 2); // Serve pra fechar o inventário
}

Créditos:
 Shepher

Um comentário:

  1. Não há a necessidade de atualizar o inventário por packets , ja tem uma função muito simples que pode ser usada e ela não fecha o inventário quando atualiza como esse packet hehe. + thanks

    ResponderExcluir