public override CmdResult ExecuteRequest(CmdRequest args)
        {
            string to_op   = args.GetString("verb");
            string objname = args.GetString("target");

            if (objname == "")
            {
                return(Failure("$bot don't know what object to use."));
            }
            if (to_op == "")
            {
                SimObject objToUse;
                if (WorldSystem.tryGetPrim(objname, out objToUse))
                {
                    if ((BotNeeds)TheSimAvatar["CurrentNeeds"] == null)
                    {
                        TheSimAvatar["CurrentNeeds"] = new BotNeeds(90.0f);
                    }
                    SimTypeUsage usage = objToUse.Affordances.GetBestUse((BotNeeds)TheSimAvatar["CurrentNeeds"]);
                    if (usage == null)
                    {
                        //usage = new MoveToLocation(TheSimAvatar, objToUse);
                        return(Failure("$bot don't have a use for " + objToUse + " yet."));
                    }
                    TheSimAvatar.Do(usage, objToUse);
                    return(Success("used " + objToUse));
                }
                return(Failure("$bot don't know what to do with " + objname));
            }
            WriteLine("Trying to (" + to_op + ") with (" + objname + ")");
            TheBotClient.UseInventoryItem(to_op, objname);
            return(Success("completed to (" + to_op + ") with (" + objname + ")"));
        }
示例#2
0
        public void DoBestUse(SimObject someObject)
        {
            if (someObject == null)
            {
                return;
            }
            SimTypeUsage use = someObject.Affordances.GetBestUse(CurrentNeeds);

            if (use == null)
            {
                double closeness = Actor.Approach(someObject, someObject.GetSizeDistance() + 1);
                //AgentManager ClientSelf = Client.Self;
                Actor.Touch(someObject);
                if (closeness < 3)
                {
                    Actor.SitOn(someObject);
                }
                return;
            }
            Actor.Do(use, someObject);
            return;
        }
        public override CmdResult ExecuteRequest(CmdRequest args)
        {
            if (args.Length < 2)
            {
                return(ShowUsage());
            }
            SimTypeUsage use = SimTypeSystem.FindObjectUse(args[0]);

            if (use == null)
            {
                return(Failure("Unknown use: " + args[0]));
            }
            args = args.AdvanceArgs(1);
            int       argsUsed;
            SimObject O = WorldSystem.GetSimObjectS(args, out argsUsed);

            if (O == null)
            {
                return(Failure("Cant find simobject " + args.str));
            }
            WriteLine("Doing " + use + " for " + O);
            WorldSystem.TheSimAvatar.Do(use, O);
            return(Success("Did " + use + " for " + O));
        }
 private void InvokeThis(SimTypeUsage name, object sender, EventArgs args, SimObject O, object target, Type type)
 {
     Plugin.TheBot.WorldSystem.TheSimAvatar.Do(name, O ?? GetSimObject(target));
 }