def multiplayer(server): events = [] client = socket_connection.client(server) players = client.ask(repr(["get_players", "", ""])).replace("\n", "").replace("\r", "").split(",") #M# Menü unterschiedlich gestalten jenachdem wie viele Spieler es gibt # und ob das erstellen neuer Spieler erlaubt ist playerlist = ([("Select Player", 1, (127, 0, 255))] + [(player, ) for player in players] + [("Back", )]) i_player = Display.menu(playerlist)[0] if i_player == -1: return -1 if i_player == len(playerlist) - 1: return 0 playername = playerlist[i_player][0] password = "" random_key = client.ask(repr(["random_key", playername, ""])) random_key = random_key.replace("\n", "").replace("\r", "") combined_key = password + random_key hashed_combined_key = hashlib.md5(combined_key).hexdigest() reply = client.ask(repr(["login", playername, hashed_combined_key])) print reply if reply.startswith("access denied"): return #Display = IOlib.Display(datadir,playername,controlsfile) t = time.time() while True: objectlist = Display.get_required_objects() # client -> server: events, playername, objectlist request = repr([events, playername, objectlist]) answer = client.ask(request) displaydata = ast.literal_eval(answer) # server -> client: displaydata if "QUIT" in [event[0] for event in events]: break #muss nach Datenübertragung kommen, damit server quit event noch bekommt events = Display.show(displaydata, playername) while time.time() - t < 0.0625: time.sleep(0.001) t += 0.0625 return 0
def multiplayer(server): events = [] client = socket_connection.client(server) players = client.ask(repr(["get_players","",""])).replace("\n","").replace("\r","").split(",") #M# Menü unterschiedlich gestalten jenachdem wie viele Spieler es gibt # und ob das erstellen neuer Spieler erlaubt ist playerlist = ([("Select Player",1,(127,0,255))]+ [(player,) for player in players]+ [("Back",)]) i_player = Display.menu(playerlist)[0] if i_player == -1: return -1 if i_player == len(playerlist)-1: return 0 playername = playerlist[i_player][0] password = "" random_key = client.ask(repr(["random_key",playername,""])) random_key = random_key.replace("\n","").replace("\r","") combined_key = password+random_key hashed_combined_key = hashlib.md5(combined_key).hexdigest() reply = client.ask(repr(["login",playername,hashed_combined_key])) print reply if reply.startswith("access denied"): return #Display = IOlib.Display(datadir,playername,controlsfile) t = time.time() while True: objectlist = Display.get_required_objects() # client -> server: events, playername, objectlist request = repr([events,playername,objectlist]) answer = client.ask(request) displaydata = ast.literal_eval(answer) # server -> client: displaydata if "QUIT" in [event[0] for event in events]: break #muss nach Datenübertragung kommen, damit server quit event noch bekommt events = Display.show(displaydata,playername) while time.time()-t<0.0625: time.sleep(0.001) t+=0.0625 return 0
import sys sys.path.insert(0, "..") import socket_connection reload(socket_connection) servers = socket_connection.search_servers() if servers != []: for i in range(len(servers)): print i, servers[i] n = int(raw_input("which one?")) server = servers[n][0] print server client = socket_connection.client(server) text = "" while text not in ("quit", "q", "exit"): text = raw_input("text: ") print client.ask(text)