예제 #1
0
    def _calc_union_season_battle_individual(self, data, req, timer):
        if req.start_index < 1 or req.start_index > req.end_index:
            raise Exception("Ranking req error")

        req.end_index = 50  #TODO 客户端赋值错误,临时方案,待客户端修复
        proxy = DataProxy()
        proxy.search_ranking("union", "season_score", data.id)
        proxy.search_by_rank("union", "season_score", req.start_index - 1,
                             min(20, req.end_index - 1))
        defer = proxy.execute()

        defer.addCallback(self._calc_union_season_battle_individual_post, data,
                          req, timer)
        defer.addCallback(self._query_succeed, req, timer)
        return defer
예제 #2
0
    def _query_worldboss_ranking(self, user_id, req, timer):
        if req.start_index < 1 or req.start_index > req.end_index:
            raise Exception("Ranking req error")

        proxy = DataProxy()

        proxy.search("worldboss", user_id)  #先查玩家自己的worldboss
        proxy.search_ranking("worldboss", "merit", user_id)  #先查玩家自己的排名
        proxy.search_by_rank("worldboss", "merit", req.start_index - 1,
                             req.end_index - 1)
        defer = proxy.execute()

        defer.addCallback(self._calc_query_worldboss_ranking, user_id, req,
                          timer)
        defer.addErrback(self._query_worldboss_ranking_failed, req, timer)
        return defer
예제 #3
0
    def _query_activity_hero_ranking(self, user_id, req, timer):
        if req.start_index < 1 or req.start_index > req.end_index:
            raise Exception("Ranking req error")

        proxy = DataProxy()

        proxy.search("draw", user_id)  #先查玩家自己的draw
        proxy.search_ranking("draw", "activity_scores", user_id)  #先查玩家自己的排名
        proxy.search_by_rank("draw", "activity_scores", req.start_index - 1,
                             req.end_index - 1)
        defer = proxy.execute()

        defer.addCallback(self._calc_query_activity_hero_ranking, user_id, req,
                          timer)
        defer.addErrback(self._query_activity_hero_ranking_failed, req, timer)
        return defer
예제 #4
0
    def _query_anneal_hard_mode_ranking(self, user_id, req, timer):
        if req.start_index < 1 or req.start_index > req.end_index:
            raise Exception("Ranking req error")

        proxy = DataProxy()

        proxy.search("anneal", user_id)  #先查玩家自己的anneal
        proxy.search_ranking("anneal", "hard_floor", user_id)  #先查玩家自己的排名
        proxy.search_by_rank("anneal", "hard_floor", req.start_index - 1,
                             req.end_index - 1)
        defer = proxy.execute()

        defer.addCallback(self._calc_query_anneal_hard_mode_ranking, user_id,
                          req, timer)
        defer.addErrback(self._query_anneal_hard_mode_ranking_failed, req,
                         timer)
        return defer
예제 #5
0
    def _query_kill_enemy_ranking(self, user_id, req, timer):
        if req.start_index < 1 or req.start_index > req.end_index:
            raise Exception("Ranking req error")

        proxy = DataProxy()

        proxy.search("trainer", user_id)  #先查玩家自己的battle
        proxy.search_ranking("trainer", "kills", user_id)  #先查玩家自己的排名
        proxy.search_by_rank("trainer", "kills", req.start_index - 1,
                             req.end_index - 1)
        defer = proxy.execute()

        defer.addCallback(self._calc_query_kill_enemy_ranking, user_id, req,
                          timer)
        defer.addErrback(self._query_kill_enemy_ranking_failed, user_id, req,
                         timer)
        return defer
예제 #6
0
    def get_ranking(self, union_id, user_id):
        """查询联盟赛季排名
        """
        self.union_id = union_id
        self.user_id = user_id

        proxy = DataProxy()
        proxy.search_ranking("unionseason", "score", union_id)
        proxy.search_ranking("union", "season_score", user_id)
        proxy.execute(asyn=False)
        self.union_ranking = proxy.get_ranking("unionseason", "score",
                                               union_id)
        self.individual_ranking = proxy.get_ranking("union", "season_score",
                                                    user_id)

        print self.union_ranking
        print self.individual_ranking
        return (self.union_ranking, self.individual_ranking)
예제 #7
0
    def _calc_union_season_battle(self, data, req, timer):
        if req.start_index < 1 or req.start_index > req.end_index:
            raise Exception("Ranking req error")

        union = data.union.get(True)

        proxy = DataProxy()
        if union.is_belong_to_union():
            proxy.search_ranking("unionseason", "score", union.union_id)
            proxy.search("unionseason", union.union_id)
        proxy.search_by_rank("unionseason", "score", req.start_index - 1,
                             req.end_index - 1)
        defer = proxy.execute()

        defer.addCallback(self._calc_union_season_battle_post, data, req,
                          timer)
        defer.addCallback(self._query_succeed, req, timer)
        return defer
예제 #8
0
    def _select_arena_rank(self, proxy, data, min_score, max_score):
        #获得本房间第一名的user_id
        arena_list = proxy.get_rank_score_result("arena", "score",
                min_score, max_score, 0, 1)
        assert len(arena_list) == 1
        first_user_id = arena_list[0].user_id
        #房间人数
        self.users_count = proxy.get_rank_score_count("arena", "score",
                min_score, max_score)

        cache_proxy = DataProxy()

        #查询本房间第一名在总榜中的排名
        cache_proxy.search_ranking("arena", "score", first_user_id)
        #查询自己在总榜中的排名
        cache_proxy.search_ranking("arena", "score", data.id)

        defer = cache_proxy.execute()
        defer.addCallback(self._calc_arena_rank, data, first_user_id)
        return defer
예제 #9
0
    def _query_melee_ranking(self, user_id, req, timer):

        cache_proxy = DataProxy()

        cache_proxy.search("melee", user_id)  #先查玩家自己的melee

        cache_proxy.search_ranking("melee", "score", user_id)  #先查玩家自己的排名
        #拿到房间的积分范围
        scores_range = []
        range = MeleeInfo.get_index_score_range(MeleeInfo.MELEE_INDEX)
        scores_range.append(range)

        for range in scores_range:
            cache_proxy.search_by_rank_score("melee", "score", range[0],
                                             range[1], 0, MELEE_COUNT)

        defer = cache_proxy.execute()
        defer.addCallback(self._calc_query_melee_ranking, user_id,
                          scores_range, req, timer)
        return defer
예제 #10
0
    def _patch_ranking_info(self, message, data, now):
        """补充双方联盟的排名信息,个人排名
        """
        proxy = DataProxy()
        #联盟赛季胜场积分排名
        proxy.search_ranking("unionseason", "score", message.union_id)
        if message.rival_union_id != 0:
            proxy.search_ranking("unionseason", "score",
                                 message.rival_union_id)

        #联盟赛季个人战功排名
        proxy.search_ranking("union", "season_score", data.id)
        defer = proxy.execute()
        defer.addCallback(self._patch_post, message, data, now)
        return defer
예제 #11
0
파일: activity.py 프로젝트: hw233/test-2
def _get_worldboss_ranking(user_id, rankings):
    proxy = DataProxy()
    proxy.search_ranking("worldboss", "merit", user_id)   #查玩家自己的排名
    defer = proxy.execute()
    defer.addCallback(_calc_get_worldboss_ranking, user_id, rankings)
    return defer