示例#1
0
def updateTreasureBoxStart(userIds, bigRoomId):
    tbconfigers = dizhuconf.getTreasureBoxInfo(bigRoomId)
    tbcontinuesecodes = -1
    tbplaycount = 1
    if tbconfigers:
        tbplaycount = tbconfigers['playCount']
        tbcontinuesecodes = tbconfigers['continueSeconds']
    tbinfos = {}
    for userId in userIds:
        tbplaytimes, tblasttime, datas = getUserTbInfo(userId, bigRoomId)
        ctime = int(time.time())
        if abs(ctime - tblasttime) > tbcontinuesecodes:
            tbplaytimes = 0
        tbroomid = bigRoomId
        tblasttime = ctime
        tbplaytimes += 1
        datas['tbroomid'] = tbroomid
        datas['tbplaytimes'] = tbplaytimes
        datas['tblasttime'] = tblasttime
        ftlog.debug('updateTreasureBoxStart->userIds=', userId, 'bigRoomId=',
                    bigRoomId, 'datas=', datas)
        _setTbData(userId, datas)
        datas['tbplaycount'] = tbplaycount
        tbinfos[userId] = datas
    return tbinfos
示例#2
0
def getTreasureTableTip(bigRoomId):
    tbconfigers = dizhuconf.getTreasureBoxInfo(bigRoomId)
    if tbconfigers:
        items = tbconfigers.get('reward', {}).get('items', [])
        for item in items:
            if item['count'] > 0:
                return 1, tbconfigers['desc']
    return 0, ''
示例#3
0
def getTreasureRewardItem(bigRoomId):
    tbconfigers = dizhuconf.getTreasureBoxInfo(bigRoomId)
    itemId = ''
    itemCount = 0  # 奖励个数 wuyagnwei 20160623 3.773
    if tbconfigers:
        items = tbconfigers.get('reward', {}).get('items', [])
        for item in items:
            if item['count'] > 0:
                itemId = item['itemId']
                itemCount = item['count']
    ftlog.debug('getTreasureRewardItem->bigRoomId=', bigRoomId, 'itemId=',
                itemId, 'itemCount=', itemCount)
    return itemId, itemCount
示例#4
0
def getTreasureBoxState(userId, bigRoomId):
    tbplaytimes, tblasttime, _ = getUserTbInfo(userId, bigRoomId)
    tbconfigers = dizhuconf.getTreasureBoxInfo(bigRoomId)
    if tbconfigers:
        ctime = int(time.time())
        tbplaycount = tbconfigers['playCount']
        tbcontinuesecodes = tbconfigers['continueSeconds']
        if tbplaycount < 2 or abs(ctime - tblasttime) > tbcontinuesecodes:
            if tbplaycount < 2:
                tbplaycount = 1
            tbplaytimes = 0
    else:
        tbplaycount = 1
        tbplaytimes = 0
    if tbplaytimes > tbplaycount:
        tbplaytimes = tbplaycount
    ftlog.debug('getTreasureBoxState->userIds=', userId, 'bigRoomId=',
                bigRoomId, tbplaytimes, '/', tbplaycount)
    return tbplaytimes, tbplaycount
示例#5
0
def doTreasureBox(userId, bigRoomId):
    ftlog.debug('doTreasureBox userId=', userId, 'bigRoomId=', bigRoomId)
    # 判定房间配置
    tbconfiger = dizhuconf.getTreasureBoxInfo(bigRoomId)
    if not tbconfiger or not tbconfiger.get('reward', None):
        ftlog.debug('doTreasureBox->userIds=', userId, 'bigRoomId=', bigRoomId,
                    'not tbox room !')
        return {'ok': 0, 'info': '本房间不支持宝箱,请进入高倍房再使用'}
    # 判定是否可以领取
    tbplaytimes, tblasttime, datas = getUserTbInfo(userId, bigRoomId)
    tbplaycount = tbconfiger['playCount']
    if tblasttime <= 0 or tbplaytimes < tbplaycount:
        ftlog.debug('doTreasureBox->userIds=', userId, 'bigRoomId=', bigRoomId,
                    'can not tbox !')
        return {
            'ok': 0,
            'tbt': min(tbplaytimes, tbplaycount),
            'tbc': tbplaycount,
            'info': tbconfiger['desc']
        }
    # 更新宝箱状态
    datas['tblasttime'] = int(time.time())
    datas['tbplaytimes'] = 0
    _setTbData(userId, datas)

    rewards = tbconfiger['reward']
    content = TYContentRegister.decodeFromDict(rewards)
    sitems = content.getItems()
    # 活动加成
    ditems = _getDoubleInfos(bigRoomId)
    if ditems:
        for si in sitems:
            kindId = si.assetKindId
            mutil = ditems.get(kindId, 0)
            if mutil and mutil > 0:
                si.count = int(si.count * mutil)
    # 发送道具
    # ua = hallitem.itemSystem.loadUserAssets(userId)
    # aslist = ua.sendContentItemList(DIZHU_GAMEID, sitems, 1, True,
    #                                 timestamp.getCurrentTimestamp(), 'TASK_OPEN_TBOX_REWARD', bigRoomId)
    aslist = dizhu_util.sendRewardItems(userId, sitems, '',
                                        'TASK_OPEN_TBOX_REWARD', bigRoomId)
    addmsg = TYAssetUtils.buildContentsString(aslist)
    items = []
    for x in aslist:
        kindId = hallconf.translateAssetKindIdToOld(x[0].kindId)
        items.append({'item': kindId, 'count': x[1], 'total': x[2]})
        if kindId in ['user:coupon', 'COUPON']:
            # 广播事件
            from hall.game import TGHall
            TGHall.getEventBus().publishEvent(
                UserCouponReceiveEvent(
                    HALL_GAMEID, userId, x[1],
                    user_coupon_details.USER_COUPON_TABLE_TBBOX))

    from dizhu.game import TGDizhu
    TGDizhu.getEventBus().publishEvent(
        UserTBoxLotteryEvent(DIZHU_GAMEID, userId))
    datas = {
        'ok': 1,
        'tbt': 0,
        'tbc': tbplaycount,
        'info': '开启宝箱,获得' + addmsg,
        'items': items
    }
    ftlog.debug('doTreasureBox->userIds=', userId, 'bigRoomId=', bigRoomId,
                datas)
    return datas