Пример #1
0
        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());
        }
Пример #2
0
            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));
            }
Пример #3
0
        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);
        }
Пример #4
0
        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."));
        }
Пример #5
0
        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;
        }
Пример #6
0
        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);
        }
Пример #7
0
        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) + "."));
        }
Пример #8
0
            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);
            }