예제 #1
0
        static bool HandleModifyCurrencyCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            Player target = handler.getSelectedPlayerOrSelf();

            if (!target)
            {
                handler.SendSysMessage(CypherStrings.PlayerNotFound);

                return(false);
            }

            uint currencyId = args.NextUInt32();

            if (!CliDB.CurrencyTypesStorage.ContainsKey(currencyId))
            {
                return(false);
            }

            uint amount = args.NextUInt32();

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

            target.ModifyCurrency((CurrencyTypes)currencyId, (int)amount, true, true);

            return(true);
        }
예제 #2
0
            public override void ReadSaveDataMore(StringArguments data)
            {
                SladRanStatueState          = (GameObjectState)data.NextUInt32();
                DrakkariColossusStatueState = (GameObjectState)data.NextUInt32();
                MoorabiStatueState          = (GameObjectState)data.NextUInt32();

                if (IsBridgeReady())
                {
                    _events.ScheduleEvent(GDDataTypes.Bridge, GDInstanceMisc.TimerStatueActivation);
                }
            }
예제 #3
0
        static bool HandleModifyPhaseCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            uint phaseId      = args.NextUInt32();
            uint visibleMapId = args.NextUInt32();

            if (phaseId != 0 && !CliDB.PhaseStorage.ContainsKey(phaseId))
            {
                handler.SendSysMessage(CypherStrings.PhaseNotfound);
                return(false);
            }

            Unit target = handler.GetSelectedUnit();

            if (visibleMapId != 0)
            {
                MapRecord visibleMap = CliDB.MapStorage.LookupByKey(visibleMapId);
                if (visibleMap == null || visibleMap.ParentMapID != target.GetMapId())
                {
                    handler.SendSysMessage(CypherStrings.PhaseNotfound);
                    return(false);
                }

                if (!target.GetPhaseShift().HasVisibleMapId(visibleMapId))
                {
                    PhasingHandler.AddVisibleMapId(target, visibleMapId);
                }
                else
                {
                    PhasingHandler.RemoveVisibleMapId(target, visibleMapId);
                }
            }

            if (phaseId != 0)
            {
                if (!target.GetPhaseShift().HasPhase(phaseId))
                {
                    PhasingHandler.AddPhase(target, phaseId, true);
                }
                else
                {
                    PhasingHandler.RemovePhase(target, phaseId, true);
                }
            }

            return(true);
        }
예제 #4
0
        static bool HandleDeleteByIdCommand <T>(StringArguments args, CommandHandler handler) where T : Ticket
        {
            if (args.Empty())
            {
                return(false);
            }

            uint ticketId = args.NextUInt32();
            T    ticket   = Global.SupportMgr.GetTicket <T>(ticketId);

            if (ticket == null)
            {
                handler.SendSysMessage(CypherStrings.CommandTicketnotexist);
                return(true);
            }

            if (!ticket.IsClosed())
            {
                handler.SendSysMessage(CypherStrings.CommandTicketclosefirst);
                return(true);
            }

            string msg = ticket.FormatViewMessageString(handler, null, null, null, handler.GetSession() != null ? handler.GetSession().GetPlayer().GetName() : "Console");

            handler.SendGlobalGMSysMessage(msg);

            Global.SupportMgr.RemoveTicket <T>(ticket.GetId());

            return(true);
        }
예제 #5
0
        static bool HandlePlayScenePackageCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            uint scenePackageId = args.NextUInt32();

            if (!uint.TryParse(args.NextString(""), out uint flags))
            {
                flags = (uint)SceneFlags.Unk16;
            }

            Player target = handler.getSelectedPlayerOrSelf();

            if (!target)
            {
                handler.SendSysMessage(CypherStrings.PlayerNotFound);
                return(false);
            }

            if (!CliDB.SceneScriptPackageStorage.HasRecord(scenePackageId))
            {
                return(false);
            }

            target.GetSceneMgr().PlaySceneByPackageId(scenePackageId, (SceneFlags)flags);
            return(true);
        }
예제 #6
0
        static bool HandleBattlefieldEnable(StringArguments args, CommandHandler handler)
        {
            uint        battleid = args.NextUInt32();
            BattleField bf       = Global.BattleFieldMgr.GetBattlefieldByBattleId(battleid);

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

            if (bf.IsEnabled())
            {
                bf.ToggleBattlefield(false);
                if (battleid == 1)
                {
                    handler.SendGlobalGMSysMessage("Wintergrasp is disabled");
                }
            }
            else
            {
                bf.ToggleBattlefield(true);
                if (battleid == 1)
                {
                    handler.SendGlobalGMSysMessage("Wintergrasp is enabled");
                }
            }

            return(true);
        }
예제 #7
0
        static bool HandleModifyPhaseCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            uint phaseId = args.NextUInt32();

            if (!CliDB.PhaseStorage.ContainsKey(phaseId))
            {
                handler.SendSysMessage(CypherStrings.PhaseNotfound);
                return(false);
            }

            Unit target = handler.getSelectedUnit();

            if (!target)
            {
                target = handler.GetSession().GetPlayer();
            }

            target.SetInPhase(phaseId, true, !target.IsInPhase(phaseId));

            if (target.IsTypeId(TypeId.Player))
            {
                target.ToPlayer().SendUpdatePhasing();
            }

            return(true);
        }
예제 #8
0
        static bool HandleCancelSceneCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            Player target = handler.getSelectedPlayerOrSelf();

            if (!target)
            {
                handler.SendSysMessage(CypherStrings.PlayerNotFound);
                return(false);
            }

            uint id = args.NextUInt32();

            if (!CliDB.SceneScriptPackageStorage.HasRecord(id))
            {
                return(false);
            }

            target.GetSceneMgr().CancelSceneByPackageId(id);
            return(true);
        }
예제 #9
0
            public override void Load(string str)
            {
                if (str.IsEmpty())
                {
                    OUT_LOAD_INST_DATA_FAIL();
                    return;
                }

                OUT_LOAD_INST_DATA(str);

                StringArguments loadStream = new StringArguments(str);
                string          dataHead   = loadStream.NextString();

                if (dataHead[0] == 'T' && dataHead[1] == 'C')
                {
                    for (byte i = 0; i < 4; ++i)
                    {
                        m_auiEncounter[i] = (EncounterState)loadStream.NextUInt32();
                        if (m_auiEncounter[i] == EncounterState.InProgress)
                        {
                            m_auiEncounter[i] = EncounterState.NotStarted;
                        }
                    }

                    uiGrandChampionsDeaths = loadStream.NextUInt16();
                    uiMovementDone         = loadStream.NextUInt16();
                }
                else
                {
                    OUT_LOAD_INST_DATA_FAIL();
                }

                OUT_LOAD_INST_DATA_COMPLETE();
            }
예제 #10
0
        static bool HandleArenaInfoCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            uint teamId = args.NextUInt32();

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

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

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

            handler.SendSysMessage(CypherStrings.ArenaInfoHeader, arena.GetName(), arena.GetId(), arena.GetRating(), arena.GetArenaType(), arena.GetArenaType());
            foreach (var member in arena.GetMembers())
            {
                handler.SendSysMessage(CypherStrings.ArenaInfoMembers, member.Name, member.Guid, member.PersonalRating, (arena.GetCaptain() == member.Guid ? "- Captain" : ""));
            }

            return(true);
        }
예제 #11
0
        static bool HandleModifyMorphCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            uint display_id = args.NextUInt32();

            Unit target = handler.getSelectedUnit();

            if (!target)
            {
                target = handler.GetSession().GetPlayer();
            }

            // check online security
            else if (target.IsTypeId(TypeId.Player) && handler.HasLowerSecurity(target.ToPlayer(), ObjectGuid.Empty))
            {
                return(false);
            }

            target.SetDisplayId(display_id);

            return(true);
        }
예제 #12
0
            static bool HandleCharacterDeletedRestoreCommand(StringArguments args, CommandHandler handler)
            {
                // It is required to submit at least one argument
                if (args.Empty())
                {
                    return(false);
                }

                string searchString = args.NextString();
                string newCharName  = args.NextString();
                uint   newAccount   = args.NextUInt32();

                List <DeletedInfo> foundList = new List <DeletedInfo>();

                if (!GetDeletedCharacterInfoList(foundList, searchString))
                {
                    return(false);
                }

                if (foundList.Empty())
                {
                    handler.SendSysMessage(CypherStrings.CharacterDeletedListEmpty);
                    return(false);
                }

                handler.SendSysMessage(CypherStrings.CharacterDeletedRestore);
                HandleCharacterDeletedListHelper(foundList, handler);

                if (newCharName.IsEmpty())
                {
                    // Drop not existed account cases
                    foreach (var info in foundList)
                    {
                        HandleCharacterDeletedRestoreHelper(info, handler);
                    }
                }
                else if (foundList.Count == 1 && ObjectManager.NormalizePlayerName(ref newCharName))
                {
                    DeletedInfo delInfo = foundList[0];

                    // update name
                    delInfo.name = newCharName;

                    // if new account provided update deleted info
                    if (newAccount != 0 && newAccount != delInfo.accountId)
                    {
                        delInfo.accountId = newAccount;
                        Global.AccountMgr.GetName(newAccount, out delInfo.accountName);
                    }

                    HandleCharacterDeletedRestoreHelper(delInfo, handler);
                }
                else
                {
                    handler.SendSysMessage(CypherStrings.CharacterDeletedErrRename);
                }

                return(true);
            }
예제 #13
0
        static bool SetSkill(StringArguments args, CommandHandler handler)
        {
            // number or [name] Shift-click form |color|Hskill:skill_id|h[name]|h|r
            string skillStr = handler.ExtractKeyFromLink(args, "Hskill");

            if (string.IsNullOrEmpty(skillStr))
            {
                return(false);
            }

            if (!uint.TryParse(skillStr, out uint skill) || skill == 0)
            {
                handler.SendSysMessage(CypherStrings.InvalidSkillId, skill);
                return(false);
            }

            uint level = args.NextUInt32();

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

            Player target = handler.GetSelectedPlayerOrSelf();

            if (!target)
            {
                handler.SendSysMessage(CypherStrings.NoCharSelected);
                return(false);
            }

            SkillLineRecord skillLine = CliDB.SkillLineStorage.LookupByKey(skill);

            if (skillLine == null)
            {
                handler.SendSysMessage(CypherStrings.InvalidSkillId, skill);
                return(false);
            }

            bool targetHasSkill = target.GetSkillValue((SkillType)skill) != 0;

            ushort maxPureSkill = args.NextUInt16();
            // If our target does not yet have the skill they are trying to add to them, the chosen level also becomes
            // the max level of the new profession.
            ushort max = maxPureSkill != 0 ? maxPureSkill : targetHasSkill?target.GetPureMaxSkillValue((SkillType)skill) : (ushort)level;

            if (level == 0 || level > max || max <= 0)
            {
                return(false);
            }

            // If the player has the skill, we get the current skill step. If they don't have the skill, we
            // add the skill to the player's book with step 1 (which is the first rank, in most cases something
            // like 'Apprentice <skill>'.
            target.SetSkill((SkillType)skill, (uint)(targetHasSkill ? target.GetSkillStep((SkillType)skill) : 1), level, max);
            handler.SendSysMessage(CypherStrings.SetSkill, skill, skillLine.DisplayName[handler.GetSessionDbcLocale()], handler.GetNameLink(target), level, max);
            return(true);
        }
예제 #14
0
        static bool HandleUnAssignCommand <T>(StringArguments args, CommandHandler handler) where T : Ticket
        {
            if (args.Empty())
            {
                return(false);
            }

            uint ticketId = args.NextUInt32();
            T    ticket   = Global.SupportMgr.GetTicket <T>(ticketId);

            if (ticket == null || ticket.IsClosed())
            {
                handler.SendSysMessage(CypherStrings.CommandTicketnotexist);
                return(true);
            }
            // Ticket must be assigned
            if (!ticket.IsAssigned())
            {
                handler.SendSysMessage(CypherStrings.CommandTicketnotassigned, ticket.GetId());
                return(true);
            }

            // Get security level of player, whom this ticket is assigned to
            AccountTypes security       = AccountTypes.Player;
            Player       assignedPlayer = ticket.GetAssignedPlayer();

            if (assignedPlayer && assignedPlayer.IsInWorld)
            {
                security = assignedPlayer.GetSession().GetSecurity();
            }
            else
            {
                ObjectGuid guid      = ticket.GetAssignedToGUID();
                uint       accountId = ObjectManager.GetPlayerAccountIdByGUID(guid);
                security = Global.AccountMgr.GetSecurity(accountId, (int)Global.WorldMgr.GetRealm().Id.Realm);
            }

            // Check security
            //! If no m_session present it means we're issuing this command from the console
            AccountTypes mySecurity = handler.GetSession() != null?handler.GetSession().GetSecurity() : AccountTypes.Console;

            if (security > mySecurity)
            {
                handler.SendSysMessage(CypherStrings.CommandTicketunassignsecurity);
                return(true);
            }

            string assignedTo = ticket.GetAssignedToName(); // copy assignedto name because we need it after the ticket has been unnassigned

            ticket.SetUnassigned();
            ticket.SaveToDB();
            string msg = ticket.FormatViewMessageString(handler, null, assignedTo, handler.GetSession() != null ? handler.GetSession().GetPlayer().GetName() : "Console", null);

            handler.SendGlobalGMSysMessage(msg);

            return(true);
        }
예제 #15
0
        static bool HandleBattlefieldTimer(StringArguments args, CommandHandler handler)
        {
            uint        battleid = args.NextUInt32();
            BattleField bf       = Global.BattleFieldMgr.GetBattlefieldByBattleId(battleid);

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

            uint time = args.NextUInt32();

            bf.SetTimer(time * Time.InMilliseconds);
            bf.SendInitWorldStatesToAll();
            if (battleid == 1)
            {
                handler.SendGlobalGMSysMessage("Wintergrasp (Command timer used)");
            }

            return(true);
        }
예제 #16
0
        static bool HandleModifyStandStateCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            uint anim_id = args.NextUInt32();

            handler.GetSession().GetPlayer().SetUInt32Value(UnitFields.NpcEmotestate, anim_id);

            return(true);
        }
예제 #17
0
        static bool HandleModifyStandStateCommand(CommandHandler handler, StringArguments args)
        {
            if (args.Empty())
            {
                return(false);
            }

            uint anim_id = args.NextUInt32();

            handler.GetSession().GetPlayer().SetEmoteState((Emote)anim_id);

            return(true);
        }
예제 #18
0
            static bool HandleGameObjectAddTempCommand(StringArguments args, CommandHandler handler)
            {
                if (args.Empty())
                {
                    return(false);
                }

                uint id = args.NextUInt32();

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

                Player player = handler.GetPlayer();

                uint spawntime = args.NextUInt32();
                uint spawntm   = 300;

                if (spawntime != 0)
                {
                    spawntm = spawntime;
                }

                Quaternion rotation = Quaternion.fromEulerAnglesZYX(player.GetOrientation(), 0.0f, 0.0f);

                if (Global.ObjectMgr.GetGameObjectTemplate(id) == null)
                {
                    handler.SendSysMessage(CypherStrings.GameobjectNotExist, id);
                    return(false);
                }

                player.SummonGameObject(id, player, rotation, spawntm);

                return(true);
            }
예제 #19
0
        void ReadSaveDataBossStates(StringArguments data)
        {
            foreach (var pair in bosses)
            {
                EncounterState buff = (EncounterState)data.NextUInt32();
                if (buff == EncounterState.InProgress || buff == EncounterState.Fail || buff == EncounterState.Special)
                {
                    buff = EncounterState.NotStarted;
                }

                if (buff < EncounterState.ToBeDecided)
                {
                    SetBossState(pair.Key, buff);
                }
            }
        }
예제 #20
0
        static bool HandleCommentCommand <T>(StringArguments args, CommandHandler handler) where T : Ticket
        {
            if (args.Empty())
            {
                return(false);
            }

            uint ticketId = args.NextUInt32();

            string comment = args.NextString("\n");

            if (string.IsNullOrEmpty(comment))
            {
                return(false);
            }

            T ticket = Global.SupportMgr.GetTicket <T>(ticketId);

            if (ticket == null || ticket.IsClosed())
            {
                handler.SendSysMessage(CypherStrings.CommandTicketnotexist);
                return(true);
            }

            // Cannot comment ticket assigned to someone else
            //! Console excluded
            Player player = handler.GetSession() != null?handler.GetSession().GetPlayer() : null;

            if (player && ticket.IsAssignedNotTo(player.GetGUID()))
            {
                handler.SendSysMessage(CypherStrings.CommandTicketalreadyassigned, ticket.GetId());
                return(true);
            }

            ticket.SetComment(comment);
            ticket.SaveToDB();
            Global.SupportMgr.UpdateLastChange();

            string msg = ticket.FormatViewMessageString(handler, null, ticket.GetAssignedToName(), null, null);

            msg += string.Format(handler.GetCypherString(CypherStrings.CommandTicketlistaddcomment), player ? player.GetName() : "Console", comment);
            handler.SendGlobalGMSysMessage(msg);

            return(true);
        }
예제 #21
0
        static bool HandleGoGraveyardCommand(StringArguments args, CommandHandler handler)
        {
            Player player = handler.GetSession().GetPlayer();

            if (args.Empty())
            {
                return(false);
            }

            uint graveyardId = args.NextUInt32();

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

            WorldSafeLocsRecord gy = CliDB.WorldSafeLocsStorage.LookupByKey(graveyardId);

            if (gy == null)
            {
                handler.SendSysMessage(CypherStrings.CommandGraveyardnoexist, graveyardId);
                return(false);
            }

            if (!GridDefines.IsValidMapCoord(gy.MapID, gy.Loc.X, gy.Loc.Y, gy.Loc.Z))
            {
                handler.SendSysMessage(CypherStrings.InvalidTargetCoord, gy.Loc.X, gy.Loc.Y, gy.MapID);
                return(false);
            }

            // stop flight if need
            if (player.IsInFlight())
            {
                player.GetMotionMaster().MovementExpired();
                player.CleanupAfterTaxiFlight();
            }
            // save only in non-flight case
            else
            {
                player.SaveRecallPosition();
            }

            player.TeleportTo(gy.MapID, gy.Loc.X, gy.Loc.Y, gy.Loc.Z, (gy.Facing * MathFunctions.PI) / 180); // Orientation is initially in degrees
            return(true);
        }
예제 #22
0
        static bool HandleGoTriggerCommand(StringArguments args, CommandHandler handler)
        {
            Player player = handler.GetSession().GetPlayer();

            if (args.Empty())
            {
                return(false);
            }

            uint areaTriggerId = args.NextUInt32();

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

            AreaTriggerRecord at = CliDB.AreaTriggerStorage.LookupByKey(areaTriggerId);

            if (at == null)
            {
                handler.SendSysMessage(CypherStrings.CommandGoareatrnotfound, areaTriggerId);
                return(false);
            }

            if (!GridDefines.IsValidMapCoord(at.ContinentID, at.Pos.X, at.Pos.Y, at.Pos.Z))
            {
                handler.SendSysMessage(CypherStrings.InvalidTargetCoord, at.Pos.X, at.Pos.Y, at.ContinentID);
                return(false);
            }

            // stop flight if need
            if (player.IsInFlight())
            {
                player.GetMotionMaster().MovementExpired();
                player.CleanupAfterTaxiFlight();
            }
            // save only in non-flight case
            else
            {
                player.SaveRecallPosition();
            }

            player.TeleportTo(at.ContinentID, at.Pos.X, at.Pos.Y, at.Pos.Z, player.GetOrientation());
            return(true);
        }
예제 #23
0
        static bool HandleCloseByIdCommand <T>(StringArguments args, CommandHandler handler) where T : Ticket
        {
            if (args.Empty())
            {
                return(false);
            }

            uint ticketId = args.NextUInt32();
            T    ticket   = Global.SupportMgr.GetTicket <T>(ticketId);

            if (ticket == null || ticket.IsClosed())
            {
                handler.SendSysMessage(CypherStrings.CommandTicketnotexist);
                return(true);
            }

            // Ticket should be assigned to the player who tries to close it.
            // Console can override though
            Player player = handler.GetSession() != null?handler.GetSession().GetPlayer() : null;

            if (player && ticket.IsAssignedNotTo(player.GetGUID()))
            {
                handler.SendSysMessage(CypherStrings.CommandTicketcannotclose, ticket.GetId());
                return(true);
            }

            ObjectGuid closedByGuid = ObjectGuid.Empty;

            if (player)
            {
                closedByGuid = player.GetGUID();
            }
            else
            {
                closedByGuid.SetRawValue(0, ulong.MaxValue);
            }

            Global.SupportMgr.CloseTicket <T>(ticket.GetId(), closedByGuid);

            string msg = ticket.FormatViewMessageString(handler, player ? player.GetName() : "Console", null, null, null);

            handler.SendGlobalGMSysMessage(msg);

            return(true);
        }
예제 #24
0
        static bool HandleGoGraveyardCommand(StringArguments args, CommandHandler handler)
        {
            Player player = handler.GetSession().GetPlayer();

            if (args.Empty())
            {
                return(false);
            }

            uint graveyardId = args.NextUInt32();

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

            WorldSafeLocsEntry gy = Global.ObjectMgr.GetWorldSafeLoc(graveyardId);

            if (gy == null)
            {
                handler.SendSysMessage(CypherStrings.CommandGraveyardnoexist, graveyardId);
                return(false);
            }

            if (!GridDefines.IsValidMapCoord(gy.Loc))
            {
                handler.SendSysMessage(CypherStrings.InvalidTargetCoord, gy.Loc.GetPositionX(), gy.Loc.GetPositionY(), gy.Loc.GetMapId());
                return(false);
            }

            // stop flight if need
            if (player.IsInFlight())
            {
                player.GetMotionMaster().MovementExpired();
                player.CleanupAfterTaxiFlight();
            }
            // save only in non-flight case
            else
            {
                player.SaveRecallPosition();
            }

            player.TeleportTo(gy.Loc);
            return(true);
        }
예제 #25
0
        static bool HandleWpReloadCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            uint id = args.NextUInt32();

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

            handler.SendSysMessage("|cff00ff00Loading Path: |r|cff00ffff{0}|r", id);
            Global.WaypointMgr.ReloadPath(id);
            return(true);
        }
예제 #26
0
        static bool HandleBattlefieldSwitch(StringArguments args, CommandHandler handler)
        {
            uint        battleid = args.NextUInt32();
            BattleField bf       = Global.BattleFieldMgr.GetBattlefieldByBattleId(battleid);

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

            bf.EndBattle(false);
            if (battleid == 1)
            {
                handler.SendGlobalGMSysMessage("Wintergrasp (Command switch used)");
            }

            return(true);
        }
예제 #27
0
        static bool HandleArenaDisbandCommand(StringArguments args, CommandHandler handler)
        {
            if (args.Empty())
            {
                return(false);
            }

            uint teamId = args.NextUInt32();

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

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

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

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

            string name = arena.GetName();

            arena.Disband();
            if (handler.GetSession() != null)
            {
                Log.outDebug(LogFilter.Arena, "GameMaster: {0} [GUID: {1}] disbanded arena team type: {2} [Id: {3}].",
                             handler.GetSession().GetPlayer().GetName(), handler.GetSession().GetPlayer().GetGUID().ToString(), arena.GetArenaType(), teamId);
            }
            else
            {
                Log.outDebug(LogFilter.Arena, "Console: disbanded arena team type: {0} [Id: {1}].", arena.GetArenaType(), teamId);
            }

            handler.SendSysMessage(CypherStrings.ArenaDisband, name, teamId);
            return(true);
        }
예제 #28
0
        static bool HandleGetByIdCommand <T>(StringArguments args, CommandHandler handler) where T : Ticket
        {
            if (args.Empty())
            {
                return(false);
            }

            uint ticketId = args.NextUInt32();
            T    ticket   = Global.SupportMgr.GetTicket <T>(ticketId);

            if (ticket == null || ticket.IsClosed())
            {
                handler.SendSysMessage(CypherStrings.CommandTicketnotexist);
                return(true);
            }

            handler.SendSysMessage(ticket.FormatViewMessageString(handler, true));
            return(true);
        }
예제 #29
0
            public override void Load(string str)
            {
                if (string.IsNullOrEmpty(str))
                {
                    OUT_LOAD_INST_DATA_FAIL();
                    return;
                }

                OUT_LOAD_INST_DATA(str);
                StringArguments loadStream = new StringArguments(str);

                for (byte i = 0; i < karazhanConst.MaxEncounter; ++i)
                {
                    var state = (EncounterState)loadStream.NextUInt32();
                    // Do not load an encounter as "In Progress" - reset it instead.
                    m_auiEncounter[i] = (uint)(state == EncounterState.InProgress ? EncounterState.NotStarted : state);
                }

                OUT_LOAD_INST_DATA_COMPLETE();
            }
예제 #30
0
        static bool HandleRBACListPermissionsCommand(StringArguments args, CommandHandler handler)
        {
            uint id = args.NextUInt32();

            if (id == 0)
            {
                var permissions = Global.AccountMgr.GetRBACPermissionList();
                handler.SendSysMessage(CypherStrings.RbacListPermissionsHeader);
                foreach (var permission in permissions.Values)
                {
                    handler.SendSysMessage(CypherStrings.RbacListElement, permission.GetId(), permission.GetName());
                }
            }
            else
            {
                RBACPermission permission = Global.AccountMgr.GetRBACPermission(id);
                if (permission == null)
                {
                    handler.SendSysMessage(CypherStrings.RbacWrongParameterId, id);
                    return(false);
                }

                handler.SendSysMessage(CypherStrings.RbacListPermissionsHeader);
                handler.SendSysMessage(CypherStrings.RbacListElement, permission.GetId(), permission.GetName());
                handler.SendSysMessage(CypherStrings.RbacListPermsLinkedHeader);
                var permissions = permission.GetLinkedPermissions();
                foreach (var permissionId in permissions)
                {
                    RBACPermission rbacPermission = Global.AccountMgr.GetRBACPermission(permissionId);
                    if (rbacPermission != null)
                    {
                        handler.SendSysMessage(CypherStrings.RbacListElement, rbacPermission.GetId(), rbacPermission.GetName());
                    }
                }
            }

            return(true);
        }