This commit is contained in:
Kinglykrab 2025-07-06 01:49:21 -04:00
parent 34bf1f03f2
commit 14f8014855
5 changed files with 70 additions and 59 deletions

View File

@ -2472,55 +2472,61 @@ bool Group::AmIPuller(const char *mob_name)
return !((bool)PullerName.compare(mob_name)); return !((bool)PullerName.compare(mob_name));
} }
bool Group::HasRole(Mob *m, uint8 Role) bool Group::HasRole(Mob* m, uint8 Role)
{ {
if(!m) if (!m) {
return false; return false;
}
for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) for (uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) {
{ if (m == members[i] && MemberRoles[i] & Role) {
if((m == members[i]) && (MemberRoles[i] & Role)) return true;
return true; }
} }
return false;
return false;
} }
uint8 Group::GetMemberRole(Mob *m) uint8 Group::GetMemberRole(Mob* m)
{ {
if(!m) if (!m) {
return 0; return 0;
}
for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) for (uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) {
{ if (m == members[i]) {
if(m == members[i]) uint8 role = MemberRoles[i];
{
uint8 role = MemberRoles[i];
if(m == leader)
role |= RoleLeader;
return role;
}
}
return 0; if (m == leader) {
role |= RoleLeader;
}
return role;
}
}
return 0;
} }
uint8 Group::GetMemberRole(const char *name) uint8 Group::GetMemberRole(const char* name)
{ {
if(!name) if (!name) {
return 0; return 0;
}
for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) for (uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) {
{ if (!strcasecmp(membername[i], name)) {
if(!strcasecmp(membername[i], name)) uint8 role = MemberRoles[i];
{
uint8 role = MemberRoles[i];
if(leader && !strcasecmp(leader->GetName(), name))
role |= RoleLeader;
return role;
}
}
return 0; 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*/) {

View File

@ -30,7 +30,12 @@ class Mob;
#define MAX_MARKED_NPCS 3 #define MAX_MARKED_NPCS 3
enum { RoleAssist = 1, RoleTank = 2, RolePuller = 4, RoleLeader = 8 }; enum {
RoleAssist = 1,
RoleTank = 2,
RolePuller = 4,
RoleLeader = 8
};
class GroupIDConsumer { class GroupIDConsumer {
public: public:
@ -119,8 +124,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(Mob* m);
uint8 GetMemberRole(const char *name); 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);

View File

@ -163,11 +163,11 @@ luabind::scope lua_register_group() {
.def("GetID", (int(Lua_Group::*)(void))&Lua_Group::GetID) .def("GetID", (int(Lua_Group::*)(void))&Lua_Group::GetID)
.def("GetLeader", (Lua_Mob(Lua_Group::*)(void))&Lua_Group::GetLeader) .def("GetLeader", (Lua_Mob(Lua_Group::*)(void))&Lua_Group::GetLeader)
.def("GetLeaderName", (const char*(Lua_Group::*)(void))&Lua_Group::GetLeaderName) .def("GetLeaderName", (const char*(Lua_Group::*)(void))&Lua_Group::GetLeaderName)
.def("GetLowestLevel", (uint32(Lua_Group::*)(void))&Lua_Group::GetLowestLevel) .def("GetLowestLevel", (uint32(Lua_Group::*)(void)) &Lua_Group::GetLowestLevel)
.def("GetMember", (Lua_Mob(Lua_Group::*)(int))&Lua_Group::GetMember) .def("GetMember", (Lua_Mob(Lua_Group::*)(int)) &Lua_Group::GetMember)
.def("GetMemberRole", (uint8(Lua_Group::*)(Lua_Mob))&Lua_Group::GetMemberRole) .def("GetMemberRole", (uint8(Lua_Group::*)(Lua_Mob)) &Lua_Group::GetMemberRole)
.def("GetMemberRole", (uint8(Lua_Group::*)(const char*))&Lua_Group::GetMemberRole) .def("GetMemberRole", (uint8(Lua_Group::*)(const char*)) &Lua_Group::GetMemberRole)
.def("GetTotalGroupDamage", (uint32(Lua_Group::*)(Lua_Mob))&Lua_Group::GetTotalGroupDamage) .def("GetTotalGroupDamage", (uint32(Lua_Group::*)(Lua_Mob)) &Lua_Group::GetTotalGroupDamage)
.def("GroupCount", (int(Lua_Group::*)(void))&Lua_Group::GroupCount) .def("GroupCount", (int(Lua_Group::*)(void))&Lua_Group::GroupCount)
.def("GroupMessage", (void(Lua_Group::*)(Lua_Mob,const char*))&Lua_Group::GroupMessage) .def("GroupMessage", (void(Lua_Group::*)(Lua_Mob,const char*))&Lua_Group::GroupMessage)
.def("GroupMessage", (void(Lua_Group::*)(Lua_Mob,uint8,const char*))&Lua_Group::GroupMessage) .def("GroupMessage", (void(Lua_Group::*)(Lua_Mob,uint8,const char*))&Lua_Group::GroupMessage)

View File

@ -47,12 +47,12 @@ public:
uint32 GetHighestLevel(); uint32 GetHighestLevel();
uint32 GetLowestLevel(); uint32 GetLowestLevel();
void TeleportGroup(Lua_Mob sender, uint32 zone_id, uint32 instance_id, float x, float y, float z, float h); void TeleportGroup(Lua_Mob sender, uint32 zone_id, uint32 instance_id, float x, float y, float z, float h);
int GetID(); int GetID();
Lua_Mob GetMember(int member_index); Lua_Mob GetMember(int member_index);
uint8 GetMemberRole(Lua_Mob member); uint8 GetMemberRole(Lua_Mob member);
uint8 GetMemberRole(const char* name); uint8 GetMemberRole(const char* name);
bool DoesAnyMemberHaveExpeditionLockout(std::string expedition_name, std::string event_name); bool DoesAnyMemberHaveExpeditionLockout(std::string expedition_name, std::string event_name);
bool DoesAnyMemberHaveExpeditionLockout(std::string expedition_name, std::string event_name, int max_check_count); bool DoesAnyMemberHaveExpeditionLockout(std::string expedition_name, std::string event_name, int max_check_count);
}; };
#endif #endif

View File

@ -129,12 +129,12 @@ Client* Perl_Group_GetMember(Group* self, int member_index) // @categories Accou
uint8_t Perl_Group_GetMemberRole(Group* self, Mob* member) // @categories Account and Character, Script Utility, Group uint8_t Perl_Group_GetMemberRole(Group* self, Mob* member) // @categories Account and Character, Script Utility, Group
{ {
return self->GetMemberRole(member); return self->GetMemberRole(member);
} }
uint8_t Perl_Group_GetMemberRole(Group* self, const char* name) // @categories Account and Character, Script Utility, Group uint8_t Perl_Group_GetMemberRole(Group* self, const char* name) // @categories Account and Character, Script Utility, Group
{ {
return self->GetMemberRole(name); 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)
@ -171,11 +171,11 @@ void perl_register_group()
package.add("GetID", &Perl_Group_GetID); package.add("GetID", &Perl_Group_GetID);
package.add("GetLeader", &Perl_Group_GetLeader); package.add("GetLeader", &Perl_Group_GetLeader);
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*, Mob*)) &Perl_Group_GetMemberRole);
package.add("GetMemberRole", (uint8_t(*)(Group*, const char*))&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);
package.add("GroupMessage", (void(*)(Group*, Mob*, uint8_t, const char*))&Perl_Group_GroupMessage); package.add("GroupMessage", (void(*)(Group*, Mob*, uint8_t, const char*))&Perl_Group_GroupMessage);