def smsg_char_login(data): netlog.info("SMSG_CHAR_LOGIN {}".format(data)) char_slot = -1 for c in data.chars: if c.name == server.char_name: char_slot = c.slot mapserv.player_money = c.money mapserv.player_stats[stats.EXP] = c.exp mapserv.player_stats[stats.MONEY] = c.money mapserv.player_stats[stats.JOB] = c.job mapserv.player_stats[stats.CHAR_POINTS] = c.charpoints mapserv.player_stats[stats.HP] = c.hp mapserv.player_stats[stats.MAX_HP] = c.max_hp mapserv.player_stats[stats.MP] = c.mp mapserv.player_stats[stats.MAX_MP] = c.max_mp mapserv.player_stats[stats.WALK_SPEED] = c.speed mapserv.player_stats[stats.LEVEL] = c.level mapserv.player_stats[stats.SKILL_POINTS] = c.skillpoints break if char_slot < 0: netlog.error("CharName {} not found".format(server.char_name)) server.close() else: cmsg_char_select(char_slot)
def read(self, n=-1): data = '' if n < 0: data = self.read_buffer self.read_buffer = '' else: tries = 0 while len(self.read_buffer) < n: try: self.read_buffer += self.recv(n - len(self.read_buffer)) except socket.error as e: tries += 1 if tries < 10: netlog.error("socket.error %s", e) time.sleep(0.2) else: raise data = self.read_buffer[:n] self.read_buffer = self.read_buffer[n:] if netlog.isEnabledFor(DEBUG): netlog.debug("read " + ":".join("{:02x}".format(ord(c)) for c in data)) return data
def smsg_char_login(data): netlog.info("SMSG_CHAR_LOGIN {}".format(data)) char_slot = -1 for c in data.chars: if c.name == server.char_name: char_slot = c.slot mapserv.player_money = c.money mapserv.player_stats[stats.EXP] = c.exp mapserv.player_stats[stats.MONEY] = c.money mapserv.player_stats[stats.JOB] = c.job mapserv.player_stats[stats.CHAR_POINTS] = c.charpoints mapserv.player_stats[stats.HP] = c.hp mapserv.player_stats[stats.MAX_HP] = c.max_hp mapserv.player_stats[stats.MP] = c.mp mapserv.player_stats[stats.MAX_MP] = c.max_mp mapserv.player_stats[stats.WALK_SPEED] = c.speed mapserv.player_stats[stats.LEVEL] = c.level mapserv.player_stats[stats.SKILL_POINTS] = c.skillpoints break if char_slot < 0: err_msg = "CharName {} not found".format(server.char_name) netlog.error(err_msg) server.close() raise Exception(err_msg) else: cmsg_char_select(char_slot)
def smsg_connection_problem(data): error_codes = { 0 : "Authentification failed", 1 : "No servers available", 2 : "Account already in use", 3 : "Speed hack detected", 8 : "Duplicated login", } msg = error_codes.get(data.code, 'code ' + str(data.code)) netlog.error("SMSG_CONNECTION_PROBLEM %d", data.code) raise Exception(msg)
def smsg_login_error(data): error_codes = { 0: "Unregistered ID", 1: "Wrong password", 2: "Account expired", 3: "Rejected from server", 4: "Permban", 5: "Client too old", 6: "Temporary ban until {}".format(data.date), 7: "Server overpopulated", 9: "Username already taken", 10: "Wrong name", 11: "Incurrect email", 99: "Username permanently erased" } netlog.error("SMSG_LOGIN_ERROR {}".format( error_codes.get(data.code, "Unknown error"))) server.close()
def read(self, n=-1): data = '' if n < 0: data = self.read_buffer self.read_buffer = '' else: while len(self.read_buffer) < n: try: self.read_buffer += self.recv(n - len(self.read_buffer)) except socket.error as e: netlog.error("socket.error %s", e) break data = self.read_buffer[:n] self.read_buffer = self.read_buffer[n:] if netlog.isEnabledFor(DEBUG): netlog.debug("read " + ":".join("{:02x}".format(ord(c)) for c in data)) return data
def smsg_char_login_error(data): netlog.error("SMSG_CHAR_LOGIN_ERROR (code={})".format(data.code)) server.close()
def smsg_char_login_error(data): err_msg = "SMSG_CHAR_LOGIN_ERROR (code={})".format(data.code) netlog.error(err_msg) server.close() raise Exception(err_msg)
def smsg_connection_problem(data): error_codes = { 2 : "Account already in use" } msg = error_codes.get(data.code, str(data.code)) netlog.error("SMSG_CONNECTION_PROBLEM {}".format(msg))