Exemple #1
0
 def GetHelper(self, msg):
     helper_conf = GameRule.helper_conf
     fb_friend_factor = helper_conf.get("facebook_friend_factor")
     favorite_factor = helper_conf.get("favorite_factor")
     friend_factor = helper_conf.get("friend_factor")
     helper_num = helper_conf.get("total_num")
     player_id = self.parent.pid
     friend = Friend(player_id=player_id)
     friends = set(friend.get_friend_list())
     favorites = set(friend.get_favorite_list())
     fb_friends = set(friend.get_facebook_list())
     active_players = set(get_latest_login_players())
     normal_p = active_players - friends - fb_friends - set([player_id])
     favorites = favorites - fb_friends
     normal_f = friends - favorites - fb_friends
     # TODO - Design: filter normal_p
     players = (list(fb_friends) * fb_friend_factor +
                list(favorites) * favorite_factor +
                list(normal_f) * friend_factor +
                list(normal_p))
     _players = set(players)
     if len(_players) <= helper_num:
         helper_ids = _players
     else:
         helper_ids = set()
         while len(helper_ids) < helper_num:
             _ids = random.sample(players, helper_num - len(helper_ids))
             helper_ids.update(_ids)
     rep = GetHelperRep()
     helpers = []
     for pid in helper_ids:
         h = Helper()
         player = Player(id=pid).load()
         player.set_info(h.player_info, simple_mode=True)
         h.creature.CopyFrom(player.get_help_creature().to_proto_class())
         helpers.append(h)
     rep.helpers.extend(helpers)
     rep.result_code = GetHelperResultCode.Value("GET_HELPER_SUCCESS")
     return self.resp(rep)
Exemple #2
0
 def generate_proto(self, player_id):
     friend = FriendInfo()
     player = Player(id=player_id).load()
     player.set_info(friend.player_info, simple_mode=True)
     friend.is_favorite = player_id in self.get_favorite_list()
     return friend