Beispiel #1
0
    def march_rally_reinforce(self,
                              uid: int,
                              with_hero: bool,
                              hero_list=None,
                              troop_num=0):
        player_info = self.__request.get_player_data(uid=uid)

        if player_info.aid != self.__data.svr_player.aid or self.__data.svr_player.aid == 0:
            return Response()

        params = MarchSelect(data=self.__data)
        params.choose_hero(with_hero=with_hero, p_hero_list=hero_list)
        params.choose_troop(troop_num=troop_num)

        hero_str = params.march_param.hero_str
        troop_str = params.march_param.troop_str

        target = int(player_info.city_pos)

        cost_time = self.get_march_time(
            march_type=Enum.MarchType.RallyReinforce,
            target=target,
            troops=params.march_param.troop_dict.keys())

        action_id = self.__data.get_rally_action_id(uid)

        if action_id == -1:
            return Response()

        return self.__request.rally_reinforce(cost_time,
                                              pos=target,
                                              hero_list=hero_str,
                                              troop_list=troop_str,
                                              action_id=action_id,
                                              is_attack=True)
Beispiel #2
0
    def alliance_join(self, aid: int, is_invite=0):
        if self.__data.svr_player.aid != 0:
            logging.error("You already have a alliance.")
            return Response()

        else:
            if self.__data.svr_player.aid != 0:
                logging.error("You already have a alliance.")
                return Response()
            else:
                return self.__request.al_join(aid=aid, is_invite=is_invite)
Beispiel #3
0
    def alliance_help(self, uid: int):
        if self.__data.svr_player.aid == 0:
            logging.error("%s : 没有联盟,帮个锤子......" % self.__data.svr_player.uid)
            return False

        if self.__request.get_player_data(
                uid=uid).aid != self.__data.svr_player.aid:
            logging.error("和被帮助的玩家不在同一个联盟,帮个锤子....")
            return False

        action_data = self.__data.svr_al_action_list

        if action_data == {}:
            logging.warning("No Actions")

        for a_id, a_info in action_data.items():
            action_info = ActionInfo(a_info)
            can_help_num = action_info.basic.can_help_num
            helped_num = action_info.basic.helped_num
            if can_help_num > helped_num and can_help_num > 0:
                return self.__request.al_help(aid=self.__data.svr_player.aid,
                                              action_id=int(a_id))
            else:
                logging.error("can_help_num : %s --- helped_num : %s" %
                              (can_help_num, helped_num))
                return Response()
Beispiel #4
0
 def kingdom_move(self, pos: int):
     item_id = 1
     if self.__data.svr_bag.get_own_item_num(item_id) > 0:
         item_price = 0
     else:
         item_price = game_table.get_item(item_id=item_id).item_price
     own_gem = self.__data.svr_login.gem
     if own_gem < item_price:
         return Response()
     old_position = self.__data.svr_player.city_pos
     result = self.__request.move_city_new(item_id, item_price,
                                           old_position,
                                           Enum.MoveCityType.KingdomMove,
                                           pos)
     return result
Beispiel #5
0
	def player_name_change(self, name="") -> Response:
		if name == "":
			name = str(self.__uid)
		else:
			name = "%s%s" % (self.__uid, name)
		
		item_id = 6
		if str(item_id) in self.__data.svr_bag.item_list.keys():
			gem = 0
		else:
			gem = game_table.get_item(item_id=item_id).item_price
		have_gem = self.__data.svr_login.gem
		if have_gem < gem:
			logging.error("gem is too little. gem num : %s " % have_gem)
			return Response()
		else:
			return self.__request.player_name_change(item_id=item_id, name=name, gem=gem)
Beispiel #6
0
 def move_city_new(self,
                   item_id,
                   item_price,
                   old_position,
                   move_type,
                   target_position,
                   move_area=0,
                   target_svr=1,
                   region_svr=0):
     if move_type == MoveCityType.KingdomMove:
         return self.request(command="move_city_new",
                             key0=item_id,
                             key1=item_price,
                             key2=old_position,
                             key3=move_type,
                             key5=target_position)
     elif move_type == MoveCityType.KingdomRandomMove:
         return self.request(command="move_city_new",
                             key0=item_id,
                             key1=item_price,
                             key2=old_position,
                             key3=move_type,
                             key6=region_svr)
     elif move_type == MoveCityType.NewPlayerMove:
         return self.request(command="move_city_new",
                             key0=item_id,
                             key1=item_price,
                             key2=old_position,
                             key3=move_type,
                             key4=target_svr,
                             key5=target_position)
     elif move_type == MoveCityType.KingdomRandomMove:
         return self.request(command="move_city_new",
                             key0=item_id,
                             key1=item_price,
                             key2=old_position,
                             key3=move_type,
                             key4=target_svr,
                             key6=move_area)
     else:
         # TODO Other Move Type
         print("Other Move Type Does Not Support")
         return Response()
Beispiel #7
0
    def march_transport(self, uid: int, rss_list=None):
        # cost_time, pos, rss_list, tax_list
        player_info = self.__request.get_player_data(uid=uid)
        if player_info.aid != self.__data.svr_player.aid or self.__data.svr_player.aid == 0:
            return Response()
        if rss_list is None:
            rss_list = []
            has_rss_list = self.__data.svr_resource.resource
            transport_max = self.__data.get_base_buff_by_id(
                Enum.BuffId.TransportLimit)
            for has_rss in has_rss_list:

                has_rss = int(has_rss * 0.6)

                if has_rss < transport_max:
                    rss_list.append(has_rss)
                    transport_max -= has_rss
                    if transport_max <= 0:
                        break
                else:
                    rss_list.append(transport_max)
                    break

        target = int(player_info.city_pos)
        cost_time = self.get_march_time(march_type=Enum.MarchType.Transport,
                                        target=target,
                                        troops=[])
        tax_rate = self.__data.get_base_buff_by_id(
            Enum.BuffId.TransportRate) / self.__coord_rate
        tax_list = []
        for rss in rss_list:
            tax_list.append(int(rss * tax_rate))
        rss_str = util.list_to_str(rss_list)
        tax_str = util.list_to_str(tax_list)
        return self.__request.transport(cost_time=cost_time,
                                        pos=target,
                                        rss_list=rss_str,
                                        tax_list=tax_str)
Beispiel #8
0
 def op_reset_research_guide(self):
     if config.okc_environment == config.OkcEnvironment.Test:
         return self.request(command="op_reset_research_guide")
     else:
         return Response()