def help(self, friend_id, building_id): friend_id = int(friend_id) if not FriendManager(self.server_id, self.char_id).check_friend_exist(friend_id): raise GameException( ConfigErrorMessage.get_error_id("FRIEND_NOT_OK")) if not self.get_remained_help_times(): raise GameException( ConfigErrorMessage.get_error_id( "TERRITORY_NO_HELP_FRIEND_TIMES")) if not TerritoryFriend(self.server_id, friend_id).get_remained_got_help_times(): raise GameException( ConfigErrorMessage.get_error_id("TERRITORY_NO_GOT_HELP_TIMES")) t = Territory(self.server_id, friend_id) building = t.get_building_object(building_id, slots_ids=[]) event_id = building.event_id if not event_id: raise GameException( ConfigErrorMessage.get_error_id("TERRITORY_BUILDING_NO_EVENT")) MongoTerritory.db(self.server_id).update_one( {'_id': friend_id}, {'$set': { 'buildings.{0}.event_id'.format(building_id): 0 }}) config = ConfigTerritoryEvent.get(event_id) if not config.npc: resource_classified = ResourceClassification.classify( config.reward_win) resource_classified.add(self.server_id, self.char_id, message="TerritoryFriend.help") # NOTE: 战斗要等到结算的时候再记录次数 ValueLogTerritoryHelpFriendTimes(self.server_id, self.char_id).record() self.send_remained_times_notify() Territory(self.server_id, friend_id).got_help(self.char_id, building_id, config.target_exp) return None, resource_classified npc_club = ConfigNPCFormation.get(config.npc) my_club = Club(self.server_id, self.char_id) f = Formation(self.server_id, self.char_id) match = ClubMatch(my_club, npc_club, 6, f.get_skill_sequence(), {}) msg = match.start() msg.key = "{0}:{1}:{2}".format(friend_id, building_id, event_id) msg.map_name = GlobalConfig.value_string("MATCH_MAP_TERRITORY_FRIEND") return msg, None
def match(self, friend_id): friend_id = int(friend_id) if not self.check_friend_exist(friend_id): raise GameException(ConfigErrorMessage.get_error_id("FRIEND_NOT_OK")) club_one = Club(self.server_id, self.char_id) club_two = Club(self.server_id, friend_id) f_one = Formation(self.server_id, self.char_id) f_two = Formation(self.server_id, self.char_id) match = ClubMatch(club_one, club_two, 6, f_one.get_skill_sequence(), f_two.get_skill_sequence()) msg = match.start() msg.key = "" msg.map_name = GlobalConfig.value_string("MATCH_MAP_FRIEND") friend_match_signal.send( sender=None, server_id=self.server_id, char_id=self.char_id, target_id=friend_id, win=msg.club_one_win ) return msg
def match(self, friend_id): friend_id = int(friend_id) if not self.check_friend_exist(friend_id): raise GameException( ConfigErrorMessage.get_error_id("FRIEND_NOT_OK")) club_one = Club(self.server_id, self.char_id) club_two = Club(self.server_id, friend_id) f_one = Formation(self.server_id, self.char_id) f_two = Formation(self.server_id, self.char_id) match = ClubMatch(club_one, club_two, 6, f_one.get_skill_sequence(), f_two.get_skill_sequence()) msg = match.start() msg.key = "" msg.map_name = GlobalConfig.value_string("MATCH_MAP_FRIEND") friend_match_signal.send(sender=None, server_id=self.server_id, char_id=self.char_id, target_id=friend_id, win=msg.club_one_win) return msg
def one_way_match(_club_one, _club_two, _skill_sequence_one, _skill_sequence_two): _match = ClubMatch(_club_one, _club_two, 3, _skill_sequence_one, _skill_sequence_two) _msg = _match.start(auto_load_staffs=False, check_empty=False) _msg.key = "" _msg.map_name = GlobalConfig.value_string("MATCH_MAP_CHAMPIONSHIP") _req = ClubMatchServerSideRequest() _req.match.MergeFrom(_msg) _data = _req.SerializeToString() _res = requests.post(match_server_url, headers=MATCH_SERVER_REQ_HEADERS, data=_data) response = ClubMatchServerSideResponse() response.ParseFromString(_res.content) if response.star > 0: _win = 1 else: _win = 0 return _win, _msg.SerializeToString(), response.record
def help(self, friend_id, building_id): friend_id = int(friend_id) if not FriendManager(self.server_id, self.char_id).check_friend_exist(friend_id): raise GameException(ConfigErrorMessage.get_error_id("FRIEND_NOT_OK")) if not self.get_remained_help_times(): raise GameException(ConfigErrorMessage.get_error_id("TERRITORY_NO_HELP_FRIEND_TIMES")) if not TerritoryFriend(self.server_id, friend_id).get_remained_got_help_times(): raise GameException(ConfigErrorMessage.get_error_id("TERRITORY_NO_GOT_HELP_TIMES")) t = Territory(self.server_id, friend_id) building = t.get_building_object(building_id, slots_ids=[]) event_id = building.event_id if not event_id: raise GameException(ConfigErrorMessage.get_error_id("TERRITORY_BUILDING_NO_EVENT")) MongoTerritory.db(self.server_id).update_one( {'_id': friend_id}, {'$set': { 'buildings.{0}.event_id'.format(building_id): 0 }} ) config = ConfigTerritoryEvent.get(event_id) if not config.npc: resource_classified = ResourceClassification.classify(config.reward_win) resource_classified.add(self.server_id, self.char_id, message="TerritoryFriend.help") # NOTE: 战斗要等到结算的时候再记录次数 ValueLogTerritoryHelpFriendTimes(self.server_id, self.char_id).record() self.send_remained_times_notify() Territory(self.server_id, friend_id).got_help(self.char_id, building_id, config.target_exp) return None, resource_classified npc_club = ConfigNPCFormation.get(config.npc) my_club = Club(self.server_id, self.char_id) f = Formation(self.server_id, self.char_id) match = ClubMatch(my_club, npc_club, 6, f.get_skill_sequence(), {}) msg = match.start() msg.key = "{0}:{1}:{2}".format(friend_id, building_id, event_id) msg.map_name = GlobalConfig.value_string("MATCH_MAP_TERRITORY_FRIEND") return msg, None
def match_start(self, key, formation_slots=None): try: friend_id, building_id, event_id = key.split(':') friend_id = int(friend_id) building_id = int(building_id) event_id = int(event_id) except: raise GameException(ConfigErrorMessage.get_error_id("BAD_MESSAGE")) f = Formation(self.server_id, self.char_id) if formation_slots: f.sync_slots(formation_slots) config = ConfigTerritoryEvent.get(event_id) npc_club = ConfigNPCFormation.get(config.npc) my_club = Club(self.server_id, self.char_id) match = ClubMatch(my_club, npc_club, 6, f.get_skill_sequence(), {}) msg = match.start() msg.key = "{0}:{1}:{2}".format(friend_id, building_id, event_id) msg.map_name = GlobalConfig.value_string("MATCH_MAP_TERRITORY_FRIEND") return msg
def match(self, formation_slots=None): doc = MongoArena.db(self.server_id).find_one( {'_id': str(self.char_id)}, {'rival': 1}) rival_id = doc['rival'] if not rival_id: raise GameException( ConfigErrorMessage.get_error_id("ARENA_MATCH_NO_RIVAL")) f = Formation(self.server_id, self.char_id) if formation_slots: f.sync_slots(formation_slots) self.check_and_buy_times() club_one = Club(self.server_id, self.char_id) club_two = ArenaClub(self.server_id, rival_id) club_match = ClubMatch(club_one, club_two, 6, f.get_skill_sequence(), {}) msg = club_match.start() msg.key = rival_id msg.map_name = GlobalConfig.value_string("MATCH_MAP_ARENA") return msg
def match(self, formation_slots=None): doc = MongoArena.db(self.server_id).find_one( {'_id': str(self.char_id)}, {'rival': 1} ) rival_id = doc['rival'] if not rival_id: raise GameException(ConfigErrorMessage.get_error_id("ARENA_MATCH_NO_RIVAL")) f = Formation(self.server_id, self.char_id) if formation_slots: f.sync_slots(formation_slots) self.check_and_buy_times() club_one = Club(self.server_id, self.char_id) club_two = ArenaClub(self.server_id, rival_id) club_match = ClubMatch(club_one, club_two, 6, f.get_skill_sequence(), {}) msg = club_match.start() msg.key = rival_id msg.map_name = GlobalConfig.value_string("MATCH_MAP_ARENA") return msg
def plunder_start(self, _id, tp, formation_slots=None, win=None): if tp not in [PLUNDER_TYPE_PLUNDER, PLUNDER_TYPE_REVENGE]: raise GameException(ConfigErrorMessage.get_error_id("BAD_MESSAGE")) for i in [0, 1, 2]: if self.doc['matching']['result'][i] == 0: way = i + 1 break else: # 都打完了 raise GameException( ConfigErrorMessage.get_error_id("PLUNDER_MATCH_ALL_FINISHED")) target_id = self.doc['matching']['id'] if not target_id: if tp == PLUNDER_TYPE_PLUNDER: _index = self.find_search_target_index_by_target_id(_id) target_id = self.doc['search'][_index]['id'] else: _index = self.find_revenge_target_index_by_target_id(_id) target_id = self.doc['revenge_list'][_index][0] else: # 要保证target_id 一样 if str(target_id) != _id: raise GameException( ConfigErrorMessage.get_error_id( "PLUNDER_TARGET_ID_NOT_SAME")) updater = {} if not self.doc['matching']['id']: self.doc['matching']['id'] = target_id self.doc['matching']['tp'] = tp updater['matching.id'] = target_id updater['matching.tp'] = tp if way == 1: # 开始的第一路,这时候要判断次数 if tp == PLUNDER_TYPE_PLUNDER: if not self.doc['plunder_remained_times']: self.buy_plunder_times() PlunderMatchCD(self.server_id, self.char_id, target_id).set( GlobalConfig.value("PLUNDER_MATCH_CD")) else: if not self.get_revenge_remained_times(): raise GameException( ConfigErrorMessage.get_error_id( "PLUNDER_REVENGE_NO_TIMES")) self.send_revenge_notify() if updater: MongoPlunder.db(self.server_id).update_one({'_id': self.char_id}, {'$set': updater}) if win is not None: self.plunder_report(way, win) return None my_way = self.get_way_object(way) if formation_slots: my_way.sync_slots(formation_slots) my_way.load_formation_staffs() self.send_formation_notify() my_club = Club(self.server_id, self.char_id, load_staffs=False) my_club.formation_staffs = my_way.formation_staffs match = ClubMatch(my_club, None, 3, my_way.get_skill_sequence(), {}) msg = match.start(auto_load_staffs=False) msg.key = str(way) msg.map_name = GlobalConfig.value_string("MATCH_MAP_PLUNDER") return msg
def plunder_start(self, _id, tp, formation_slots=None, win=None): if tp not in [PLUNDER_TYPE_PLUNDER, PLUNDER_TYPE_REVENGE]: raise GameException(ConfigErrorMessage.get_error_id("BAD_MESSAGE")) for i in [0, 1, 2]: if self.doc['matching']['result'][i] == 0: way = i + 1 break else: # 都打完了 raise GameException(ConfigErrorMessage.get_error_id("PLUNDER_MATCH_ALL_FINISHED")) target_id = self.doc['matching']['id'] if not target_id: if tp == PLUNDER_TYPE_PLUNDER: _index = self.find_search_target_index_by_target_id(_id) target_id = self.doc['search'][_index]['id'] else: _index = self.find_revenge_target_index_by_target_id(_id) target_id = self.doc['revenge_list'][_index][0] else: # 要保证target_id 一样 if str(target_id) != _id: raise GameException(ConfigErrorMessage.get_error_id("PLUNDER_TARGET_ID_NOT_SAME")) updater = {} if not self.doc['matching']['id']: self.doc['matching']['id'] = target_id self.doc['matching']['tp'] = tp updater['matching.id'] = target_id updater['matching.tp'] = tp if way == 1: # 开始的第一路,这时候要判断次数 if tp == PLUNDER_TYPE_PLUNDER: if not self.doc['plunder_remained_times']: self.buy_plunder_times() PlunderMatchCD(self.server_id, self.char_id, target_id).set(GlobalConfig.value("PLUNDER_MATCH_CD")) else: if not self.get_revenge_remained_times(): raise GameException(ConfigErrorMessage.get_error_id("PLUNDER_REVENGE_NO_TIMES")) self.send_revenge_notify() if updater: MongoPlunder.db(self.server_id).update_one( {'_id': self.char_id}, {'$set': updater} ) if win is not None: self.plunder_report(way, win) return None my_way = self.get_way_object(way) if formation_slots: my_way.sync_slots(formation_slots) my_way.load_formation_staffs() self.send_formation_notify() my_club = Club(self.server_id, self.char_id, load_staffs=False) my_club.formation_staffs = my_way.formation_staffs match = ClubMatch(my_club, None, 3, my_way.get_skill_sequence(), {}) msg = match.start(auto_load_staffs=False) msg.key = str(way) msg.map_name = GlobalConfig.value_string("MATCH_MAP_PLUNDER") return msg