コード例 #1
0
ファイル: commands.py プロジェクト: Jakky89/cuwo-mitm
def logout(script):
    if not script.connection.login_id:
        return '[INFO] You are not logged in!'
    database.update_player(script.server.db_con, script.connection.login_id, script.connection.name)
    script.connection.login_id = None
    script.connection.rank = None
    script.connection.rights.update([])
    return 'Successfully logged out.'
コード例 #2
0
ファイル: commands.py プロジェクト: Jakky89/cuwo
def register(script, password=None, repeating=None):
    if not password or not repeating:
        return '[INFO] Use /register <Password> <Password Repeating> to register in order to get your own unique numeric ID.'
    if password != repeating:
        return '[REGISTRATION] Your password does not equal its repeating.'
    regid = database.register_player(script.server.db_con, script.connection.name, script.connection.address.host, password)
    if regid:
        database.update_player(script.server.db_con, regid, script.connection.name)
        return '[REGISTRATION] You can use /login %s %s now everytime you want to login.' % (regid, password)
    return '[ERROR] Registration failed.'
コード例 #3
0
ファイル: commands.py プロジェクト: Jakky89/cuwo
def login(script, id, password):
    if not id or not password:
        return '[INFO] Use /login <ID> <Password> when you are already registered else use /register <Password> <Password Repeating> to register in order to get your own unique numeric ID.'
    try:
        id = int(id)
    except Exception:
        return '[ERROR] Invalid ID given.'
    dbres = database.login_player(script.server.db_con, script.connection.name, id, password)
    if dbres:
        script.connection.login_id = id
        database.update_player(script.server.db_con, id, script.connection.name)
        if not dbres.rank is None:
            script.connection.rights.update(dbres.rank)
            return '[LOGIN] Successfully logged in as %s %s. Your last login name was %s with IP %s.' % (dbres.rank.upper(), script.connection.name, dbres.ingame_name, dbres.last_ip)
        return '[LOGIN] Successfully logged in as %s. Your last login name was %s with IP %s.' % (script.connection.name, dbres.ingame_name, dbres.last_ip)
    else:
        return '[ERROR] To many arguments!'
    return '[ERROR] Login failed.'
コード例 #4
0
ファイル: commands.py プロジェクト: Jakky89/cuwo-mitm
def login(script, id, password):
    if not id or not password:
        return '[INFO] Use /login <ID> <Password> when you are already registered else use /register <Password> <Password Repeating> to register in order to get your own unique numeric ID.'
    try:
        id = int(id)
    except Exception:
        return '[ERROR] Invalid ID given.'
    dbres = database.login_player(script.server.db_con, id, password)
    if dbres:
        script.connection.login_id = id
        database.update_player(script.server.db_con, id, script.connection.name)
        if not dbres[1] is None:
            script.connection.rank = dbres[1].lower()
            user_types = script.server.ranks.get(script.connection.rank, [])
            script.connection.rights.update(user_types)
            return '[LOGIN] Successfully logged in as %s %s. Your last login name was %s with IP %s.' % (script.connection.rank, script.connection.name, dbres[0], dbres[2])
        return '[LOGIN] Successfully logged in as %s. Your last login name was %s with IP %s.' % (script.connection.name, dbres[0], dbres[2])
    else:
        return '[ERROR] Got no database result!'
    return '[ERROR] Login failed.'
コード例 #5
0
ファイル: server.py プロジェクト: Jakky89/cuwo
    def update(self):
        self.scripts.call('update')

        uxtime = reactor.seconds()
        if self.last_secondly_check:
            update_seconds_delta = uxtime - self.last_secondly_check
        else:
            update_seconds_delta = 0

        if update_seconds_delta < 1:
            self.updates_since_last_second += 1
        else:
            ups = math.floor((self.updates_per_second + (self.updates_since_last_second / update_seconds_delta)) / 2)
            self.updates_since_last_second = 0
            if ups != self.updates_per_second:
                dus = ups - self.updates_per_second
                self.updates_per_second = ups
                if dus > 0:
                    print "\rUpdates/s: %s (+%s)" % (ups, dus)
                elif dus < 0:
                    print "\rUpdates/s: %s (-%s)" % (ups, dus)
            for player in self.players.values():
                if player.packet_count > 0:
                    ppr = math.ceil( ( player.packet_rate + ( player.packet_count / update_seconds_delta ) ) / 2 )
                    player.packet_count = 0
                    if ppr != player.packet_rate:
                        dpr = ppr - player.packet_rate
                        player.packet_rate = ppr
                        if dpr > 0:
                            print "\rPackets/s for %s: %s (+%s)" % (player.name, player.packet_rate, dpr)
                        elif dpr < 0:
                            print "\rPackets/s for %s: %s (-%s)" % (player.name, player.packet_rate, dpr)

        # entity updates
        for entity_id, entity in self.entities.iteritems():
            entity_packet.set_entity(entity, entity_id, entity.mask)
            entity.mask = 0
            self.broadcast_packet(entity_packet)
        self.broadcast_packet(update_finished_packet)

        # other updates
        update_packet = self.update_packet
        if self.items_changed:
            for chunk in self.world.chunks.values():
                item_list = ChunkItems()
                item_list.chunk_x = chunk.chunk_x
                item_list.chunk_y = chunk.chunk_y
                item_list.items = chunk.item_list
                update_packet.chunk_items.append(item_list)
                for item in chunk.item_list:
                    item.drop_time = 0
            self.items_changed = False
        self.broadcast_packet(update_packet)
        update_packet.reset()

        if update_seconds_delta != 0:
            for player in self.players.values():
                if player.time_last_packet >= (uxtime - constants.CLIENT_RECV_TIMEOUT):
                    if player.entity_data.changed:
                        player.entity_data.changed = False
                        ret = player.do_anticheat_actions()
                        if (not ret) and player.login_id:
                            database.update_player(self.db_con, player.login_id, player.name)
                else:
                    print '[WARNING] Connection timed out for Player %s #%s' % (player.entity_data.name, player.entity_id)
                    player.kick('Connection timed out')
        self.broadcast_time()