mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-06 00:32:25 +00:00
Add group member role retrieval
This commit is contained in:
parent
2e760d6397
commit
d79134b19e
@ -2485,6 +2485,44 @@ bool Group::HasRole(Mob *m, uint8 Role)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8 Group::GetMemberRole(Mob *m)
|
||||||
|
{
|
||||||
|
if(!m)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i)
|
||||||
|
{
|
||||||
|
if(m == members[i])
|
||||||
|
{
|
||||||
|
uint8 role = MemberRoles[i];
|
||||||
|
if(m == leader)
|
||||||
|
role |= RoleLeader;
|
||||||
|
return role;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8 Group::GetMemberRole(const char *name)
|
||||||
|
{
|
||||||
|
if(!name)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i)
|
||||||
|
{
|
||||||
|
if(!strcasecmp(membername[i], name))
|
||||||
|
{
|
||||||
|
uint8 role = MemberRoles[i];
|
||||||
|
if(leader && !strcasecmp(leader->GetName(), name))
|
||||||
|
role |= RoleLeader;
|
||||||
|
return role;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void Group::QueueClients(Mob *sender, const EQApplicationPacket *app, bool ack_required /*= true*/, bool ignore_sender /*= true*/, float distance /*= 0*/) {
|
void Group::QueueClients(Mob *sender, const EQApplicationPacket *app, bool ack_required /*= true*/, bool ignore_sender /*= true*/, float distance /*= 0*/) {
|
||||||
if (sender && sender->IsClient()) {
|
if (sender && sender->IsClient()) {
|
||||||
for (uint32 i = 0; i < MAX_GROUP_MEMBERS; i++) {
|
for (uint32 i = 0; i < MAX_GROUP_MEMBERS; i++) {
|
||||||
|
|||||||
@ -30,7 +30,7 @@ class Mob;
|
|||||||
|
|
||||||
#define MAX_MARKED_NPCS 3
|
#define MAX_MARKED_NPCS 3
|
||||||
|
|
||||||
enum { RoleAssist = 1, RoleTank = 2, RolePuller = 4 };
|
enum { RoleAssist = 1, RoleTank = 2, RolePuller = 4, RoleLeader = 8 };
|
||||||
|
|
||||||
class GroupIDConsumer {
|
class GroupIDConsumer {
|
||||||
public:
|
public:
|
||||||
@ -119,6 +119,8 @@ public:
|
|||||||
void SetGroupTankTarget(Mob *m);
|
void SetGroupTankTarget(Mob *m);
|
||||||
void SetGroupPullerTarget(Mob *m);
|
void SetGroupPullerTarget(Mob *m);
|
||||||
bool HasRole(Mob *m, uint8 Role);
|
bool HasRole(Mob *m, uint8 Role);
|
||||||
|
uint8 GetMemberRole(Mob *m);
|
||||||
|
uint8 GetMemberRole(const char *name);
|
||||||
void NotifyAssistTarget(Client *c);
|
void NotifyAssistTarget(Client *c);
|
||||||
void NotifyTankTarget(Client *c);
|
void NotifyTankTarget(Client *c);
|
||||||
void NotifyPullerTarget(Client *c);
|
void NotifyPullerTarget(Client *c);
|
||||||
|
|||||||
@ -127,6 +127,16 @@ Client* Perl_Group_GetMember(Group* self, int member_index) // @categories Accou
|
|||||||
return member ? member->CastToClient() : nullptr;
|
return member ? member->CastToClient() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t Perl_Group_GetMemberRole(Group* self, Mob* member) // @categories Account and Character, Script Utility, Group
|
||||||
|
{
|
||||||
|
return self->GetMemberRole(member);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Perl_Group_GetMemberRole(Group* self, const char* name) // @categories Account and Character, Script Utility, Group
|
||||||
|
{
|
||||||
|
return self->GetMemberRole(name);
|
||||||
|
}
|
||||||
|
|
||||||
bool Perl_Group_DoesAnyMemberHaveExpeditionLockout(Group* self, std::string expedition_name, std::string event_name)
|
bool Perl_Group_DoesAnyMemberHaveExpeditionLockout(Group* self, std::string expedition_name, std::string event_name)
|
||||||
{
|
{
|
||||||
return self->AnyMemberHasDzLockout(expedition_name, event_name);
|
return self->AnyMemberHasDzLockout(expedition_name, event_name);
|
||||||
@ -163,6 +173,8 @@ void perl_register_group()
|
|||||||
package.add("GetLeaderName", &Perl_Group_GetLeaderName);
|
package.add("GetLeaderName", &Perl_Group_GetLeaderName);
|
||||||
package.add("GetLowestLevel", &Perl_Group_GetLowestLevel);
|
package.add("GetLowestLevel", &Perl_Group_GetLowestLevel);
|
||||||
package.add("GetMember", &Perl_Group_GetMember);
|
package.add("GetMember", &Perl_Group_GetMember);
|
||||||
|
package.add("GetMemberRole", (uint8_t(*)(Group*, Mob*))&Perl_Group_GetMemberRole);
|
||||||
|
package.add("GetMemberRole", (uint8_t(*)(Group*, const char*))&Perl_Group_GetMemberRole);
|
||||||
package.add("GetTotalGroupDamage", &Perl_Group_GetTotalGroupDamage);
|
package.add("GetTotalGroupDamage", &Perl_Group_GetTotalGroupDamage);
|
||||||
package.add("GroupCount", &Perl_Group_GroupCount);
|
package.add("GroupCount", &Perl_Group_GroupCount);
|
||||||
package.add("GroupMessage", (void(*)(Group*, Mob*, const char*))&Perl_Group_GroupMessage);
|
package.add("GroupMessage", (void(*)(Group*, Mob*, const char*))&Perl_Group_GroupMessage);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user