def _clients(self, players, local_login, main_server): clients = [] for login, a, f in players: if login.startswith("ai_"): c = DummyClient(login[3:]) else: if login != local_login: c = RemoteClient(login) else: c = Coordinator(local_login, main_server, self) self.me = c c.alliance = a c.faction = f clients.append(c) return clients
def populate_map(self, players, alliances, factions=()): # add "true" (non neutral) players worldrandom.shuffle(self.players_starts) for client in players: start = self.players_starts.pop() if client.__class__.__name__ == "DummyClient": self._add_player(Computer, client, start, False) else: self._add_player(Human, client, start) # create the alliances if alliances: for p, pa in zip(self.players, alliances): for other, oa in zip(self.players, alliances): if other is not p and oa == pa: p.allied.append(other) else: # computer players are allied by default for p in self.players: if isinstance(p, Computer): for other in self.players: if other is not p and isinstance(other, Computer): p.allied.append(other) # set the factions for players if factions: for p, pr in zip(self.players, factions): if pr == "random_faction": p.faction = worldrandom.choice(self.get_factions()) else: p.faction = pr # add "neutral" (independent) computers for start in self.computers_starts: self._add_player(Computer, DummyClient(), start, True) # init all players positions for player in self.players: player.init_position() self.admin = players[0] # define get_admin()?
def __init__(self, map, players, factions): self.map = map self.seed = random.randint(0, 10000) self.me = DirectClient(config.login, self) self.players = [self.me] + [DummyClient(x) for x in players[1:]] for p, f in zip(self.players, factions): p.faction = f
def __init__(self, replay): self._file = open(replay) game_type_name = self.replay_read() if game_type_name in ("multiplayer", "training"): self.default_triggers = _MultiplayerGame.default_triggers game_name = self.replay_read() voice.alert([game_name]) version = self.replay_read() mods = self.replay_read() if mods != config.mods: config.mods = mods reload_all() _compatibility_version = self.replay_read() if _compatibility_version != compatibility_version(): voice.alert([1029, 4012]) # hostile sound "version error" warning( "Version mismatch. Version should be: %s. Mods should be: %s.", version, mods) self.map = Map() self.map.unpack(self.replay_read()) players = self.replay_read().split() self.alliances = map(int, self.replay_read().split()) self.factions = self.replay_read().split() self.seed = int(self.replay_read()) self.me = ReplayClient(players[0], self) self.players = [self.me] for x in players[1:]: if x in ["aggressive", "easy"]: # the "ai_" prefix wasn't recorded self.players += [DummyClient(x)] else: self.players += [HalfDummyClient(x)] self.me.nb_humans += 1
def __init__(self, replay): self._file = open(replay) game_type_name = self.replay_read() if game_type_name in ("multiplayer", "training"): self.default_triggers = _MultiplayerGame.default_triggers game_name = self.replay_read() voice.alert([game_name]) version = self.replay_read() mods = self.replay_read() res.set_mods(mods) _compatibility_version = self.replay_read() if _compatibility_version != compatibility_version(): voice.alert([1029, 4012]) # hostile sound "version error" warning("Version mismatch. Version should be: %s. Mods should be: %s.", version, mods) campaign_path_or_packed_map = self.replay_read() if game_type_name == "mission" and "***" not in campaign_path_or_packed_map: from campaign import Campaign self.map = Campaign(campaign_path_or_packed_map)._get(int(self.replay_read())) else: self.map = Map() self.map.unpack(campaign_path_or_packed_map) players = self.replay_read().split() self.alliances = map(int, self.replay_read().split()) self.factions = self.replay_read().split() self.seed = int(self.replay_read()) self.me = ReplayClient(players[0], self) self.players = [self.me] for x in players[1:]: if x in ["aggressive", "easy"]: # the "ai_" prefix wasn't recorded self.players += [DummyClient(x)] else: self.players += [HalfDummyClient(x)] self.me.nb_humans += 1
def _computers_and_humans(self, players, my_login): computers = [] humans = [] for p in players: if p in ["ai_aggressive", "ai_easy"]: computers.append(DummyClient(p[3:])) else: if p != my_login: humans.append(HalfDummyClient(p)) else: humans.append(None) # marked for further replacement, because the order must be the same (the worlds must be the same) return computers, humans
def __init__(self, replay): self._file = open(replay) game_type_name = self.replay_read() if game_type_name in ("multiplayer", "training"): self.default_triggers = _MultiplayerGame.default_triggers self.must_apply_equivalent_type = True game_name = self.replay_read() voice.alert([game_name]) version = self.replay_read() mods = self.replay_read() res.set_mods(mods) _compatibility_version = self.replay_read() if _compatibility_version != compatibility_version(): voice.alert(mp.BEEP + mp.VERSION_ERROR) warning( "Version mismatch. Version should be: %s. Mods should be: %s.", version, mods) campaign_path_or_packed_map = self.replay_read() if game_type_name == "mission" and "***" not in campaign_path_or_packed_map: from campaign import Campaign self.map = Campaign(campaign_path_or_packed_map)._get( int(self.replay_read())) else: self.map = Map() self.map.unpack(campaign_path_or_packed_map) players = self.replay_read().split() alliances = self.replay_read().split() factions = self.replay_read().split() self.seed = int(self.replay_read()) self.me = ReplayClient(players[0], self) self.players = [self.me] for x in players[1:]: if x.startswith("ai_"): x = x[3:] if x in ["aggressive", "easy", "ai2"]: self.players += [DummyClient(x)] else: self.players += [RemoteClient(x)] self.me.nb_humans += 1 for p, a, f in zip(self.players, alliances, factions): p.alliance = a p.faction = f
def _create_neutrals(self): for start in self.computers_starts: self._add_player(DummyClient(neutral=True), start)