Esempio n. 1
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);
        }
Esempio n. 2
0
        public static bool HandleModifyMoneyCommand(string[] args, CommandGroup handler)
        {
            if (args.Count() < 1)
                return false;

            Player target = handler.getSelectedPlayer();
            if (target == null)
                return handler.SendErrorMessage(CypherStrings.NoCharSelected);

            // check online security
            if (handler.HasLowerSecurity(target, 0))
                return false;

            long addmoney;
            long.TryParse(args[0], out addmoney);

            long moneyuser = (long)target.GetMoney();

            if (addmoney < 0)
            {
                ulong newmoney = (ulong)(moneyuser + addmoney);

                Log.outDebug(ObjMgr.GetCypherString(CypherStrings.CurrentMoney), moneyuser, addmoney, newmoney);
                if (newmoney <= 0)
                {
                    handler.SendSysMessage(CypherStrings.YouTakeAllMoney, handler.GetNameLink(target));
                    if (handler.needReportToTarget(target))
                       ChatHandler.SendSysMessage(target, CypherStrings.YoursAllMoneyGone, handler.GetNameLink());

                    target.SetMoney(0);
                }
                else
                {
                    if (newmoney > PlayerConst.MaxMoneyAmount)
                        newmoney = PlayerConst.MaxMoneyAmount;

                    handler.SendSysMessage(CypherStrings.YouTakeMoney, Math.Abs(addmoney), handler.GetNameLink(target));
                    if (handler.needReportToTarget(target))
                        ChatHandler.SendSysMessage(target, CypherStrings.YoursMoneyTaken, handler.GetNameLink(), Math.Abs(addmoney));
                    target.SetMoney(newmoney);
                }
            }
            else
            {
                handler.SendSysMessage( CypherStrings.YouGiveMoney, addmoney, handler.GetNameLink(target));
                if (handler.needReportToTarget(target))
                    ChatHandler.SendSysMessage(target, CypherStrings.YoursMoneyGiven, handler.GetNameLink(), addmoney);

                if (addmoney >= PlayerConst.MaxMoneyAmount)
                    target.SetMoney(PlayerConst.MaxMoneyAmount);
                else
                    target.ModifyMoney(addmoney);
            }

            Log.outDebug(ObjMgr.GetCypherString(CypherStrings.NewMoney), moneyuser, addmoney, target.GetMoney());
            return true;
        }
Esempio n. 3
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);
            }