Ejemplo n.º 1
0
def unloadedEquipment(dynamicId,characterId,fromPosition,toPosition,curpage):
    '''卸下装备
    @param dynamicId: int 客户端的id
    @param characterId: int 角色的id
    @param fromPosition: int 装备的位置
    @param toPosition: int 放到包裹中的位置
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player:
        return {'result':False,'message':Lg().g(18)}
    data = player.pack.unloadedEquipment(fromPosition,toPosition,curpage)
    return data
 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}
Ejemplo n.º 3
0
def getPlayerInfo(dynamicId, characterId):
    '''获取角色信息
    @param dynamicId: int 客户端的id
    @param characterId: int 角色的id
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player:
        return {'result': False, 'message': Lg().g(18)}
    data = player.formatInfo()
    hasBuyCount = player.afk.turnenergytimes
    info = {'playerInfo': data, 'hasBuyCount': hasBuyCount}
    return {'result': True, 'message': u'获取信息成功', 'data': info}
 def giveItemHandle(self,taskId,taskType = 1):
     '''接受任务时给予物品的处理'''
     taskInfo = Quest( taskId)
     taskInfo.setProfession(self._owner.profession.getProfession())
     giveitems = taskInfo.resolveGiveItem()
     package = self._owner.pack._package.getPackageByType(1)
     bagCnt = package.findSparePositionNum()#包裹的格子剩余数量
     if len(giveitems)>bagCnt:
         return {'result':False,'message':Lg().g(16)}
     for item in giveitems:
         self._owner.pack.putNewItemInPackage(item)
     return {'result':True}
Ejemplo n.º 5
0
def AutoJoinBattle4408(dynamicId, characterId, autoJoinFlag):
    '''自动参战或取消自动参战
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player or not player.CheckClient(dynamicId):
        return {'result': False, 'message': Lg().g(18)}
    guildId = player.guild.getID()
    if not guildId:
        return {'result': False, 'message': Lg().g(79)}
    ldID = FortressManager().guildFightFortressId(guildId)
    fortress = FortressManager().getFortressById(ldID)
    if not fortress:
        return {'result': False, 'message': Lg().g(654)}
    if autoJoinFlag:
        chName = player.baseInfo.getName()
        chLevel = player.level.getLevel()
        fortress.Participate(guildId, characterId, chName, chLevel)
        result = fortress.autoJoin(characterId)
    else:
        result = fortress.cancelAutoJoin(characterId)
    return {'result': result}
Ejemplo n.º 6
0
def StrengthenItem_2120(dynamicId, request_proto):
    '''获取强化剩余秒数'''
    argument = StrengthenTime2120_pb2.StrengthenTimeRequest()
    argument.ParseFromString(request_proto)
    response = StrengthenTime2120_pb2.StrengthenTimeResponse()
    pid = argument.id #角色id
    
    result = strengthen.getSYtime(pid)
    response.result = True
    response.message =  Lg().g(166)
    response.reTime=result
    return response.SerializeToString()
Ejemplo n.º 7
0
def dropItemsInPack(dynamicId,characterId,position,packageType,curpage):
    '''丢弃物品
    @param dynamicId: int 客户端的id
    @param characterId: int 角色的id
    @param position: int 物品的位置
    @param packageType: int 包裹的类型
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player or not player.CheckClient(dynamicId):
        return {'result':False,'message':Lg().g(18)}
    data = player.pack.dropItemsInPack(position,packageType,curpage)
    return data
Ejemplo n.º 8
0
def getWarehouseInfo(dynamicId,characterId):
    '''获取角色的仓库信息
    @param dynamicId: int 客户端的id
    @param characterId: int 角色的id
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player:
        return {'result':False,'message':Lg().g(18)}
    package = player.pack.getWarehousePackage()
    packageItemInfo = package.getPackageItemInfo()
    data = {'packageItemInfo':packageItemInfo}
    return {'result':True,'message':u'','data':data}
Ejemplo n.º 9
0
def creatGuild(dynamicId, characterId, corpsName, camp):
    '''创建国
    @param dynamicId: int 客户端动态id
    @param characterId: int 角色的id
    @param corpsName: int 国的名称
    @param camp: int 国阵营 1光明 2黑暗
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if player.level.getLevel() < LEVELREQUIRED:
        return {'result': False, 'message': Lg().g(77)}
    if not player or not player.CheckClient(dynamicId):
        return {'result': False, 'message': Lg().g(18)}
    for word in dbaccess.All_ShieldWord:
        cnt = corpsName.find(word[0])
        if cnt != -1:
            return {'result': False, 'message': Lg().g(78)}
    data = player.guild.creatGuild(corpsName, camp)
    msg = data.get('message', '')
    if msg:
        pushOtherMessage(905, msg, [dynamicId])
    return data
Ejemplo n.º 10
0
def activationSkill(dynamicId, characterId, skillId):
    '''激活技能
    @param dynamicId: int 客户端的id
    @param characterId: int 角色的id
    @param skillId: int 技能id
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player:
        return {'result': False, 'message': Lg().g(18)}
    result = player.skill.activationSkill(skillId)
    pushOtherMessage(905, result.get('message', ''), [dynamicId])
    return result
Ejemplo n.º 11
0
def immediateFinishPractice(dynamicId, characterId, payType, payNum):
    '''立即完成修炼
    @param dynamicId: int 客户端的动态id
    @param characterId: int 角色的id
    @param payType: int 支付类型
    @param payNum: int  支付的数量
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player or not player.CheckClient(dynamicId):
        return {'result': False, 'message': Lg().g(18)}
    data = player.practice.immediateFinishPractice(payType, payNum)
    return data
Ejemplo n.º 12
0
def packageExpansion(dynamicId, characterId,packageType,curpage,position):
    '''扩充包裹
    @param dynamicId: int 客户端的id
    @param characterId: int 角色的id
    @param packageType: int 包裹的类型
    @param curpage: int 包裹当前页
    @param position: int 包裹的坐标
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player or not player.CheckClient(dynamicId):
        return {'result':False,'message':Lg().g(18)}
    return player.pack.packageExpansion(packageType,curpage,position)
Ejemplo n.º 13
0
 def openRandEgg(self, petlist, default):
     '''打开随机宠物蛋
     @param petlist: list [(宠物ID,随机区间)]随机掉落
     @param default: 宠物的ID 默认掉落
     '''
     petsrates = [petinfo[1] for petinfo in petlist]
     petid = 0
     rate = random.randint(0, RATE_BASE)
     for index in range(len(petlist)):
         if rate < sum(petsrates[:index + 1]):
             petid = petlist[index][0]
             break
     if not petid:
         petid = default
     result = self.addPet(petid)
     if result == -1:
         raise Exception(Lg().g(421))
     elif result == -2:
         raise Exception(Lg().g(428))
     else:
         self._owner.quest.specialTaskHandle(110)
Ejemplo n.º 14
0
def GetJingJiInfo3700(dynamicId,characterId):
    '''获取竞技场信息
    '''
    player = PlayersManager().getPlayerByID(characterId)
    res = CanDoServer(characterId)
    if not res['result']:
        pushOtherMessage(905, res.get('message',u''), [dynamicId])
        return res
    if not player or not player.CheckClient(dynamicId):
        return {'result':False,'message':Lg().g(18)}
    data = player.arena.getArenaAllInfo()
    return {'result':True,'data':data}
Ejemplo n.º 15
0
 def activationPetSkill(self, petId):
     '''激活宠物的技能
     @param petId: int 宠物的id
     '''
     self.initCharacterPetInfo()
     if petId not in self._pets.keys():
         return -5  #不存在该宠物
     itemtemplateID = SKILLCRYSTAL.get(1)
     count = self._owner.pack.countItemTemplateId(itemtemplateID)
     if count < 1:
         msg = Lg().g(423)
         pushOtherMessage(905, msg, [self._owner.getDynamicId()])
         return -4
     pet = self._pets.get(petId)
     result, skillId = pet.learnSkill()
     if result == 1:
         self._owner.pack.delItemByTemplateId(itemtemplateID, 1)
         skillName = dbCharacterPet.PET_SKILL_POOL.get(skillId).get('name')
         msg = pet.getName() + Lg().g(424) + skillName
         pushOtherMessage(905, msg, [self._owner.getDynamicId()])
     return result
Ejemplo n.º 16
0
def receiveAward(dynamicId, characterId, awardtype):
    '''领取奖励
    @param dynamicId: int 客户端的动态id
    @param characterId: int 角色的id
    @param awardtype: int 奖励的类型
    '''
    player = PlayersManager().getPlayerByID(characterId)

    if not player or not player.CheckClient(dynamicId):
        return {'result': False, 'message': Lg().g(18)}
    result = player.award.receiveAward(awardtype)
    return {'result': result, 'message': u''}
Ejemplo n.º 17
0
def CorpsInviteOther(dynamicId, characterId, otherid, otername):
    '''邀请加入行会
    @param dynamicId: int 客户端的动态id
    @param characterId: int 角色的id
    @param otherid: int 对方的Id
    @param otername: 对方的名称
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player or not player.CheckClient(dynamicId):
        return {'result': False, 'message': Lg().g(18)}
    guildId = player.guild.getID()
    if not guildId:
        return {'result': False, 'message': Lg().g(79)}
    toplayer = PlayersManager().getPlayerByID(otherid)
    if not toplayer:
        return {'result': False, 'message': Lg().g(91)}
    if toplayer.level.getLevel() < LEVELREQUIRED:
        return {'result': False, 'message': Lg().g(86)}
    guild = GuildManager().getGuildById(guildId)
    if guild.guildinfo.get('curMenberNum', 50) >= guild.guildinfo.get(
            'memberCount', 50):
        return {'result': False, 'message': Lg().g(83)}
    sendList = [toplayer.getDynamicId()]
    pushInviteOtherJoinGuild(characterId, guildId, player.baseInfo.getName(),\
                              guild.getGuildName(), sendList)
    msg = Lg().g(92)
    pushOtherMessage(905, msg, [dynamicId])
    return {'result': True}
Ejemplo n.º 18
0
    def updateFJ(self):
        '''更新物品附加信息(适用于强化物品)'''
        qh = self.attribute.getStrengthen()

        pz = self.baseInfo.getItemTemplateInfo().get("baseQuality", 0)  #获取品质
        #        qh=StrengthenManager().getGainInfo(self.attribute.strengthen,pz) #获取强化信息
        itemProfession = self.baseInfo.getItemProfession(
        )  #职业类型限制 1战士 2 法师 3 游侠 4 牧师  0无属性
        #        if not qh:
        #            return False
        #        if self.attribute.strengthen>=0:
        #            pass
        #            #print " "
        iteminfo = self.baseInfo.getItemTemplateInfo()  #物品模板id信息
        typeid = iteminfo.get('bodyType', 0)
        arraylist = configure.getAttributeByZyAndWqTypeid(
            itemProfession, typeid, qh, pz)
        for array in arraylist:
            if array[0] == Lg().g(36):
                self.attribute.extMagicAttack = array[1]  #附加魔法攻击
            elif array[0] == Lg().g(34):
                self.attribute.extPhysicalAttack = array[1]  #附加物理攻击
            elif array[0] == Lg().g(35):
                self.attribute.extPhysicalDefense = array[1]  #附加物理防御
            elif array[0] == Lg().g(37):
                self.attribute.extMagicDefense = array[1]  #附加魔法防御
            elif array[0] == Lg().g(55):
                self.attribute.extSpeedAdditional = array[1]  #附加攻速
            elif array[0] == Lg().g(32):
                self.attribute.extHpAdditional = array[1]  #附加最大血量
Ejemplo n.º 19
0
def terminatePractice_405(dynamicId, request_proto):
    '''立即结束修炼'''
    argument = terminatePractice_pb2.terminatePracticeRequest()
    argument.ParseFromString(request_proto)
    response = terminatePractice_pb2.terminatePracticeResponse()

    dynamicId = dynamicId
    characterId = argument.id
    data = practice.terminatePractice(dynamicId, characterId)
    response.result = data.get('result', False)
    response.message = data.get('message', u'')
    if data.get('data', None):
        response.data.monsterName = data.get('data')['monsterName']
        response.data.currentExp = data.get('data')['currentExp']
        response.data.currentCountHit = data.get('data')['currentCountHit']
        statuses = {
            1: Lg().g(616),
            2: Lg().g(174),
            3: Lg().g(617),
            4: Lg().g(172),
            5: Lg().g(171),
            6: Lg().g(618)
        }
        response.data.status = statuses.get(data.get('data')['status'], u'')
        response.data.level = data.get('data')['level']
    return response.SerializeToString()
    def UnloadFate(self, opear, frompos, topos):
        '''卸下命格信息
        '''
        tofateId = self.fatepack.get(topos)
        if not opear:  #操作的是角色时
            fromfateId = self.equiped.get(frompos)
            if not fromfateId:
                return {'result': False, 'message': Lg().g(305)}  #False
            del self.equiped[frompos]
        else:  #操作的是宠物时
            pet = self._owner.pet.getPet(opear)
            if not pet:
                return {'result': False, 'message': Lg().g(159)}
            fromfateId = pet.fate.get(frompos)
            if not fromfateId:
                return {'result': False, 'message': Lg().g(305)}
            del pet.fate[frompos]

        if not tofateId:  #当卸下的目的地没有命格时
            self.fatepack[topos] = fromfateId
            self.fates[fromfateId].updateFateInfo({
                'equip': -2,
                'position': topos
            })
        else:  #当卸下的目的地有命格时
            if self.fates[fromfateId].templateinfo['quality'] > self.fates[
                    tofateId].templateinfo['quality']:  #吞噬
                maxexp = self.fates[tofateId].getAllExp()
                self.fates[fromfateId].addExp(maxexp)
                self.fates[tofateId].destroyByDB()
                del self.fates[tofateId]
                prop = {'equip': -2, 'position': topos}
                self.fates[fromfateId].updateFateInfo(prop)
                self.fatepack[topos] = fromfateId
            else:  #被吞噬
                maxexp = self.fates[fromfateId].getAllExp()
                self.fates[tofateId].addExp(maxexp)
                self.fates[fromfateId].destroyByDB()
                del self.fates[fromfateId]
        return {'result': True, 'data': opear}
 def getFriendAll(self, characterId, friendType, ziduan, guize):
     '''显示好友信息
     @param characterId: int 角色的id
     @param friendType: 好友类型(1,2,3)1:好友  2:黑名单  3:全部   4:仇敌
     @param ziduan: int  1按角色名称,0角色等级,2行会名称  3最近登录时间
     @param guize: int 排序规则 1正序   0倒序
     @param page: int 当前页数
     @param counts: int 每页多少条信息
     '''
     #['id','nickname','profession','level','name','LastonlineTime']
     result = dbFriend.getPlayerFriend(characterId, friendType, ziduan,
                                       guize)
     from app.scense.core.PlayersManager import PlayersManager
     list1 = []  #在线
     list2 = []  #不在线
     if result:
         for i in range(len(result)):
             cid = result[i].get("id", 0)
             if cid > 0:
                 player = PlayersManager().getPlayerByID(cid)
                 if player:  #如果角色在线
                     result[i]['level'] = player.level.getLevel()  #角色等级
                     if player.guild.getID() != 0:
                         result[i]['name'] = player.guild.getGuildName(
                         )  #所属国的名字
                     result[i]['clue'] = player.baseInfo.getSceneName(
                     )  #场景名称
                     result[i]['zx'] = 1
                     if player.baseInfo.getState() > 0:  #如果在副本中
                         result[i]['scenename'] = Lg().g(316)
                     else:  #如果不在副本中
                         result[i][
                             'scenename'] = player.baseInfo.getSceneName()
                     list1.append(result[i])
                 else:  #如果角色不在线
                     result[i]['scenename'] = Lg().g(272)
                     result[i]['zx'] = 0
                     list2.append(result[i])
         return list1 + list2
     return None
 def ItemCompound(self, itemId):
     '''合成物品
     @param param: 
     '''
     if self._owner.level.getLevel() < 21:  #功能等级开放限制
         return {'result': False, 'message': Lg().g(414)}
     compound = dbItems.ALL_COMPOUND.get(itemId)
     if not compound:
         return {'result': False, 'message': Lg().g(415)}
     coinrequired = compound['coinrequired']
     if coinrequired > self._owner.finance.getCoin():
         return {'result': False, 'message': Lg().g(88)}
     itemArequired = compound['m1_cnt']
     nowitemAcnt = self._package._PropsPagePack.countItemTemplateId(
         compound['m1_item'])
     itemBrequired = compound['m2_cnt']
     nowitemBcnt = self._package._PropsPagePack.countItemTemplateId(
         compound['m2_item'])
     if itemArequired > nowitemAcnt or itemBrequired > nowitemBcnt:
         return {'result': False, 'message': Lg().g(416)}
     self._owner.finance.addCoin(-coinrequired)
     itemname = compound.get('name', '')
     if itemId in dbItems.ALL_GEMINFO.keys():
         gemlevel = compound.get('level', 0)
         viplevel = self._owner.baseInfo._viptype
         compoundRate = min(100 - 5 * gemlevel + 10 * viplevel, 100)
         if not checkRate(compoundRate):  #检测合成几率,合成是否成功
             return {'result': True, 'message': Lg().g(417) % itemname}
     self.delItemByTemplateId(compound['m1_item'], itemArequired)
     self.delItemByTemplateId(compound['m2_item'], itemBrequired)
     self.putNewItemsInPackage(itemId, 1)
     self._owner.schedule.noticeSchedule(4)  #成功后的每日目标通知
     self._owner.quest.specialTaskHandle(125)  #成功后的特殊任务通知
     return {'result': True, 'message': Lg().g(418) % itemname}
Ejemplo n.º 23
0
def FinalRegist(dynamicId, username, password, nickname, profession):
    '''最终注册'''
    email = '*****@*****.**'
    if len(username) < 4 or len(username) > 8:
        return {'result': False, 'message': Lg().g(20)}
    result = registered.addPlayer(username, password, email)
    if result == 1:
        return {'result': False, 'message': Lg().g(22)}
    elif result == 2:
        return {'result': False, 'message': Lg().g(23)}
    userId = dbaccess.getUserIdByUserNamePassword(username, password)
    userNew = User.User(userId, username, dynamicId)
    UsersManager().addUser(userNew)
    result = userNew.creatNewCharacter(nickname, profession)
    if not result.get('result', False):
        return {'result': False, 'message': Lg().g(24)}
    data = result.get('data', None)
    if not data:
        return {'result': False, 'message': Lg().g(24)}
    characterId = data.get('newCharacterId', 0)
    player = PlayerCharacter(characterId, dynamicId=dynamicId)
    #    player.pack.putNewItemsInPackage(27, 1)#放置新手引导中获得的的物品
    #    player.pack.putNewItemsInPackage(28, 1)#放置新手引导中获得的的物品
    PlayersManager().addPlayer(player)
    data = {}
    data['userId'] = userId
    data['characterId'] = characterId
    data['placeId'] = player.baseInfo.getTown()
    return {'result': True, 'message': Lg().g(25), 'data': data}
    def ZhanXing(self, fatelevel):
        '''开始占星
        '''
        dynamicId = self._owner.dynamicId
        if self._owner.level.getLevel() < 16:  #功能等级开放限制
            msg = Lg().g(295)
            pushOtherMessage(905, msg, [dynamicId])
            return {'result': False, 'message': msg}
        if fatelevel > 1 and self.fateLevel != fatelevel:
            msg = Lg().g(296)
            pushOtherMessage(905, msg, [dynamicId])
            return {'result': False, 'message': msg}
        if len(self.outside) >= MAXOUTSIDE:
            return {'result': False, 'message': Lg().g(297)}
        cons = ZHANXING_CONFIG_CONS.get(fatelevel, 10000)
        if cons > self._owner.finance.getCoin():
            msg = Lg().g(88)
            pushOtherMessage(905, msg, [dynamicId])
            return {'result': False, 'message': msg}
        templateId = choiceFate(fatelevel)
        fateId = self.addFate(templateId)
        self.planFateLevel(fatelevel)
        self.score += 1
        fate = self.fates.get(fateId)
        data = {
            'showIndex': self.fateLevel,
            'maxCount': self.score,
            'fateIns': fate
        }
        self._owner.finance.addCoin(-cons)
        self._owner.daily.noticeDaily(21, 0, -1)  #通知每日目标
        name = fate.templateinfo['name']
        levelname = LEVELNAME.get(self.fateLevel)
        if self.fateLevel > 1:
            try:
                msg = Lg().g(298) % (name, levelname)
            except:
                msg = Lg().g(298) % (name.decode('utf8'), levelname)
        else:
            try:
                msg = Lg().g(299) % (name)
            except:
                msg = Lg().g(299) % (name.decode('utf8'))

        pushOtherMessage(905, msg, [dynamicId])
        self._owner.schedule.noticeSchedule(9)  #成功后的日程目标通知
        characterId = self._owner.baseInfo.id
        prop = {'score': self.score}
        dbCharacterFate.updateCharacterFateSetting(characterId, prop)
        return {'result': True, 'data': data}
Ejemplo n.º 25
0
def pratice_403(dynamicId, request_proto):
    '''怪物修炼'''
    argument = pratice_pb2.praticeRequest()
    argument.ParseFromString(request_proto)
    response = pratice_pb2.praticeResponse()

    dynamicId = dynamicId
    characterId = argument.id
    monsterId = argument.monsterId
    singleExpBonus = argument.singleExpBonus
    monsterCount = argument.monsterCount
    monsterLevel = argument.monsterLevel
    data = practice.pratice(dynamicId, characterId, monsterId, singleExpBonus,
                            monsterCount, monsterLevel)
    response.result = data.get('result', False)
    response.message = data.get('message', u'')
    if data.get('data', None):
        statuses = {
            1: Lg().g(616),
            2: Lg().g(174),
            3: Lg().g(617),
            4: Lg().g(172),
            5: Lg().g(171),
            6: Lg().g(618)
        }
        response.data.status = statuses.get(data.get('data')['status'], u'')
    return response.SerializeToString()
Ejemplo n.º 26
0
def enterGuildBattleField(dynamicId,characterId):
    '''进入行会战副本
    @param dynamicId: int 客户端的动态id
    @param characterId: int 角色的id
    '''
    res = CanDoServer(characterId)
    if not res['result']:
        return res        
    player = PlayersManager().getPlayerByID(characterId)
    if  not player.CheckClient(dynamicId):
        return {'result':False,'message':Lg().g(18)}
    if not player.status.getLifeStatus():
        return {'result':False,'message':Lg().g(97)}
    if player.baseInfo.getState()==1:
        return {'result':False,'message':Lg().g(98)}
    guildId = player.guild.getID()
    if not guildId:
        return {'result':False,'message':Lg().g(79)}
    battleArea = BattleAreaManager().getGuildBattleAreaIdByGuildId(guildId)
    if not battleArea:
        return {'result':False,'message':Lg().g(99)}
    nowSceneId = battleArea.enterGuildBattleField(guildId,characterId)
    if not nowSceneId:
        return {'result':False,'message':Lg().g(100)}
    lastscene = SceneManager_new().getSceneById(player.baseInfo.getLocation())
    lastscene.dropPlayer(player.baseInfo.id)
    player.baseInfo.setState(2)
    data = {'placeId':nowSceneId}
    return {'result':True,'data':data}
    

    
    
        
        
 def checkSkillLevelUp(self, skillGroup):
     '''检测技能是否是可升级
     @param skillGroup: int 技能的id
     '''
     if not self.learned_skillpool.has_key(skillGroup):
         return {'result': False, 'message': Lg().g(474)}
     nowskillInfo = self.learned_skillpool.get(skillGroup)
     nowlevel = nowskillInfo.get('skillLevel', 1)
     skillInfo = dbSkill.SKILL_GROUP[skillGroup].get(nowlevel + 1)
     if not skillInfo:
         return {'result': False, 'message': Lg().g(425)}
     levelRequired = skillInfo.get('levelRequired')
     if self._owner.level.getLevel() < levelRequired:
         return {'result': False, 'message': Lg().g(332)}
     levelUpMoney = skillInfo.get('levelUpMoney')
     if self._owner.finance.getCoin() < levelUpMoney:
         return {'result': False, 'message': Lg().g(88)}
     profession = skillInfo.get('profession')
     if self._owner.profession.getProfession(
     ) != profession and profession != 0:
         return {'result': False, 'message': Lg().g(404)}
     itemTemplateID = skillInfo.get('itemRequired')
     requiredCount = skillInfo.get('itemCountRequired')
     itemInfo = dbaccess.all_ItemTemplate.get(itemTemplateID)
     if itemInfo and requiredCount:
         if self._owner.pack.countItemTemplateId(
                 itemTemplateID) < requiredCount:
             return {
                 'result': False,
                 'message': Lg().g(473) % itemInfo.get('name')
             }
     return {'result': True}
 def AddSurplustimes(self):
     '''添加竞技场剩余次数'''
     viplevel = self._owner.baseInfo._viptype
     nowtimes = self.buytimes
     if not vipCertification('arenatimes', viplevel, nowtimes=nowtimes):
         return {'result': False, 'message': Lg().g(217)}
     reqGold = (self.buytimes + 1) * 10
     if reqGold > self._owner.finance.getGold():
         return {'result': False, 'message': Lg().g(190)}
     self._owner.finance.consGold(reqGold, 12)  #添加剩余次数
     self.buytimes += 1
     self.surplustimes += 1
     characterId = self._owner.baseInfo.id
     props = {'buytimes': 1, 'surplustimes': self.surplustimes}
     dbarena.updateCharacterArenaInfo(characterId, props)
     reqCoin = (self.buytimes + 1) * 10
     info = {
         'bCount': self.surplustimes,
         'addCount': self.buytimes,
         'reqCoin': reqCoin
     }
     return {'result': True, 'data': info}
 def leaveGuild(self):
     '''离开国'''
     guild = GuildManager().getGuildById(self.id)
     gid=self.id
     if not guild:
         return {'result':False,'message':Lg().g(79)}
     data = guild.leaveGuild(self._owner.baseInfo.id)
     if data.get('result',False):
         self.updateID(0)
         self.setLeaveTime(datetime.datetime.now())
         chatnoderemote.callRemote('updateGuild',self._owner.baseInfo.id,gid,0)#同步聊天角色中的行会
         self._owner.updatePlayerInfo()
     return data
    def updateAddMorale(self, val, state=False):  #添加斗气值
        '''添加斗气值
        @param val: int 添加的斗气数量
        @param state: bool  true战后提示,False马上提示
        '''
        msg = Lg().g(309) % abs(val)

        self._morale += val
        pushObjectNetInterface.pushUpdatePlayerInfo(self._owner.getDynamicId())
        if state:
            pushPromptedMessage(msg, [self._owner.getDynamicId()])
        else:
            self._owner.msgbox.putFightMsg(msg)  #将消息加入战后消息处理中