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 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 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() } }