mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 10:37:03 +00:00
As of patch 3.3.0:
Players below level 10 may not join raids.
This commit is contained in:
parent
eb497a636b
commit
71add7c73b
8 changed files with 70 additions and 41 deletions
|
|
@ -215,7 +215,6 @@ void WorldSession::HandleCalendarEventRsvp(WorldPacket &recv_data)
|
||||||
//recv_data >> uint64
|
//recv_data >> uint64
|
||||||
//recv_data >> uint64
|
//recv_data >> uint64
|
||||||
//recv_data >> uint32
|
//recv_data >> uint32
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldSession::HandleCalendarEventRemoveInvite(WorldPacket &recv_data)
|
void WorldSession::HandleCalendarEventRemoveInvite(WorldPacket &recv_data)
|
||||||
|
|
|
||||||
|
|
@ -81,11 +81,13 @@ void WorldSession::HandleGroupInviteOpcode( WorldPacket & recv_data )
|
||||||
SendPartyResult(PARTY_OP_INVITE, membername, ERR_PLAYER_WRONG_FACTION);
|
SendPartyResult(PARTY_OP_INVITE, membername, ERR_PLAYER_WRONG_FACTION);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(GetPlayer()->GetInstanceId() != 0 && player->GetInstanceId() != 0 && GetPlayer()->GetInstanceId() != player->GetInstanceId() && GetPlayer()->GetMapId() == player->GetMapId())
|
if(GetPlayer()->GetInstanceId() != 0 && player->GetInstanceId() != 0 && GetPlayer()->GetInstanceId() != player->GetInstanceId() && GetPlayer()->GetMapId() == player->GetMapId())
|
||||||
{
|
{
|
||||||
SendPartyResult(PARTY_OP_INVITE, membername, ERR_TARGET_NOT_IN_INSTANCE_S);
|
SendPartyResult(PARTY_OP_INVITE, membername, ERR_TARGET_NOT_IN_INSTANCE_S);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// just ignore us
|
// just ignore us
|
||||||
if(player->GetSocial()->HasIgnore(GetPlayer()->GetObjectGuid()))
|
if(player->GetSocial()->HasIgnore(GetPlayer()->GetObjectGuid()))
|
||||||
{
|
{
|
||||||
|
|
@ -97,6 +99,12 @@ void WorldSession::HandleGroupInviteOpcode( WorldPacket & recv_data )
|
||||||
if( group && group->isBGGroup() )
|
if( group && group->isBGGroup() )
|
||||||
group = GetPlayer()->GetOriginalGroup();
|
group = GetPlayer()->GetOriginalGroup();
|
||||||
|
|
||||||
|
if(group && group->isRaidGroup() && !player->GetAllowLowLevelRaid() && (player->getLevel() < sWorld.getConfig(CONFIG_UINT32_MIN_LEVEL_FOR_RAID)))
|
||||||
|
{
|
||||||
|
SendPartyResult(PARTY_OP_INVITE, "", ERR_RAID_DISALLOWED_BY_LEVEL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Group *group2 = player->GetGroup();
|
Group *group2 = player->GetGroup();
|
||||||
if( group2 && group2->isBGGroup() )
|
if( group2 && group2->isBGGroup() )
|
||||||
group2 = player->GetOriginalGroup();
|
group2 = player->GetOriginalGroup();
|
||||||
|
|
@ -938,3 +946,13 @@ void WorldSession::HandleOptOutOfLootOpcode( WorldPacket & recv_data )
|
||||||
if(unkn != 0)
|
if(unkn != 0)
|
||||||
sLog.outError("CMSG_GROUP_PASS_ON_LOOT: activation not implemented!");
|
sLog.outError("CMSG_GROUP_PASS_ON_LOOT: activation not implemented!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WorldSession::HandleSetAllowLowLevelRaidOpcode( WorldPacket & recv_data )
|
||||||
|
{
|
||||||
|
DEBUG_LOG("WORLD: Received CMSG_SET_ALLOW_LOW_LEVEL_RAID: %4X", recv_data.GetOpcode());
|
||||||
|
|
||||||
|
uint8 allow;
|
||||||
|
recv_data >> allow;
|
||||||
|
|
||||||
|
GetPlayer()->SetAllowLowLevelRaid(allow);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1314,8 +1314,8 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
|
||||||
/*0x505*/ { "UMSG_UNKNOWN_1285", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
|
/*0x505*/ { "UMSG_UNKNOWN_1285", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
|
||||||
/*0x506*/ { "SMSG_CORPSE_IS_NOT_IN_INSTANCE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
|
/*0x506*/ { "SMSG_CORPSE_IS_NOT_IN_INSTANCE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
|
||||||
/*0x507*/ { "UMSG_UNKNOWN_1287", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
|
/*0x507*/ { "UMSG_UNKNOWN_1287", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
|
||||||
/*0x508*/ { "CMSG_SET_ALLOW_LOW_LEVEL_RAID1", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
|
/*0x508*/ { "CMSG_SET_ALLOW_LOW_LEVEL_RAID1", STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetAllowLowLevelRaidOpcode},
|
||||||
/*0x509*/ { "CMSG_SET_ALLOW_LOW_LEVEL_RAID2", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
|
/*0x509*/ { "CMSG_SET_ALLOW_LOW_LEVEL_RAID2", STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetAllowLowLevelRaidOpcode},
|
||||||
/*0x50A*/ { "SMSG_CAMERA_SHAKE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
|
/*0x50A*/ { "SMSG_CAMERA_SHAKE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
|
||||||
/*0x50B*/ { "SMSG_UPDATE_ITEM_ENCHANTMENTS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
|
/*0x50B*/ { "SMSG_UPDATE_ITEM_ENCHANTMENTS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
|
||||||
/*0x50C*/ { "UMSG_UNKNOWN_1292", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
|
/*0x50C*/ { "UMSG_UNKNOWN_1292", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
|
||||||
|
|
|
||||||
|
|
@ -510,7 +510,7 @@ enum PlayerFlags
|
||||||
PLAYER_FLAGS_NO_PLAY_TIME = 0x00002000, // played too long time
|
PLAYER_FLAGS_NO_PLAY_TIME = 0x00002000, // played too long time
|
||||||
PLAYER_FLAGS_IS_OUT_OF_BOUNDS = 0x00004000, // Lua_IsOutOfBounds
|
PLAYER_FLAGS_IS_OUT_OF_BOUNDS = 0x00004000, // Lua_IsOutOfBounds
|
||||||
PLAYER_FLAGS_DEVELOPER = 0x00008000, // <Dev> chat tag, name prefix
|
PLAYER_FLAGS_DEVELOPER = 0x00008000, // <Dev> chat tag, name prefix
|
||||||
PLAYER_FLAGS_UNK17 = 0x00010000, // pre-3.0.3 PLAYER_FLAGS_SANCTUARY flag for player entered sanctuary
|
PLAYER_FLAGS_ENABLE_LOW_LEVEL_RAID = 0x00010000, // triggers lua event EVENT_ENABLE_LOW_LEVEL_RAID
|
||||||
PLAYER_FLAGS_TAXI_BENCHMARK = 0x00020000, // taxi benchmark mode (on/off) (2.0.1)
|
PLAYER_FLAGS_TAXI_BENCHMARK = 0x00020000, // taxi benchmark mode (on/off) (2.0.1)
|
||||||
PLAYER_FLAGS_PVP_TIMER = 0x00040000, // 3.0.2, pvp timer active (after you disable pvp manually)
|
PLAYER_FLAGS_PVP_TIMER = 0x00040000, // 3.0.2, pvp timer active (after you disable pvp manually)
|
||||||
PLAYER_FLAGS_COMMENTATOR = 0x00080000,
|
PLAYER_FLAGS_COMMENTATOR = 0x00080000,
|
||||||
|
|
@ -1789,6 +1789,8 @@ class MANGOS_DLL_SPEC Player : public Unit
|
||||||
static void RemoveFromGroup(Group* group, ObjectGuid guid);
|
static void RemoveFromGroup(Group* group, ObjectGuid guid);
|
||||||
void RemoveFromGroup() { RemoveFromGroup(GetGroup(), GetObjectGuid()); }
|
void RemoveFromGroup() { RemoveFromGroup(GetGroup(), GetObjectGuid()); }
|
||||||
void SendUpdateToOutOfRangeGroupMembers();
|
void SendUpdateToOutOfRangeGroupMembers();
|
||||||
|
void SetAllowLowLevelRaid(bool allow) { ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_ENABLE_LOW_LEVEL_RAID, allow); }
|
||||||
|
bool GetAllowLowLevelRaid() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_ENABLE_LOW_LEVEL_RAID); }
|
||||||
|
|
||||||
void SetInGuild(uint32 GuildId) { SetUInt32Value(PLAYER_GUILDID, GuildId); }
|
void SetInGuild(uint32 GuildId) { SetUInt32Value(PLAYER_GUILDID, GuildId); }
|
||||||
void SetRank(uint32 rankId){ SetUInt32Value(PLAYER_GUILDRANK, rankId); }
|
void SetRank(uint32 rankId){ SetUInt32Value(PLAYER_GUILDRANK, rankId); }
|
||||||
|
|
|
||||||
|
|
@ -847,6 +847,8 @@ void World::LoadConfigSettings(bool reload)
|
||||||
if (configNoReload(reload, CONFIG_UINT32_GUID_RESERVE_SIZE_GAMEOBJECT, "GuidReserveSize.GameObject", 100))
|
if (configNoReload(reload, CONFIG_UINT32_GUID_RESERVE_SIZE_GAMEOBJECT, "GuidReserveSize.GameObject", 100))
|
||||||
setConfigPos(CONFIG_UINT32_GUID_RESERVE_SIZE_GAMEOBJECT, "GuidReserveSize.GameObject", 100);
|
setConfigPos(CONFIG_UINT32_GUID_RESERVE_SIZE_GAMEOBJECT, "GuidReserveSize.GameObject", 100);
|
||||||
|
|
||||||
|
setConfig(CONFIG_UINT32_MIN_LEVEL_FOR_RAID, "Raid.MinLevel", 10);
|
||||||
|
|
||||||
///- Read the "Data" directory from the config file
|
///- Read the "Data" directory from the config file
|
||||||
std::string dataPath = sConfig.GetStringDefault("DataDir", "./");
|
std::string dataPath = sConfig.GetStringDefault("DataDir", "./");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -187,6 +187,7 @@ enum eConfigUInt32Values
|
||||||
CONFIG_UINT32_CHARDELETE_MIN_LEVEL,
|
CONFIG_UINT32_CHARDELETE_MIN_LEVEL,
|
||||||
CONFIG_UINT32_GUID_RESERVE_SIZE_CREATURE,
|
CONFIG_UINT32_GUID_RESERVE_SIZE_CREATURE,
|
||||||
CONFIG_UINT32_GUID_RESERVE_SIZE_GAMEOBJECT,
|
CONFIG_UINT32_GUID_RESERVE_SIZE_GAMEOBJECT,
|
||||||
|
CONFIG_UINT32_MIN_LEVEL_FOR_RAID,
|
||||||
CONFIG_UINT32_VALUE_COUNT
|
CONFIG_UINT32_VALUE_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -482,6 +482,7 @@ class MANGOS_DLL_SPEC WorldSession
|
||||||
void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
|
void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
|
||||||
void HandleGroupDisbandOpcode(WorldPacket& recvPacket);
|
void HandleGroupDisbandOpcode(WorldPacket& recvPacket);
|
||||||
void HandleOptOutOfLootOpcode( WorldPacket &recv_data );
|
void HandleOptOutOfLootOpcode( WorldPacket &recv_data );
|
||||||
|
void HandleSetAllowLowLevelRaidOpcode( WorldPacket & recv_data );
|
||||||
void HandleLootMethodOpcode(WorldPacket& recvPacket);
|
void HandleLootMethodOpcode(WorldPacket& recvPacket);
|
||||||
void HandleLootRoll( WorldPacket &recv_data );
|
void HandleLootRoll( WorldPacket &recv_data );
|
||||||
void HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data );
|
void HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data );
|
||||||
|
|
|
||||||
|
|
@ -729,6 +729,11 @@ LogColors = ""
|
||||||
# Motd
|
# Motd
|
||||||
# Message of the Day. Displayed at worldlogin for every user ('@' for a newline).
|
# Message of the Day. Displayed at worldlogin for every user ('@' for a newline).
|
||||||
#
|
#
|
||||||
|
# Raid.MinLevel
|
||||||
|
# Minimal player level to join raid groups (only affects existing raid groups, party->raid convert ignored)
|
||||||
|
# You can bypass this setting by typing "/script SetAllowLowLevelRaid(true/false)" command in chat
|
||||||
|
# Default: 10
|
||||||
|
#
|
||||||
###################################################################################################################
|
###################################################################################################################
|
||||||
|
|
||||||
GameType = 1
|
GameType = 1
|
||||||
|
|
@ -797,6 +802,7 @@ BeepAtStart = 1
|
||||||
ShowProgressBars = 1
|
ShowProgressBars = 1
|
||||||
WaitAtStartupError = 0
|
WaitAtStartupError = 0
|
||||||
Motd = "Welcome to the Massive Network Game Object Server."
|
Motd = "Welcome to the Massive Network Game Object Server."
|
||||||
|
Raid.MinLevel = 10
|
||||||
|
|
||||||
###################################################################################################################
|
###################################################################################################################
|
||||||
# PLAYER INTERACTION
|
# PLAYER INTERACTION
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue