def terminateLobbyOperation(dynamicId,characterId,operaType):
    '''
          中断大厅操作
    @param operaType: 操作类型:1、训练   2、卖艺
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if player is None:
        return {'result':False,'message':Lg().g(18)}

    level = player.level.getLevel()
    lobbyRecord = dbaccess.getPlayerLobbyRecord(characterId)
    if lobbyRecord[2] == None or lobbyRecord[3] == None:
        return {'result':False, 'message':u'您的大厅操作记录不正确'}
    now = datetime.datetime.now()
    duration = int(((lobbyRecord[3] - now).seconds) / 3600)
    bonus = 0
    exp = player.level.getExp()
    if operaType == 1:
        if lobbyRecord[4] == 1:#双倍奖励
            bonus = int(math.pow((level + 1) * 33, 1.15) * duration * 2)
        else:
            bonus = int(math.pow((level + 1) * 33, 1.15) * duration)
            exp += bonus
        dbaccess.updatePlayerInfo(characterId, {'status':1, 'exp':exp})
        player.level.setExp(exp)
        player.level.updateLevel()
        player.baseInfo.setStatus(1)
    else:
        pass
    
    return {'result':True, 'data':{'bonus':bonus, 'level':player.level.getLevel()}}



    
 def _doSleep(self, index, payType, payNum, energy, energyDelta, gold, coupon, restRecord, ttype):
     pid = self._owner.baseInfo.id
     if payType == 'gold':
         gold -= payNum
         if gold < 0:
             return {'result':False, 'message':u'您的黄金量不足'}
         if ttype == 'spoor':
             if restRecord[index] >= 2:
                 return {'result':False, 'message':u'您今天不能此操作'}
         else:
             if restRecord[index] >= 1:
                 return {'result':False, 'message':u'您今天不能此操作'}
         energy += energyDelta
         if energy > 200:
             return {'result':False, 'message':u'您的活力已达上限'}
         dbaccess.updatePlayerInfo(pid, {'energy':energy, 'gold':gold})
     else:
         coupon -= payNum
         if coupon < 0:
             return {'result':False, 'message':u'您的礼券量不足'}
         energy += energyDelta
         if energy > 200:
             return {'result':False, 'message':u'您的活力已达上限'}
         dbaccess.updatePlayerInfo(pid, {'energy':energy, 'coupon':coupon})
     return {'result':True, 'data':{'gold':gold, 'coupon':coupon, 'energy':energy}}
     
     
 def doFirstRechargeBound(self):
     '''首次充值奖励
     '''
     package = self._owner.pack._package.getPackageByType(1)
     nowsize = package.getSize()+1
     package.setSize(nowsize)
     dbaccess.updatePlayerInfo(self._owner.baseInfo.id, {'packageSize':nowsize})
     self._owner.pack.putNewItemsInPackage(20700071,1)#添加首充礼包
 def doFirstRechargeBound(self):
     '''首次充值奖励
     '''
     package = self._owner.pack._package.getPackageByType(1)
     nowsize = package.getSize() + 1
     package.setSize(nowsize)
     dbaccess.updatePlayerInfo(self._owner.baseInfo.id,
                               {'packageSize': nowsize})
     self._owner.pack.putNewItemsInPackage(20700071, 1)  #添加首充礼包
Example #5
0
    def pratice(self, monsterId, singleExpBonus, monsterCount, monsterLevel):
        '''
                     修炼怪物
        @param monsterId: 怪物id
        @param singleExpBonus: 每个怪得到的经验奖励
        @param monsterCount: 修炼怪物数量
        @param monsterLevel: 修炼怪物等级
        '''
        id = self._owner.baseInfo.id
        energy = self._owner.attribute.getEnergy()
        if energy == 0:
            return {'result': False, 'message': Lg().g(440)}
        coin = self._owner.finance.getCoin()
        exp = self._owner.level.getExp()
        status = 2  #修炼状态
        costEnergy = monsterCount * 1
        totalExp = singleExpBonus * monsterCount
        costCoin = int(
            math.pow(monsterLevel, 1.1) * 9 *
            (1 + (monsterLevel / 150.0))) * monsterCount
        duration = 60 * 3 * monsterCount
        energy -= costEnergy
        coin -= costCoin
        exp += totalExp
        if energy < 0:
            return {'result': False, 'message': Lg().g(440)}
        if coin < 0:
            return {'result': False, 'message': Lg().g(267)}
        dbaccess.updatePlayerInfo(id, {
            'status': status,
            'coin': coin,
            'energy': energy
        })
        startTime = datetime.datetime.now()
        finishTime = startTime + datetime.timedelta(minutes=3 * monsterCount)
        dbaccess.updatePlayerPracticeRecord(id, {'monsterId':monsterId, 'countHit':monsterCount, \
                                                 'startTime':str(startTime), 'finishTime':str(finishTime), \
                                                 'singleExpBonus':singleExpBonus})
        reactor.callLater(int(duration), self.doWhenPracticeFinsihed, {
            'status': 1,
            'exp': exp
        })

        self._owner.baseInfo.setStatus(status)
        self._owner.attribute.setEnergy(energy)
        self._owner.finance.setCoin(coin)

        return {
            'result': True,
            'data': {
                'status': self._owner.baseInfo.getStatus()
            }
        }
Example #6
0
def doWhenLobbyOperateFinsihed(attrs, player):
    '''当大厅操作时间结束时'''
    now = datetime.datetime.now()
    lobbyRecord = dbaccess.getPlayerLobbyRecord(player.baseInfo.id)
    finishTime = lobbyRecord[3]
    if (not finishTime) or (finishTime > now):
        return
    dbaccess.updatePlayerInfo(player.baseInfo.id, attrs)
    #    pushMessage(str(player.baseInfo.id), 'finish')
    player.baseInfo.setStatus(1)
    player.finance.setCoin(attrs['coin'])
    player.level.setExp(attrs['exp'])
    player.level.updateLevel()
def doWhenLobbyOperateFinsihed(attrs, player):
    '''当大厅操作时间结束时'''
    now = datetime.datetime.now()
    lobbyRecord = dbaccess.getPlayerLobbyRecord(player.baseInfo.id)
    finishTime = lobbyRecord[3]
    if (not finishTime) or (finishTime > now):
        return
    dbaccess.updatePlayerInfo(player.baseInfo.id, attrs)
#    pushMessage(str(player.baseInfo.id), 'finish')
    player.baseInfo.setStatus(1)
    player.finance.setCoin(attrs['coin'])
    player.level.setExp(attrs['exp'])
    player.level.updateLevel()
def lobbyOperate(dynamicId,characterId,operaType,duration):
    '''
          大厅操作:修炼、卖艺
    @param operaType: 操作类型:1、训练   2、卖艺
    @param duration: 持续时间
        训练得到的经验=[(自身等级+1)*33]^1.15*训练小时数
        训练消耗的铜币=[(自身等级+1)*44]^1.15*训练小时数
    '''
    
    ret = CanDoServer(characterId)
    if not ret['result']:
        return ret

    player = PlayersManager().getPlayerByID(characterId)
    if player is None:
        return {'result':False,'message':Lg().g(18)}
    
    level = player.level.getLevel()
    exp = player.level.getExp()
    coin = player.finance.getCoin()
    startTime = datetime.datetime.now()
    finishTime = startTime + datetime.timedelta(hours = 1)
    status = 0
    getExp = 0
    costCoin = 0
    if operaType == 1:#训练
        status = 3
        getExp = int(math.pow((level + 1) * 33, 1.15) * duration)
        costCoin = int(math.pow(((level) + 1) * 44, 1.15) * duration)
        exp += getExp
        coin -= costCoin
        if coin < 0:
            return {'result':False, 'message':u'您的铜币不足'}
        dbaccess.updatePlayerInfo(characterId, {'status':status, 'coin':coin})
        bonusCount = getExp
    else:#卖艺
        status = 6
        pass
    dbaccess.updatePlayerLobbyRecord(characterId, {'startTime':str(startTime), 'finishTime':str(finishTime), 'isDoubleBonus':0})
    player.finance.setCoin(coin)
    player.baseInfo.setStatus(status)
    statusDesc = player.baseInfo.setStatus(1)
    durationTime = duration * 3600
    reactor.callLater(durationTime, doWhenLobbyOperateFinsihed, {'status':1, 'coin':coin, 'exp':exp}, player)
    
    startTime = int(time.mktime(startTime.timetuple()))
    finishTime = int(time.mktime(finishTime.timetuple()))
    
    return {'result':True, 'data':{'status':statusDesc, 'bonusCount':bonusCount, \
                                   'startTime':startTime, 'finishTime':finishTime, \
                                   'duration':duration}}
Example #9
0
    def immediateFinishPractice(self, payType, payNum):
        '''立即完成修炼'''
        id = self._owner.baseInfo.id
        gold = self._owner.finance.getGold()
        coupon = self._owner.finance.getCoupon()
        exp = self._owner.level.getExp()
        if payType == 'gold':
            gold -= payNum
        else:
            coupon -= payNum
        if gold < 0:
            return {'result': False, 'reason': u'您的黄金不够'}
        if coupon < 0:
            return {'result': False, 'reason': u'您的礼券不够'}
        record = dbaccess.getPlayerPracticeRecord(id)
        countHit = record[3]
        totalExp = record[3] * record[6]
        exp += totalExp
        monster = loader.getById('npc', record[2], '*')
        monsterName = monster['name']

        for i in range(0, countHit):
            self._owner.quest.onSuccessKillOneMonster(record[2], 'battle')
#            break
#            if item:
#                self._owner.pack.putOneItemIntoTempPackage(item,1)
        self.placePracticeItems(countHit, monster)

        self._owner.level.setExp(exp)
        if not self._owner.level.updateLevel():
            dbaccess.updatePlayerInfo(id, {
                'status': 1,
                'gold': gold,
                'coupon': coupon,
                'exp': exp
            })
        else:
            dbaccess.updatePlayerInfo(id, {
                'status': 1,
                'gold': gold,
                'coupon': coupon
            })

        self._owner.baseInfo.setStatus(1)
        self._owner.finance.setGold(gold)
        self._owner.finance.setCoupon(coupon)

        return {'result':True, 'data':{'monsterName':monsterName, 'totalExp':totalExp, 'countHit':countHit, \
                                      'gold':gold, 'coupon':coupon, 'status':self._owner.baseInfo.getStatus(), \
                                      'level':self._owner.level.getLevel()}}
    def immediateFinishPractice(self, payType, payNum):
        '''立即完成修炼'''
        id = self._owner.baseInfo.id
        gold = self._owner.finance.getGold()
        coupon = self._owner.finance.getCoupon()
        exp = self._owner.level.getExp()
        if payType == 'gold':
            gold -= payNum
        else:
            coupon -= payNum
        if gold < 0 :
            return {'result':False, 'reason':u'您的黄金不够'}
        if coupon < 0:
            return {'result':False, 'reason':u'您的礼券不够'}
        record = dbaccess.getPlayerPracticeRecord(id)
        countHit = record[3]
        totalExp = record[3] * record[6]
        exp += totalExp
        monster = loader.getById('npc', record[2], '*')
        monsterName = monster['name']

        for i in range(0,countHit):
            self._owner.quest.onSuccessKillOneMonster(record[2],'battle')
#            break
#            if item:
#                self._owner.pack.putOneItemIntoTempPackage(item,1)
        self.placePracticeItems(countHit, monster)

        self._owner.level.setExp(exp)
        if not self._owner.level.updateLevel():
            dbaccess.updatePlayerInfo(id, {'status':1, 'gold':gold, 'coupon':coupon, 'exp':exp})
        else:
            dbaccess.updatePlayerInfo(id, {'status':1, 'gold':gold, 'coupon':coupon})

        self._owner.baseInfo.setStatus(1)
        self._owner.finance.setGold(gold)
        self._owner.finance.setCoupon(coupon)

        return {'result':True, 'data':{'monsterName':monsterName, 'totalExp':totalExp, 'countHit':countHit, \
                                      'gold':gold, 'coupon':coupon, 'status':self._owner.baseInfo.getStatus(), \
                                      'level':self._owner.level.getLevel()}}
 def packageExpansion(self,position):
     '''包裹扩充'''
     package = self.pack
     PurposeSize = position +1
     start = package.getSize()-self.INITSIZE
     if start<0:
         return {'result':False,'message':u'坑爹呢!'}
     end = PurposeSize - package.getSize()
     cost = 0
     while end>0:
         start += 1
         cost += start*2
         end -=1
     if self._owner.finance.getGold()<cost:
         return {'result':False,'message':Lg().g(190)}
     self._owner.finance.updateGold(self._owner.finance.getGold()-cost)
     self._owner.updatePlayerInfo()
     package.setSize(PurposeSize)
     dbaccess.updatePlayerInfo(self._owner.baseInfo.id, {'famPackSize':PurposeSize})
     pushPromptedMessage(Lg().g(352)%cost,[self._owner.getDynamicId()])
     return {'result':True,'message':Lg().g(352)%cost}
    def pratice(self, monsterId, singleExpBonus, monsterCount,monsterLevel):
        '''
                     修炼怪物
        @param monsterId: 怪物id
        @param singleExpBonus: 每个怪得到的经验奖励
        @param monsterCount: 修炼怪物数量
        @param monsterLevel: 修炼怪物等级
        '''
        id = self._owner.baseInfo.id
        energy = self._owner.attribute.getEnergy()
        if energy == 0:
            return {'result':False, 'message':Lg().g(440)}
        coin = self._owner.finance.getCoin()
        exp = self._owner.level.getExp()
        status = 2#修炼状态
        costEnergy = monsterCount * 1
        totalExp = singleExpBonus * monsterCount
        costCoin = int(math.pow(monsterLevel,1.1)*9*(1+(monsterLevel/150.0)))*monsterCount
        duration = 60 * 3 * monsterCount
        energy -= costEnergy
        coin -= costCoin
        exp += totalExp
        if energy < 0:
            return {'result':False, 'message':Lg().g(440)}
        if coin < 0:
            return {'result':False, 'message':Lg().g(267)}
        dbaccess.updatePlayerInfo(id, {'status':status, 'coin':coin, 'energy':energy})
        startTime = datetime.datetime.now()
        finishTime = startTime + datetime.timedelta(minutes = 3 * monsterCount)
        dbaccess.updatePlayerPracticeRecord(id, {'monsterId':monsterId, 'countHit':monsterCount, \
                                                 'startTime':str(startTime), 'finishTime':str(finishTime), \
                                                 'singleExpBonus':singleExpBonus})
        reactor.callLater(int(duration), self.doWhenPracticeFinsihed, {'status':1, 'exp':exp})

        self._owner.baseInfo.setStatus(status)
        self._owner.attribute.setEnergy(energy)
        self._owner.finance.setCoin(coin)

        return {'result':True, 'data':{'status':self._owner.baseInfo.getStatus()}}
 def packageExpansion(self,packageType,curpage,position):
     '''包裹扩充'''
     package = self._package.getPackageByType(packageType)
     PurposeSize = (curpage-1)*self._package.LIMIT + position +1
     start = package.getSize()-24
     if start<0:
         return {'result':False,'message':u'坑爹呢!'}
     end = PurposeSize - package.getSize()
     if end<0:
         return {'result':False,'message':u'坑爹呢!'}
     cost = 0
     while end>0:
         start += 1
         cost += start*2
         end -=1
     if self._owner.finance.getGold()<cost:
         return {'result':False,'message':Lg().g(190)}
     self._owner.finance.updateGold(self._owner.finance.getGold()-cost)
     self._owner.updatePlayerInfo()
     package.setSize(PurposeSize)
     dbaccess.updatePlayerInfo(self._owner.baseInfo.id, {'packageSize':PurposeSize})
     pushPromptedMessage(Lg().g(352)%cost,[self._owner.getDynamicId()])
     return {'result':True,'message':Lg().g(352)%cost}
Example #14
0
def terminateLobbyOperation(dynamicId, characterId, operaType):
    '''
          中断大厅操作
    @param operaType: 操作类型:1、训练   2、卖艺
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if player is None:
        return {'result': False, 'message': Lg().g(18)}

    level = player.level.getLevel()
    lobbyRecord = dbaccess.getPlayerLobbyRecord(characterId)
    if lobbyRecord[2] == None or lobbyRecord[3] == None:
        return {'result': False, 'message': u'您的大厅操作记录不正确'}
    now = datetime.datetime.now()
    duration = int(((lobbyRecord[3] - now).seconds) / 3600)
    bonus = 0
    exp = player.level.getExp()
    if operaType == 1:
        if lobbyRecord[4] == 1:  #双倍奖励
            bonus = int(math.pow((level + 1) * 33, 1.15) * duration * 2)
        else:
            bonus = int(math.pow((level + 1) * 33, 1.15) * duration)
            exp += bonus
        dbaccess.updatePlayerInfo(characterId, {'status': 1, 'exp': exp})
        player.level.setExp(exp)
        player.level.updateLevel()
        player.baseInfo.setStatus(1)
    else:
        pass

    return {
        'result': True,
        'data': {
            'bonus': bonus,
            'level': player.level.getLevel()
        }
    }
Example #15
0
    def terminatePractice(self):
        '''
                     终止玩家修炼
        '''
        id = self._owner.baseInfo.id
        exp = self._owner.level.getExp()

        record = dbaccess.getPlayerPracticeRecord(id)
        monsterId = record[2]
        startTime = record[4]
        finishTime = record[5]
        singleExpBonus = record[6]
        now = datetime.datetime.now()
        currentCountHit = int((now - startTime).seconds / (60 * 3))
        int((finishTime - startTime).seconds / 60)
        currentExp = currentCountHit * singleExpBonus
        monster = loader.getById('npc', monsterId, '*')
        if not monster:
            return {'result': False, 'message': Lg().g(441)}

        for i in range(0, currentCountHit):
            pass
#            self._owner.quest.onSuccessKillOneMonster(monsterId)
#            break
#        if item:
#            self._owner.pack.putOneItemIntoTempPackage(item, currentCountHit)
#            pushMessage(str(self._owner.baseInfo.id),'newTempPackage')
#        self.placePracticeItems(currentCountHit, monster)

        monsterName = monster['name']
        self._owner.level.setExp(exp + currentExp)
        dbaccess.updatePlayerInfo(id, {'status': 1})
        self._owner.baseInfo.setStatus(1)
        return {'result':True, 'data':{'monsterName':monsterName, 'currentExp':currentExp, \
                                      'currentCountHit':currentCountHit, 'status':self._owner.baseInfo.getStatus(), \
                                      'level':self._owner.level.getLevel()}}
 def packageExpansion(self, packageType, curpage, position):
     '''包裹扩充'''
     package = self._package.getPackageByType(packageType)
     PurposeSize = (curpage - 1) * self._package.LIMIT + position + 1
     start = package.getSize() - 24
     if start < 0:
         return {'result': False, 'message': u'坑爹呢!'}
     end = PurposeSize - package.getSize()
     if end < 0:
         return {'result': False, 'message': u'坑爹呢!'}
     cost = 0
     while end > 0:
         start += 1
         cost += start * 2
         end -= 1
     if self._owner.finance.getGold() < cost:
         return {'result': False, 'message': Lg().g(190)}
     self._owner.finance.updateGold(self._owner.finance.getGold() - cost)
     self._owner.updatePlayerInfo()
     package.setSize(PurposeSize)
     dbaccess.updatePlayerInfo(self._owner.baseInfo.id,
                               {'packageSize': PurposeSize})
     pushPromptedMessage(Lg().g(352) % cost, [self._owner.getDynamicId()])
     return {'result': True, 'message': Lg().g(352) % cost}
    def terminatePractice(self):
        '''
                     终止玩家修炼
        '''
        id = self._owner.baseInfo.id
        exp = self._owner.level.getExp()

        record = dbaccess.getPlayerPracticeRecord(id)
        monsterId = record[2]
        startTime = record[4]
        finishTime = record[5]
        singleExpBonus = record[6]
        now = datetime.datetime.now()
        currentCountHit = int((now - startTime).seconds / (60 * 3))
        int((finishTime - startTime).seconds / 60)
        currentExp = currentCountHit * singleExpBonus
        monster = loader.getById('npc', monsterId, '*')
        if not monster:
            return {'result':False, 'message':Lg().g(441)}

        for i in range(0, currentCountHit):
            pass
#            self._owner.quest.onSuccessKillOneMonster(monsterId)
#            break
#        if item:
#            self._owner.pack.putOneItemIntoTempPackage(item, currentCountHit)
#            pushMessage(str(self._owner.baseInfo.id),'newTempPackage')
#        self.placePracticeItems(currentCountHit, monster)

        monsterName = monster['name']
        self._owner.level.setExp(exp + currentExp)
        dbaccess.updatePlayerInfo(id, {'status':1})
        self._owner.baseInfo.setStatus(1)
        return {'result':True, 'data':{'monsterName':monsterName, 'currentExp':currentExp, \
                                      'currentCountHit':currentCountHit, 'status':self._owner.baseInfo.getStatus(), \
                                      'level':self._owner.level.getLevel()}}
Example #18
0
def lobbyOperate(dynamicId, characterId, operaType, duration):
    '''
          大厅操作:修炼、卖艺
    @param operaType: 操作类型:1、训练   2、卖艺
    @param duration: 持续时间
        训练得到的经验=[(自身等级+1)*33]^1.15*训练小时数
        训练消耗的铜币=[(自身等级+1)*44]^1.15*训练小时数
    '''

    ret = CanDoServer(characterId)
    if not ret['result']:
        return ret

    player = PlayersManager().getPlayerByID(characterId)
    if player is None:
        return {'result': False, 'message': Lg().g(18)}

    level = player.level.getLevel()
    exp = player.level.getExp()
    coin = player.finance.getCoin()
    startTime = datetime.datetime.now()
    finishTime = startTime + datetime.timedelta(hours=1)
    status = 0
    getExp = 0
    costCoin = 0
    if operaType == 1:  #训练
        status = 3
        getExp = int(math.pow((level + 1) * 33, 1.15) * duration)
        costCoin = int(math.pow(((level) + 1) * 44, 1.15) * duration)
        exp += getExp
        coin -= costCoin
        if coin < 0:
            return {'result': False, 'message': u'您的铜币不足'}
        dbaccess.updatePlayerInfo(characterId, {
            'status': status,
            'coin': coin
        })
        bonusCount = getExp
    else:  #卖艺
        status = 6
        pass
    dbaccess.updatePlayerLobbyRecord(
        characterId, {
            'startTime': str(startTime),
            'finishTime': str(finishTime),
            'isDoubleBonus': 0
        })
    player.finance.setCoin(coin)
    player.baseInfo.setStatus(status)
    statusDesc = player.baseInfo.setStatus(1)
    durationTime = duration * 3600
    reactor.callLater(durationTime, doWhenLobbyOperateFinsihed, {
        'status': 1,
        'coin': coin,
        'exp': exp
    }, player)

    startTime = int(time.mktime(startTime.timetuple()))
    finishTime = int(time.mktime(finishTime.timetuple()))

    return {'result':True, 'data':{'status':statusDesc, 'bonusCount':bonusCount, \
                                   'startTime':startTime, 'finishTime':finishTime, \
                                   'duration':duration}}
    def doRest(self,ttype,payType,payNum):
        '''宿屋休息'''
        pid = self._owner.baseInfo.id
        profession = self._owner.profession.getProfession()
        level = self._owner.level.getLevel()
        coin = self._owner.finance.getCoin()
        gold = self._owner.finance.getGold()
        coupon = self._owner.finance.getCoupon()
        hp = self.getHp()
        mp = self.getMp()
        energy = self.getEnergy()
        count = 0

        restRecord = dbaccess.getPlayerRestRecord(pid)
        if ttype == 'meal':#用餐
            hp = self.getMaxHp(profession, pid, level)
            mp = self.getMaxMp(profession, pid, level)
            coin -= payNum
            if coin < 0:
                return {'result':False, 'message':Lg().g(267)}
            count = -1
            dbaccess.updatePlayerInfo(pid, {'hp':hp, 'mp':mp, 'coin':coin})
        elif ttype == 'nap':#小憩
            energyDelta = payNum
            result = self._doSleep(2, payType, payNum, energy, energyDelta, gold, coupon, restRecord, ttype)
            if not result['result']:
                return result
            gold = result['data']['gold']
            coupon = result['data']['coupon']
            energy = result['data']['energy']
            count = 1 - (int(restRecord[2]) + 1)
            dbaccess.updatePlayerRestRecord(pid, {'napCount':restRecord[2] + 1})
        elif ttype == 'lightSleep':#浅睡
            energyDelta = payNum
            result = self._doSleep(3, payType, payNum, energy, energyDelta, gold, coupon, restRecord, ttype)
            if not result['result']:
                return result
            gold = result['data']['gold']
            coupon = result['data']['coupon']
            energy = result['data']['energy']
            count = 1 - (int(restRecord[3]) + 1)
            dbaccess.updatePlayerRestRecord(pid, {'lightSleepCount':restRecord[3] + 1})
        elif ttype == 'peacefulSleep':#安眠
            energyDelta = payNum
            result = self._doSleep(4, payType, payNum, energy, energyDelta, gold, coupon, restRecord, ttype)
            if not result['result']:
                return result
            gold = result['data']['gold']
            coupon = result['data']['coupon']
            energy = result['data']['energy']
            count = 1 - (int(restRecord[4]) + 1)
            dbaccess.updatePlayerRestRecord(pid, {'peacefulSleepCount':restRecord[4] + 1})
        elif ttype == 'spoor':#酣睡
            energyDelta = payNum
            result = self._doSleep(5, payType, payNum, energy, energyDelta, gold, coupon, restRecord, ttype)
            if not result['result']:
                return result
            gold = result['data']['gold']
            coupon = result['data']['coupon']
            energy = result['data']['energy']
            count = 2 - (int(restRecord[5]) + 1)
            dbaccess.updatePlayerRestRecord(pid, {'spoorCount':restRecord[5] + 1})

        self.setHp(hp)
        self.setMp(mp)
        self.setEnergy(energy)
        self._owner.finance.setCoin(coin)
        self._owner.finance.setGold(gold)
        self._owner.finance.setCoupon(coupon)

        return {'result':True, 'data':{'hp':hp, 'mp':mp, 'energy':energy, 'gold':gold, \
                                      'coupon':coupon, 'coin':coin, 'type':ttype, 'count':count}}