Пример #1
0
 def _sendTodoTaskJumpHighRoom(cls, userId, playMode, clientId):
     # todo fix the pop wnd to ddz's
     if not playMode in dizhuconf.PLAYMODE_ALLSET:
         playMode = dizhuconf.PLAYMODE_DEFAULT
     chosenRoomId, _ = cls._chooseRoom(userId, DIZHU_GAMEID, playMode)
     if chosenRoomId:
         quick_start_ = TodoTaskQuickStart(DIZHU_GAMEID, chosenRoomId)
         info_str_ = dizhuconf.getQuickStartErrorMsg(
             TYRoom.ENTER_ROOM_REASON_GREATER_MAX)
         show_info_ = TodoTaskShowInfo(info_str_, True)
         show_info_.setSubCmd(quick_start_)
         try:
             if cls._useSelfPopWnd(userId):
                 todoTaskObj = TodoTaskHelper.encodeTodoTasks(quick_start_)
                 Alert.sendNormalAlert2Button(DIZHU_GAMEID, userId, '提示',
                                              info_str_, todoTaskObj[0],
                                              '确定', None, '取消')
                 return
         except:
             ftlog.error('_sendTodoTaskJumpHighRoom error userId = ',
                         userId, ' clientId = ', clientId, 'playMode = ',
                         playMode)
         msg = TodoTaskHelper.makeTodoTaskMsg(DIZHU_GAMEID, userId,
                                              show_info_)
         router.sendToUser(msg, userId)
     else:
         cls._sendTodoTaskToUser(userId,
                                 TYRoom.ENTER_ROOM_REASON_GREATER_ALL)
Пример #2
0
 def sendDizhuFailureMsg(cls,
                         gameId,
                         userId,
                         title,
                         message,
                         todotask=None,
                         buttonTitle=None):
     Alert.sendNormalAlert(gameId, userId, title, message, todotask,
                           buttonTitle)
Пример #3
0
 def _sendTodoTaskToUserWithTip(cls, userId, tip):
     t = TodoTaskShowInfo(tip, True)
     try:
         if cls._useSelfPopWnd(userId):
             Alert.sendNormalAlert(DIZHU_GAMEID, userId, '提示', tip, None, '确定')
             return
     except:
         ftlog.error('DizhuQuickStart _sendTodoTaskToUserWithTip userId = ', userId,
                     'tip = ', tip)
     msg = TodoTaskHelper.makeTodoTaskMsg(DIZHU_GAMEID, userId, t)
     router.sendToUser(msg, userId)
Пример #4
0
    def getPray(cls, userId, foodId):
        '''
        获取奖励 
        '''
        food = cls.getFood(foodId)
        if not food:
            return None, None

        if not cls.consumeExpenses(userId, food):
            ftlog.warn('WorshipHelper.getPray',
                       'userId=', userId,
                       'foodId=', foodId,
                       'userChip=', userchip.getChip(userId),
                       'consumeChip=', food.chip)
            payOrder = {
                "contains": {
                    "count": userchip.getChip(userId),
                    "itemId": "user:chip"
                },
                "shelves": [
                    "lessbuychip"
                ]
            }
            clientId = sessiondata.getClientId(userId)
            product, _shelves = hallstore.findProductByPayOrder(DIZHU_GAMEID, userId, clientId, payOrder)
            if not product:
                Alert.sendNormalAlert(DIZHU_GAMEID, userId, '金币不足', '金币不足了, 请去充值吧', None, None)
                return None, None

            buyType = ''
            orderShow = TodoTaskOrderShow.makeByProduct('金币不足', '', product, buyType)
            orderShow.setParam('sub_action_btn_text', '确定')
            mo = TodoTaskHelper.makeTodoTaskMsg(DIZHU_GAMEID, userId, orderShow)
            router.sendToUser(mo, userId)
            return None, None

        # 更新用户花费
        cls.updateUserCost(userId, food.chip)

        # 拜到的奖励
        prayChip = food.choiceReward()
        UserBag.sendAssetsToUser(DIZHU_GAMEID, userId, {'itemId': 'user:chip', 'count': prayChip}, 'DDZ_WORSHIP_SYSTEM')

        # 保存的消息
        msg = cls.getMessageByFoodId(foodId)
        cls.pushRecord(strutil.dumps({
            'userId': userId,
            'msg': msg,
            'chip': prayChip,
            'costChip': food.chip,
        }))
        return {'chip': prayChip, 'msg': msg, 'costChip': food.chip}, userchip.getChip(userId)
Пример #5
0
 def _sendTodoTaskToUser(cls, userId, errorCode):
     tip = dizhuconf.getQuickStartErrorMsg(errorCode)
     t = TodoTaskShowInfo(tip, True)
     try:
         if ftlog.is_debug():
             ftlog.debug('DizhuQuickStart test ddz pop TodoTaskShowInfo come in userId = ', userId)
         if cls._useSelfPopWnd(userId):
             Alert.sendNormalAlert(DIZHU_GAMEID, userId, '提示', tip, None, '确定')
             return
     except:
         ftlog.error('DizhuQuickStart _sendTodoTaskToUser userId=', userId,
                     'tip=', tip)
     msg = TodoTaskHelper.makeTodoTaskMsg(DIZHU_GAMEID, userId, t)
     router.sendToUser(msg, userId)
Пример #6
0
    def _sendToDoTaskJumpToStore(cls, userId):
        if not cls._useSelfPopWnd(userId):
            win = hallpopwnd.makeTodotaskJumpToStoreOrHall("您的金币不足,请购买金币或参加免费比赛~")
            msg = TodoTaskHelper.makeTodoTaskMsg(DIZHU_GAMEID, userId, win)
            router.sendToUser(msg, userId)
            return

        message = "您的金币不足,请购买金币或参加免费比赛~"
        confirmTodotask = TodoTaskDiZhuEvent('dizhu_goto_store')
        cancelTodotask = TodoTaskDiZhuEvent('dizhu_back_hall')
        if ftlog.is_debug():
            ftlog.debug('DizhuQuickStart _sendToDoTaskJumpToStore',
                        'userId=', userId,
                        'confirmTodotask=', confirmTodotask,
                        'cancelTodotask=', cancelTodotask.toDict())
        Alert.sendNormalAlert2Button(DIZHU_GAMEID, userId, '提示', message,
                                     confirmTodotask.toDict(), '确定',
                                     cancelTodotask.toDict(), '取消')
Пример #7
0
 def _sendTodoTaskJumpHighRoom(cls, userId, playMode, clientId, **kwargs):
     if not playMode in dizhuconf.PLAYMODE_ALLSET:
         playMode = dizhuconf.PLAYMODE_DEFAULT
     ctrlRoomIds, _ = cls._getQuickStartRoomList(userId, playMode, rankId=kwargs.get('rankId', '-1'))  # 快开列表
     chosenRoomId, reason, mixId = cls._chooseRoom(userId, ctrlRoomIds, rankId=kwargs.get('rankId', '-1'))
     if chosenRoomId and reason == ENTER_ROOM_REASON_OK:
         quick_start_ = TodoTaskQuickStart(DIZHU_GAMEID, chosenRoomId)
         quick_start_.setParam('mixId', mixId)
         info_str_ = dizhuconf.getQuickStartErrorMsg(ENTER_ROOM_REASON_GREATER_MAX)
         show_info_ = TodoTaskShowInfo(info_str_, True)
         show_info_.setSubCmd(quick_start_)
         try:
             if cls._useSelfPopWnd(userId):
                 todoTaskObj = TodoTaskHelper.encodeTodoTasks(quick_start_)
                 Alert.sendNormalAlert2Button(DIZHU_GAMEID, userId, '提示', info_str_, todoTaskObj[0], '确定', None, '取消')
                 return
         except:
             ftlog.error('DizhuQuickStart _sendTodoTaskJumpHighRoom error userId = ', userId,
                         ' clientId = ', clientId,
                         'playMode = ', playMode)
         msg = TodoTaskHelper.makeTodoTaskMsg(DIZHU_GAMEID, userId, show_info_)
         router.sendToUser(msg, userId)
     else:
         cls._sendTodoTaskToUser(userId, ENTER_ROOM_REASON_GREATER_ALL)
Пример #8
0
 def sendDizhuFailureMsg(cls, gameId, userId, title, message, todotask=None, buttonTitle=None,itemCount=0,itemName='',itemDes='',itemUrl=''):
     Alert.sendNormalAlert(gameId, userId, title, message, todotask, buttonTitle,itemCount,
                              itemName, itemDes, itemUrl)
Пример #9
0
    def getFishReward(cls, userId, baitId):
        # 钓到没钓到标志
        rewardCount = 0
        record = ''
        fishPic = ''
        couponFishPic = ''
        exchangeDes = ''
        deltaChip = 0
        deltaCouponCount = 0

        # 检查用户Id, baitId 是否匹配, 获取 bait 消费金币
        userName = str(userdata.getAttrs(userId, ['name'])[0])
        bait = cls.getBait(baitId)
        consumeChip = bait.chip if bait else 0

        if not consumeChip or not cls.consumeExpenses(
                userId,
                TYContentItem.decodeFromDict({
                    'itemId': 'user:chip',
                    'count': consumeChip
                })):
            ftlog.warn('FishHelper.getFishReward', 'userId=',
                       userId, 'baitId=', baitId, 'userChip=',
                       userchip.getChip(userId), 'consumeChip=', consumeChip)
            payOrder = {
                "contains": {
                    "count": userchip.getChip(userId),
                    "itemId": "user:chip"
                },
                "shelves": ["lessbuychip"]
            }
            clientId = sessiondata.getClientId(userId)
            product, _shelves = hallstore.findProductByPayOrder(
                DIZHU_GAMEID, userId, clientId, payOrder)
            if not product:
                Alert.sendNormalAlert(DIZHU_GAMEID, userId, '金币不足',
                                      '金币不足了, 请去充值吧', None, None)
                return

            buyType = ''
            orderShow = TodoTaskOrderShow.makeByProduct(
                '金币不足', '', product, buyType)
            orderShow.setParam('sub_action_btn_text', '确定')
            mo = TodoTaskHelper.makeTodoTaskMsg(DIZHU_GAMEID, userId,
                                                orderShow)
            router.sendToUser(mo, userId)
            return

        # 随机获得珍珠, 存入数据库
        couponFish = cls.getCouponFishList()[0]
        # 判断鱼饵有没有奖券鱼的配置
        item = dizhu_util.getItemByWeight(
            bait.couponFishRewards) if bait.couponFishRewards else None
        couponCount = item.count if item else 0
        count = loadUserFishingCount(userId, couponFish.id)
        if couponCount:
            assetKind = hallitem.itemSystem.findAssetKind('user:coupon')
            couponCount = couponCount * 1.0 / assetKind.displayRate
            couponCount = int(couponCount) if couponCount.is_integer(
            ) else round(couponCount, 2)
            rewardCount += 1
            count += 1
            couponFishPic = couponFish.pic
            if count >= couponFish.needNum:
                count = 0
                # 发送奖券
                dictionary = {
                    'zhenzhu_count': couponFish.needNum,
                    'coupon_count': couponCount
                }
                record = json.dumps(
                    cls.getRealUserMail(cls.getMail(couponFish, True, False),
                                        dictionary))
                exchangeDes = json.dumps(
                    cls.getRealUserMail(cls.getMail(couponFish, True, True),
                                        dictionary))
                dictionary2 = {
                    'user_name': userName,
                    'zhenzhu_count': couponFish.needNum,
                    'coupon_count': couponCount
                }
                record2 = json.dumps(
                    cls.getRealUserMail(cls.getMail(couponFish, False, True),
                                        dictionary2))
                saveUserFishingCount(userId, couponFish.id, count)
                UserBag.sendAssetsToUser(DIZHU_GAMEID, userId, {
                    'itemId': item.assetKindId,
                    'count': item.count
                }, 'DDZ_FISHING_SYSTEM')
                deltaCouponCount = item.count
                cls.pushRecord(record2)
                if ftlog.is_debug():
                    ftlog.debug('FishHelper.getFishReward coupon exchangeDes',
                                'userId=', userId, 'fishId=', couponFish.id,
                                'exchangeDes=', exchangeDes)
            else:
                # 获得一个奖券鱼
                dictionary = {
                    'zhenzhu_count': couponFish.needNum,
                    'coupon_count': couponCount
                }
                record = json.dumps(
                    cls.getRealUserMail(cls.getMail(couponFish, True, False),
                                        dictionary))
                dictionary2 = {
                    'user_name': userName,
                    'zhenzhu_count': couponFish.needNum,
                    'coupon_count': couponCount
                }
                record2 = json.dumps(
                    cls.getRealUserMail(cls.getMail(couponFish, False, False),
                                        dictionary2))
                saveUserFishingCount(userId, couponFish.id, count)
                cls.pushRecord(record2)
                if ftlog.is_debug():
                    ftlog.debug('FishHelper.getFishReward coupon', 'userId=',
                                userId, 'fishId=', couponFish.id, 'record=',
                                record)

        # 随机获取金币奖励,对应bait下普通鱼
        userBaits = filter(lambda x: x.id == baitId, _fishingConf.baits)
        fish = userBaits[0].choiceFish()
        if fish.id:  # 钓到鱼了
            reward = fish.choiceReward()
            chip = reward.count
            if chip:
                rewardCount += 1
                bigFish = cls.getSuperFishList()[0]
                bigReward = dizhu_util.getItemByWeight(
                    bait.superFishRewards) if bait.superFishRewards else None
                if bigReward and bigReward.count and fish.id == bait.fishList[
                        -1].id:  # roll 大鱼的机会
                    fish = bigFish
                    chip = bigReward.count
                fishPic = fish.pic
                dictionary = {
                    'random_message': cls.getMessageByFishId(fish.id),
                    'fish_name': fish.name,
                    'chip_count': chip
                }
                if rewardCount == 2:
                    record = json.dumps(
                        cls.getRealUserMail(cls.getCombinationMail(),
                                            dictionary))
                else:
                    record = json.dumps(
                        cls.getRealUserMail(cls.getMail(fish, True),
                                            dictionary))
                dictionary2 = {
                    'user_name': userName,
                    'fish_name': fish.name,
                    'chip_count': chip,
                    'random_message': cls.getMessageByFishId(fish.id)
                }
                record2 = json.dumps(
                    cls.getRealUserMail(cls.getMail(fish, False), dictionary2))
                UserBag.sendAssetsToUser(DIZHU_GAMEID, userId, {
                    'itemId': 'user:chip',
                    'count': chip
                }, 'DDZ_FISHING_SYSTEM')
                cls.pushRecord(record2)
                deltaChip = chip

                if ftlog.is_debug():
                    ftlog.debug('FishHelper.getFishReward', 'userId=', userId,
                                'fishId=', fish.id, 'record=', record)
        return {
            'rewardCount':
            rewardCount,
            'desc':
            json.loads(record)
            if rewardCount and record else cls.getailureMail(),
            'couponFishPic':
            couponFishPic,
            'fishPic':
            fishPic,
            'exchangeDes':
            json.loads(exchangeDes) if exchangeDes else '',
            'finalCouponCount':
            userdata.getAttr(userId, 'coupon'),
            'finalChip':
            userchip.getChip(userId),
            'couponFishCount':
            count,
            'deltaChip':
            deltaChip,
            'deltaCouponCount':
            deltaCouponCount
        }