public static bool HandleModifyASpeedCommand(string[] args, CommandGroup cmd) { if (args.Count() < 1) return false; float ASpeed; float.TryParse(args[0], out ASpeed); if (ASpeed > 50.0f || ASpeed < 0.1f) return cmd.SendErrorMessage(CypherStrings.BadValue); Player target = cmd.GetSession().GetPlayer().GetSelection<Player>(); if (target == null) return cmd.SendErrorMessage(CypherStrings.NoCharSelected); string targetNameLink = cmd.GetNameLink(target); //if (target.isInFlight()) { //chat.PSendSysMessage(LANG_CHAR_IN_FLIGHT, targetNameLink.c_str()); //return false; } if (target != cmd.GetSession().GetPlayer()) target.SendNotification(CypherStrings.YoursAspeedChanged, cmd.GetNameLink(target), ASpeed); target.SetSpeed(UnitMoveType.Walk, ASpeed, true); target.SetSpeed(UnitMoveType.Run, ASpeed, true); target.SetSpeed(UnitMoveType.Swim, ASpeed, true); target.SetSpeed(UnitMoveType.Flight, ASpeed, true); return cmd.SendSysMessage(CypherStrings.YouChangeAspeed, ASpeed, target.GetName()); }
public static bool HandleNpcSetFlagCommand(string[] args, CommandGroup cmd) { if (args.Count() < 1) { return(false); } uint npcFlags; uint.TryParse(args[0], out npcFlags); Creature creature = cmd.GetSession().GetPlayer().GetSelection <Creature>(); if (creature == null) { return(cmd.SendErrorMessage(CypherStrings.SelectCreature)); } creature.SetValue <uint>(UnitFields.NpcFlags, npcFlags); PreparedStatement stmt = DB.World.GetPreparedStatement(WorldStatements.Upd_CreatureNPCFlag); stmt.AddValue(0, npcFlags); stmt.AddValue(1, creature.GetEntry()); DB.World.Execute(stmt); return(cmd.SendSysMessage(CypherStrings.ValueSavedRejoin)); }
public static bool Fly(string[] args, CommandGroup command) { if (args.Count() < 1) { return(false); } Player target = command.getSelectedPlayer(); if (target == null) { target = command.GetSession().GetPlayer(); } if (args[0].ToLower() == "on") { target.SendMovementSetCanFly(true); } else if (args[0].ToLower() == "off") { target.SendMovementSetCanFly(false); } else { return(command.SendSysMessage("Use [on|off]")); } command.SendSysMessage(CypherStrings.CommandFlymodeStatus, command.GetNameLink(target), args); return(true); }
public override bool Fallback(string[] parameters = null, CommandGroup command = null) { var output = "Available commands: "; foreach (var pair in CommandManager.GetCommandList()) { if (command != null && command.GetSession() != null && pair.Key.MinUserLevel > command.GetSession().GetSecurity()) { continue; } output += pair.Key.Name + ", "; } return(SendSysMessage(output.Substring(0, output.Length - 2) + ".\nType 'help <command>' to get help.")); }
public static bool HandleModifyLevelCommand(string[] args, CommandGroup cmd) { if (args.Count() < 1) return false; Player target; int level; if (!cmd.extractPlayerTarget(args[0], out target)) return cmd.SendErrorMessage(CypherStrings.PlayerNotFound); int.TryParse(args[0] == "\"" ? args[1] : args[0], out level); int oldlevel = (int)(target != null ? target.getLevel() : 0);//Player::GetLevelFromDB(targetGuid); int newlevel = level != 0 ? level : oldlevel; if (newlevel < 1) return true; if (newlevel > 255) newlevel = 255; if (cmd.GetSession().GetPlayer() != target) target.SendNotification(CypherStrings.YouChangeLvl, cmd.GetNameLink(target), newlevel); if (target != null) { target.GiveLevel((uint)newlevel); //player->InitTalentForLevel(); target.SetValue<uint>(PlayerFields.XP, 0); if (oldlevel == newlevel) cmd.SendSysMessage(CypherStrings.YoursLevelProgressReset, cmd.GetNameLink(target)); else if (oldlevel < newlevel) cmd.SendSysMessage(CypherStrings.YoursLevelUp, cmd.GetNameLink(target), newlevel); else cmd.SendSysMessage(CypherStrings.YoursLevelDown, cmd.GetNameLink(target), newlevel); } else { // Update level and reset XP, everything else will be updated at login PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.CHAR_UPD_LEVEL); stmt.AddValue(0, (byte)newlevel); stmt.AddValue(1, target.GetGUIDLow()); DB.Characters.Execute(stmt); } return true; }
public static bool HandleNpcInfoCommand(string[] args, CommandGroup cmd) { Creature target = cmd.GetSession().GetPlayer().GetSelection <Creature>(); if (target == null) { return(cmd.SendErrorMessage(CypherStrings.SelectCreature)); } uint faction = target.GetCreatureTemplate().FactionA; NPCFlags npcflags = (NPCFlags)target.GetValue <uint>((int)UnitFields.NpcFlags); uint displayid = target.GetCreatureTemplate().ModelId[0]; uint nativeid = target.GetCreatureTemplate().ModelId[0]; uint Entry = target.GetEntry(); //CreatureTemplate const* cInfo = target->GetCreatureTemplate(); //ulong curRespawnDelay = target.->GetRespawnTimeEx()-time(NULL); //if (curRespawnDelay < 0) //curRespawnDelay = 0; //std::string curRespawnDelayStr = secsToTimeString(uint64(curRespawnDelay), true); //std::string defRespawnDelayStr = secsToTimeString(target->GetRespawnDelay(), true); cmd.SendSysMessage(CypherStrings.NpcinfoChar, target.GetGUIDLow(), target.GetGUIDLow(), faction, npcflags, Entry, displayid, nativeid); cmd.SendSysMessage(CypherStrings.NpcinfoLevel, target.GetCreatureTemplate().Maxlevel); //cmd.SendSysMessage(CypherStrings.NPCINFO_HEALTH, target.CurHealth); //cmd.SendSysMessage(CypherStrings.NPCINFO_FLAGS, target.GetValue<uint>((int)UnitFields.Flags), target.GetValue<uint>((int)UnitFields.DynamicFlags), target.Template.FactionA); //cmd.SendSysMessage(CypherStrings.COMMAND_RAWPAWNTIMES, defRespawnDelayStr.c_str(), curRespawnDelayStr.c_str()); //cmd.SendSysMessage(CypherStrings.NPCINFO_LOOT, cInfo->lootid, cInfo->pickpocketLootId, cInfo->SkinLootId); //cmd.SendSysMessage(CypherStrings.NPCINFO_DUNGEON_ID, target->GetInstanceId()); //cmd.SendSysMessage(CypherStrings.NPCINFO_PHASEMASK, target->GetPhaseMask()); //cmd.SendSysMessage(CypherStrings.NPCINFO_ARMOR, target->GetArmor()); cmd.SendSysMessage(CypherStrings.NpcinfoPosition, target.Position.X, target.Position.Y, target.Position.Z); //cmd.SendSysMessage(CypherStrings.NPCINFO_AIINFO, target->GetAIName().c_str(), target->GetScriptName().c_str()); if (Convert.ToBoolean(npcflags & NPCFlags.Vendor)) { cmd.SendSysMessage(CypherStrings.NpcinfoVendor); } if (Convert.ToBoolean(npcflags & NPCFlags.Trainer)) { cmd.SendSysMessage(CypherStrings.NpcinfoTrainer); } return(true); }
public virtual bool Fallback(string[] @params = null, CommandGroup cmd = null) { var output = "Available subcommands: "; foreach (var pair in this._subgroups) { if (pair.Key.Name.Trim() == string.Empty) { continue; // skip fallback command. } if (cmd.GetSession() == null && !pair.Key.AllowConsole) { continue; } if (cmd.GetSession() != null && pair.Key.MinUserLevel > cmd.GetSession().GetSecurity()) { continue; } output += pair.Key.Name + ", "; } foreach (var pair in this._commands) { if (pair.Key.Name.Trim() == string.Empty) { continue; // skip fallback command. } if (cmd.GetSession() == null && !pair.Key.AllowConsole) { continue; } if (cmd.GetSession() != null && pair.Key.MinUserLevel > cmd.GetSession().GetSecurity()) { continue; } output += pair.Key.Name + ", "; } return(SendSysMessage(output.Substring(0, output.Length - 2) + ".")); }
public static bool SetGMLevel(string[] args, CommandGroup command) { if (args.Length < 3) { return(false); } string targetAccountName = ""; uint targetAccountId = 0; uint targetSecurity = 0; uint gm = 0; string arg1 = args[0]; string arg2 = args[1]; string arg3 = args[2]; bool isAccountNameGiven = true; if (!string.IsNullOrEmpty(arg1) && string.IsNullOrEmpty(arg3)) { if (command.getSelectedPlayer() == null) { return(false); } isAccountNameGiven = false; } // Check for second parameter if (!isAccountNameGiven && !string.IsNullOrEmpty(arg2)) { return(false); } // Check for account if (isAccountNameGiven) { targetAccountName = arg1; if (!targetAccountName.IsNormalized())//need checked { command.SendErrorMessage(CypherStrings.AccountNotExist, targetAccountName); return(false); } } // Check for invalid specified GM level. gm = isAccountNameGiven ? uint.Parse(arg2) : uint.Parse(arg1); if (gm > (uint)AccountTypes.Console) { command.SendErrorMessage(CypherStrings.BadValue); return(false); } // handler->getSession() == NULL only for console targetAccountId = (isAccountNameGiven) ? AcctMgr.GetId(targetAccountName) : command.getSelectedPlayer().GetSession().GetAccountId(); int gmRealmID = (isAccountNameGiven) ? int.Parse(arg3) : int.Parse(arg2); uint playerSecurity; if (command.GetSession() != null) { playerSecurity = AcctMgr.GetSecurity(command.GetSession().GetAccountId(), gmRealmID); } else { playerSecurity = (uint)AccountTypes.Console; } // can set security level only for target with less security and to less security that we have // This is also reject self apply in fact targetSecurity = AcctMgr.GetSecurity(targetAccountId, gmRealmID); if (targetSecurity >= playerSecurity || gm >= playerSecurity) { command.SendErrorMessage(CypherStrings.YoursSecurityIsLow); return(false); } PreparedStatement stmt; // Check and abort if the target gm has a higher rank on one of the realms and the new realm is -1 if (gmRealmID == -1 && !AcctMgr.IsConsoleAccount((AccountTypes)playerSecurity)) { stmt = DB.Auth.GetPreparedStatement(LoginStatements.Sel_account_accessGMLevelTest); stmt.AddValue(0, targetAccountId); stmt.AddValue(1, gm); SQLResult result = DB.Auth.Select(stmt); if (result.Count > 0) { command.SendErrorMessage(CypherStrings.YoursSecurityIsLow); return(false); } } // Check if provided realmID has a negative value other than -1 if (gmRealmID < -1) { command.SendErrorMessage(CypherStrings.InvalidRealmid); return(false); } // If gmRealmID is -1, delete all values for the account id, else, insert values for the specific realmID if (gmRealmID == -1) { stmt = DB.Auth.GetPreparedStatement(LoginStatements.Del_account_access); stmt.AddValue(0, targetAccountId); } else { stmt = DB.Auth.GetPreparedStatement(LoginStatements.Del_account_accessByRealm); stmt.AddValue(0, targetAccountId); stmt.AddValue(1, WorldConfig.RealmId); } DB.Auth.Execute(stmt); if (gm != 0) { stmt = DB.Auth.GetPreparedStatement(LoginStatements.Ins_account_access); stmt.AddValue(0, targetAccountId); stmt.AddValue(1, gm); stmt.AddValue(2, gmRealmID); DB.Auth.Execute(stmt); } command.SendSysMessage(CypherStrings.YouChangeSecurity, targetAccountName, gm); return(true); }