Beispiel #1
0
def GetGroupLingDiInfo4400(dynamicId,characterId):
    '''获取国领地信息
    '''
    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)}
    guild = GuildManager().getGuildById(guildId)
    guildInfo = guild.guildinfo
    info = {}
    ldID = FortressManager().getGuildFortressId(guildId)
    fortress = FortressManager().getFortressById(ldID)
    if fortress:
        if not fortress.isOccupied:
            fortress = None
    info['ldType'] = ldID if fortress else 0
    info['groupName'] = guildInfo['name']
    info['groupLevel'] = guildInfo['level']
    info['groupLeader'] = guildInfo['presidentname']
    info['obtainJL'] = True if fortress else False
    info['icon'] = guildInfo['emblemLevel']
    info['battleInfo'] = [] if not fortress else fortress.fightlog
    info['battleTime'] = 0 if not fortress else fortress.getNextFightTime()
    return {'result':True,'data':info}
def GuildFightHandle(ldID):
    '''国战斗处理
    @param ldID:int 城镇要塞的ID
    '''
    fortress = FortressManager().getFortressById(ldID)
    fortress.doFight()
    reactor.callLater(3600*24,GuildFightHandle,ldID)
def GuildFightHandle(ldID):
    '''国战斗处理
    @param ldID:int 城镇要塞的ID
    '''
    fortress = FortressManager().getFortressById(ldID)
    fortress.doFight()
    reactor.callLater(3600 * 24, GuildFightHandle, ldID)
Beispiel #4
0
def GetGroupLingDiInfo4400(dynamicId, characterId):
    '''获取国领地信息
    '''
    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)}
    guild = GuildManager().getGuildById(guildId)
    guildInfo = guild.guildinfo
    info = {}
    ldID = FortressManager().getGuildFortressId(guildId)
    fortress = FortressManager().getFortressById(ldID)
    if fortress:
        if not fortress.isOccupied:
            fortress = None
    info['ldType'] = ldID if fortress else 0
    info['groupName'] = guildInfo['name']
    info['groupLevel'] = guildInfo['level']
    info['groupLeader'] = guildInfo['presidentname']
    info['obtainJL'] = True if fortress else False
    info['icon'] = guildInfo['emblemLevel']
    info['battleInfo'] = [] if not fortress else fortress.fightlog
    info['battleTime'] = 0 if not fortress else fortress.getNextFightTime()
    return {'result': True, 'data': info}
Beispiel #5
0
def GroupPK4403(dynamicId, characterId, pkId):
    '''国战申请
    '''
    HAOJIAO = 20700072
    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)}
    if not FortressManager().checkCanApply(guildId):
        return {'result': False, 'message': Lg().g(648)}

    fortress = FortressManager().getFortressById(pkId)
    if not fortress:
        return {'result': False}
    itemcount = player.pack.countItemTemplateId(HAOJIAO)  #检测战斗号角数量
    if itemcount < 1:
        return {'result': False, 'message': Lg().g(656)}
    data = fortress.SignUp(guildId)
    result = data.get('result', False)
    if result:
        player.pack.delItemByTemplateId(HAOJIAO, 1)  #扣除战斗号角
    msgID = data.get('msgID', 0)
    message = u''
    if msgID:
        message = Lg().g(msgID)
    return {'result': result, 'message': message}
Beispiel #6
0
def StartUpGuaJi(dynamicId,characterId):
    '''角色开始挂机
    @param characterId: int 角色的ID
    '''
    from app.scense.core.campaign.FortressManager import FortressManager
    player = PlayersManager().getPlayerByID(characterId)
    if not player or not player.CheckClient(dynamicId):
        return {'result':False,'message':Lg().g(18)}
    #判断是否有冥想加成
    if player.baseInfo.getState()==1:  #如果角色在副本
        state = 0
    else:
        guildId = player.guild.getID()
        sceneId = player.baseInfo.getTown()
        fortress=  FortressManager().getFortressBySceneId(sceneId)
        if not fortress.isOccupied:
            state = 0
        else:
            if fortress.kimori==guildId and guildId!=0:
                state=1
            else:
                state = 0
    result = player.afk.startMeditation(state=state)
    if not result.get('result'):
        msg = result.get('message')
        sendId = player.getDynamicId()
        pushOtherMessage(905, msg, [sendId])
    return result
Beispiel #7
0
def GetCityListInfo4402(dynamicId, characterId):
    '''获取城镇征战信息列表'''
    player = PlayersManager().getPlayerByID(characterId)
    if not player or not player.CheckClient(dynamicId):
        return {'result': False, 'message': Lg().g(18)}
    info = FortressManager().getAllFortressInfo()
    return {'result': True, 'data': info}
Beispiel #8
0
def CancelParticipate4409(dynamicId, characterId):
    '''取消国战参战
    '''
    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)}
    chName = player.baseInfo.getName()
    chLevel = player.level.getLevel()
    fortress.cancelParticipate(guildId, characterId, chName, chLevel)
    return {'result': True}
Beispiel #9
0
def CancelParticipate4409(dynamicId,characterId):
    '''取消国战参战
    '''
    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)}
    chName = player.baseInfo.getName()
    chLevel = player.level.getLevel()
    fortress.cancelParticipate(guildId,characterId,chName,chLevel)
    return {'result':True}
Beispiel #10
0
def GetBattleInfo4406(dynamicId,characterId):
    '''获取战斗信息'''
    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)}
    guildBattleInfo = {}
    guildBattleInfo['roundCount'] = fortress.getRound()
    guildBattleInfo['remainTime'] = fortress.getBattleRemainTime()
    guildBattleInfo['jishaCount'] = player.guild.successTimes
    guildBattleInfo['obtainCoin'] = player.guild.coinBound
    guildBattleInfo['failCount'] = player.guild.failTimes
    guildBattleInfo['obtainSw'] = player.guild.prestigeBound
    guildBattleInfo['battleInfoList'] = fortress.battleInfoList
    
    guild1Id = fortress.get('kimori')
    guild2Id = fortress.get('siege')
    guild1Info = {}
    guild2Info = {}
    if guild1Id:
        guild1 = GuildManager().getGuildById(guild1Id)
        guild1Info = {}
        guild1Info['groupName'] = guild1.get('name')
        guild1Info['groupCount'] = fortress.kimoriScore
        guild1Info['icon'] = guild1.get('emblemLevel')
        guild1Info['groupMember'] = fortress.kimoriMembers
        
    if guild2Id:
        guild2 = GuildManager().getGuildById(guild2Id)
        guild2Info = {}
        guild2Info['groupName'] = guild2.get('name')
        guild2Info['groupCount'] = fortress.siegeScore
        guild2Info['icon'] = guild2.get('emblemLevel')
        guild2Info['groupMember'] = fortress.siegeMembers
        
    guildBattleInfo['group1Info'] = guild1Info
    guildBattleInfo['group2Info'] = guild2Info
    return {'result':True,'data':guildBattleInfo}
Beispiel #11
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}
Beispiel #12
0
 def getCamp(self):
     '''获取场景所属阵营
     '''
     from app.scense.core.campaign.FortressManager import FortressManager
     f = FortressManager().getFortressBySceneId(self._id)
     if not f:
         return 0
     if not f.isOccupied:
         return 0
     if not f.kimori:
         return 0
     guildId = f.kimori
     return guildId
Beispiel #13
0
 def getSceneGuildName(self):
     '''获取城镇占领国的名称
     '''
     from app.scense.core.campaign.FortressManager import FortressManager
     from app.scense.core.guild.GuildManager import GuildManager
     f = FortressManager().getFortressBySceneId(self._id)
     if not f.isOccupied:
         return ''
     if not f.kimori:
         return ''
     guildId = f.kimori
     guild = GuildManager().getGuildById(guildId)
     return guild.get('name')
Beispiel #14
0
def SceneMapInfos(dynamicId, characterId):
    '''获取大地图信息
    @param dynamicId: int 客户端的id
    @param characterId: int 角色的id
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player:
        return {'result': False, 'message': Lg().g(18)}
    guildId = player.guild.getID()
    if not guildId:
        self_color = int(DEFAULTCOLOR, 16)
    else:
        guild = GuildManager().getGuildById(guildId)
        self_color = guild.guildinfo.get('color', int(DEFAULTCOLOR, 16))
    infos = FortressManager().getBigMapInfo()  #ColonizeManage().getCityList()
    return {'result': True, 'self_color': self_color, 'infos': infos}
def doGuildFight():
    '''执行国战斗
    '''
    n = "scense_1000"
    t = n.split('_')
    if t[0] == "scense_" and int(t[1]) % 100 == 0:
        sceneId = int(t[1]) / 100 * 100
        ldID = 0
        for fortress in FortressManager().fortresss.values():
            if fortress.get('sceneId') == sceneId:
                ldID = fortress.id
                break
        #上半场
        reactor.callLater(differTime(19, 10, 0), GuildFightHandle, ldID)
        #下半场
        reactor.callLater(differTime(19, 40, 0), GuildFightHandle, ldID)
Beispiel #16
0
def ObtainJiangLi4401(dynamicId, characterId):
    '''领取奖励殖民'''
    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().getGuildFortressId(guildId)
    if not ldID:  #没有领地
        return {'result': False, 'message': Lg().g(657)}
    result = player.guild.ObtainFortressReward()
    msgID = result.get('msgID', 0)
    message = u''
    if msgID:
        message = Lg().g(msgID)
    return {'result': result.get('result', False), 'message': message}
Beispiel #17
0
def GetBattleInfo4406(dynamicId, characterId):
    '''获取战斗信息'''
    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)}
    guildBattleInfo = {}
    guildBattleInfo['roundCount'] = fortress.getRound()
    guildBattleInfo['remainTime'] = fortress.getBattleRemainTime()
    guildBattleInfo['jishaCount'] = player.guild.successTimes
    guildBattleInfo['obtainCoin'] = player.guild.coinBound
    guildBattleInfo['failCount'] = player.guild.failTimes
    guildBattleInfo['obtainSw'] = player.guild.prestigeBound
    guildBattleInfo['battleInfoList'] = fortress.battleInfoList

    guild1Id = fortress.get('kimori')
    guild2Id = fortress.get('siege')
    guild1Info = {}
    guild2Info = {}
    if guild1Id:
        guild1 = GuildManager().getGuildById(guild1Id)
        guild1Info = {}
        guild1Info['groupName'] = guild1.get('name')
        guild1Info['groupCount'] = fortress.kimoriScore
        guild1Info['icon'] = guild1.get('emblemLevel')
        guild1Info['groupMember'] = fortress.kimoriMembers

    if guild2Id:
        guild2 = GuildManager().getGuildById(guild2Id)
        guild2Info = {}
        guild2Info['groupName'] = guild2.get('name')
        guild2Info['groupCount'] = fortress.siegeScore
        guild2Info['icon'] = guild2.get('emblemLevel')
        guild2Info['groupMember'] = fortress.siegeMembers

    guildBattleInfo['group1Info'] = guild1Info
    guildBattleInfo['group2Info'] = guild2Info
    return {'result': True, 'data': guildBattleInfo}
Beispiel #18
0
 def checkCanFight(self, monsterId, playerId):
     '''检测是否能进行战斗
     '''
     if monsterId > 10:
         return True
     player = PlayersManager().getPlayerByID(playerId)
     camp = player.guild.getID()
     if camp == 0:
         return False
     from app.scense.core.campaign.FortressManager import FortressManager
     f = FortressManager().getFortressBySceneId(self._id)
     if not f.isOccupied:
         mapcamp = 0  #fortressInfo.get('kimori')
     else:
         mapcamp = f.kimori
     if mapcamp == camp:
         return False  #不能攻击同国家的旗帜
     if monsterId == 1:
         if set([2, 3, 4, 5]) & (set(self._monsters.keys())):
             return False  #副旗没砍掉之前不能攻击主旗
     return True
Beispiel #19
0
 def afterFight(self, monsterId, playerId, currentHp):
     '''场景中的战后处理
     @monsterId 怪物的ID
     @param playerId: int 攻击的角色的ID
     @currentHp: int 怪物的当前血量 
     '''
     if monsterId > 10:
         return
     monster = self._monsters.get(monsterId)
     if not monster:
         if monsterId == 1:  #主帅旗被砍掉
             from app.scense.core.guild.GuildManager import GuildManager
             from app.scense.core.campaign.FortressManager import FortressManager
             from app.scense.utils.dbopera import dbfortress
             player = PlayersManager().getPlayerByID(playerId)
             guildId = player.guild.getID()
             fortress = FortressManager().getFortressBySceneId(self._id)
             info = {}
             info['kimoriScore'] = 0
             info['siegeScore'] = 0
             info['siege'] = 0
             info['isOccupied'] = 1
             info['kimori'] = guildId
             info['siege'] = 0
             guild1 = GuildManager().getGuildById(guildId)
             if guild1:
                 guild1.addExp(3500)
                 msg = u"%s国成功征战%s,成为其国领地!" % (guild1.name, self._name)
                 pushSystemInfo(msg)
                 dbfortress.updateFortressInfo(fortress.id, {
                     'kimori': info['kimori'],
                     'isOccupied': 1,
                     'siege': 0
                 })
             return
         else:
             return
     monster.updateHp(currentHp)
Beispiel #20
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}
def initAlldata():
    '''初始化常用数据,从数据库读入到内存中
    '''
    dbaccess.All_ShieldWord = dbaccess.getAll_ShieldWord()
    dbaccess.tb_mallitem_Column_name = dbaccess.getTablecolumnName(
        'tb_item_template') + [
            'item_templateid', 'tag', 'promotion', 'gold', 'coupon',
            'restrict', 'cheapstart', 'cheapend', 'discount', 'up', 'down',
            'onoff'
        ]
    dbaccess.tb_mallitem_Column_name1 = dbaccess.getTablecolumnName(
        'tb_mall_item')
    dbaccess.tb_mall_restrict_Column_name = dbaccess.getTablecolumnName(
        'tb_mall_restrict')
    dbaccess.tb_mall_log_Column_name = dbaccess.getTablecolumnName(
        'tb_mall_log')
    dbaccess.tb_instanceinfo_Columen_name = dbaccess.getTablecolumnName(
        'tb_instanceinfo')
    dbaccess.tb_instance_activation_Columen_name = dbaccess.getTablecolumnName(
        'tb_instance_activation')
    dbaccess.tb_instance_close_Columen_name = dbaccess.getTablecolumnName(
        'tb_instance_close')
    dbaccess.tb_instance_record_Columen_name = dbaccess.getTablecolumnName(
        'tb_instance_record')
    dbaccess.tb_profession_Columen_name = dbaccess.getTablecolumnName(
        "tb_profession")
    dbDropOut.tb_dropout_Column_name = dbaccess.getTablecolumnName(
        'tb_dropout')
    dbaccess.tb_marix_Columen_name = dbaccess.getTablecolumnName(
        "tb_matrix")  #获取阵法表中所有的阵法数据
    dbDrinkery.tb_drinkery_Column_name = dbaccess.getTablecolumnName(
        'tb_drinkery')  #存储数据库中酒店表中的所有字段
    dbChat.tb_chat_astrict_name = dbaccess.getTablecolumnName(
        'tb_chat_astrict')

    dbaccess.tb_Profession_Config = dbaccess.getProfession_Config(
    )  #初始化职业成长配置表
    dbaccess.tb_Experience_config = dbaccess.getExperience_Config(
    )  #初始化经验成长配置表
    dbaccess.all_ItemTemplate = dbaccess.getAll_ItemTemplate()  #获取所有的物品模板信息
    dbaccess.all_marix_info = dbaccess.getAllMarix_Info()  #获取所有的阵法信息

    dbEffect.ALL_EFFECT_INFO = dbEffect.getAllEffectInfo()  #获取所有的效果信息
    dbBuff.ALL_BUFF_INFO = dbBuff.getAllBuffInfo()  #获取所有的buff信息
    instance_app.allInfo = dbInstanceInfo.getAllInfo()  #获取所有副本信息
    guild.AllCharacterGuildInfo = dbGuild.getAllCharacterGuildInfo(
    )  #获取所有角色与行会对应关系
    dropout.alldrop = dbDropOut.getAll()  #获取所有掉落信息
    instanceColonizeChallenge.allColonizeChallenge = dbInstanceColonizeChallenge.getAllColonizeChallenge(
    )
    instanceColonizeChallenge.allMosterNameByinstance = dbInstanceColonizeChallenge.getAllMosterName(
    )

    dbtask.ALL_MAIN_TASK = dbtask.getAllMainTask()
    dbtask.ALL_EXTEN_TASK = dbtask.getAllExtedTask()
    dbInstance_d.instance_dAll = dbInstance_d.getInstance_dAll()  #副本掉落tip
    dbTeamInstance.getAll()  #设置所有多人副本数据
    dbTeamInstanceDrop.getAll()  #设置所有多人副本掉落数据
    dbNobility.getAll()  #获取所有爵位信息
    dbPetShopConfigure.getAll()  #获取所有宠物商店推荐宠物组合信息
    dbPublicscene.getAllInfo()
    dbSkill.getAllSkill()
    dbSkill.getBuffAddition()
    dbSkill.getBuffOffsetInfo()
    dbMonster.getAllMonsterInfo()
    dbCharacterPet.getPetTrainConfig()
    dbCharacterPet.getAllPetTemplate()
    dbCharacterPet.getPetExp()
    dbCharacterPet.getAllPetGrowthConfig()
    dbMail.getAllLevelMail()
    dbGuild.getAllTechnology()
    dbGuild.getTechnologyLimit()
    dbVIP.getAllVIPPer()
    dbVIP.getVIPExp()
    dbVIP.getAllLibao()
    dbfightfail.getAllFightFail()
    dbCharacterFate.getAllFateTemplate()
    dbtower.initAllTowerInfo()
    dbfigure.getAllFigureInfo()
    db_zhanyi.getAllZhanYiInfo()  #获取所有的战役信息
    db_zhanyi.getAllZhangJieInfo()  #获取所有的战役信息
    InstanceGroupManage()
    #    ColonizeManage()
    FortressManager()
    ZYManage()
    configure.shuxingbianliang()
Beispiel #22
0
    def pushNowScenePosition(self, sendId, playerID):
        '''推送在场景中当前的所有角色和怪物的坐标
        @param sendId: int 推送的目标ID
        '''
        from app.scense.core.campaign.FortressManager import FortressManager
        fortress = FortressManager().getFortressBySceneId(self.getID())
        if fortress:
            sceneCamp = fortress.kimori
        else:
            sceneCamp = 0
        self._canRec.add(playerID)
        sceneInfo = pushSceneMessage_pb2.pushSceneMessage()
        for playerId in self._playerlist:
            player = PlayersManager().getPlayerByID(playerId)
            camp = player.guild.getID()
            PlayerPosition = sceneInfo.PlayerPosition.add()
            PlayerPosition.id = player.baseInfo.id
            PlayerPosition.name = player.baseInfo.getNickName()
            PlayerPosition.profession = player.profession.getProfessionName()
            PlayerPosition.headicon = player.profession.getFigure()
            GuildInfo = player.guild.getGuildInfo()
            if GuildInfo:
                PlayerPosition.guildname = GuildInfo.get('name', '')
            PlayerPosition.figure = player.profession.getSceneFigure()
            position = player.baseInfo.getPosition()
            PlayerPosition.x = int(position[0])
            PlayerPosition.y = int(position[1])
            PlayerPosition.level = player.level.getLevel()
            PlayerPosition.viptype = player.baseInfo.getType()
            PlayerPosition.gemlevel = player.pack._equipmentSlot.getGemLevel()
            PlayerPosition.currentHP = player.attribute.getHp()
            PlayerPosition.MaxHP = player.attribute.getMaxHp()
            PlayerPosition.camp = camp
            ###############角色展示宠物的处理################
            player.pet.updatePetPosition(position)
            for petId in player.matrix._matrixSetting.values():
                if petId <= 0:
                    continue
                pet = player.pet.getPet(petId)
                figure = pet.templateInfo['resourceid']
                position = pet.getPosition()
                PetPosition = sceneInfo.petInfo.add()
                PetPosition.id = petId
                PetPosition.name = player.baseInfo.getNickName(
                ) + u'·' + pet.baseInfo.getName()
                PetPosition.profession = pet.baseInfo.getName()
                PetPosition.headicon = figure
                PetPosition.figure = figure
                PetPosition.x = int(position[0])
                PetPosition.y = int(position[1])
                PetPosition.masterId = playerId
                PetPosition.currentHP = pet.attribute.getHp()
                PetPosition.MaxHP = pet.attribute.getMaxHp()
                PetPosition.camp = camp

        for monster in self._monsters.values():
            MonsterPosition = sceneInfo.MonsterPosition.add()
            MonsterPosition.id = monster.baseInfo.id
            MonsterPosition.profession = monster.formatInfo['name']
            MonsterPosition.figure = monster.formatInfo['resourceid']
            MonsterPosition.name = monster.formatInfo['name']
            MonsterPosition.x = int(monster.baseInfo.getPosition()[0])
            MonsterPosition.y = int(monster.baseInfo.getPosition()[1])
            MonsterPosition.currentHP = monster.formatInfo['maxHp']
            MonsterPosition.MaxHP = monster.formatInfo['maxHp']
            MonsterPosition.camp = sceneCamp if sceneCamp and monster.baseInfo.id < 10 else -1
        sceneInfo.sceneId = self._id
        msg = sceneInfo.SerializeToString()
        pushApplyMessage(602, msg, [sendId])
Beispiel #23
0
    def pushSceneInfo(self, rate):
        '''给每一个在场景中的玩家推送场景信息
        @param rate: int 移动的频率
        '''
        if not self._playerlist:
            return
        self.updateAllPlayerLocation(rate)
        if self._monsters:
            self.updateAllMonsterLocation()
        from app.scense.core.campaign.FortressManager import FortressManager
        fortress = FortressManager().getFortressBySceneId(self.getID())
        if fortress:
            sceneCamp = fortress.kimori
        else:
            sceneCamp = 0
        sendlist = self.getSendList()
        sceneInfo = pushSceneMessage_pb2.pushSceneMessage()
        for playerId in self._playerlist:
            player = PlayersManager().getPlayerByID(playerId)
            camp = player.guild.getID()
            if not player:
                self.dropPlayer(playerId)
                continue
            PlayerPosition = sceneInfo.PlayerPosition.add()
            PlayerPosition.id = player.baseInfo.id
            PlayerPosition.name = player.baseInfo.getNickName()
            PlayerPosition.profession = player.profession.getProfessionName()
            PlayerPosition.headicon = player.profession.getFigure()
            GuildInfo = player.guild.getGuildInfo()
            if GuildInfo:
                PlayerPosition.guildname = GuildInfo.get('name', '')
            PlayerPosition.figure = player.profession.getSceneFigure()
            position = player.baseInfo.getDestination()
            PlayerPosition.x = int(position[0])
            PlayerPosition.y = int(position[1])
            PlayerPosition.level = player.level.getLevel()
            PlayerPosition.viptype = player.baseInfo.getType()
            PlayerPosition.gemlevel = player.pack._equipmentSlot.getGemLevel()
            PlayerPosition.currentHP = player.attribute.getHp()
            PlayerPosition.MaxHP = player.attribute.getMaxHp()
            PlayerPosition.camp = camp
            ###############角色展示宠物的处理################
            petremove = player.pet.popLastRemove()
            for petId in petremove:
                self.dropPet(petId)
            for petId in player.matrix._matrixSetting.values():
                if petId <= 0:
                    continue
                pet = player.pet.getPet(petId)
                figure = pet.templateInfo['resourceid']
                position = pet.getPosition()
                PetPosition = sceneInfo.petInfo.add()
                PetPosition.id = petId
                PetPosition.name = player.baseInfo.getNickName(
                ) + u'·' + pet.baseInfo.getName()
                PetPosition.profession = pet.baseInfo.getName()
                PetPosition.headicon = figure
                PetPosition.figure = figure
                PetPosition.x = int(position[0])
                PetPosition.y = int(position[1])
                PetPosition.masterId = playerId
                PetPosition.currentHP = pet.attribute.getHp()
                PetPosition.MaxHP = pet.attribute.getMaxHp()
                PetPosition.camp = camp

        for monster in self._monsters.values():
            MonsterPosition = sceneInfo.MonsterPosition.add()
            MonsterPosition.id = monster.baseInfo.id
            MonsterPosition.profession = monster.formatInfo['name']
            MonsterPosition.figure = monster.formatInfo['resourceid']
            MonsterPosition.name = monster.formatInfo['name']
            MonsterPosition.x = int(monster.baseInfo.getPosition()[0])
            MonsterPosition.y = int(monster.baseInfo.getPosition()[1])
            MonsterPosition.currentHP = monster.formatInfo['maxHp']
            MonsterPosition.MaxHP = monster.formatInfo['maxHp']
            MonsterPosition.camp = sceneCamp if sceneCamp and monster.baseInfo.id < 10 else -1
        sceneInfo.sceneId = self._id
        msg = sceneInfo.SerializeToString()
        pushApplyMessage(602, msg, sendlist)