For 6.2
Code:
OP_GroupInvite2=0x1f27
I wasn't able to find the OP_GroupFollow2 for 6.2, but the client appears to only send a OP_GroupFollow2 on accepting a group they were invited to with OP_GroupInvite2. So I made a little work around in Handle_OP_GroupInvite2 that recreates the incoming packet but always sets it to a GroupInvite opcode before sending it to the target.
Code:
void Client::Handle_OP_GroupInvite2(const EQApplicationPacket *app)
{
if (app->size != sizeof(GroupInvite_Struct)) {
LogFile->write(EQEMuLog::Error, "Invalid size for OP_GroupInvite: Expected: %i, Got: %i",
sizeof(GroupInvite_Struct), app->size);
return;
}
if(this->GetTarget() != 0 && this->GetTarget()->IsClient()) {
//Make a new packet using all the same information but make sure it's a fixed GroupInvite opcode so we
//Don't have to deal with GroupFollow2 crap.
EQApplicationPacket* outapp = new EQApplicationPacket(OP_GroupInvite, sizeof(GroupInvite_Struct));
memcpy(outapp->pBuffer, app->pBuffer, outapp->size);
this->GetTarget()->CastToClient()->QueuePacket(outapp);
safe_delete(outapp);
return;
}
/*if(this->GetTarget() != 0 && this->GetTarget()->IsNPC() && this->GetTarget()->CastToNPC()->IsInteractive()) {
if(!this->GetTarget()->CastToNPC()->IsGrouped()) {
EQApplicationPacket* outapp = new EQApplicationPacket(OP_GroupUpdate,sizeof(GroupUpdate_Struct));
GroupUpdate_Struct* gu = (GroupUpdate_Struct*) outapp->pBuffer;
gu->action = 9;
strcpy(gu->membername,GetName());
strcpy(gu->yourname,GetTarget()->CastToNPC()->GetName());
FastQueuePacket(&outapp);
if (!isgrouped){
Group* ng = new Group(this);
entity_list.AddGroup(ng);
}
entity_list.GetGroupByClient(this->CastToClient())->AddMember(GetTarget());
this->GetTarget()->CastToNPC()->TakenAction(22,this->CastToMob());
}
else {
LogFile->write(EQEMuLog::Debug, "IPC: %s already grouped.", this->GetTarget()->GetName());
}
}*/
return;
}
Tested on 6.2 earlier and it worked fine, will need to go test on titanium tonight but don't see why it shouldn't work.