def get_prize(player, mail_ids, response): """领取奖励""" for mail_id in mail_ids: mail = player.mail_component.get_mail(mail_id) if not mail: continue if mail.prize: if isinstance(eval(mail.prize), dict): prize = data_helper.parse(eval(mail.prize)) return_data = gain(player, prize, const.MAIL) get_return(player, return_data, response.gain) elif isinstance(eval(mail.prize), list): for prize_data in eval(mail.prize): prize = data_helper.parse(prize_data) return_data = gain(player, prize, const.MAIL) get_return(player, return_data, response.gain) continue if mail.config_id: # if mail.config_id != game_configs.base_config.get('warFogRobbedMail'): # 除了附文矿被抢 mail_conf = game_configs.mail_config.get(mail.config_id) prize = data_helper.parse(mail_conf.rewards) return_data = gain(player, prize, const.MAIL) get_return(player, return_data, response.gain)
def parser(self, config_value): """解析config到HeroConfig""" for row in config_value: row["resource1"] = parse(row.get("resource1")) row["resource2"] = parse(row.get("resource2")) self.items[row.get('id')] = CommonItem(row) return self.items
def parser(self, config_value): """解析config到HeroConfig""" for row in config_value: convert_keystr2num(row.get('triggerProbability')) row["singleConsumption"] = parse(row.get("singleConsumption")) row["silver"] = parse(row.get("silver")) self.items[row.get('level')] = CommonItem(row) return self.items
def parser(self, config_value): for row in config_value: row["consume"] = parse(row.get("consume")) row["gain"] = parse(row.get("gain")) item = CommonItem(row) self._items[item.id] = item return self._items
def parser(self, config_value): for row in config_value: row["dragonGift"] = parse(row.get("dragonGift")) row["stageBox"] = parse(row.get("stageBox")) item = CommonItem(row) if item.sort == 1: if item.type == 14: # 隐藏关卡 self._chapter_hide_stage[item.chapter] = item self._chapter_ids.add(item.chapter) self._stages[item.id] = item if item.chaptersTab: # 是章节标签 pass ''' for (id, info) in item.dragonGift.items(): if self._gift_weight.get(item.chapter): self._gift_weight[item.chapter][id] = info[3] else: self._gift_weight[item.chapter] = {id: info[3]} del info[-1] if self._gift_info.get(item.chapter): self._gift_info[item.chapter][id] = info else: self._gift_info[item.chapter] = {id: info} ''' else: self._condition_mapping.setdefault(item.condition, []). \ append(item.id) if item.sort == 10: self._travel_fight_stages[item.id] = item if item.sort == 9: self._travel_stages.append(item.id) self._stages[item.id] = item if item.sort == 8: self._mine_stages[item.id] = item if item.sort == 12: self._hjqy_stages[item.id] = item for stage_id, stage in self._stages.items(): if stage.chapter == 1 and stage.section == 1 and stage.type == 1: # 第一章第一节难度普通 self._first_stage_id = stage_id return {'stages': self._stages, 'first_stage_id': self._first_stage_id, 'chapter_ids': list(self._chapter_ids), 'condition_mapping': self._condition_mapping, 'chapter_hide_stage': self._chapter_hide_stage, 'travel_stages': self._travel_stages, 'travel_fight_stages': self._travel_fight_stages, 'mine_stages': self._mine_stages, 'hjqy_stages': self._hjqy_stages}
def parser(self, config_value): for row in config_value: convert_keystr2num(row.get('robbedPercentage')) convert_keystr2num(row.get('peoplePercentage')) row["reward1"] = parse(row.get("reward1")) row["reward2"] = parse(row.get("reward2")) row["reward3"] = parse(row.get("reward3")) self.items[row.get('id')] = CommonItem(row) return self.items
def parser(self, config_value): """解析 """ for row in config_value: data_helper.convert_keystr2num(row.get('rewards')) row["rewards"] = parse(row.get("rewards")) row["consume"] = parse(row.get("consume")) self._data[row.get('id')] = row return self._data
def parser(self, config_value): for row in config_value: if row.get("luckyValue"): convert_keystr2num(row.get("luckyValue")) row["refreshItem"] = parse(row.get("refreshItem")) row["refreshPrice"] = parse(row.get("refreshPrice")) item = CommonItem(row) self._items[item.id] = item return self._items
def parser(self, config_value): for row in config_value: row["setting"] = parse(row.get("setting")) row["fristGift"] = parse(row.get("fristGift")) item = CommonItem(row) if item.get('platform') not in self._items: self._items[item.get('platform')] = {} self._items[item.get('platform')].update({item.goodsid: item}) self._items[item.id] = item return self._items
def parser(self, config_value): for row in config_value: convert_keystr2num(row.get("buff1")) convert_keystr2num(row.get("buff2")) convert_keystr2num(row.get("buff3")) row["reward1"] = parse(row.get("reward1")) row["reward2"] = parse(row.get("reward2")) row["database"] = parse(row.get("database")) row["index"] = row.get("section") * 3 + row.get('difficulty') - 3 item = CommonItem(row) self._items[item.id] = item return self._items
def parser(self, config_value): """解析config到HeroConfig""" for row in config_value: convert_keystr2num(row.get('awake')) row["sacrificeGain"] = parse(row.get("sacrificeGain")) row["sellGain"] = parse(row.get("sellGain")) if row['quality'] == 2: row['color'] = 1 elif row['quality'] == 3 or row['quality'] == 4: row['color'] = 2 elif row['quality'] == 5 or row['quality'] == 6: row['color'] = 3 self.heros[row.get('id')] = CommonItem(row) return self.heros
def parser(self, config_value): for row in config_value: row["expend"] = parse(row.get("expend")) item = CommonItem(row) self._items[item.id] = item if item.pulse not in self._items: self._items[item.pulse] = [] self._items[item.pulse].append(item) #start_id = min(self._items.keys()) #def accumulate_next(cur_id): #cur_item = self._items.get(cur_id) #if not cur_item: #return #next_id = cur_item.get('next') #next_item = self._items.get(next_id) #if next_id and next_item: #for k, v in next_item.items(): #if isinstance(v, float): #next_item[k] += cur_item[k] #accumulate_next(next_id) #accumulate_next(start_id) return self._items
def deal_pvp_rob_fight(player, uid, chip_id, one_times_response, chip_conf): price = game_configs.base_config.get('indianaConsume') return_data = consume(player, price, const.ROB_TREASURE) # 消耗 get_return(player, return_data, one_times_response.consume) fight_result = pvp_fight(player, uid, [], 0, one_times_response, is_copy_unit=True) logger.debug("fight revenge result:%s" % fight_result) indiana_conf = get_indiana_conf(player, uid, chip_conf) if fight_result: if indiana_conf.probability >= random.random(): gain_items = parse({104: [1, 1, chip_id]}) return_data = gain(player, gain_items, const.ROB_TREASURE) get_return(player, return_data, one_times_response.gain) # 处理被打玩家 deal_target_player(player, uid, chip_id) return fight_result
def test_gain(self): response = GameResourcesResponse() gain_data = {106:[1,1,1203]} #print(self.player) return_data = gain(self.player, parse(gain_data), 111) get_return(self.player, return_data, response) print response
def parser(self, config_value): for row in config_value: row["reward"] = parse(row.get("reward")) convert_keystr2num(row.get("condition")) item = CommonItem(row) self._items[item.id] = item if item.unlock: self._unlock[item.unlock] = item.id else: self._first_task.append(item.id) if item.sort == 2 or item.sort == 3: self._sort[2].append(item.id) elif item.sort == 1: self._sort[1].append(item.id) elif item.sort == 4: self._sort[3].append(item.id) for _, condition in item.condition.items(): if self._conditions.get(condition[0]): if item.id in self._conditions[condition[0]]: continue self._conditions[condition[0]].append(item.id) else: self._conditions[condition[0]] = [item.id] return { 'tasks': self._items, 'sort': self._sort, 'unlock': self._unlock, 'conditions': self._conditions, 'first_task': self._first_task }
def hero_break_logic(hero_no, player, response): hero = player.hero_component.get_hero(hero_no) hero_info = game_configs.hero_config.get(hero_no) # 验证武将是否突破到上限 if hero.break_level == hero_info.breakLimit: return {"result": False, "result_no": 201} consume_info = hero_info.get('consume' + str(hero.break_level+1)) item_group = parse(consume_info) hero_info = game_configs.hero_config.get(hero.hero_no) # 判断是否足够 result = is_afford(player, item_group) # 校验 if not result.get('result'): return {"result": False, "result_no": result.get('result_no')} # 返回消耗 return_data = consume(player, item_group, const.HERO_BREAK) get_return(player, return_data, response.consume) hero.break_level += 1 notice_item = game_configs.notes_config.get(2003) if hero.break_level in notice_item.parameter1: push_notice(2003, player_name=player.base_info.base_name, hero_no=hero.hero_no, hero_break_level=hero.break_level) hero.save_data() # 3、返回 tlog_action.log('HeroBreak', player, hero_no, hero.break_level) return {"result": True, "break_level": hero.break_level}
def parser(self, config_value): for row in config_value: row["reward"] = parse(row.get("reward")) convert_keystr2num(row.get("condition")) item = CommonItem(row) self._items[item.id] = item if item.unlock: self._unlock[item.unlock] = item.id else: self._first_task.append(item.id) if item.sort == 2 or item.sort == 3: self._sort[2].append(item.id) elif item.sort == 1: self._sort[1].append(item.id) elif item.sort == 4: self._sort[3].append(item.id) for _, condition in item.condition.items(): if self._conditions.get(condition[0]): if item.id in self._conditions[condition[0]]: continue self._conditions[condition[0]].append(item.id) else: self._conditions[condition[0]] = [item.id] return {'tasks': self._items, 'sort': self._sort, 'unlock': self._unlock, 'conditions': self._conditions, 'first_task': self._first_task}
def parser(self, config_value): """解析 """ for row in config_value: if row.get('gain'): row['gain'] = data_helper.parse(row.get("gain")) self._equipments[row.get('id')] = CommonItem(row) return self._equipments
def get_prize(player, mail_ids, response): """领取奖励""" for mail_id in mail_ids: mail = player.mail_component.get_mail(mail_id) prize = data_helper.parse(mail.prize) return_data = gain(player, prize) get_return(player, return_data, response.gain)
def parser(self, config_value): for row in config_value: row["reward"] = parse(row.get("reward")) item = CommonItem(row) # if not item.is_open: # 乱入开放 # continue self._open_break_stage[item.id] = item return self._open_break_stage
def tst_gain(self): gain_data = {const.COIN: [30000, 30000, 0], const.GOLD: [10000, 10000, 0], const.HERO_SOUL: [20000, 20000, 0], const.HERO_CHIP: [300, 300, 1000112], const.EQUIPMENT_CHIP: [300, 300, 1000112], const.ITEM: [2, 2, 1000111]} gain(self.player, parse(gain_data)) coin = self.player.finance.coin hero_soul = self.player.finance.hero_soul gold = self.player.finance.gold hero_chip = self.player.hero_chip_component.get_chip(1000112) equipment_chip = self.player.equipment_chip_component.get_chip(1000112) item = self.player.item_package.get_item(1000111) self.assertEqual(coin, 60000, "%d_%d" % (coin, 60000)) self.assertEqual(hero_soul, 40000, "%d_%d" % (hero_soul, 40000)) self.assertEqual(gold, 20000, "%d_%d" % (gold, 20000)) self.assertEqual(hero_chip.num, 600, "%d_%d" % (hero_chip.num, 600)) self.assertEqual(equipment_chip.chip_num, 600, "%d_%d" % (equipment_chip.chip_num, 600)) self.assertEqual(item.num, 4, "%d_%d" % (item.num, 4)) gain_data = {const.HERO: [1, 1, 10011]} gain(self.player, parse(gain_data)) hero = self.player.hero_component.get_hero(10011) self.assertFalse(hero == None) self.assertEqual(hero.hero_no, 10011, "%d_%d" % (hero.hero_no, 10011)) gain_data = {const.HERO: [1, 1, 10005]} gain(self.player, parse(gain_data)) hero_chip = self.player.hero_chip_component.get_chip(1000113) self.assertEqual(hero_chip.num, 20, "%d_%d" % (hero_chip.num, 20)) gain_data = {const.EQUIPMENT: [1, 1, 110005]} gain(self.player, parse(gain_data)) lst = self.get_equipmnets_by_no(110005) self.assertEqual(len(lst), 2) gain(self.player, parse(gain_data)) lst = lst = self.get_equipmnets_by_no(110005) self.assertEqual(len(lst), 3)
def parser(self, config_value): for row in config_value: convert_keystr2num(row.get("weightGroup")) convert_keystr2num(row.get("limitVIPeveryday")) convert_keystr2num(row.get("limitVIP")) convert_keystr2num(row.get("dutyFree")) convert_keystr2num(row.get("contribution")) convert_keystr2num(row.get("attr")) row["consume"] = parse(row.get("consume")) row["alternativeConsume"] = parse(row.get("alternativeConsume")) row["gain"] = parse(row.get("gain")) row["Integral"] = parse(row.get("Integral")) row["extraGain"] = parse(row.get("extraGain")) row["discountPrice"] = parse(row.get("discountPrice")) row["ExchangeValue"] = parse(row.get("ExchangeValue")) item = CommonItem(row) self._items[item.id] = item if item.type not in self._items: self._items[item.type] = [] type_shop = self._items[item.type] type_shop.append(item) return self._items
def get_consume(self, break_level): """ 获取突破消耗 :param break_level: 1-7 :return: """ consume_info = self.info.get('consume' + str(break_level+1)) print consume_info, "consume++++++++++++" return parse(consume_info)
def get_consume(self, break_level): """ 获取突破消耗 :param break_level: 1-7 :return: """ consume_info = self.info.get('consume' + str(break_level + 1)) print consume_info, "consume++++++++++++" return parse(consume_info)
def parser(self, config_value): """解析config到GuildConfig""" for row in config_value: convert_keystr2num(row.get("worShip")) convert_keystr2num(row.get("guild_worship")) convert_keystr2num(row.get("reward")) convert_keystr2num(row.get("cohesion")) convert_keystr2num(row.get("animalOpen")) row["support"] = parse(row.get("support")) row["collectSupportGift"] = parse(row.get("collectSupportGift")) item = CommonItem(row) if self._guild.get(row.get('type')): self._guild[row.get('type')][row.get('level')] = item else: self._guild[row.get('type')] = {row.get('level'): item} self._guild[item.id] = item return self._guild
def parser(self, config_value): for row in config_value: row["reward"] = parse(row.get("reward")) item = CommonItem(row) if not self._items.get(item.type): self._items[item.type] = [] self._items[item.type].append(item) return self._items
def parser(self, config_value): """解析config到HeroConfig""" for row in config_value: row["sacrificeGain"] = parse(row.get("sacrificeGain")) obj = CommonItem(row) self._chips[obj.id] = obj self._mapping[obj.combineResult] = obj return {'chips': self._chips, 'mapping': self._mapping}
def parser(self, config_value): for row in config_value: mouth = row["month"] day = row["times"] if mouth not in self._items: self._items[mouth] = {} self._items[mouth][day] = parse(row.get("reward")) return self._items
def add_items(player, task_id): """ 添加道具给玩家 """ add_items = [] if task_id in achievement_config: task = achievement_config[task_id] reward = data_helper.parse(task.reward) item_group_helper.gain(player, reward, add_items) return add_items
def parser(self, config_value): """解析config到HeroConfig""" for row in config_value: convert_keystr2num(row.get('Skill_condition')) row["Consume"] = parse(row.get("Consume")) if row["type"] not in self.items: self.items[row["type"]] = {} self.items[row["type"]][row["Skill_level"]] = CommonItem(row) self.items[row["id"]] = CommonItem(row) return self.items
def parser(self, config_value): for row in config_value: data = row.get('choose') row["Reward"] = parse(row.get("Reward")) if data: data = compile(data, '', 'eval') row['choose'] = data item = CommonItem(row) self._items[item.id] = row return self._items
def parser(self, config_value): for row in config_value: game_server_id = 0 try: game_server_id = int(GlobalObject().allconfig['server_no']) except: pass if row.get('open_zone')[0] != 0 and game_server_id not in row.get( 'open_zone'): continue row["reward"] = parse(row.get("reward")) if re.search(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', row["timeStart"]): row["timeStart"] = time.mktime( time.strptime(row.get("timeStart"), '%Y-%m-%d %H:%M:%S')) else: row["timeStart"] = int(row["timeStart"]) if re.search(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', row["timeEnd"]): row["timeEnd"] = time.mktime( time.strptime(row.get("timeEnd"), '%Y-%m-%d %H:%M:%S')) else: row["timeEnd"] = int(row["timeEnd"]) convert_keystr2num(row.get("parameterE")) item = CommonItem(row) if item.type == 5: # 等级推送特殊处理,等级和对应活动信息的映射 if not self._items.get(item.type): self._items[item.type] = {item.parameterA: item} self._items[item.type][item.parameterA] = item else: # 类型与相对应的活动ID列表的映射 if not self._items.get(item.type): self._items[item.type] = [] self._items[item.type].append(item) if item.premise: if not self._items.get('premise'): self._items['premise'] = {} if not self._items.get('premise').get(item.premise): self._items['premise'][item.premise] = [] self._items['premise'][item.premise].append(item.id) if not self._items.get('icon'): self._items['icon'] = {} if not self._items.get('icon').get(item.icon): self._items['icon'][item.icon] = [] self._items['icon'][item.icon].append(item) self._items[item.id] = item return self._items
def tst_parse(self): data = {1: [1, 1, 1001], 2: [2, 2, 1002], 3: [3, 3, 1003]} item_group = parse(data) first = item_group[0] self.assertEqual(first.item_type, 1, "first item type id error!%d_%d" % (first.item_type, 1)) self.assertEqual(first.num, 1, "first item type id error!%d_%d" % (first.num, 1)) self.assertEqual(first.item_no, 1001, "first item type id error!%d_%d" % (first.item_no, 0011)) last = item_group[len(item_group) - 1] self.assertEqual(last.item_type, 3, "first item type id error!%d_%d" % (last.item_type, 3)) self.assertEqual(last.num, 3, "first item type id error!%d_%d" % (last.num, 3)) self.assertEqual(last.item_no, 1003, "first item type id error!%d_%d" % (last.item_no, 1003))
def parser(self, config_value): for row in config_value: game_server_id = 0 try: game_server_id = int(GlobalObject().allconfig['server_no']) except: pass if row.get('open_zone')[0] != 0 and game_server_id not in row.get('open_zone'): continue row["reward"] = parse(row.get("reward")) if re.search(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', row["timeStart"]): row["timeStart"] = time.mktime( time.strptime(row.get("timeStart"), '%Y-%m-%d %H:%M:%S')) else: row["timeStart"] = int(row["timeStart"]) if re.search(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', row["timeEnd"]): row["timeEnd"] = time.mktime(time.strptime(row.get("timeEnd"), '%Y-%m-%d %H:%M:%S')) else: row["timeEnd"] = int(row["timeEnd"]) convert_keystr2num(row.get("parameterE")) item = CommonItem(row) if item.type == 5: # 等级推送特殊处理,等级和对应活动信息的映射 if not self._items.get(item.type): self._items[item.type] = {item.parameterA: item} self._items[item.type][item.parameterA] = item else: # 类型与相对应的活动ID列表的映射 if not self._items.get(item.type): self._items[item.type] = [] self._items[item.type].append(item) if item.premise: if not self._items.get('premise'): self._items['premise'] = {} if not self._items.get('premise').get(item.premise): self._items['premise'][item.premise] = [] self._items['premise'][item.premise].append(item.id) if not self._items.get('icon'): self._items['icon'] = {} if not self._items.get('icon').get(item.icon): self._items['icon'][item.icon] = [] self._items['icon'][item.icon].append(item) self._items[item.id] = item return self._items
def parser(self, config_value): for row in config_value: mouth = row["month"] day = row["times"] if mouth not in self._items: self._items[mouth] = {} self._items[mouth][day] = {} self._items[mouth][day]["reward"] = parse(row.get("reward")) self._items[mouth][day]["vipDouble"] = row.get("vipDouble") self._items[mouth][day]["id"] = row.get("id") return self._items
def parser(self, config_value): for row in config_value: row['stageBox'] = parse(row['stageBox']) row['Animal_Participate'] = parse(row['Animal_Participate']) row['Animal_Kill'] = parse(row['Animal_Kill']) convert_keystr2num(row['ClearanceConditions']) item = CommonItem(row) if item.type == 6: self._elite_stages[item.id] = item if item.condition != 0: # 开启条件不是0 self._condition_mapping.setdefault(item.condition, []).append(item.id) else: self._first_stage_id.append(item.id) elif item.type == 5: self._act_stages[item.id] = item if item.condition != 0: # 开启条件不是0 self._condition_mapping.setdefault(item.condition, []).append(item.id) else: self._first_stage_id.append(item.id) elif item.type == 4: self._act_stages[item.id] = item if item.condition != 0: # 开启条件不是0 self._condition_mapping.setdefault(item.condition, []).append(item.id) else: self._first_stage_id.append(item.id) elif item.type == 7: self._world_boss_stages[item.id] = item elif item.type == 8: self._mine_boss_stages[item.id] = item elif item.type == 9: self._guild_boss_stages[item.id] = item return {'elite_stages': self._elite_stages, 'act_stages': self._act_stages, 'world_boss_stages': self._world_boss_stages, 'mine_boss_stages': self._mine_boss_stages, 'first_stage_id': self._first_stage_id, 'condition_mapping': self._condition_mapping, 'guild_boss_stages': self._guild_boss_stages, }
def parser(self, config_value): weights = 0 for row in config_value: data_helper.convert_keystr2num(row.get('mainAttr')) data_helper.convert_keystr2num(row.get('minorAttr')) row["consume"] = parse(row.get("consume")) item = CommonItem(row) if item.weight: self._weight.append([item.id, weights+item.weight]) self._stones[item.id] = item weights += item.weight return {'stones': self._stones, 'weight': self._weight}
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 parser(self, config_value): """解析 """ for row in config_value: if row.get('gain'): row['gain'] = data_helper.parse(row.get("gain")) if row['quality'] == 2: row['color'] = 1 elif row['quality'] == 3 or row['quality'] == 4: row['color'] = 2 elif row['quality'] == 5 or row['quality'] == 6: row['color'] = 3 self._equipments[row.get('id')] = CommonItem(row) return self._equipments
def hero_break_logic(hero_no, player, response): if is_not_open(player, FO_HERO_BREAK): return {'result': False, 'result_no': 837} hero = player.hero_component.get_hero(hero_no) hero_info = game_configs.hero_config.get(hero_no) break_through = game_configs.base_config.get('breakthrough') target_break_level = hero.break_level + 1 logger.debug("target_break_level %s" % target_break_level) if target_break_level not in break_through: logger.debug("hero_break_logic can find target break level %s" % target_break_level) return {"result": False, "result_no": 10401} if hero.level < break_through[target_break_level][0]: logger.debug("hero_break_logic level is not enough %s" % hero.level) return {"result": False, "result_no": 10402} # 验证武将是否突破到上限 if hero.break_level == hero_info.breakLimit: return {"result": False, "result_no": 201} consume_info = hero_info.get('consume' + str(hero.break_level+1)) item_group = parse(consume_info) hero_info = game_configs.hero_config.get(hero.hero_no) # 判断是否足够 result = is_afford(player, item_group) # 校验 if not result.get('result'): return {"result": False, "result_no": result.get('result_no')} # 返回消耗 return_data = consume(player, item_group, const.HERO_BREAK) get_return(player, return_data, response.consume) for item in item_group: if item.item_type == 105 and item.item_no == 20006: hero.break_item_num += item.num hero.save_data() hero.break_level += 1 notice_item = game_configs.notes_config.get(2003) if hero.break_level in notice_item.parameter1: push_notice(2003, player_name=player.base_info.base_name, hero_no=hero.hero_no, hero_break_level=hero.break_level) hero.save_data() # 3、返回 tlog_action.log('HeroBreak', player, hero_no, hero.break_level) return {"result": True, "break_level": hero.break_level, "break_item_num": hero.break_item_num}
def tst_is_afford(self): consume_data = {const.COIN: [30000, 30000, 0], const.GOLD: [10000, 10000, 0], const.HERO_SOUL: [20000, 20000, 0], const.HERO_CHIP: [300, 300, 1000112], const.EQUIPMENT_CHIP: [300, 300, 1000112], const.ITEM: [2, 2, 1000111]} result = is_afford(self.player, parse(consume_data)) self.assertEqual(result.get('result'), True) import copy consume_data_copy = copy.deepcopy(consume_data) consume_data_copy[const.COIN][0] += 1 consume_data_copy[const.COIN][1] += 1 result = is_afford(self.player, parse(consume_data_copy)) self.assertEqual(result.get('result'), False) consume_data_copy = copy.deepcopy(consume_data) consume_data_copy[const.GOLD][0] += 1 consume_data_copy[const.GOLD][1] += 1 result = is_afford(self.player, parse(consume_data_copy)) self.assertEqual(result.get('result'), False) consume_data_copy = copy.deepcopy(consume_data) consume_data_copy[const.HERO_SOUL][0] += 1 consume_data_copy[const.HERO_SOUL][1] += 1 result = is_afford(self.player, parse(consume_data_copy)) self.assertEqual(result.get('result'), False) consume_data_copy = copy.deepcopy(consume_data) consume_data_copy[const.HERO_CHIP][0] += 1 consume_data_copy[const.HERO_CHIP][1] += 1 result = is_afford(self.player, parse(consume_data_copy)) self.assertEqual(result.get('result'), False) consume_data_copy = copy.deepcopy(consume_data) consume_data_copy[const.EQUIPMENT_CHIP][0] += 1 consume_data_copy[const.EQUIPMENT_CHIP][1] += 1 result = is_afford(self.player, parse(consume_data_copy)) self.assertEqual(result.get('result'), False) consume_data_copy = copy.deepcopy(consume_data) consume_data_copy[const.ITEM][0] += 1 consume_data_copy[const.ITEM][1] += 1 result = is_afford(self.player, parse(consume_data_copy)) self.assertEqual(result.get('result'), False)