Essa função faz com que um summon saia do mapa e do grupo.
No caso de catalisadores, quando uma Cria vira Adulto, o mob tem que sair do mapa, mas isso não acontece. Agora basta usar essa função.
Declare no seu .h a struct:
Código:
struct pCL_P1h{PacketHeader Header;int dat1;};
Declare também:
Código:
void SendRemoveMob(int clientid); void SendRemoveParty(int clientid, int mobId); #define DELETE_NORMAL 0 // Somente desaparece #define DELETE_DEAD 1 // Animacao da morte do spawn #define DELETE_DISCONNECT 2 // Efeito de quando o personagem sai do jogo #define DELETE_UNSPAWN 3 // Efeito quando os monstros ancts somem
No seu .cpp adicione:
Código:
void SendRemoveParty(int clientid, int mobId)
{
 int removeparty_addr = 0x00442410;
 _asm
 {
  PUSH mobId
  PUSH clientid
  CALL removeparty_addr
  ADD ESP,0x04
 }
}
void SendRemoveMob(int clientid)
{
 pCL_P1h pRemMob;
    pRemMob.Header.Size = sizeof(pCL_P1h);
 pRemMob.Header.PacketId = 0x165;
 char tmp[1024];
 for(int i = 0; i < 12; i++)
 {
  int masterIndex = clientid * 0x410;
  int memberId = *(WORD*)(masterIndex + 0x015C6D86 + (i * 2));
  if(*(DWORD*)(memberId * 0xC4C + 0x07B318E0) == 0x00)
  {
   if(memberId != 0x0)
   {
    pRemMob.dat1 = DELETE_UNSPAWN;
    pRemMob.Header.ClientId = memberId;
    AddMessage((BYTE*)&pRemMob ,clientid);
    SendRemoveParty(clientid, memberId);
                                return;
   }
  }
 }
}
Para usar chame:
SendRemoveMob(clientid);
Créditos:
Shepher
Este comentário foi removido pelo autor.
ResponderExcluirDesculpa, cara. O SendRemoveMob fui em que fiz aqui. Só utilizei a struct e os defines que peguei de lá.
ResponderExcluirO SendRemoveParty é da própria TMSRV pega no .map.
é verdade, foi mal, dei uma olhada rapida voce utilizou a struct somente, coment removido
Excluir