diff --git a/modules/bf2.py b/modules/bf2.py index 92d830c..90033a2 100644 --- a/modules/bf2.py +++ b/modules/bf2.py @@ -60,50 +60,50 @@ class bf2(MumoModule): ('blufor', int, -1), ('blufor_commander', int, -1), ('blufor_no_squad', int, -1), - ('blufor_alpha_squad', int, -1), - ('blufor_alpha_squad_leader', int, -1), - ('blufor_bravo_squad', int, -1), - ('blufor_bravo_squad_leader', int, -1), - ('blufor_charlie_squad', int, -1), - ('blufor_charlie_squad_leader', int, -1), - ('blufor_delta_squad', int, -1), - ('blufor_delta_squad_leader', int, -1), - ('blufor_echo_squad', int, -1), - ('blufor_echo_squad_leader', int, -1), - ('blufor_foxtrot_squad', int, -1), - ('blufor_foxtrot_squad_leader', int, -1), - ('blufor_golf_squad', int, -1), - ('blufor_golf_squad_leader', int, -1), - ('blufor_hotel_squad', int, -1), - ('blufor_hotel_squad_leader', int, -1), - ('blufor_india_squad', int, -1), - ('blufor_india_squad_leader', int, -1), + ('blufor_first_squad', int, -1), + ('blufor_first_squad_leader', int, -1), + ('blufor_second_squad', int, -1), + ('blufor_second_squad_leader', int, -1), + ('blufor_third_squad', int, -1), + ('blufor_third_squad_leader', int, -1), + ('blufor_fourth_squad', int, -1), + ('blufor_fourth_squad_leader', int, -1), + ('blufor_fifth_squad', int, -1), + ('blufor_fifth_squad_leader', int, -1), + ('blufor_sixth_squad', int, -1), + ('blufor_sixth_squad_leader', int, -1), + ('blufor_seventh_squad', int, -1), + ('blufor_seventh_squad_leader', int, -1), + ('blufor_eighth_squad', int, -1), + ('blufor_eighth_squad_leader', int, -1), + ('blufor_ninth_squad', int, -1), + ('blufor_ninth_squad_leader', int, -1), ('opfor', int, -1), ('opfor_commander', int, -1), ('opfor_no_squad', int, -1), - ('opfor_alpha_squad', int, -1), - ('opfor_alpha_squad_leader', int, -1), - ('opfor_bravo_squad', int, -1), - ('opfor_bravo_squad_leader', int, -1), - ('opfor_charlie_squad', int, -1), - ('opfor_charlie_squad_leader', int, -1), - ('opfor_delta_squad', int, -1), - ('opfor_delta_squad_leader', int, -1), - ('opfor_echo_squad', int, -1), - ('opfor_echo_squad_leader', int, -1), - ('opfor_foxtrot_squad', int, -1), - ('opfor_foxtrot_squad_leader', int, -1), - ('opfor_golf_squad', int, -1), - ('opfor_golf_squad_leader', int, -1), - ('opfor_hotel_squad', int, -1), - ('opfor_hotel_squad_leader', int, -1), - ('opfor_india_squad', int, -1), - ('opfor_india_squad_leader', int, -1) + ('opfor_first_squad', int, -1), + ('opfor_first_squad_leader', int, -1), + ('opfor_second_squad', int, -1), + ('opfor_second_squad_leader', int, -1), + ('opfor_third_squad', int, -1), + ('opfor_third_squad_leader', int, -1), + ('opfor_fourth_squad', int, -1), + ('opfor_fourth_squad_leader', int, -1), + ('opfor_fifth_squad', int, -1), + ('opfor_fifth_squad_leader', int, -1), + ('opfor_sixth_squad', int, -1), + ('opfor_sixth_squad_leader', int, -1), + ('opfor_seventh_squad', int, -1), + ('opfor_seventh_squad_leader', int, -1), + ('opfor_eighth_squad', int, -1), + ('opfor_eighth_squad_leader', int, -1), + ('opfor_ninth_squad', int, -1), + ('opfor_ninth_squad_leader', int, -1) ), } - id_to_squad_name = ["no", "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel", "india"] + id_to_squad_name = ["no", "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth"] def __init__(self, name, manager, configuration = None): MumoModule.__init__(self, name, manager, configuration) @@ -179,10 +179,9 @@ class bf2(MumoModule): server.addUserToGroup(0, session, "bf2_linked") if opi and opc: - log.debug("Removing user '%s' (%d|%d) on server %d from groups of game %s", newstate.name, newstate.session, newstate.userid, sid, og or ogcfgname) - server.removeUserFromGroup(ogcfg["base"], session, "bf2_%s_game" % (og or ogcfgname)) - squadname = self.id_to_squad_name[opi["squad"]] + log.debug("Removing user '%s' (%d|%d) on server %d from groups of game %s / squad %s", newstate.name, newstate.session, newstate.userid, sid, og or ogcfgname, squadname) + server.removeUserFromGroup(ogcfg["base"], session, "bf2_%s_game" % (og or ogcfgname)) server.removeUserFromGroup(ogcfg[opi["team"]], session, "bf2_commander") server.removeUserFromGroup(ogcfg[opi["team"]], session, "bf2_squad_leader") server.removeUserFromGroup(ogcfg[opi["team"]], session, "bf2_%s_squad_leader" % squadname) @@ -240,6 +239,8 @@ class bf2(MumoModule): newstate.channel = ngcfg[channame] if oli and not nli: + channame = "left" + newstate.channel = ogcfg["left"] log.debug("User '%s' (%d|%d) on server %d no longer linked", newstate.name, newstate.session, newstate.userid, sid) server.removeUserFromGroup(0, session, "bf2_linked") diff --git a/tools/mbf2man.py b/tools/mbf2man.py index 8c2bcb7..5487583 100644 --- a/tools/mbf2man.py +++ b/tools/mbf2man.py @@ -60,6 +60,8 @@ if __name__ == "__main__": help = 'Path to slice file', default = 'Murmur.ice') parser.add_option('-s', '--secret', help = 'Ice secret', default = '') + parser.add_option('-l', '--linkteams', action = 'store_true', + help = 'Link teams so opposing players can hear each other', default = False) parser.add_option('-n', '--name', help = 'Treename', default = 'BF2') parser.add_option('-o', '--out', default = 'bf2.ini', @@ -163,11 +165,12 @@ if __name__ == "__main__": ini['left'] = basechan gamechan = server.addChannel(name, basechan) + # Relevant function signatures + # Murmur.ACL(self, applyHere=False, applySubs=False, + # inherited=False, userid=0, group='', allow=0, deny=0) - # mice.Murmur.ACL(self, applyHere=False, applySubs=False, - # inherited=False, userid=0, group='', allow=0, deny=0) - - # mice.s.setACL(self, channelid, acls, groups, inherit, _ctx=None) + # server.setACL(self, channelid, acls, groups, inherit, _ctx=None) + # server.setACL(gamechan, [ACL(applyHere = True, applySubs = True, @@ -189,11 +192,14 @@ if __name__ == "__main__": gamechanstate = server.getChannelState(gamechan) teams = ["blufor", "opfor"] - id_to_squad_name = ["no", "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel", "india"] + id_to_squad_name = ["no", "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth"] for team in teams: print name + "/" + team cid = server.addChannel(team, gamechan) - gamechanstate.links.append(cid) + teamchanstate = server.getChannelState(cid) + if option.linkteams: + gamechanstate.links.append(cid) + ini[team] = cid server.setACL(ini[team], @@ -206,7 +212,7 @@ if __name__ == "__main__": print name + "/" + team + "_commander" cid = server.addChannel("commander", ini[team]) - gamechanstate.links.append(cid) + teamchanstate.links.append(cid) ini[team + "_commander"] = cid server.setACL(ini[team + "_commander"], @@ -229,7 +235,7 @@ if __name__ == "__main__": for squad in id_to_squad_name: print name + "/" + team + "/" + squad cid = server.addChannel(squad, ini[team]) - gamechanstate.links.append(cid) + teamchanstate.links.append(cid) ini[team + "_" + squad + "_squad"] = cid ini[team + "_" + squad + "_squad_leader"] = ini[team + "_" + squad + "_squad"] @@ -250,7 +256,7 @@ if __name__ == "__main__": group = '~bf2_squad_leader', allow = W)], [], True) - + server.setChannelState(teamchanstate) server.setChannelState(gamechanstate) print "Channel structure created"