View Single Post
  #1  
Old 10-08-2008, 01:34 PM
Rocker8956
Hill Giant
 
Join Date: Sep 2007
Posts: 117
Default Movegrp quest command fix

I have seen a few complaints about movegrp not moving the requesting character. Well here is why

Zone\groups.cpp
Code:
void Group::TeleportGroup(Mob* sender, int32 zoneID, float x, float y, float z, float heading)
{
	uint32 i;
	 for (i = 0; i < MAX_GROUP_MEMBERS; i++)
	 {
	 #ifdef IPC
		if (members[i] != NULL && (members[i]->IsClient() || (members[i]->IsNPC() && members[i]->CastToNPC()->IsInteractive())) && members[i] != sender)
	 #else
		  if (members[i] != NULL && members[i]->IsClient() && members[i] != sender)
	 #endif
	 	{
			members[i]->CastToClient()->MovePC(int(zoneID), x, y, z, heading, 0, ZoneSolicited);
		}
	}	
}
The code in red causes the requester to be skipped. (members[i] != sender)

This function appears to only be used twice in the code.
By QuestManager::movegrp in questmgr.cpp and XS(XS_Group_TeleportGroup) in perl_groups.cpp

I do not know where XS_Group_TeleportGroup is used. Can someone enlighten me before I remove (members[i] != sender) and break something?

Also what is IPC? I did not see any reference to it in my source.
Reply With Quote