def settle(self, result, response, star_num=0): """ 战斗结算 """ player = self._player stage_id = self._stage_id conf = self.get_stage_config() # todo: 更新战斗次数 # 体力 if result: #player.stamina.stamina -= conf.vigor player.finance.consume(const.STAMINA, conf.vigor, const.STAGE) player.finance.save_data() player.stamina.save_data() # 活跃度 # 结算 stage_util.settle(player, result, response, conf, star_num=star_num) # hook task hook_task(player, CONDITIONId.ANY_STAGE, 1) hook_task(player, CONDITIONId.STAGE, stage_id) # 更新 七日奖励 target_update(player, [45]) tlog_action.log('RoundFlow', player, stage_id, 1, 0, 1) else: tlog_action.log('RoundFlow', player, stage_id, 1, 0, 0)
def settle_1252(data, player): request = mine_pb2.MineSettleRequest() response = common_pb2.CommonResponse() request.ParseFromString(data) pos = request.pos result = request.result is_pvp = player.mine.is_pvp(pos) # 根据矿所在位置判断pve or pvp logger.debug("pos %s, mine_info %s" % (pos, is_pvp)) pve_check_result = pve_process_check(player, result, request.steps, const.BATTLE_MINE_PVE) if is_pvp is False and not pve_check_result: logger.error("mine pve_process_check error!!!!!") res = response.res res.result = False res.result_no = 9041 return response.SerializePartialToString() # todo: set settle time to calculate acc_mine process_mine_result(player, pos, result, None, 0, 1) # 7日奖励 占领矿点 mine_id = player.mine._mine[pos].get("mine_id") mine_item = game_configs.mine_config.get(mine_id) logger.debug("mine_id %s mine_item %s" % (mine_id, mine_item)) if mine_item: player.act.mine_win(mine_item.quality) target_update(player, [57]) response.result = True return response.SerializePartialToString()
def change_hero(self, slot_no, hero_no, change_type): """更换阵容主将 @param slot_no: @param hero_no: @:param change_type: 0:阵容 1:助威 @return: """ if not change_type: slot_obj = self._line_up_slots.get(slot_no) else: slot_obj = self._sub_slots.get(slot_no) origin_hero_no = slot_obj.hero_slot.hero_no origin_hero = self.owner.hero_component.get_hero(origin_hero_no) if origin_hero: origin_hero.is_online = False else: origin_hero_no = 0 slot_obj.change_hero(hero_no) if hero_no == 0 and slot_no == self.caption_pos: # 队长下阵,更改队长 self.remove_caption_hero() target_hero = self.owner.hero_component.get_hero(hero_no) if hero_no != 0: assert target_hero != None, "change hero can not be None!" target_hero.is_online = True # 更新 七日奖励 target_update(self.owner, [55]) tlog_action.log('LineUpChange', self.owner, slot_no, origin_hero_no, hero_no, change_type)
def change_hero(self, slot_no, hero_no, change_type): """更换阵容主将 @param slot_no: @param hero_no: @:param change_type: 0:阵容 1:助威 @return: """ if not change_type: slot_obj = self._line_up_slots.get(slot_no) else: slot_obj = self._sub_slots.get(slot_no) origin_hero_no = slot_obj.hero_slot.hero_no origin_hero = self.owner.hero_component.get_hero(origin_hero_no) if origin_hero: origin_hero.is_online = False else: origin_hero_no = 0 slot_obj.change_hero(hero_no) if hero_no == 0 and slot_no == self.caption_pos: # 队长下阵,更改队长 self.remove_caption_hero() target_hero = self.owner.hero_component.get_hero(hero_no) if hero_no != 0: assert target_hero != None, "change hero can not be None!" target_hero.is_online = True # 更新 七日奖励 target_update(self.owner, [55]) tlog_action.log('LineUpChange', self.owner, slot_no, origin_hero_no, hero_no, change_type)
def settle(self, result, response, star_num=0): """ 战斗结算 """ player = self._player stage_id = self._stage_id conf = self.get_stage_config() # todo: 更新战斗次数 # 体力 if result: #player.stamina.stamina -= conf.vigor player.finance.consume(const.STAMINA, conf.vigor, const.STAGE) player.finance.save_data() player.stamina.save_data() # 活跃度 # 结算 stage_util.settle(player, result, response, conf, star_num=star_num) # hook task hook_task(player, CONDITIONId.ANY_STAGE, 1) hook_task(player, CONDITIONId.STAGE, stage_id) # 更新 七日奖励 target_update(player, [45]) tlog_action.log('RoundFlow', player, stage_id, 1, 0, 1) else: tlog_action.log('RoundFlow', player, stage_id, 1, 0, 0)
def one_key_hero_upgrade_with_item_120(data, player): """阵容界面武将一键升级""" args = hero_request_pb2.HeroRequest() args.ParseFromString(data) response = hero_response_pb2.OneKeyHeroUpgradeRespone() hero_no = args.hero_no # 服务器验证 res = one_key_hero_upgrade_logic(hero_no, player) if not res.get("result"): response.res.result = res.get("result") response.res.result_no = res.get("result_no") return response.SerializeToString() # 返回 hero = res.get("hero") response.res.result = True response.level = hero.level response.exp = hero.exp response.exp_item_num.append(res.get('small_exp_num')) response.exp_item_num.append(res.get('middle_exp_num')) response.exp_item_num.append(res.get('big_exp_num')) # 更新 七日奖励 target_update(player, [55]) # logger.debug(res) # logger.debug(response) return response.SerializeToString()
def change_equipment(slot_no, no, equipment_id, player): """ @param dynamic_id: 动态ID @param slot_no: 阵容位置 @param no: 装备位置 @param equipment_id: 装备ID @return: """ # logger.debug("change equipment id %s %s %s", slot_no, no, equipment_id) if is_not_open(player, FO_CHANGE_EQUIPMENT): return {"result": False, "result_no": 837} # 检验装备是否存在 if equipment_id != '0' and not check_have_equipment(player, equipment_id): logger.debug("1check_have_equipment %s", equipment_id) return {"result": False, "result_no": 702} # 校验该装备是否已经装备 if equipment_id != '0' and equipment_id in player.line_up_component.on_equipment_ids: logger.debug("2check_have_equipment") return {"result": False, "result_no": 703} # 校验装备类型 if not player.line_up_component.change_equipment(slot_no, no, equipment_id): logger.debug("3check_have_equipment") return {"result": False, "result_no": 704} player.line_up_component.save_data() # 更新 七日奖励 target_update(player, [55]) return {"result": True}
def runt_set_841(data, player): """镶嵌符文""" args = RuntSetRequest() args.ParseFromString(data) hero_no = args.hero_no runt_type = args.runt_type runt_set_infos = args.runt_set_info response = RuntSetResponse() if is_not_open(player, FO_RUNT_ADD): response.res.result = False response.res.result_no = 837 return response.SerializeToString() hero = player.hero_component.get_hero(hero_no) for runt_set_info in runt_set_infos: runt_po = runt_set_info.runt_po runt_no = runt_set_info.runt_no if runt_po > game_configs.base_config.get('totemSpaceNum'+str(runt_type)): response.res.result = False response.res.result_no = 827 return response.SerializeToString() if hero.runt.get(runt_type): if hero.runt.get(runt_type).get(runt_po): response.res.result = False response.res.result_no = 821 return response.SerializeToString() else: hero.runt[runt_type] = {} runt_info = player.runt.m_runt.get(runt_no) if not runt_info: response.res.result = False response.res.result_no = 825 return response.SerializeToString() now = int(time.time()) for runt_set_info in runt_set_infos: runt_po = runt_set_info.runt_po runt_no = runt_set_info.runt_no runt_info = player.runt.m_runt.get(runt_no) hero.runt.get(runt_type)[runt_po] = [runt_no] + runt_info player.runt.reduce_runt(runt_no) tlog_action.log('HeroRuntSet', player, hero_no, now, runt_no, runt_po, runt_info[0]) target_update(player, [55]) hero.save_data() player.runt.save() response.res.result = True return response.SerializeToString()
def reset_1242(data, player): """ 重置地图,ok """ request = mine_pb2.resetMap() request.ParseFromString(data) response = mine_pb2.resetResponse() response.free = request.free # print '1242-request', request reset_pos = [] if request.free == 1: if player.mine.can_reset_free(): reset_pos = player.mine.reset_map() mine_status(player, response.mine) response.res.result = True else: response.res.result = False response.res.result_no = 12420 response.res.message = u"免费次数已用完" else: if not player.mine.can_reset(): response.res.result = False response.res.result_no = 12421 response.res.message = u"重置次数已用完" else: reset_price = player.mine.reset_price() price = CommonGroupItem(0, reset_price, reset_price, const.GOLD) result = item_group_helper.is_afford(player, [price]) # 校验 if not result.get('result'): response.res.result = False response.res.result_no = result.get('result_no') response.res.message = u'消费不足!' else: need_gold = item_group_helper.get_consume_gold_num([price]) def func(): consume_data = item_group_helper.consume(player, [price], const.MINE_RESET) item_group_helper.get_return(player, consume_data, response.consume) reset_pos = player.mine.reset_map() mine_status(player, response.mine) response.res.result = True player.pay.pay(need_gold, const.MINE_RESET, func) player.mine.save_data() player.act.mine_refresh() target_update(player, [56]) reset_times, _, _ = player.mine.reset_times tlog_action.log('MineReset', player, reset_times, str(reset_pos)) return response.SerializePartialToString()
def level(self, value): if self._level != value: logger.info('player id:%s level up ++ %s>>%s', self.id, self._level, value) # hook task hook_task(self.owner, CONDITIONId.LEVEL, self._level) target_update(self.owner, [43]) self._level = value tb_character_level.zadd(self._level, self.id) # feature open if feature_open.is_not_open(self.owner, feature_open.FO_MINE): self.owner.mine.reset_data()
def harvest_1245(data, player): """ 收获符文石,待测试 """ request = mine_pb2.positionRequest() request.ParseFromString(data) response = mine_pb2.drawStones() response.position = request.position detail_info = player.mine.detail_info(request.position) normal = detail_info['normal'] lucky = detail_info['lucky'] num = sum(normal.values()) + sum(lucky.values()) if player.runt.bag_is_full(num): response.res.result = False response.res.result_no = 124501 logger.error('mine harvest bag is full!') return response.SerializePartialToString() normal, lucky = player.mine.harvest(request.position) if normal: if not add_stones(player, normal, response.normal): response.res.result = False response.res.result_no = 124502 logger.error('mine harvest add stones fail!') return response.SerializePartialToString() if not add_stones(player, lucky, response.lucky): response.res.result = False response.res.result_no = 124503 logger.error('mine harvest add stones fail!') return response.SerializePartialToString() else: response.res.result = False response.res.result_no = 124504 response.res.message = u"没有可以领取的符文石" logger.error('mine harvest no stones to harvest!') return response.SerializePartialToString() player.mine.save_data() player.runt.save() player.act.mine_get_runt() target_update(player, [58]) hook_task(player, CONDITIONId.GAIN_RUNT, 1) tlog_action.log('MineHarvest', player, request.position, str(normal), str(lucky)) response.res.result = True logger.debug('mine harvest:%s', response) return response.SerializePartialToString()
def enhance_equipment_402(pro_data, player): """强化装备 @param dynamic_id: @param pro_data: @return: """ request = equipment_request_pb2.EnhanceEquipmentRequest() request.ParseFromString(pro_data) equipment_id = request.id enhance_type = request.type response = equipment_response_pb2.EnhanceEquipmentResponse() enhance_info = enhance_equipment(equipment_id, enhance_type, player) result = enhance_info.get('result') res = response.res res.result = result if not result: res.result_no = enhance_info.get('result_no') res.message = enhance_info.get('message') return response.SerializePartialToString() enhance_record = enhance_info.get('enhance_record') # flag = 1 # data_format.cost_coin = 0 for before_lv, after_lv, enhance_cost in enhance_record: data_format = response.data.add() # if flag == 1: # data_format.before_lv = before_lv # flag = 2 data_format.before_lv = before_lv data_format.after_lv = after_lv data_format.cost_coin = enhance_cost logger.debug("before_lv %s after_lv %s " % (before_lv, after_lv)) tlog_action.log('EquipmentEnhance', player, enhance_info.get('equipment_no'), equipment_id, before_lv, after_lv) # logger.debug(response.data) # logger.debug("response.data===================") response.num = enhance_info.get("num") # 更新 七日奖励 target_update(player, [36]) return response.SerializePartialToString()
def enhance_equipment_402(pro_data, player): """强化装备 @param dynamic_id: @param pro_data: @return: """ request = equipment_request_pb2.EnhanceEquipmentRequest() request.ParseFromString(pro_data) equipment_id = request.id enhance_type = request.type response = equipment_response_pb2.EnhanceEquipmentResponse() enhance_info = enhance_equipment(equipment_id, enhance_type, player) result = enhance_info.get('result') res = response.res res.result = result if not result: res.result_no = enhance_info.get('result_no') res.message = enhance_info.get('message') return response.SerializePartialToString() enhance_record = enhance_info.get('enhance_record') # flag = 1 # data_format.cost_coin = 0 for before_lv, after_lv, enhance_cost in enhance_record: data_format = response.data.add() # if flag == 1: # data_format.before_lv = before_lv # flag = 2 data_format.before_lv = before_lv data_format.after_lv = after_lv data_format.cost_coin = enhance_cost logger.debug("before_lv %s after_lv %s " % (before_lv, after_lv)) tlog_action.log('EquipmentEnhance', player, enhance_info.get('equipment_no'), equipment_id, before_lv, after_lv) # logger.debug(response.data) # logger.debug("response.data===================") response.num = enhance_info.get("num") # 更新 七日奖励 target_update(player, [36]) return response.SerializePartialToString()
def recharge_gain(self, recharge_item, response, channel, is_tencent=False): """ 充值掉落 """ logger.debug("recharge_gain========1") isfirst = 0 if not is_tencent: return_data = gain(self._owner, recharge_item.get('setting'), const.RECHARGE) # 获取 get_return(self._owner, return_data, response.gain) if recharge_item.get('type') == 2: logger.debug("recharge_gain========") rebate_call(self._owner, recharge_item) self._owner.recharge.send_mail(recharge_item) # 发送奖励邮件 else: rres = self._owner.base_info.first_recharge(recharge_item, response) if rres: # 首次充值 isfirst = 1 self._owner.recharge.send_mail(recharge_item) # 发送奖励邮件 tlog_action.log('Recharge', self._owner, isfirst, recharge_item.get('id'), channel) charge_num = recharge_item.get('activity') # 充值元宝数量 # vip self._owner.base_info.recharge += charge_num self._owner.base_info.max_single_recharge = max( charge_num, self._owner.base_info.max_single_recharge) self._owner.base_info.set_vip_level(self._owner.base_info.recharge) self._owner.act.condition_add(44, charge_num) # 更新 七日奖励 target_update(self.owner, [44]) # 活动 self._owner.recharge.charge(charge_num) if not is_tencent: self._owner.recharge.get_recharge_response( response.info) # recharge
def hero_break_104(data, player): """武将突破""" args = hero_request_pb2.HeroBreakRequest() args.ParseFromString(data) hero_no = args.hero_no response = hero_response_pb2.HeroBreakResponse() res = hero_break_logic(hero_no, player, response) if not res.get('result'): response.res.result = False response.res.result_no = res.get('result_no') return response.SerializeToString() # 更新 七日奖励 target_update(player, [55]) response.res.result = True response.break_level = res.get("break_level") response.break_item_num = res.get("break_item_num") return response.SerializeToString()
def compose_rob_treasure_860(data, player): """夺宝合成""" args = rob_treasure_pb2.ComposeTreasureRequest() args.ParseFromString(data) treasure_id = args.treasure_id response = rob_treasure_pb2.ComposeTreasureResponse() chips = game_configs.chip_config.get('map').get(treasure_id) for chip_no in chips: chip = player.equipment_chip_component.get_chip(chip_no) # 没有碎片 if not chip: logger.error('rob_treasure_truce_841, use item times not enough') response.res.result = False response.res.result_no = 8601 return response.SerializeToString() compose_num = chip.compose_num chip_num = chip.chip_num # 碎片不足 if chip_num < compose_num: logger.error('rob_treasure_truce_841, use item times not enough') response.res.result = False response.res.result_no = 8601 return response.SerializeToString() equipment_obj = player.equipment_component.add_equipment(treasure_id) for chip_no in chips: chip = player.equipment_chip_component.get_chip(chip_no) chip.chip_num -= compose_num player.equipment_chip_component.save_data() player.act.add_treasure(equipment_obj.equipment_config_info.type, equipment_obj.equipment_config_info.quality) target_update(player, [60, 61, 62, 63]) equ = response.equ equipment_obj.update_pb(equ) tlog_action.log('ComposeTreasure', player, equipment_obj.base_info.id, treasure_id) response.res.result = True return response.SerializeToString()
def compose_rob_treasure_860(data, player): """夺宝合成""" args = rob_treasure_pb2.ComposeTreasureRequest() args.ParseFromString(data) treasure_id = args.treasure_id response = rob_treasure_pb2.ComposeTreasureResponse() chips = game_configs.chip_config.get('map').get(treasure_id) for chip_no in chips: chip = player.equipment_chip_component.get_chip(chip_no) # 没有碎片 if not chip: logger.error('rob_treasure_truce_841, use item times not enough') response.res.result = False response.res.result_no = 8601 return response.SerializeToString() compose_num = chip.compose_num chip_num = chip.chip_num # 碎片不足 if chip_num < compose_num: logger.error('rob_treasure_truce_841, use item times not enough') response.res.result = False response.res.result_no = 8601 return response.SerializeToString() equipment_obj = player.equipment_component.add_equipment(treasure_id) for chip_no in chips: chip = player.equipment_chip_component.get_chip(chip_no) chip.chip_num -= compose_num player.equipment_chip_component.save_data() player.act.add_treasure(equipment_obj.equipment_config_info.type, equipment_obj.equipment_config_info.quality) target_update(player, [60, 61, 62, 63]) equ = response.equ equipment_obj.update_pb(equ) tlog_action.log('ComposeTreasure', player, equipment_obj.base_info.id, treasure_id) response.res.result = True return response.SerializeToString()
def hero_upgrade_with_item_103(data, player): """武将升级,使用经验药水""" args = hero_request_pb2.HeroUpgradeWithItemRequest() args.ParseFromString(data) response = hero_response_pb2.HeroUpgradeResponse() hero_no = args.hero_no exp_item_no = args.exp_item_no exp_item_num = args.exp_item_num # 服务器验证 res = hero_upgrade_with_item_logic(hero_no, exp_item_no, exp_item_num, player) if not res.get("result"): response.res.result = res.get("result") response.res.result_no = res.get("result_no") return response.SerializeToString() # 返回 hero = res.get("hero") response.res.result = True response.level = hero.level response.exp = hero.exp # 更新 七日奖励 target_update(player, [55]) return response.SerializeToString()
def pvp_overcome_current(self, value): self._pvp_overcome_current = value # 更新 七日奖励 target_update(self.owner, [35])
def pvp_high_rank(self, value): if value < self._pvp_high_rank: self._pvp_high_rank = value # 更新 七日奖励 target_update(self.owner, [33])
def battle_2103(pro_data, player): """ 开始战斗 request:HjqyBattleRequest response:HjqyBattleResponse """ request = hjqy_pb2.HjqyBattleRequest() request.ParseFromString(pro_data) response = hjqy_pb2.HjqyBattleResponse() if player.base_info.is_firstday_from_register(const.OPEN_FEATURE_HJQY): response.res.result = False response.res.result_no = 150901 return response.SerializeToString() boss_id = request.owner_id attack_type = request.attack_type # 全力一击,普通攻击 logger.debug("request %s" % request) hjqyExchangeBUFFTime = game_configs.base_config.get("hjqyExchangeBUFFTime") hjqyItemRate = game_configs.base_config.get("hjqyItemRate") hjqyExchangeBUFFNumber = game_configs.base_config.get( "hjqyExchangeBUFFNumber") hjqyExchangeNumber = game_configs.base_config.get("hjqyExchangeNumber") need_hjqy_fight_token = hjqyExchangeNumber if attack_type == 2: need_hjqy_fight_token = hjqyExchangeBUFFNumber if is_in_period(hjqyExchangeBUFFTime) and attack_type == 2: need_hjqy_fight_token = need_hjqy_fight_token * hjqyItemRate if need_hjqy_fight_token > player.finance[const.HJQYFIGHTTOKEN]: logger.error("hjqy coin not enough!") response.res.result = False response.res.result_no = 210301 return response.SerializePartialToString() data = remote_gate['world'].get_boss_info_remote(boss_id) if not data or data.get('state') == const.BOSS_DEAD: logger.error("hjqy boss dead!") response.res.result = False response.res.result_no = 210302 return response.SerializePartialToString() if data.get('state') == const.BOSS_RUN_AWAY: logger.error("hjqy boss run away!") response.res.result = False response.res.result_no = 210303 return response.SerializePartialToString() stage_id = data.get("stage_id") player.fight_cache_component.stage_id = stage_id red_units = player.fight_cache_component.get_red_units() blue_units = cPickle.loads(remote_gate['world'].blue_units_remote(boss_id)) seed1, seed2 = get_seeds() player_info = dict(player_id=player.base_info.id, nickname=player.base_info.base_name, user_icon=player.base_info.heads.now_head, level=player.base_info.level) str_red_units = cPickle.dumps(red_units) red_unpar_data = player.line_up_component.get_red_unpar_data() fight_result, boss_state, current_damage_hp, is_kill = remote_gate[ 'world'].hjqy_battle_remote(player_info, boss_id, str_red_units, red_unpar_data, attack_type, seed1, seed2) logger.debug("============battle over") # 消耗讨伐令 player.finance.consume(const.HJQYFIGHTTOKEN, need_hjqy_fight_token, const.HJQY_BATTLE) # 功勋奖励 hjqyMeritoriousServiceOpenTime = game_configs.base_config.get( "hjqyMeritoriousServiceOpenTime") hjqyMeritoriousServiceRate = game_configs.base_config.get( "hjqyMeritoriousServiceRate") meritorious_service = player.fight_cache_component._get_stage_config( ).meritorious_service logger.debug("========= %s %s ========" % (is_in_period(hjqyMeritoriousServiceOpenTime), hjqyMeritoriousServiceOpenTime)) if is_in_period(hjqyMeritoriousServiceOpenTime): # 增加功勋的活动 meritorious_service = meritorious_service * hjqyMeritoriousServiceRate player.finance.add(const.HJQYCOIN, meritorious_service, reason=const.HJQY_BATTLE) player.finance.save_data() response.fight_result = fight_result pvp_assemble_units(red_units, blue_units, response) response.seed1 = seed1 response.seed2 = seed2 response.attack_type = attack_type response.hjqy_coin = meritorious_service response.stage_id = stage_id response.res.result = True hook_task(player, CONDITIONId.HJQY, 1) tlog_action.log('BattleHJQY', player, boss_id, is_kill) # start target all_current_damage_hp = remote_gate['world'].\ hjqy_damage_hp_remote(player.base_info.id) player.act.condition_update(38, current_damage_hp) player.act.condition_update(39, all_current_damage_hp) # 更新 七日奖励 target_update(player, [38, 39]) return response.SerializePartialToString()
def battle_2103(pro_data, player): """ 开始战斗 request:HjqyBattleRequest response:HjqyBattleResponse """ request = hjqy_pb2.HjqyBattleRequest() request.ParseFromString(pro_data) response = hjqy_pb2.HjqyBattleResponse() if player.base_info.is_firstday_from_register(const.OPEN_FEATURE_HJQY): response.res.result = False response.res.result_no = 150901 return response.SerializeToString() boss_id = request.owner_id attack_type = request.attack_type # 全力一击,普通攻击 logger.debug("request %s" % request) hjqyExchangeBUFFTime = game_configs.base_config.get("hjqyExchangeBUFFTime") hjqyItemRate = game_configs.base_config.get("hjqyItemRate") hjqyExchangeBUFFNumber = game_configs.base_config.get("hjqyExchangeBUFFNumber") hjqyExchangeNumber = game_configs.base_config.get("hjqyExchangeNumber") need_hjqy_fight_token = hjqyExchangeNumber if attack_type == 2: need_hjqy_fight_token = hjqyExchangeBUFFNumber if is_in_period(hjqyExchangeBUFFTime) and attack_type == 2: need_hjqy_fight_token = need_hjqy_fight_token * hjqyItemRate if need_hjqy_fight_token > player.finance[const.HJQYFIGHTTOKEN]: logger.error("hjqy coin not enough!") response.res.result = False response.res.result_no = 210301 return response.SerializePartialToString() data = remote_gate['world'].get_boss_info_remote(boss_id) if not data or data.get('state') == const.BOSS_DEAD: logger.error("hjqy boss dead!") response.res.result = False response.res.result_no = 210302 return response.SerializePartialToString() if data.get('state') == const.BOSS_RUN_AWAY: logger.error("hjqy boss run away!") response.res.result = False response.res.result_no = 210303 return response.SerializePartialToString() stage_id = data.get("stage_id") player.fight_cache_component.stage_id = stage_id red_units = player.fight_cache_component.get_red_units() blue_units = cPickle.loads(remote_gate['world'].blue_units_remote(boss_id)) seed1, seed2 = get_seeds() player_info = dict(player_id=player.base_info.id, nickname=player.base_info.base_name, user_icon=player.base_info.heads.now_head, level=player.base_info.level) str_red_units = cPickle.dumps(red_units) red_unpar_data = player.line_up_component.get_red_unpar_data() fight_result, boss_state, current_damage_hp, is_kill = remote_gate['world'].hjqy_battle_remote(player_info, boss_id, str_red_units, red_unpar_data, attack_type, seed1, seed2) logger.debug("============battle over") # 消耗讨伐令 player.finance.consume(const.HJQYFIGHTTOKEN, need_hjqy_fight_token, const.HJQY_BATTLE) # 功勋奖励 hjqyMeritoriousServiceOpenTime = game_configs.base_config.get("hjqyMeritoriousServiceOpenTime") hjqyMeritoriousServiceRate = game_configs.base_config.get("hjqyMeritoriousServiceRate") meritorious_service = player.fight_cache_component._get_stage_config().meritorious_service logger.debug("========= %s %s ========"%(is_in_period(hjqyMeritoriousServiceOpenTime), hjqyMeritoriousServiceOpenTime )) if is_in_period(hjqyMeritoriousServiceOpenTime): # 增加功勋的活动 meritorious_service = meritorious_service * hjqyMeritoriousServiceRate player.finance.add(const.HJQYCOIN, meritorious_service, reason=const.HJQY_BATTLE) player.finance.save_data() response.fight_result = fight_result pvp_assemble_units(red_units, blue_units, response) response.seed1 = seed1 response.seed2 = seed2 response.attack_type = attack_type response.hjqy_coin = meritorious_service response.stage_id = stage_id response.res.result = True hook_task(player, CONDITIONId.HJQY, 1) tlog_action.log('BattleHJQY', player, boss_id, is_kill) # start target all_current_damage_hp = remote_gate['world'].\ hjqy_damage_hp_remote(player.base_info.id) player.act.condition_update(38, current_damage_hp) player.act.condition_update(39, all_current_damage_hp) # 更新 七日奖励 target_update(player, [38, 39]) return response.SerializePartialToString()