mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 01:37:00 +00:00
[11539] Implement group guids with HIGHGUID_GROUP
This commit is contained in:
parent
0fbf2cf7d3
commit
5cae1c2211
9 changed files with 37 additions and 33 deletions
|
|
@ -131,7 +131,7 @@ bool Group::Create(ObjectGuid guid, const char * name)
|
||||||
m_raidDifficulty = RAID_DIFFICULTY_10MAN_NORMAL;
|
m_raidDifficulty = RAID_DIFFICULTY_10MAN_NORMAL;
|
||||||
if (!isBGGroup())
|
if (!isBGGroup())
|
||||||
{
|
{
|
||||||
m_Id = sObjectMgr.GenerateGroupId();
|
m_Id = sObjectMgr.GenerateGroupLowGuid();
|
||||||
|
|
||||||
Player *leader = sObjectMgr.GetPlayer(guid);
|
Player *leader = sObjectMgr.GetPlayer(guid);
|
||||||
if(leader)
|
if(leader)
|
||||||
|
|
@ -1021,11 +1021,9 @@ void Group::SendTargetIconList(WorldSession *session)
|
||||||
|
|
||||||
void Group::SendUpdate()
|
void Group::SendUpdate()
|
||||||
{
|
{
|
||||||
Player *player;
|
|
||||||
|
|
||||||
for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
|
for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
|
||||||
{
|
{
|
||||||
player = sObjectMgr.GetPlayer(citr->guid);
|
Player* player = sObjectMgr.GetPlayer(citr->guid);
|
||||||
if(!player || !player->GetSession() || player->GetGroup() != this )
|
if(!player || !player->GetSession() || player->GetGroup() != this )
|
||||||
continue;
|
continue;
|
||||||
// guess size
|
// guess size
|
||||||
|
|
@ -1039,7 +1037,7 @@ void Group::SendUpdate()
|
||||||
data << uint8(0);
|
data << uint8(0);
|
||||||
data << uint32(0);
|
data << uint32(0);
|
||||||
}
|
}
|
||||||
data << uint64(0x50000000FFFFFFFELL); // related to voice chat?
|
data << GetObjectGuid(); // group guid
|
||||||
data << uint32(0); // 3.3, this value increments every time SMSG_GROUP_LIST is sent
|
data << uint32(0); // 3.3, this value increments every time SMSG_GROUP_LIST is sent
|
||||||
data << uint32(GetMembersCount()-1);
|
data << uint32(GetMembersCount()-1);
|
||||||
for(member_citerator citr2 = m_memberSlots.begin(); citr2 != m_memberSlots.end(); ++citr2)
|
for(member_citerator citr2 = m_memberSlots.begin(); citr2 != m_memberSlots.end(); ++citr2)
|
||||||
|
|
|
||||||
|
|
@ -229,6 +229,7 @@ class MANGOS_DLL_SPEC Group
|
||||||
|
|
||||||
// properties accessories
|
// properties accessories
|
||||||
uint32 GetId() const { return m_Id; }
|
uint32 GetId() const { return m_Id; }
|
||||||
|
ObjectGuid GetObjectGuid() const { return ObjectGuid(HIGHGUID_GROUP, GetId()); }
|
||||||
bool IsFull() const { return (m_groupType == GROUPTYPE_NORMAL) ? (m_memberSlots.size() >= MAX_GROUP_SIZE) : (m_memberSlots.size() >= MAX_RAID_SIZE); }
|
bool IsFull() const { return (m_groupType == GROUPTYPE_NORMAL) ? (m_memberSlots.size() >= MAX_GROUP_SIZE) : (m_memberSlots.size() >= MAX_RAID_SIZE); }
|
||||||
bool isRaidGroup() const { return m_groupType & GROUPTYPE_RAID; }
|
bool isRaidGroup() const { return m_groupType & GROUPTYPE_RAID; }
|
||||||
bool isBGGroup() const { return m_bgGroup != NULL; }
|
bool isBGGroup() const { return m_bgGroup != NULL; }
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ char const* ObjectGuid::GetTypeName(HighGuid high)
|
||||||
case HIGHGUID_CORPSE: return "Corpse";
|
case HIGHGUID_CORPSE: return "Corpse";
|
||||||
case HIGHGUID_MO_TRANSPORT: return "MoTransport";
|
case HIGHGUID_MO_TRANSPORT: return "MoTransport";
|
||||||
case HIGHGUID_INSTANCE: return "InstanceID";
|
case HIGHGUID_INSTANCE: return "InstanceID";
|
||||||
|
case HIGHGUID_GROUP: return "Group";
|
||||||
default:
|
default:
|
||||||
return "<unknown>";
|
return "<unknown>";
|
||||||
}
|
}
|
||||||
|
|
@ -107,3 +108,4 @@ template uint32 ObjectGuidGenerator<HIGHGUID_VEHICLE>::Generate();
|
||||||
template uint32 ObjectGuidGenerator<HIGHGUID_DYNAMICOBJECT>::Generate();
|
template uint32 ObjectGuidGenerator<HIGHGUID_DYNAMICOBJECT>::Generate();
|
||||||
template uint32 ObjectGuidGenerator<HIGHGUID_CORPSE>::Generate();
|
template uint32 ObjectGuidGenerator<HIGHGUID_CORPSE>::Generate();
|
||||||
template uint32 ObjectGuidGenerator<HIGHGUID_INSTANCE>::Generate();
|
template uint32 ObjectGuidGenerator<HIGHGUID_INSTANCE>::Generate();
|
||||||
|
template uint32 ObjectGuidGenerator<HIGHGUID_GROUP>::Generate();
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ enum HighGuid
|
||||||
HIGHGUID_CORPSE = 0xF500, // blizz F100/F500 used second variant to resolve conflict with HIGHGUID_DYNAMICOBJECT
|
HIGHGUID_CORPSE = 0xF500, // blizz F100/F500 used second variant to resolve conflict with HIGHGUID_DYNAMICOBJECT
|
||||||
HIGHGUID_MO_TRANSPORT = 0x1FC0, // blizz 1FC0 (for GAMEOBJECT_TYPE_MO_TRANSPORT)
|
HIGHGUID_MO_TRANSPORT = 0x1FC0, // blizz 1FC0 (for GAMEOBJECT_TYPE_MO_TRANSPORT)
|
||||||
HIGHGUID_INSTANCE = 0x1F42, // blizz 1F42/1F44/1F44/1F47
|
HIGHGUID_INSTANCE = 0x1F42, // blizz 1F42/1F44/1F44/1F47
|
||||||
|
HIGHGUID_GROUP = 0x1F50, // blizz 1F5x
|
||||||
};
|
};
|
||||||
|
|
||||||
class ObjectGuid;
|
class ObjectGuid;
|
||||||
|
|
@ -125,22 +126,23 @@ class MANGOS_DLL_SPEC ObjectGuid
|
||||||
|
|
||||||
uint32 GetMaxCounter() const { return GetMaxCounter(GetHigh()); }
|
uint32 GetMaxCounter() const { return GetMaxCounter(GetHigh()); }
|
||||||
|
|
||||||
bool IsEmpty() const { return m_guid == 0; }
|
bool IsEmpty() const { return m_guid == 0; }
|
||||||
bool IsCreature() const { return GetHigh() == HIGHGUID_UNIT; }
|
bool IsCreature() const { return GetHigh() == HIGHGUID_UNIT; }
|
||||||
bool IsPet() const { return GetHigh() == HIGHGUID_PET; }
|
bool IsPet() const { return GetHigh() == HIGHGUID_PET; }
|
||||||
bool IsVehicle() const { return GetHigh() == HIGHGUID_VEHICLE; }
|
bool IsVehicle() const { return GetHigh() == HIGHGUID_VEHICLE; }
|
||||||
bool IsCreatureOrPet() const { return IsCreature() || IsPet(); }
|
bool IsCreatureOrPet() const { return IsCreature() || IsPet(); }
|
||||||
bool IsCreatureOrVehicle() const { return IsCreature() || IsVehicle(); }
|
bool IsCreatureOrVehicle() const { return IsCreature() || IsVehicle(); }
|
||||||
bool IsAnyTypeCreature() const { return IsCreature() || IsPet() || IsVehicle(); }
|
bool IsAnyTypeCreature() const { return IsCreature() || IsPet() || IsVehicle(); }
|
||||||
bool IsPlayer() const { return !IsEmpty() && GetHigh() == HIGHGUID_PLAYER; }
|
bool IsPlayer() const { return !IsEmpty() && GetHigh() == HIGHGUID_PLAYER; }
|
||||||
bool IsUnit() const { return IsAnyTypeCreature() || IsPlayer(); }
|
bool IsUnit() const { return IsAnyTypeCreature() || IsPlayer(); }
|
||||||
bool IsItem() const { return GetHigh() == HIGHGUID_ITEM; }
|
bool IsItem() const { return GetHigh() == HIGHGUID_ITEM; }
|
||||||
bool IsGameObject() const { return GetHigh() == HIGHGUID_GAMEOBJECT; }
|
bool IsGameObject() const { return GetHigh() == HIGHGUID_GAMEOBJECT; }
|
||||||
bool IsDynamicObject() const { return GetHigh() == HIGHGUID_DYNAMICOBJECT; }
|
bool IsDynamicObject() const { return GetHigh() == HIGHGUID_DYNAMICOBJECT; }
|
||||||
bool IsCorpse() const { return GetHigh() == HIGHGUID_CORPSE; }
|
bool IsCorpse() const { return GetHigh() == HIGHGUID_CORPSE; }
|
||||||
bool IsTransport() const { return GetHigh() == HIGHGUID_TRANSPORT; }
|
bool IsTransport() const { return GetHigh() == HIGHGUID_TRANSPORT; }
|
||||||
bool IsMOTransport() const { return GetHigh() == HIGHGUID_MO_TRANSPORT; }
|
bool IsMOTransport() const { return GetHigh() == HIGHGUID_MO_TRANSPORT; }
|
||||||
bool IsInstance() const { return GetHigh() == HIGHGUID_INSTANCE; }
|
bool IsInstance() const { return GetHigh() == HIGHGUID_INSTANCE; }
|
||||||
|
bool IsGroup() const { return GetHigh() == HIGHGUID_GROUP; }
|
||||||
|
|
||||||
static TypeID GetTypeId(HighGuid high)
|
static TypeID GetTypeId(HighGuid high)
|
||||||
{
|
{
|
||||||
|
|
@ -158,6 +160,7 @@ class MANGOS_DLL_SPEC ObjectGuid
|
||||||
case HIGHGUID_VEHICLE: return TYPEID_UNIT;
|
case HIGHGUID_VEHICLE: return TYPEID_UNIT;
|
||||||
// unknown
|
// unknown
|
||||||
case HIGHGUID_INSTANCE:
|
case HIGHGUID_INSTANCE:
|
||||||
|
case HIGHGUID_GROUP:
|
||||||
default: return TYPEID_OBJECT;
|
default: return TYPEID_OBJECT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -185,6 +188,7 @@ class MANGOS_DLL_SPEC ObjectGuid
|
||||||
case HIGHGUID_CORPSE:
|
case HIGHGUID_CORPSE:
|
||||||
case HIGHGUID_MO_TRANSPORT:
|
case HIGHGUID_MO_TRANSPORT:
|
||||||
case HIGHGUID_INSTANCE:
|
case HIGHGUID_INSTANCE:
|
||||||
|
case HIGHGUID_GROUP:
|
||||||
return false;
|
return false;
|
||||||
case HIGHGUID_GAMEOBJECT:
|
case HIGHGUID_GAMEOBJECT:
|
||||||
case HIGHGUID_TRANSPORT:
|
case HIGHGUID_TRANSPORT:
|
||||||
|
|
|
||||||
|
|
@ -148,8 +148,7 @@ ObjectMgr::ObjectMgr() :
|
||||||
m_EquipmentSetIds("Equipment set ids"),
|
m_EquipmentSetIds("Equipment set ids"),
|
||||||
m_GuildIds("Guild ids"),
|
m_GuildIds("Guild ids"),
|
||||||
m_MailIds("Mail ids"),
|
m_MailIds("Mail ids"),
|
||||||
m_PetNumbers("Pet numbers"),
|
m_PetNumbers("Pet numbers")
|
||||||
m_GroupIds("Group ids")
|
|
||||||
{
|
{
|
||||||
// Only zero condition left, others will be added while loading DB tables
|
// Only zero condition left, others will be added while loading DB tables
|
||||||
mConditions.resize(1);
|
mConditions.resize(1);
|
||||||
|
|
@ -5488,8 +5487,6 @@ void ObjectMgr::PackGroupIds()
|
||||||
bar.step();
|
bar.step();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_GroupIds.Set(groupId);
|
|
||||||
|
|
||||||
sLog.outString( ">> Group Ids remapped, next group id is %u", groupId );
|
sLog.outString( ">> Group Ids remapped, next group id is %u", groupId );
|
||||||
sLog.outString();
|
sLog.outString();
|
||||||
}
|
}
|
||||||
|
|
@ -5584,7 +5581,7 @@ void ObjectMgr::SetHighestGuids()
|
||||||
result = CharacterDatabase.Query( "SELECT MAX(groupId) FROM groups" );
|
result = CharacterDatabase.Query( "SELECT MAX(groupId) FROM groups" );
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
m_GroupIds.Set((*result)[0].GetUInt32()+1);
|
m_GroupGuids.Set((*result)[0].GetUInt32()+1);
|
||||||
delete result;
|
delete result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -717,16 +717,16 @@ class ObjectMgr
|
||||||
uint32 GenerateStaticCreatureLowGuid() { if (m_StaticCreatureGuids.GetNextAfterMaxUsed() >= m_FirstTemporaryCreatureGuid) return 0; return m_StaticCreatureGuids.Generate(); }
|
uint32 GenerateStaticCreatureLowGuid() { if (m_StaticCreatureGuids.GetNextAfterMaxUsed() >= m_FirstTemporaryCreatureGuid) return 0; return m_StaticCreatureGuids.Generate(); }
|
||||||
uint32 GenerateStaticGameObjectLowGuid() { if (m_StaticGameObjectGuids.GetNextAfterMaxUsed() >= m_FirstTemporaryGameObjectGuid) return 0; return m_StaticGameObjectGuids.Generate(); }
|
uint32 GenerateStaticGameObjectLowGuid() { if (m_StaticGameObjectGuids.GetNextAfterMaxUsed() >= m_FirstTemporaryGameObjectGuid) return 0; return m_StaticGameObjectGuids.Generate(); }
|
||||||
|
|
||||||
uint32 GeneratePlayerLowGuid() { return m_CharGuids.Generate(); }
|
uint32 GeneratePlayerLowGuid() { return m_CharGuids.Generate(); }
|
||||||
uint32 GenerateItemLowGuid() { return m_ItemGuids.Generate(); }
|
uint32 GenerateItemLowGuid() { return m_ItemGuids.Generate(); }
|
||||||
uint32 GenerateCorpseLowGuid() { return m_CorpseGuids.Generate(); }
|
uint32 GenerateCorpseLowGuid() { return m_CorpseGuids.Generate(); }
|
||||||
uint32 GenerateInstanceLowGuid() { return m_InstanceGuids.Generate(); }
|
uint32 GenerateInstanceLowGuid() { return m_InstanceGuids.Generate(); }
|
||||||
|
uint32 GenerateGroupLowGuid() { return m_GroupGuids.Generate(); }
|
||||||
|
|
||||||
uint32 GenerateArenaTeamId() { return m_ArenaTeamIds.Generate(); }
|
uint32 GenerateArenaTeamId() { return m_ArenaTeamIds.Generate(); }
|
||||||
uint32 GenerateAuctionID() { return m_AuctionIds.Generate(); }
|
uint32 GenerateAuctionID() { return m_AuctionIds.Generate(); }
|
||||||
uint64 GenerateEquipmentSetGuid() { return m_EquipmentSetIds.Generate(); }
|
uint64 GenerateEquipmentSetGuid() { return m_EquipmentSetIds.Generate(); }
|
||||||
uint32 GenerateGuildId() { return m_GuildIds.Generate(); }
|
uint32 GenerateGuildId() { return m_GuildIds.Generate(); }
|
||||||
uint32 GenerateGroupId() { return m_GroupIds.Generate(); }
|
|
||||||
//uint32 GenerateItemTextID() { return m_ItemGuids.Generate(); }
|
//uint32 GenerateItemTextID() { return m_ItemGuids.Generate(); }
|
||||||
uint32 GenerateMailID() { return m_MailIds.Generate(); }
|
uint32 GenerateMailID() { return m_MailIds.Generate(); }
|
||||||
uint32 GeneratePetNumber() { return m_PetNumbers.Generate(); }
|
uint32 GeneratePetNumber() { return m_PetNumbers.Generate(); }
|
||||||
|
|
@ -1037,7 +1037,6 @@ class ObjectMgr
|
||||||
IdGenerator<uint32> m_GuildIds;
|
IdGenerator<uint32> m_GuildIds;
|
||||||
IdGenerator<uint32> m_MailIds;
|
IdGenerator<uint32> m_MailIds;
|
||||||
IdGenerator<uint32> m_PetNumbers;
|
IdGenerator<uint32> m_PetNumbers;
|
||||||
IdGenerator<uint32> m_GroupIds;
|
|
||||||
|
|
||||||
// initial free low guid for selected guid type for map local guids
|
// initial free low guid for selected guid type for map local guids
|
||||||
uint32 m_FirstTemporaryCreatureGuid;
|
uint32 m_FirstTemporaryCreatureGuid;
|
||||||
|
|
@ -1052,6 +1051,7 @@ class ObjectMgr
|
||||||
ObjectGuidGenerator<HIGHGUID_ITEM> m_ItemGuids;
|
ObjectGuidGenerator<HIGHGUID_ITEM> m_ItemGuids;
|
||||||
ObjectGuidGenerator<HIGHGUID_CORPSE> m_CorpseGuids;
|
ObjectGuidGenerator<HIGHGUID_CORPSE> m_CorpseGuids;
|
||||||
ObjectGuidGenerator<HIGHGUID_INSTANCE> m_InstanceGuids;
|
ObjectGuidGenerator<HIGHGUID_INSTANCE> m_InstanceGuids;
|
||||||
|
ObjectGuidGenerator<HIGHGUID_GROUP> m_GroupGuids;
|
||||||
|
|
||||||
QuestMap mQuestTemplates;
|
QuestMap mQuestTemplates;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22796,6 +22796,8 @@ Object* Player::GetObjectByTypeMask(ObjectGuid guid, TypeMask typemask)
|
||||||
case HIGHGUID_CORPSE:
|
case HIGHGUID_CORPSE:
|
||||||
case HIGHGUID_MO_TRANSPORT:
|
case HIGHGUID_MO_TRANSPORT:
|
||||||
case HIGHGUID_INSTANCE:
|
case HIGHGUID_INSTANCE:
|
||||||
|
case HIGHGUID_GROUP:
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -963,7 +963,7 @@ void World::SetInitialWorldSettings()
|
||||||
sObjectMgr.PackGroupIds(); // must be after CleanupInstances
|
sObjectMgr.PackGroupIds(); // must be after CleanupInstances
|
||||||
|
|
||||||
///- Init highest guids before any guid using table loading to prevent using not initialized guids in some code.
|
///- Init highest guids before any guid using table loading to prevent using not initialized guids in some code.
|
||||||
sObjectMgr.SetHighestGuids(); // must be after packing instances
|
sObjectMgr.SetHighestGuids(); // must be after PackInstances() and PackGroupIds()
|
||||||
sLog.outString();
|
sLog.outString();
|
||||||
|
|
||||||
sLog.outString( "Loading Page Texts..." );
|
sLog.outString( "Loading Page Texts..." );
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "11538"
|
#define REVISION_NR "11539"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue