Well Here the case. If a player creates a ticket and a GM deletes it. WITHOUT relogging the player cannot create anymore tickets until he relogs.
I fixed this by sending a SMSG_GMTICKET_DELETETICKET to the player in the HandleDelTicketCommand.
It seems that SendGMTicketGetTicket(0x0A,0) wipes out the display of a active ticket but the client thinks it still has an active ticket.
SO here there codes under HandleDelTicketCommand
//notify player
if(Player* pl = sObjectMgr.GetPlayer(MAKE_NEW_GUID(guid, 0, HIGHGUID_PLAYER)))
{
pl->GetSession()->SendGMTicketGetTicket(0x0A, 0);
PSendSysMessage(LANG_COMMAND_TICKETPLAYERDEL, GetNameLink(pl).c_str());
++ // SYN: Send Packet Ticket Delete
++ WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
++ data << uint32(9);
++ pl->GetSession()->SendPacket( &data );
}
else
PSendSysMessage(LANG_COMMAND_TICKETDEL);