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); }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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(); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); } } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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(); }
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); }