Scripts/Commands: Correct some unexpected behavior in .level

Port From (https://github.com/TrinityCore/TrinityCore/commit/2aa9d9a67a98aded35478c6beebe2a7a4e4b2d9f)
This commit is contained in:
hondacrx
2022-06-09 13:15:16 -04:00
parent 65bcb653b0
commit 8edba61e49
@@ -430,10 +430,11 @@ namespace Game.Chat
uint accountId; uint accountId;
var player = PlayerIdentifier.ParseFromString(playerName); var player = PlayerIdentifier.ParseFromString(playerName);
if (player != null && player.IsConnected()) Player target = player?.GetConnectedPlayer();
if (target != null)
{ {
accountId = player.GetConnectedPlayer().GetSession().GetAccountId(); accountId = target.GetSession().GetAccountId();
player.GetConnectedPlayer().GetSession().KickPlayer("HandleCharacterEraseCommand GM Command deleting character"); target.GetSession().KickPlayer("HandleCharacterEraseCommand GM Command deleting character");
} }
else else
accountId = Global.CharacterCacheStorage.GetCharacterAccountIdByGuid(player.GetGUID()); accountId = Global.CharacterCacheStorage.GetCharacterAccountIdByGuid(player.GetGUID());
@@ -678,7 +679,7 @@ namespace Game.Chat
} }
[CommandNonGroup("levelup", RBACPermissions.CommandLevelup)] [CommandNonGroup("levelup", RBACPermissions.CommandLevelup)]
static bool HandleLevelUpCommand(CommandHandler handler, string playerName, short? level) static bool HandleLevelUpCommand(CommandHandler handler, string playerName, short level)
{ {
var player = PlayerIdentifier.ParseFromString(playerName); var player = PlayerIdentifier.ParseFromString(playerName);
if (player == null) if (player == null)
@@ -687,7 +688,7 @@ namespace Game.Chat
return false; return false;
int oldlevel = (int)(player.IsConnected() ? player.GetConnectedPlayer().GetLevel() : Global.CharacterCacheStorage.GetCharacterLevelByGuid(player.GetGUID())); int oldlevel = (int)(player.IsConnected() ? player.GetConnectedPlayer().GetLevel() : Global.CharacterCacheStorage.GetCharacterLevelByGuid(player.GetGUID()));
int newlevel = oldlevel + level.GetValueOrDefault(1); int newlevel = oldlevel + level;
if (newlevel < 1) if (newlevel < 1)
newlevel = 1; newlevel = 1;