SetItemBank
void SetItemBank(int clientid, int slot, st_Item item) { PInt(0x7B31A9C + (slot * 8) + clientid * 0xC4C) = item.Index; PInt(0x7B31A9C + (slot * 8) + clientid * 0xC4C + 0x2) = item.EF1; PInt(0x7B31A9C + (slot * 8) + clientid * 0xC4C + 0x3) = item.EFV1; PInt(0x7B31A9C + (slot * 8) + clientid * 0xC4C + 0x4) = item.EF2; PInt(0x7B31A9C + (slot * 8) + clientid * 0xC4C + 0x5) = item.EFV2; PInt(0x7B31A9C + (slot * 8) + clientid * 0xC4C + 0x6) = item.EF3; PInt(0x7B31A9C + (slot * 8) + clientid * 0xC4C + 0x7) = item.EFV3;}Packet 0x182:
struct pCL_182h{ PacketHeader Header; short invType; short invSlot; st_Item itemData;};
void p182(int clientid, int type, int slot, st_Item item) { pCL_182h p; p.Header.ClientId = clientid; p.Header.Size = sizeof pCL_182h; p.Header.PacketId = 0x182; p.invType = type; p.invSlot = slot; memcpy(&p.itemData, &item, sizeof st_Item); SendPacket((BYTE*)&p, clientid, sizeof pCL_182h);}Adicione o define:
#define BancoSlot(clientid, slot) *(unsigned short*)(0x7B31A9C + (slot * 8) + clientid * 0xC4C)Agora adicione a função:
int GetFirstSlotInBank(int clientid, int item){ st_Mob * player = (st_Mob*)GetMobFromIndex(clientid); int cSlot; int slot = -1; for(int i = 0;i < 128;i++) { cSlot = BancoSlot(clientid, i); if(cSlot == item) { slot = i; break; } } return slot;}
Para usar basta:
st_Item item;item.Index = 5138;p182(clientid, 2, GetFirstSlotInBank(clientid, 0), item);
Em item você bota todas as informações do item.
Créditos:
shepher
faz um tuto p desbuga os graficos, tipo cor do pet 120
ResponderExcluir