def _checkExpectedUser(userId, behaviourConf): if not behaviourConf or behaviourConf.get('open', 0) != 1: return False # 过滤clientId _, intClientId = sessiondata.getClientIdNum(userId) intClientIds = behaviourConf.get('intClientIds', []) if intClientId in intClientIds: return False # 过滤注册时间在7天以内的用户 timestamp = pktimestamp.getCurrentTimestamp() if UserInfo.getRegisterDays(userId, timestamp) <= 7: return False return True
def can_ios_tablefinish_fivestar(event): if not event.winlose.isWin: return False # 玩家在高倍场馆单局倍数超过128倍并获胜 if event.winlose.windoubles >= 128: return True # 账号注册时间大于五天、游戏局数超过20局的玩家,连续获胜3局时 timestamp = pktimestamp.getCurrentTimestamp() if UserInfo.getRegisterDays(event.userId, timestamp) > 5: winrate, winstreak = gamedata.getGameAttrs(event.userId, 6, ['winrate', 'winstreak']) winrate = strutil.loads(winrate, ignoreException=True, execptionValue={'pt':0, 'wt':0}) try: winstreak = 0 if winstreak is None else int(winstreak) except: winstreak = 0 if winrate.get('pt', 0) > 20 and winstreak == 3: return True return False
def doInitTablePlayerDatas(userId, roomId, **kwargs): gameId = DIZHU_GAMEID clientId = sessiondata.getClientId(userId) devId = sessiondata.getDeviceId(userId) clientIp = sessiondata.getClientIp(userId) exp, suaddress, susex, suname, sucoin, charm = userdata.getAttrs( userId, ['exp', 'address', 'sex', 'name', 'coin', 'charm']) sugold, slevel, swinrate, winchips, starid, winstreak, lastwinstreak, maxwinstreak, winrate2, firstWin = gamedata.getGameAttrs( userId, gameId, [ 'gold', 'level', 'winrate', 'winchips', 'starid', 'winstreak', 'lastwinstreak', 'maxwinstreak', 'winrate2', 'firstWin' ]) swinrate = strutil.loads(swinrate, ignoreException=True, execptionValue={ 'pt': 0, 'wt': 0 }) winrate2 = strutil.loads(winrate2, ignoreException=True, execptionValue={ 'pt': 0, 'wt': 0 }) firstWin = strutil.loads(firstWin, ignoreException=True, execptionValue={}) suchip = userchip.getChip(userId) bigRoomId = strutil.getBigRoomIdFromInstanceRoomId(roomId) mixConfRoomId = kwargs.get('mixConf', {}).get('roomId') tbplaytimes, tbplaycount = treasurebox.getTreasureBoxState( gameId, userId, mixConfRoomId or bigRoomId) try: supic, isBeauty = halluser.getUserHeadUrl(userId, clientId) except: supic, isBeauty = '', False slevel = recoverUserAttr(slevel, int, 0) datas = {} datas['uid'] = userId datas['clientId'] = clientId datas['devId'] = recoverUserAttr(devId, str, '') datas['clientIp'] = recoverUserAttr(clientIp, str, '') datas['address'] = recoverUserAttr(suaddress, unicode, '') datas['sex'] = recoverUserAttr(susex, int, 0) datas['name'] = recoverUserAttr(suname, unicode, '') datas['coin'] = recoverUserAttr(sucoin, int, 0) datas['headUrl'] = '' datas['purl'] = supic datas['isBeauty'] = isBeauty datas['chip'] = suchip datas['exp'] = recoverUserAttr(exp, int, 0) datas['gold'] = recoverUserAttr(sugold, int, 0) datas['vipzuan'] = [] datas['tbc'] = tbplaycount datas['tbt'] = tbplaytimes datas['level'] = slevel datas['wins'] = swinrate.get('wt', 0) datas['plays'] = swinrate.get('pt', 0) datas['winchips'] = recoverUserAttr(winchips, int, 0) datas['nextexp'] = 0 datas['title'] = '' datas['medals'] = [] datas['skillScoreInfo'] = skillscore.buildUserSkillScoreInfo( skillscore.getUserSkillScore(gameId, userId)) datas['charm'] = 0 if charm == None else recoverUserAttr(charm, int, 0) datas['vipInfo'] = hallvip.userVipSystem.getVipInfo(userId) datas['starid'] = 0 if starid == None else recoverUserAttr(starid, int, 0) datas['winstreak'] = 0 if winstreak == None else recoverUserAttr( winstreak, int, 0) datas['lastwinstreak'] = 0 if lastwinstreak == None else recoverUserAttr( lastwinstreak, int, 0) datas['maxwinstreak'] = 0 if maxwinstreak == None else recoverUserAttr( maxwinstreak, int, 0) datas['gameClientVer'] = gamesession.getGameClientVer(gameId, userId) datas['winrate2'] = winrate2 datas['firstWin'] = firstWin # TODO 查询用户增值位 datas['wearedItems'] = [] userBag = hallitem.itemSystem.loadUserAssets(userId).getUserBag() timestamp = pktimestamp.getCurrentTimestamp() memberCardItem = userBag.getItemByKindId(hallitem.ITEM_MEMBER_NEW_KIND_ID) datas[ 'memberExpires'] = memberCardItem.expiresTime if memberCardItem else 0 datas['registerDays'] = UserInfo.getRegisterDays(userId, timestamp) item = userBag.getItemByKindId(hallitem.ITEM_CARD_NOTE_KIND_ID) # 新用户的计次记牌器 newUserReward = configure.getGameJson(gameId, 'login.reward', {}).get('newUserReward') if newUserReward: if newUserReward.get('open', 0): cardNoteCount = newUserReward.get('cardNoteCount', 0) if cardNoteCount: pt = swinrate.get('pt', 0) if cardNoteCount - pt >= 1: datas['cardNotCount'] = max(1, cardNoteCount - pt) if item and not item.isDied(timestamp): datas['cardNotCount'] = max(1, item.balance(timestamp)) if ftlog.is_debug(): ftlog.debug('table_remote.doInitTablePlayerDatas', 'userId=', userId, 'clientId=', clientId, 'datas=', datas) return datas