diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index 944ebb773..f19ed84c4 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -3356,6 +3356,13 @@ Guild.BankTabCost3 = 10000000 Guild.BankTabCost4 = 25000000 Guild.BankTabCost5 = 50000000# +# +# Guild.MemberLimit +# Description: Do not allow inviting new players to the guild if the member limit is met or exceeded. +# Default: 0 - Disabled + +Guild.MemberLimit = 0 + # ################################################################################################### diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index c6ce30a50..21948c038 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1440,6 +1440,14 @@ void Guild::HandleInviteMember(WorldSession* session, std::string const& name) if (pInvitee->GetSocial()->HasIgnore(player->GetGUID())) return; + uint32 memberLimit = sConfigMgr->GetOption("Guild.MemberLimit", 0); + if (memberLimit > 0 && player->GetGuild()->GetMemberCount() >= memberLimit) + { + ChatHandler(player->GetSession()).PSendSysMessage("Your guild has reached the maximum amount of members (%u). You cannot send another invite until the guild member count is lower.", memberLimit); + SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_GUILD_INTERNAL, name); + return; + } + if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && pInvitee->GetTeamId(true) != player->GetTeamId(true)) { SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_GUILD_NOT_ALLIED, name);