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)
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)
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()
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
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)
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()
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)
def op_reset_research_guide(self): if config.okc_environment == config.OkcEnvironment.Test: return self.request(command="op_reset_research_guide") else: return Response()