mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[8126] Improvemets in player/pet/charter name checks.
* Implement new config options for minimal player/pet/charter name length (2 by default) * Better error reporting at problems in names. * Add check from max pet/charter name length (same as for player names at client side)
This commit is contained in:
parent
60fe792866
commit
715470a898
12 changed files with 114 additions and 48 deletions
|
|
@ -244,30 +244,31 @@ void WorldSession::HandleCharCreateOpcode( WorldPacket & recv_data )
|
|||
}
|
||||
|
||||
// prevent character creating with invalid name
|
||||
if(!normalizePlayerName(name))
|
||||
if (!normalizePlayerName(name))
|
||||
{
|
||||
data << (uint8)CHAR_NAME_INVALID_CHARACTER;
|
||||
data << (uint8)CHAR_NAME_NO_NAME;
|
||||
SendPacket( &data );
|
||||
sLog.outError("Account:[%d] but tried to Create character with empty [name] ",GetAccountId());
|
||||
return;
|
||||
}
|
||||
|
||||
// check name limitations
|
||||
if(!ObjectMgr::IsValidName(name,true))
|
||||
uint8 res = ObjectMgr::CheckPlayerName(name,true);
|
||||
if (res != CHAR_NAME_SUCCESS)
|
||||
{
|
||||
data << (uint8)CHAR_NAME_INVALID_CHARACTER;
|
||||
data << uint8(res);
|
||||
SendPacket( &data );
|
||||
return;
|
||||
}
|
||||
|
||||
if(GetSecurity() == SEC_PLAYER && objmgr.IsReservedName(name))
|
||||
if (GetSecurity() == SEC_PLAYER && objmgr.IsReservedName(name))
|
||||
{
|
||||
data << (uint8)CHAR_NAME_RESERVED;
|
||||
SendPacket( &data );
|
||||
return;
|
||||
}
|
||||
|
||||
if(objmgr.GetPlayerGUIDByName(name))
|
||||
if (objmgr.GetPlayerGUIDByName(name))
|
||||
{
|
||||
data << (uint8)CHAR_CREATE_NAME_IN_USE;
|
||||
SendPacket( &data );
|
||||
|
|
@ -275,7 +276,7 @@ void WorldSession::HandleCharCreateOpcode( WorldPacket & recv_data )
|
|||
}
|
||||
|
||||
QueryResult *resultacct = loginDatabase.PQuery("SELECT SUM(numchars) FROM realmcharacters WHERE acctid = '%d'", GetAccountId());
|
||||
if ( resultacct )
|
||||
if (resultacct)
|
||||
{
|
||||
Field *fields=resultacct->Fetch();
|
||||
uint32 acctcharcount = fields[0].GetUInt32();
|
||||
|
|
@ -967,7 +968,7 @@ void WorldSession::HandleCharRenameOpcode(WorldPacket& recv_data)
|
|||
recv_data >> newname;
|
||||
|
||||
// prevent character rename to invalid name
|
||||
if(!normalizePlayerName(newname))
|
||||
if (!normalizePlayerName(newname))
|
||||
{
|
||||
WorldPacket data(SMSG_CHAR_RENAME, 1);
|
||||
data << uint8(CHAR_NAME_NO_NAME);
|
||||
|
|
@ -975,16 +976,17 @@ void WorldSession::HandleCharRenameOpcode(WorldPacket& recv_data)
|
|||
return;
|
||||
}
|
||||
|
||||
if(!ObjectMgr::IsValidName(newname, true))
|
||||
uint8 res = ObjectMgr::CheckPlayerName(newname,true);
|
||||
if (res != CHAR_NAME_SUCCESS)
|
||||
{
|
||||
WorldPacket data(SMSG_CHAR_RENAME, 1);
|
||||
data << uint8(CHAR_NAME_INVALID_CHARACTER);
|
||||
data << uint8(res);
|
||||
SendPacket( &data );
|
||||
return;
|
||||
}
|
||||
|
||||
// check name limitations
|
||||
if(GetSecurity() == SEC_PLAYER && objmgr.IsReservedName(newname))
|
||||
if (GetSecurity() == SEC_PLAYER && objmgr.IsReservedName(newname))
|
||||
{
|
||||
WorldPacket data(SMSG_CHAR_RENAME, 1);
|
||||
data << uint8(CHAR_NAME_RESERVED);
|
||||
|
|
@ -1240,7 +1242,7 @@ void WorldSession::HandleCharCustomize(WorldPacket& recv_data)
|
|||
}
|
||||
|
||||
// prevent character rename to invalid name
|
||||
if(!normalizePlayerName(newname))
|
||||
if (!normalizePlayerName(newname))
|
||||
{
|
||||
WorldPacket data(SMSG_CHAR_CUSTOMIZE, 1);
|
||||
data << uint8(CHAR_NAME_NO_NAME);
|
||||
|
|
@ -1248,16 +1250,17 @@ void WorldSession::HandleCharCustomize(WorldPacket& recv_data)
|
|||
return;
|
||||
}
|
||||
|
||||
if(!ObjectMgr::IsValidName(newname,true))
|
||||
uint8 res = ObjectMgr::CheckPlayerName(newname,true);
|
||||
if (res != CHAR_NAME_SUCCESS)
|
||||
{
|
||||
WorldPacket data(SMSG_CHAR_CUSTOMIZE, 1);
|
||||
data << uint8(CHAR_NAME_INVALID_CHARACTER);
|
||||
data << uint8(res);
|
||||
SendPacket( &data );
|
||||
return;
|
||||
}
|
||||
|
||||
// check name limitations
|
||||
if(GetSecurity() == SEC_PLAYER && objmgr.IsReservedName(newname))
|
||||
if (GetSecurity() == SEC_PLAYER && objmgr.IsReservedName(newname))
|
||||
{
|
||||
WorldPacket data(SMSG_CHAR_CUSTOMIZE, 1);
|
||||
data << uint8(CHAR_NAME_RESERVED);
|
||||
|
|
@ -1266,9 +1269,9 @@ void WorldSession::HandleCharCustomize(WorldPacket& recv_data)
|
|||
}
|
||||
|
||||
// character with this name already exist
|
||||
if(uint64 newguid = objmgr.GetPlayerGUIDByName(newname))
|
||||
if (uint64 newguid = objmgr.GetPlayerGUIDByName(newname))
|
||||
{
|
||||
if(newguid != guid)
|
||||
if (newguid != guid)
|
||||
{
|
||||
WorldPacket data(SMSG_CHAR_CUSTOMIZE, 1);
|
||||
data << uint8(CHAR_CREATE_NAME_IN_USE);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue