Example #1
0
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
Example #3
0
 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
Example #4
0
 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
Example #5
0
    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
Example #6
0
    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}
Example #7
0
 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
Example #8
0
 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
Example #9
0
 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
Example #10
0
    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
Example #11
0
    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
Example #12
0
    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
Example #13
0
 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
Example #14
0
 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
Example #15
0
    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
Example #16
0
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
Example #17
0
 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
Example #18
0
    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
        }
Example #19
0
    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
Example #20
0
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}
Example #21
0
    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}
Example #22
0
 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
Example #23
0
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)
Example #24
0
 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
Example #25
0
    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)
Example #26
0
    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
Example #27
0
    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
Example #28
0
 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)
Example #29
0
 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)
Example #30
0
    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
Example #31
0
    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
Example #32
0
    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}
Example #33
0
    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
Example #34
0
    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
Example #35
0
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
Example #36
0
    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
Example #37
0
    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
Example #38
0
    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
Example #39
0
    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
Example #40
0
    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))
Example #41
0
    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
Example #42
0
    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
Example #43
0
    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,
                }
Example #44
0
    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}
Example #45
0
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()
Example #46
0
    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
Example #47
0
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)