Exemple #1
0
        static bool LevelUp(StringArguments args, CommandHandler handler)
        {
            string nameStr;
            string levelStr;

            handler.extractOptFirstArg(args, out nameStr, out levelStr);

            // exception opt second arg: .character level $name
            if (!string.IsNullOrEmpty(levelStr) && !levelStr.IsNumber())
            {
                nameStr  = levelStr;
                levelStr = null;                                    // current level will used
            }

            Player     target;
            ObjectGuid targetGuid;
            string     targetName;

            if (!handler.extractPlayerTarget(new StringArguments(nameStr), out target, out targetGuid, out targetName))
            {
                return(false);
            }

            int oldlevel = (int)(target ? target.getLevel() : Player.GetLevelFromDB(targetGuid));

            if (!int.TryParse(levelStr, out int addlevel))
            {
                addlevel = 1;
            }

            int newlevel = oldlevel + addlevel;

            if (newlevel < 1)
            {
                newlevel = 1;
            }

            if (newlevel > SharedConst.StrongMaxLevel)                         // hardcoded maximum level
            {
                newlevel = SharedConst.StrongMaxLevel;
            }

            HandleCharacterLevel(target, targetGuid, oldlevel, newlevel, handler);

            if (handler.GetSession() == null || handler.GetSession().GetPlayer() != target)      // including chr == NULL
            {
                string nameLink = handler.playerLink(targetName);
                handler.SendSysMessage(CypherStrings.YouChangeLvl, nameLink, newlevel);
            }

            return(true);
        }
Exemple #2
0
        static bool HandleGuildRankCommand(StringArguments args, CommandHandler handler)
        {
            string nameStr;
            string rankStr;

            handler.extractOptFirstArg(args, out nameStr, out rankStr);
            if (string.IsNullOrEmpty(rankStr))
            {
                return(false);
            }

            Player     target;
            ObjectGuid targetGuid;
            string     target_name;

            if (!handler.extractPlayerTarget(new StringArguments(nameStr), out target, out targetGuid, out target_name))
            {
                return(false);
            }

            ulong guildId = target ? target.GetGuildId() : Player.GetGuildIdFromDB(targetGuid);

            if (guildId == 0)
            {
                return(false);
            }

            Guild targetGuild = Global.GuildMgr.GetGuildById(guildId);

            if (!targetGuild)
            {
                return(false);
            }

            if (!byte.TryParse(rankStr, out byte newRank))
            {
                return(false);
            }

            return(targetGuild.ChangeMemberRank(null, targetGuid, newRank));
        }
Exemple #3
0
        static bool HandleArenaCaptainCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            string idStr;
            string nameStr;

            handler.extractOptFirstArg(args, out idStr, out nameStr);
            if (string.IsNullOrEmpty(idStr))
            {
                return(false);
            }

            if (!uint.TryParse(idStr, out uint teamId) || teamId == 0)
            {
                return(false);
            }

            Player     target;
            ObjectGuid targetGuid;

            if (!handler.extractPlayerTarget(new StringArguments(nameStr), out target, out targetGuid))
            {
                return(false);
            }

            ArenaTeam arena = Global.ArenaTeamMgr.GetArenaTeamById(teamId);

            if (arena == null)
            {
                handler.SendSysMessage(CypherStrings.ArenaErrorNotFound, teamId);
                return(false);
            }

            if (!target)
            {
                handler.SendSysMessage(CypherStrings.PlayerNotExistOrOffline, nameStr);
                return(false);
            }

            if (arena.IsFighting())
            {
                handler.SendSysMessage(CypherStrings.ArenaErrorCombat);
                return(false);
            }

            if (!arena.IsMember(targetGuid))
            {
                handler.SendSysMessage(CypherStrings.ArenaErrorNotMember, nameStr, arena.GetName());
                return(false);
            }

            if (arena.GetCaptain() == targetGuid)
            {
                handler.SendSysMessage(CypherStrings.ArenaErrorCaptain, nameStr, arena.GetName());
                return(false);
            }

            arena.SetCaptain(targetGuid);

            CharacterInfo oldCaptainNameData = Global.WorldMgr.GetCharacterInfo(arena.GetCaptain());

            if (oldCaptainNameData == null)
            {
                return(false);
            }

            handler.SendSysMessage(CypherStrings.ArenaCaptain, arena.GetName(), arena.GetId(), oldCaptainNameData.Name, target.GetName());
            if (handler.GetSession() != null)
            {
                Log.outDebug(LogFilter.Arena, "GameMaster: {0} [GUID: {1}] promoted player: {2} [GUID: {3}] to leader of arena team \"{4}\"[Id: {5}]",
                             handler.GetSession().GetPlayer().GetName(), handler.GetSession().GetPlayer().GetGUID().ToString(), target.GetName(), target.GetGUID().ToString(), arena.GetName(), arena.GetId());
            }
            else
            {
                Log.outDebug(LogFilter.Arena, "Console: promoted player: {0} [GUID: {1}] to leader of arena team \"{2}\"[Id: {3}]",
                             target.GetName(), target.GetGUID().ToString(), arena.GetName(), arena.GetId());
            }

            return(true);
        }
        static bool HandleCharacterChangeAccountCommand(StringArguments args, CommandHandler handler)
        {
            string playerNameStr;
            string accountName;

            handler.extractOptFirstArg(args, out playerNameStr, out accountName);
            if (accountName.IsEmpty())
            {
                return(false);
            }

            ObjectGuid targetGuid;
            string     targetName;
            Player     playerNotUsed;

            if (!handler.extractPlayerTarget(new StringArguments(playerNameStr), out playerNotUsed, out targetGuid, out targetName))
            {
                return(false);
            }

            CharacterInfo characterInfo = Global.WorldMgr.GetCharacterInfo(targetGuid);

            if (characterInfo == null)
            {
                handler.SendSysMessage(CypherStrings.PlayerNotFound);
                return(false);
            }

            uint oldAccountId = characterInfo.AccountId;
            uint newAccountId = oldAccountId;

            PreparedStatement stmt = DB.Login.GetPreparedStatement(LoginStatements.SEL_ACCOUNT_ID_BY_NAME);

            stmt.AddValue(0, accountName);
            SQLResult result = DB.Login.Query(stmt);

            if (!result.IsEmpty())
            {
                newAccountId = result.Read <uint>(0);
            }
            else
            {
                handler.SendSysMessage(CypherStrings.AccountNotExist, accountName);
                return(false);
            }

            // nothing to do :)
            if (newAccountId == oldAccountId)
            {
                return(true);
            }

            uint charCount = Global.AccountMgr.GetCharactersCount(newAccountId);

            if (charCount != 0)
            {
                if (charCount >= WorldConfig.GetIntValue(WorldCfg.CharactersPerRealm))
                {
                    handler.SendSysMessage(CypherStrings.AccountCharacterListFull, accountName, newAccountId);
                    return(false);
                }
            }

            stmt = DB.Characters.GetPreparedStatement(CharStatements.UPD_ACCOUNT_BY_GUID);
            stmt.AddValue(0, newAccountId);
            stmt.AddValue(1, targetGuid.GetCounter());
            DB.Characters.DirectExecute(stmt);

            Global.WorldMgr.UpdateRealmCharCount(oldAccountId);
            Global.WorldMgr.UpdateRealmCharCount(newAccountId);

            Global.WorldMgr.UpdateCharacterInfoAccount(targetGuid, newAccountId);

            handler.SendSysMessage(CypherStrings.ChangeAccountSuccess, targetName, accountName);

            string       logString = $"changed ownership of player {targetName} ({targetGuid.ToString()}) from account {oldAccountId} to account {newAccountId}";
            WorldSession session   = handler.GetSession();

            if (session != null)
            {
                Player player = session.GetPlayer();
                if (player != null)
                {
                    Log.outCommand(session.GetAccountId(), $"GM {player.GetName()} (Account: {session.GetAccountId()}) {logString}");
                }
            }
            else
            {
                Log.outCommand(0, $"{handler.GetCypherString(CypherStrings.Console)} {logString}");
            }
            return(true);
        }