def __init__(self, opts, name="Locobot"): super(LocobotAgent, self).__init__(opts) logging.info("LocobotAgent.__init__ started") self.opts = opts self.entityId = 0 self.no_default_behavior = opts.no_default_behavior self.last_chat_time = -1000000000000 self.name = name self.player = Player(100, name, Pos(0, 0, 0), Look(0, 0)) self.pos = Pos(0, 0, 0) self.uncaught_error_count = 0 self.last_task_memid = None self.point_targets = [] self.init_event_handlers() # list of (prob, default function) pairs self.visible_defaults = [(1.0, default_behaviors.explore)]
def __init__(self, opts=None, spec=None): self.bots = [] for i in range(opts.num_bots): x = random.randint(0, WORLD_SIZE - 1) y = random.randint(0, WORLD_SIZE - 1) eid = i botname = "target" + str(i) bot = Bot(eid, botname, Pos(x, y, 0), Look(0, 0)) self.bots.append(bot)
def get_all_players(self): """This function is a wrapper around self.cagent.get_other_players and adds a new player called "dashboard" if it doesn't already exist.""" all_players = self.cagent.get_other_players() updated_players = all_players player_exists = False for player in all_players: if player.name == "dashboard": player_exists = True if not player_exists: newPlayer = Player(12345678, "dashboard", Pos(0.0, 64.0, 0.0), Look(0.0, 0.0), Item(0, 0)) updated_players.append(newPlayer) return updated_players
def random_move(self, bot): move_delta = [] (x, y, z) = bot.pos if x > 0: move_delta.append((-1, 0, 0)) # allow move in negative x axis if x < 4: move_delta.append((1, 0, 0)) # allow move in positive x axis if y > 0: move_delta.append((0, -1, 0)) # allow move in negative y axis if y < 4: move_delta.append((0, 1, 0)) # allow move in positive y axis move = random.choice(move_delta) x, y, z = x + move[0], y + move[1], z + move[2] return bot._replace(pos=Pos(x, y, z))
def test_triggers(self): joe_memid = PlayerNode.create( self.memory, Player(10, "joe", Pos(1, 0, 1), Look(0, 0))) joe_tag_memid = self.memory.tag(joe_memid, "joe") jane_memid = PlayerNode.create( self.memory, Player(11, "jane", Pos(-1, 0, 1), Look(0, 0))) joe_mems = self.memory.basic_search({ "base_exact": { "name": "joe" }, "triples": [] }) jane_mems = self.memory.basic_search({ "base_exact": { "name": "jane" }, "triples": [] }) assert len(joe_mems) == 1 assert len(jane_mems) == 1 joe_mems_from_tag = self.memory.basic_search({ "base_exact": {}, "triples": [{ "obj_text": "joe", "pred_text": "has_tag" }] }) jane_mems_from_tag = self.memory.basic_search({ "base_exact": {}, "triples": [{ "obj_text": "jane", "pred_text": "has_tag" }] }) assert len(joe_mems_from_tag) == 1 assert len(jane_mems_from_tag) == 0 self.time.add_tick() brother_of_memid = self.memory.add_triple(subj=joe_memid, pred_text="brother_of", obj=jane_memid) sister_of_memid = self.memory.add_triple(subj=jane_memid, pred_text="sister_of", obj=joe_memid) triples = self.memory.get_triples(subj=jane_memid, pred_text="sister_of") assert len(triples) == 1 self.time.add_tick() self.memory.db_write("UPDATE ReferenceObjects SET x=? WHERE uuid=?", 2, joe_memid) cmd = "SELECT updated_time FROM Memories WHERE uuid=?" joe_t = self.memory._db_read(cmd, joe_memid)[0][0] jane_t = self.memory._db_read(cmd, jane_memid)[0][0] assert joe_t == 2 assert jane_t == 0 self.memory.forget(joe_memid) triples = self.memory.get_triples(subj=jane_memid, pred_text="sister_of") assert len(triples) == 0
def get_all_player_line_of_sight(self, player_struct): """return a fixed value for "dashboard" player""" if isinstance(player_struct, Player): return Pos(-1, 63, 14) return self.cagent.get_player_line_of_sight(player_struct)
def get_point_at_target(self): x, y, z = self.agent_memory._db_read_one( "SELECT x, y, z FROM ReferenceObjects WHERE uuid=?", self.memid) return Pos(x, y, z)