示例#1
0
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)
    ret, stype, last_increase, limit, normal, lucky, lineup, guard_time = detail_info
    num = sum(normal.values()) + sum(lucky.values())
    if player.runt.bag_is_full(num):
        response.res.result = False
        response.res.result_no = 12451
        return response.SerializePartialToString()
    stones = player.mine.harvest(request.position)
    # print 'stones', stones
    if stones:
        if not add_stones(player, stones, response):
            response.res.result = False
            response.res.result_no = 824
            return response.SerializePartialToString()

    else:
        response.res.result = False
        response.res.result_no = 12450
        response.res.message = u"没有可以领取的符文石"

    player.mine.save_data()
    player.runt.save()
    hook_task(player, CONDITIONId.GAIN_RUNT, 1)
    return response.SerializePartialToString()
示例#2
0
文件: mine.py 项目: Cuick/traversing
def query_1243(data, player):
    """ 查看矿点详细信息 """
    request = mine_pb2.positionRequest()
    request.ParseFromString(data)
    response = mine_pb2.mineDetail()
    response.position = request.position
    detail_info = player.mine.detail_info(request.position)

    # print detail_info
    last_increase = detail_info.get('increase', 0)
    stype = detail_info['type']
    mine_item = game_configs.mine_config[detail_info['mine_id']]
    limit = mine_item.outputLimited
    normal = detail_info['normal']
    lucky = detail_info['lucky']
    guard_time = detail_info.get('guard_time', 0)
    stage_id = detail_info.get('stage_id', 0)
    seek_help = detail_info.get('seek_help', 0)

    response.res.result = True
    mstatus = player.mine.mine_info(request.position)
    one_mine_info(player, mstatus, response.mine)
    response.limit = limit
    for sid, num in normal.items():
        one_type = response.normal.add()
        one_type.stone_id = int(sid)
        one_type.stone_num = num

    for sid, num in lucky.items():
        one_type = response.lucky.add()
        one_type.stone_id = int(sid)
        one_type.stone_num = num

    response.increase = int(last_increase)
    if stype == 2:
        response.stage_id = int(stage_id)
        response.seek_help = seek_help
        line_up_info(player, response.lineup)
    if stype == 1:
        response.accelerate_times = detail_info.get('accelerate_times', 0)
        _uid = detail_info['uid']
        char_obj = tb_character_info.getObj(_uid)
        if char_obj.exists():
            lineup = char_obj.hget('copy_slots')
            response.lineup.ParseFromString(lineup)

    mid = player.mine.mid(request.position)
    mine_item = game_configs.mine_config.get(mid)

    response.genUnit = mine_item.timeGroup1 / mine_item.outputGroup1
    response.rate = mine_item.increase
    response.incrcost = mine_item.increasePrice
    response.guard_time = int(guard_time)

    player.mine.save_data()
    print response, '=========================aaa'
    return response.SerializePartialToString()
示例#3
0
文件: mine.py 项目: Cuick/traversing
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()
示例#4
0
文件: mine.py 项目: Cuick/traversing
def acc_mine_1250(data, player):
    """
    增产, 只有主矿能增产, 增产累计时长,ok
    """
    request = mine_pb2.positionRequest()
    request.ParseFromString(data)
    response = mine_pb2.IncreaseResponse()

    detail_info = player.mine.detail_info(request.position)
    last_increase = detail_info['increase']

    now = xtime.timestamp()
    main_mine = game_configs.mine_config.get(10001)
    if last_increase + main_mine.increasTime * 60 - now > main_mine.increasMaxTime * 60:
        response.res.result = True
        response.result_no = 12501
        return response.SerializePartialToString()

    mine_item = game_configs.mine_config[detail_info['mine_id']]
    increasePrice = mine_item.increasePrice

    price = CommonGroupItem(0, increasePrice, increasePrice, 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'消费不足!'
        return response.SerializePartialToString()
    else:
        response.res.result = True
    # print 'price', price
    need_gold = item_group_helper.get_consume_gold_num([price])

    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.MINE_ACC, func)
    last_time = player.mine.increase_mine()
    player.mine.save_data()
    tlog_action.log('MineAcc', player, time.strftime("%Y-%m-%d %X",
                    time.localtime(int(last_time))))

    response.position = 0
    response.last_time = int(last_time)
    return response.SerializePartialToString()
示例#5
0
def query_1243(data, player):
    """ 查看矿点详细信息 """
    request = mine_pb2.positionRequest()
    request.ParseFromString(data)
    response = mine_pb2.mineDetail()
    response.position = request.position
    detail_info = player.mine.detail_info(request.position)
    ret, stype, last_increase, limit, normal, lucky, lineup, guard_time = detail_info
    # print 'query 1243', normal, lucky
    if ret == 0:
        response.res.result = True
        mstatus = player.mine.mine_info(request.position)
        one_mine_info(mstatus, response.mine)
        response.limit = limit
        for sid, num in normal.items():
            one_type = response.normal.add()
            one_type.stone_id = int(sid)
            one_type.stone_num = num

        for sid, num in lucky.items():
            one_type = response.lucky.add()
            one_type.stone_id = int(sid)
            one_type.stone_num = num

        response.increase = int(last_increase)
        if stype == 2:
            response.stage_id = int(lineup)
        if stype == 1:
            if lineup is not None:
                response.lineup.ParseFromString(lineup.get('line_up'))

        mid = player.mine.mid(request.position)
        main_mine = game_configs.mine_config.get(mid)

        response.genUnit = int((60 / main_mine.timeGroup1) * main_mine.outputGroup1)
        response.rate = main_mine.increase
        response.incrcost = main_mine.increasePrice
        response.guard_time = int(guard_time)
    else:
        response.res.result = False
        response.res.result_no = ret

    player.mine.save_data()
    # print '1243-response', response
    return response.SerializePartialToString()
示例#6
0
def reward_1249(data, player):
    """
    宝箱领奖,ok
    """
    request = mine_pb2.positionRequest()
    request.ParseFromString(data)
    response = mine_pb2.boxReward()
    response.position = request.position
    items = response.data
    if not player.mine.reward(request.position):
        items.res.result = False
        items.res.result_no = 12490
        items.res.message = u"已领取"
        return items.SerializePartialToString()
    player.mine.save_data()
    drop_id = game_configs.base_config['warFogChest']
    add_items(player, items, [drop_id])
    # print 'reward_1249-response', response
    return response.SerializePartialToString()
示例#7
0
文件: mine.py 项目: Cuick/traversing
def reward_1249(data, player):
    """
    宝箱领奖,ok
    """
    request = mine_pb2.positionRequest()
    request.ParseFromString(data)
    response = mine_pb2.boxReward()
    response.position = request.position
    items = response.data
    if not player.mine.reward(request.position):
        items.res.result = False
        items.res.result_no = 12490
        items.res.message = u"已领取"
        return items.SerializePartialToString()
    player.mine.save_data()
    drop_id = game_configs.base_config['warFogChest']
    add_items(player, items.gain, [drop_id])
    # print 'reward_1249-response', response
    tlog_action.log('MineBox', player)
    return response.SerializePartialToString()
示例#8
0
文件: mine.py 项目: Cuick/traversing
def query_shop_1247(data, player):
    """
    查看神秘商人信息,ok
    """
    request = mine_pb2.positionRequest()
    request.ParseFromString(data)
    shop_ids = player.mine.shop_info(request.position)
    response = mine_pb2.shopStatus()
    if shop_ids:
        response.res.result = True
        for shop_id, status in shop_ids.items():
            one_shop = response.shop.add()
            one_shop.shop_id = shop_id
            one_shop.status = status
    else:
        response.res.result = False
        response.res.message = u"商人不存在"
    player.mine.save_data()
    # print 'query_shop_1247-response', response
    return response.SerializePartialToString()
示例#9
0
def acc_mine_1250(data, player):
    """
    增产, 只有主矿能增产, 增产累计时长,ok
    """
    request = mine_pb2.positionRequest()
    request.ParseFromString(data)
    response = mine_pb2.IncreaseResponse()

    detail_info = player.mine.detail_info(request.position)
    ret, stype, last_increase, limit, normal, lucky, lineup, guard_time = detail_info
    now = xtime.timestamp()
    main_mine = game_configs.mine_config.get(10001)
    if last_increase + main_mine.increasTime * 60 - now > main_mine.increasMaxTime * 60:
        response.res.result = True
        response.result_no = 12501
        return response.SerializePartialToString()
    increasePrice = player.mine.price(request.position)
    price = CommonGroupItem(0, increasePrice, increasePrice, 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'消费不足!'
        return response.SerializePartialToString()
    else:
        response.res.result = True
    # print 'price', price
    need_gold = item_group_helper.get_consume_gold_num([price])
    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.MINE_ACC, func)
    last_time = player.mine.acc_mine()
    player.mine.save_data()

    response.position = 0
    response.last_time = int(last_time)
    return response.SerializePartialToString()
示例#10
0
文件: mine.py 项目: Cuick/traversing
def search_1241(data, player):
    """ 搜索矿点,ok """
    # print 'search_1241'
    request = mine_pb2.positionRequest()
    request.ParseFromString(data)
    response = mine_pb2.searchResponse()
    response.position = request.position
    logger.debug('response.position:%s', response.position)
    if player.mine.can_search(request.position):
        player.mine.search_mine(request.position)
        player.mine.save_data()
        one_mine = player.mine.mine_info(request.position)
        one_mine_info(player, one_mine, response.mine)
        response.res.result = True
        hook_task(player, CONDITIONId.MINE_EXPLORE, 1)
    else:
        response.res.result = False
        response.res.result_no = 12410
        response.res.message = u"超出探索范围"
    # print '1241-response', response

    player.mine.save_data()
    return response.SerializePartialToString()