예제 #1
0
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
예제 #2
0
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
예제 #3
0
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