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)
def sendDizhuFailureMsg(cls, gameId, userId, title, message, todotask=None, buttonTitle=None): Alert.sendNormalAlert(gameId, userId, title, message, todotask, buttonTitle)
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)
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)
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)
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(), '取消')
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)
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)
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 }