def get_fund_activity_info_1854(data, player): # 成长基金活动 response = activity_pb2.GetFundActivityResponse() for act_conf in game_configs.activity_config[51]: if not player.act.is_activiy_open(act_conf.id): continue act_info = get_act_info(player, act_conf.id) act = response.info.add() act.act_id = act_conf.id act.state = act_info.get('state') act.accumulate_days = len(act_info.get('jindu')) for act_conf in game_configs.activity_config[50]: if not player.act.is_activiy_open(act_conf.id): continue act_info = get_act_info(player, act_conf.id) act = response.info.add() act.act_id = act_conf.id act.state = act_info.get('state') act.recharge = act_info.get('jindu')[0] act.max_single_recharge = act_info.get('jindu')[1] # act.state = v.get('state', 0) # act.recharge = v.get('recharge', 0) # act.max_single_recharge = v.get('max_single_recharge', 0) print 'get_fund_activity_info_1854:', response return response.SerializeToString()
def update_act_with_get(self): for act_conf in game_configs.activity_config.get(1, []): if not self.is_activiy_open(act_conf.id): continue get_act_info(self.owner, act_conf.id) for act_conf in game_configs.activity_config.get(18, []): if not self.is_activiy_open(act_conf.id): continue get_act_info(self.owner, act_conf.id)
def mine_mix_runt(self, runt_quality): """ 秘境宝石合成 """ act_confs = game_configs.activity_config.get(59, []) info = {} info[WIN_MINE_QUALITY] = runt_quality state2_acts = [] for act_conf in act_confs: act_id = act_conf.id act_conf = game_configs.activity_config.get(act_id) if not self.is_activiy_open(act_id): continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, [info]] else: if act_info[0] != 1: continue else: act_info[1].append(info) act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) self.fulfil_activity(state2_acts) self.save_data()
def add_treasure(self, treasure_type, treasure_quality): """ 添加宝物或者饰品 """ info = {} info[TREASURE_TYPE] = treasure_type info[TREASURE_QUALITY] = treasure_quality state2_acts = [] for x in [60, 61, 62, 63]: act_confs = game_configs.activity_config.get(x, []) for act_conf in act_confs: act_id = act_conf.id act_conf = game_configs.activity_config.get(act_id) if not self.is_activiy_open(act_id): continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, [info]] else: if act_info[0] != 1: continue else: act_info[1].append(info) act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) self.fulfil_activity(state2_acts) self.save_data()
def get_fund_activity_1850(data, player): # 成长基金活动 request = activity_pb2.GetActGiftRequest() request.ParseFromString(data) activity_id = request.act_id response = activity_pb2.GetActGiftResponse() response.res.result = False if not player.act.is_activiy_open(activity_id): response.res.result = False response.res.result_no = 800 return response.SerializeToString() act_item = game_configs.activity_config.get(activity_id) if act_item is None: response.res.result_no = 185000 return response.SerializeToString() info = get_act_info(player, activity_id) if info.get('state') != 2: response.res.result = False logger.error("条件不满足") response.res.result_no = 800 return response.SerializeToString() return_data = gain(player, act_item.reward, const.FUND) get_return(player, return_data, response.gain) player.act.act_infos[activity_id][0] = 3 player.act.save_data() response.res.result = True return response.SerializeToString()
def mine_win(self, quality): """ 秘境占领矿点 """ act_confs = game_configs.activity_config.get(57, []) print act_confs, '=====================act confs, mine_win' info = {} info[WIN_MINE_QUALITY] = quality state2_acts = [] for act_conf in act_confs: act_id = act_conf.id if not self.is_activiy_open(act_id): continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, [info]] else: if act_info[0] != 1: continue else: act_info[1].append(info) act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) self.fulfil_activity(state2_acts) self.save_data()
def condition_add(self, type, v): act_confs = game_configs.activity_config.get(type, []) state2_acts = [] for act_conf in act_confs: act_id = act_conf.id if not self.is_activiy_open(act_id): continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, v] else: if act_info[0] != 1: continue else: act_info[1] += v act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) if type == 44: act_confs = game_configs.activity_config.get(50, []) for act_conf in act_confs: act_id = act_conf.id act_conf = game_configs.activity_config.get(act_id) if not self.is_activiy_open(act_id): continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, [v, v, 0]] else: if act_info[0] != 1: continue else: act_info[1][0] += v act_info[1][1] = max(act_info[1][1], v) act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) self.fulfil_activity(state2_acts) self.save_data()
def get_target_info_1826(data, player): """获取任务信息""" args = start_target_pb2.GetStartTargetInfoRequest() args.ParseFromString(data) # day = args.day # 0为所有 response = start_target_pb2.GetStartTargetInfoResponse() # 第几天登录 day = player.base_info.login_day # 更新一下 登录奖励的状态 # player.start_target.update_29() response.day = day # 需要查询的目标ID target_ids = {} if args.day: ids = [] for a, b in game_configs.base_config.get('seven' + str(args.day)).items(): ids += b target_ids[args.day] = ids else: for x in [1, 2, 3, 4, 5, 6, 7]: if x > day: continue ids = [] for a, b in game_configs.base_config.get('seven' + str(x)).items(): ids += b target_ids[x] = ids for _, ids in target_ids.items(): for target_id in ids: if not player.act.is_activiy_open(target_id): continue logger.debug("target_id %s" % target_id) info = get_act_info(player, target_id) target_info_pro = response.start_target_info.add() target_info_pro.target_id = target_id if info.get('jindu'): target_info_pro.jindu = info.get('jindu') if info.get('state'): target_info_pro.state = info.get('state') player.act.save_data() logger.debug("response==========================start targe %s" % response) response.res.result = True return response.SerializeToString()
def get_activity_info_1855(data, player): # 通用 获取活动信息 args = activity_pb2.GetActivityInfoRequese() args.ParseFromString(data) select_type = args.select_type select_values = args.value response = activity_pb2.GetActivityInfoResponse() print select_type, select_values, '========================act type 1855' configs = [] for select_value in select_values: if select_type == 1: configs = game_configs.activity_config.get(select_value, []) elif select_type == 2: configs = game_configs.activity_config.get('icon').get( select_value, []) else: response.res.result = False print 'select type error ========================act info 1855' response.res.result_no = 800 return response.SerializeToString() if configs and configs[0].type == 18: # 连续登录 player.act.update_act_with_get() for act_conf in configs: if act_conf.icon == 10179: # 七日活动 continue if not player.act.is_activiy_open(act_conf.id): continue act_info = get_act_info(player, act_conf.id) print act_info, '========================act info 1855' info_pro = response.info.add() info_pro.act_id = act_conf.id if act_conf.type == 51: info_pro.state = act_info.get('state') info_pro.accumulate_days = len(act_info.get('jindu')) elif act_conf.type == 50: info_pro.state = act_info.get('state') info_pro.recharge = act_info.get('jindu')[0] info_pro.max_single_recharge = act_info.get('jindu')[1] else: if act_info.get('state'): info_pro.state = act_info.get('state') if act_info.get('state') == 1 and act_info.get('jindu'): info_pro.jindu = act_info.get('jindu') player.act.save_data() response.res.result = True print 'get_activity_info_1855:', response return response.SerializeToString()
def activate_fund_activity_1851(data, player): # 成长基金活动 request = activity_pb2.GetActGiftRequest() request.ParseFromString(data) activity_id = request.act_id response = activity_pb2.GetActGiftResponse() response.res.result = False if not player.act.is_activiy_open(activity_id): response.res.result = False response.res.result_no = 800 return response.SerializeToString() act_item = game_configs.activity_config.get(activity_id) if act_item.parameterB == 0: logger.error('no need activate this activity:%s', activity_id) response.res.result_no = 185101 return response.SerializeToString() info = get_act_info(player, activity_id) if info.get('state') != 2: response.res.result = False logger.error("条件不满足") response.res.result_no = 800 return response.SerializeToString() need_gold = act_item.parameterB price = [] price.append(CommonGroupItem(const.RESOURCE, need_gold, need_gold, const.GOLD)) def func(): consume_return_data = item_group_helper.consume(player, price, const.MINE_ACC) item_group_helper.get_return(player, consume_return_data, response.consume) player.pay.pay(need_gold, const.FUND, func) player.act.act_infos[activity_id][0] = 3 player.act.update_51() player.act.save_data() # fund['consume'] = need_gold # player.fund_activity.check_precondition() # player.fund_activity.check_time() response.res.result = True return response.SerializeToString()
def activate_fund_activity_1851(data, player): # 成长基金活动 request = activity_pb2.GetActGiftRequest() request.ParseFromString(data) activity_id = request.act_id response = activity_pb2.GetActGiftResponse() response.res.result = False if not player.act.is_activiy_open(activity_id): response.res.result = False response.res.result_no = 800 return response.SerializeToString() act_item = game_configs.activity_config.get(activity_id) if act_item.parameterB == 0: logger.error('no need activate this activity:%s', activity_id) response.res.result_no = 185101 return response.SerializeToString() info = get_act_info(player, activity_id) if info.get('state') != 2: response.res.result = False logger.error("条件不满足") response.res.result_no = 800 return response.SerializeToString() need_gold = act_item.parameterB price = [] price.append( CommonGroupItem(const.RESOURCE, need_gold, need_gold, const.GOLD)) def func(): consume_return_data = item_group_helper.consume( player, price, const.MINE_ACC) item_group_helper.get_return(player, consume_return_data, response.consume) player.pay.pay(need_gold, const.FUND, func) player.act.act_infos[activity_id][0] = 3 player.act.update_51() player.act.save_data() # fund['consume'] = need_gold # player.fund_activity.check_precondition() # player.fund_activity.check_time() response.res.result = True return response.SerializeToString()
def get_activity_info_1855(data, player): # 通用 获取活动信息 args = activity_pb2.GetActivityInfoRequese() args.ParseFromString(data) select_type = args.select_type select_values = args.value response = activity_pb2.GetActivityInfoResponse() print select_type, select_values, '========================act type 1855' configs = [] for select_value in select_values: if select_type == 1: configs = game_configs.activity_config.get(select_value, []) elif select_type == 2: configs = game_configs.activity_config.get('icon').get(select_value, []) else: response.res.result = False print 'select type error ========================act info 1855' response.res.result_no = 800 return response.SerializeToString() if configs and configs[0].type == 18: # 连续登录 player.act.update_act_with_get() for act_conf in configs: if act_conf.icon == 10179: # 七日活动 continue if not player.act.is_activiy_open(act_conf.id): continue act_info = get_act_info(player, act_conf.id) print act_info, '========================act info 1855' info_pro = response.info.add() info_pro.act_id = act_conf.id if act_conf.type == 51: info_pro.state = act_info.get('state') info_pro.accumulate_days = len(act_info.get('jindu')) elif act_conf.type == 50: info_pro.state = act_info.get('state') info_pro.recharge = act_info.get('jindu')[0] info_pro.max_single_recharge = act_info.get('jindu')[1] else: if act_info.get('state'): info_pro.state = act_info.get('state') if act_info.get('state') == 1 and act_info.get('jindu'): info_pro.jindu = act_info.get('jindu') player.act.save_data() response.res.result = True print 'get_activity_info_1855:', response return response.SerializeToString()
def get_activity_gift_1856(data, player): request = activity_pb2.GetActGiftRequest() request.ParseFromString(data) activity_id = request.act_id response = activity_pb2.GetActGiftResponse() response.res.result = False if not player.act.is_activiy_open(activity_id): response.res.result = False response.res.result_no = 800 return response.SerializeToString() act_conf = game_configs.activity_config.get(activity_id) info = get_act_info(player, activity_id) if info.get('state') != 2: response.res.result = False logger.error("this start target 条件不满足") response.res.result_no = 800 return response.SerializeToString() need_gold = 0 need_gold_acts = [30, 50] if act_conf.type in need_gold_acts: need_gold = act_conf.parameterB if need_gold: price = parse({107: [need_gold, need_gold, 2]}) if not is_afford(player, price): response.res.result = False response.res.result_no = 102 return response.SerializeToString() def func(): return_data = gain(player, act_conf.reward, const.ACTIVITY) # 获取 get_return(player, return_data, response.gain) if act_conf.type == 30: if act_conf.count <= (info.get('jindu') + 1): player.act.act_infos[activity_id][0] = 3 else: player.act.act_infos[activity_id] = [1, info.get('jindu') + 1] else: player.act.act_infos[activity_id][0] = 3 player.pay.pay(need_gold, const.ACTIVITY, func) player.act.save_data() response.res.result = True return response.SerializeToString()
def get_act_open_info(self, act_id): player_act_type = [3, 6] act_conf = game_configs.activity_config.get(act_id) if not act_conf: return {'is_open': 0, 'time_start': 0, 'time_end': 0} register_time = self.owner.base_info.register_time if act_conf.duration in player_act_type: act_info = self._act_infos.get(act_conf.id) if act_info and act_info[0]: return {'is_open': 1, 'time_start': 1, 'time_end': 1} premise_id = act_conf.premise premise_conf = game_configs.activity_config.get(premise_id) premise_info = get_act_info(self.owner, premise_id) if premise_info.get('state') != 3: return {'is_open': 0, 'time_start': 0, 'time_end': 0} return do_get_act_open_info(act_id, register_time=register_time)
def mine_get_runt(self): """秘境宝石收取""" act_confs = game_configs.activity_config.get(58, []) state2_acts = [] for act_conf in act_confs: act_id = act_conf.id if not self.is_activiy_open(act_id): continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, 0] else: if act_info[0] != 1: continue else: act_info[1] += 1 act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) self.fulfil_activity(state2_acts) self.save_data()
def condition_update(self, type, v): act_confs = game_configs.activity_config.get(type, []) state2_acts = [] for act_conf in act_confs: act_id = act_conf.id if not self.is_activiy_open(act_id): continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, v] else: if act_info[0] != 1: continue else: if act_info[1] < v: act_info[1] = v act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) self.fulfil_activity(state2_acts) self.save_data()
def update_71_73_75(self, type, v): state2_acts = [] act_confs = game_configs.activity_config.get(type, []) for act_conf in act_confs: act_id = act_conf.id if not self.is_activiy_open(act_id): continue if v not in act_conf.parameterC: continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, 1] else: if act_info[0] != 1: continue else: act_info[1] += 1 act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) self.fulfil_activity(state2_acts) self.save_data()
def update_daily_70_72_74(self, type, v): act_confs = game_configs.activity_config.get(type, []) state2_acts = [] for act_conf in act_confs: act_id = act_conf.id if not self.is_activiy_open(act_id): continue if v not in act_conf.parameterC: continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, 1, int(time.time())] else: if days_to_current(act_info[2]) != 0: self._act_infos[act_id] = [1, 1, int(time.time())] else: act_info[1] += 1 act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) self.fulfil_activity(state2_acts) self.save_data()
def update_76_77(self, act_type, res_type, num): """docstring for add_times""" state2_acts = [] act_confs = game_configs.activity_config.get(act_type, []) for act_conf in act_confs: act_id = act_conf.id if act_conf.parameterE.items()[0][0] != res_type: continue if not self.is_activiy_open(act_id): continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, num] else: if act_info[0] != 1: continue else: act_info[1] += num act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) self.fulfil_activity(state2_acts) self.save_data()
def update_65(self, res_type, num): """docstring for add_times""" act_confs = game_configs.activity_config.get(65, []) state2_acts = [] for act_conf in act_confs: act_id = act_conf.id if act_conf.parameterE.items()[0][0] != res_type: continue if not self.is_activiy_open(act_id): continue act_info = self._act_infos.get(act_id) if not act_info: self._act_infos[act_id] = [1, num, int(time.time())] else: if days_to_current(act_info[2]) != 0: self._act_infos[act_id] = [1, num, int(time.time())] else: act_info[1] += num act_info = get_act_info(self.owner, act_conf.id) if act_info.get('state') == 2: state2_acts.append(act_conf.id) self.fulfil_activity(state2_acts) self.save_data()
def get_target_info_1827(data, player): """获取任务奖励""" args = start_target_pb2.GetStartTargetRewardRequest() args.ParseFromString(data) target_id = args.target_id response = start_target_pb2.GetStartTargetRewardResponse() if not player.act.is_activiy_open(target_id): response.res.result = False logger.error("start target dont open") response.res.result_no = 890 # 不在活动时间内 return response.SerializeToString() # 第几天登录 day = player.base_info.login_day target_ids = [] for x in [1, 2, 3, 4, 5, 6, 7]: if x > day: continue for a, b in game_configs.base_config.get('seven' + str(x)).items(): target_ids += b if target_id not in target_ids: response.res.result = False logger.error("this start target dont open") response.res.result_no = 800 return response.SerializeToString() target_conf = game_configs.activity_config.get(target_id) info = get_act_info(player, target_id) if (target_conf.type != 30 and info.get('state') != 2) or (target_conf.type == 30 and info.get('state') == 3): response.res.result = False logger.error("this start target 条件不满足") response.res.result_no = 800 return response.SerializeToString() need_gold = 0 if target_conf.type == 30: need_gold = target_conf.parameterB def func(): return_data = gain(player, target_conf.reward, const.START_TARGET) # 获取 get_return(player, return_data, response.gain) if target_conf.type == 30: if target_conf.count <= (info.get('jindu') + 1): player.act.act_infos[target_id] = [3, 0] else: player.act.act_infos[target_id] = [1, info.get('jindu') + 1] else: player.act.act_infos[target_id] = [3, 0] tlog_action.log('StartTargetGetGift', player, target_id) player.pay.pay(need_gold, const.START_TARGET, func) player.act.save_data() response.res.result = True return response.SerializeToString()