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 + ")")); }
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)); }