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
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, ''
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
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
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