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
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