예제 #1
0
    def _get_arena_rank(self, status, data, arena):
        """获得玩家竞技场的排名
        """
        assert status is True

        cache_proxy = DataProxy()
        #查询玩家所在房间的第一名
        (min_score, max_score) = ArenaInfo.get_index_score_range(arena.index)
        cache_proxy.search_by_rank_score(
                "arena", "score", min_score, max_score, 0, 1)
        #查询玩家所在房间人数
        cache_proxy.search_rank_score_count(
                "arena", "score", min_score, max_score)
        defer = cache_proxy.execute()
        defer.addCallback(self._select_arena_rank, data, min_score, max_score)
        return defer
예제 #2
0
    def _match_pvp(self, status, country):
        """匹配 pvp 对手
        """
        assert status is True
        if len(self._pvp_players) <= 0:
            return True

        cache_proxy = DataProxy()

        #查询战力范围内的玩家数量
        for rival in self._pvp_players:
            logger.debug("Match PVP[rival id=%d]" % rival.id)
            cache_proxy.search_rank_score_count(
                    "guard", "score", rival.score_min, rival.score_max)

        defer = cache_proxy.execute()
        defer.addCallback(self._pre_select_pvp_rival)
        defer.addCallback(self._filter_pvp_rival)
        defer.addCallback(self._calc_pvp_rival_info, country)
        return defer