예제 #1
0
        public override CmdResult ExecuteRequest(CmdRequest args)
        {
            bool moveInsteadOfCopy = args.IsTrue("--move");
            if (!args.ContainsKey("items") || !args.ContainsKey("to"))
            {
                return ShowUsage();
            }
            int argsUsed;
            List<SimObject> allTargets;
            if (!args.TryGetValue("to", out allTargets))
            {
                return Failure("Cannot find avatar/objects 'to' give to");
            }

            Success("Going to give to " + allTargets.Count + " avatar/objects");

            var man = Client.BotInventory;
            var found = man.FindAll(args.GetProperty("items"), false,
                                    inventoryName => Failure("No inventory item named " + inventoryName + " found."));

            int given = 0;
            foreach (var dest in allTargets)
            {
                foreach (InventoryBase item in found)
                {
                    GiveAll(man, item, dest, moveInsteadOfCopy);
                }
            }
            return SuccessOrFailure();
        }
예제 #2
0
        public override CmdResult ExecuteRequest(CmdRequest args)
        {
            bool moveInsteadOfCopy = args.IsTrue("--move");

            if (!args.ContainsKey("items") || !args.ContainsKey("to"))
            {
                return(ShowUsage());
            }
            int argsUsed;
            List <SimObject> allTargets;

            if (!args.TryGetValue("to", out allTargets))
            {
                return(Failure("Cannot find avatar/objects 'to' give to"));
            }

            Success("Going to give to " + allTargets.Count + " avatar/objects");

            var man   = Client.BotInventory;
            var found = man.FindAll(args.GetProperty("items"), false,
                                    inventoryName => Failure("No inventory item named " + inventoryName + " found."));

            int given = 0;

            foreach (var dest in allTargets)
            {
                foreach (InventoryBase item in found)
                {
                    GiveAll(man, item, dest, moveInsteadOfCopy);
                }
            }
            return(SuccessOrFailure());
        }
예제 #3
0
        public static CmdResult ExecuteRequestProc(CmdRequest args, Command cmd)
        {
            if (!args.ContainsKey("to"))
            {
                args.SetValue("to", "verb");
            }

            ;
            if (!cmd.Client.IsLoggedInAndReady)
            {
                return(cmd.Failure("Not yet logged in!"));
            }
            var TheSimAvatar = cmd.WorldSystem.TheSimAvatar;

            if (TheSimAvatar.IsSitting && !TheSimAvatar.IsDrivingVehical)
            {
                cmd.WriteLine("$bot is standing up before moving.");
                TheSimAvatar.StandUp();
                // WriteLine("$bot is sitting, Please stand up to move.");
            }
            SimPosition position;

            if (!args.TryGetValue("to", out position))
            {
                return(cmd.Failure("I don't understand how to move " + args.str));
            }
            if (position == null)
            {
                return(cmd.Failure("Coulnd not resolve location: " + args.str));
            }
            if (!position.IsRegionAttached)
            {
                return(cmd.Failure("!IsRegionAttached: " + position));
            }
            if (position.SimPosition == Vector3.Zero)
            {
                return(cmd.Failure("SimPosition.Zero: " + position));
            }
            Vector3d delta0 = position.GlobalPosition - TheSimAvatar.GlobalPosition;
            Vector3  delta  = new Vector3((float)delta0.X, (float)delta0.Y, (float)delta0.Z);

            float fnd;

            if (args.TryGetValue("dist", out fnd))
            {
                delta.Normalize();
                delta    = delta * fnd;
                position = new SimOffsetPosition(TheSimAvatar, delta);
            }

            MovementProceedure proc;
            bool salientProc = args.TryGetValue("sproc", out proc);

            if (salientProc)
            {
                TheSimAvatar.SalientMovementProceedure = proc;
            }

            if (args.TryGetValue("proc", out proc))
            {
                TheSimAvatar.SimpleMoveToMovementProceedure = proc;
            }

            Vector3d g = position.GlobalPosition;

            TheSimAvatar.SetClient(cmd.TheBotClient);
            if (salientProc)
            {
                return(cmd.Result(string.Format("SalientGoto: {0},{1},{2}", position, g, position.SimPosition),
                                  TheSimAvatar.SalientGoto(position)));
            }
            else
            {
                TheSimAvatar.SetMoveTarget(position, position.GetSizeDistance());
            }
            //Client.Self.AutoPilot(g.X, g.Y, g.Z);
            // MoveThread = new Thread(MoveProc);
            return(cmd.Success(string.Format("SetMoveTarget: {0},{1},{2}", position, g, position.SimPosition)));
        }
예제 #4
0
        public static CmdResult ExecuteRequestProc(CmdRequest args, Command cmd)
        {
            if (!args.ContainsKey("to"))
                args.SetValue("to", "verb");

            ;
            if (!cmd.Client.IsLoggedInAndReady)
            {
                return cmd.Failure("Not yet logged in!");
            }
            var TheSimAvatar = cmd.WorldSystem.TheSimAvatar;

            if (TheSimAvatar.IsSitting && !TheSimAvatar.IsDrivingVehical)
            {
                cmd.WriteLine("$bot is standing up before moving.");
                TheSimAvatar.StandUp();
                // WriteLine("$bot is sitting, Please stand up to move.");
            }
            SimPosition position;
            if (!args.TryGetValue("to", out position))
            {
                return cmd.Failure("I don't understand how to move " + args.str);
            }
            if (position == null)
            {
                return cmd.Failure("Coulnd not resolve location: " + args.str);
            }
            if (!position.IsRegionAttached)
            {
                return cmd.Failure("!IsRegionAttached: " + position);
            }
            if (position.SimPosition == Vector3.Zero)
            {
                return cmd.Failure("SimPosition.Zero: " + position);
            }
            Vector3d delta0 = position.GlobalPosition - TheSimAvatar.GlobalPosition;
            Vector3 delta = new Vector3((float) delta0.X, (float) delta0.Y, (float) delta0.Z);

            float fnd;
            if (args.TryGetValue("dist", out fnd))
            {
                delta.Normalize();
                delta = delta*fnd;
                position = new SimOffsetPosition(TheSimAvatar, delta);
            }

            MovementProceedure proc;
            bool salientProc = args.TryGetValue("sproc", out proc);
            if (salientProc)
            {
                TheSimAvatar.SalientMovementProceedure = proc;
            }

            if (args.TryGetValue("proc", out proc))
            {
                TheSimAvatar.SimpleMoveToMovementProceedure = proc;
            }

            Vector3d g = position.GlobalPosition;
            TheSimAvatar.SetClient(cmd.TheBotClient);
            if (salientProc)
            {
                return cmd.Result(string.Format("SalientGoto: {0},{1},{2}", position, g, position.SimPosition),
                                  TheSimAvatar.SalientGoto(position));
            }
            else
            {
                TheSimAvatar.SetMoveTarget(position, position.GetSizeDistance());
            }
            //Client.Self.AutoPilot(g.X, g.Y, g.Z);
            // MoveThread = new Thread(MoveProc);
            return cmd.Success(string.Format("SetMoveTarget: {0},{1},{2}", position, g, position.SimPosition));
        }