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