diff --git a/README.md b/README.md index 6f62261..5b5f337 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,13 @@ pip3 install https://github.com/hwmrocker/pygameui/archive/master.zip pip3 install docopt msgpack-python ``` +### Arch users should install at least + +``` +sudo pacman -S hgsvn +sudo pacman -S python-pip +``` + Via vagrant ----------- diff --git a/bomber/engine.py b/bomber/engine.py index 6c199aa..de3d8cb 100644 --- a/bomber/engine.py +++ b/bomber/engine.py @@ -230,7 +230,7 @@ def __init__(self, position, client, name="Hans", color=None, password="", id=No "7": (0x80, 0, 0x80), # purple "8": (255, 255, 0), # yellow }[color] - self.password = hashpassword(password) + self.password = password self.speed = 100. self.bombamount = 10 self.explosion_radius = 10 @@ -514,7 +514,7 @@ def key_down(self, key, code): elif code.lower() == "b": self.players[0].do_bomb() - def player_register(self, client, username): + def player_register(self, client, username, password="", **kw): try: if username in self.users: position = self.users[username] @@ -524,7 +524,7 @@ def player_register(self, client, username): except StopIteration as e: return False - old_player = self.player_unregister(position) + old_player = self.player_unregister(position, password) player = Player( position=self.spawnpoints[position], client=client, @@ -532,6 +532,7 @@ def player_register(self, client, username): id=position, map=self, name=username, + password=password, ) if old_player: player.points = old_player.points @@ -539,11 +540,14 @@ def player_register(self, client, username): self.on_update_player(player) return position - def player_unregister(self, position): + def player_unregister(self, position, password): old_player = None - for old_player in self.players: - if old_player.id == position: + for player in self.players: + if player.id == position: + old_player = player break + if old_player: + assert old_player.password == password np = [p for p in self.players if p.id != position] if len(self.players) > len(np): self.players = np diff --git a/bomber/network.py b/bomber/network.py index f5632da..77a21e7 100644 --- a/bomber/network.py +++ b/bomber/network.py @@ -18,7 +18,8 @@ def inform(self, msg_type, args): def handle_msg(self, msg): if self.state == "pending" and msg["type"] == "connect": - self.position = self.level.player_register(self, msg["username"]) + # print(repr(msg)) + self.position = self.level.player_register(self, **msg) self.state = "connected" else: self.on_message(msg)